<?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>237217</bug_id>
          
          <creation_ts>2022-02-25 10:51:13 -0800</creation_ts>
          <short_desc>Fix test failures when enabling content filtering in the Network process</short_desc>
          <delta_ts>2026-01-27 23:05:52 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>306402</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mazander</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846092</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-25 10:51:13 -0800</bug_when>
    <thetext>Some tests are currently failing when enabling content filtering in the Network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846111</commentid>
    <comment_count>1</comment_count>
      <attachid>453237</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-02-25 11:29:46 -0800</bug_when>
    <thetext>Created attachment 453237
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847029</commentid>
    <comment_count>2</comment_count>
      <attachid>453499</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-01 08:02:08 -0800</bug_when>
    <thetext>Created attachment 453499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847140</commentid>
    <comment_count>3</comment_count>
      <attachid>453523</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-01 12:36:16 -0800</bug_when>
    <thetext>Created attachment 453523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847174</commentid>
    <comment_count>4</comment_count>
      <attachid>453538</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-01 13:41:22 -0800</bug_when>
    <thetext>Created attachment 453538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847391</commentid>
    <comment_count>5</comment_count>
      <attachid>453610</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-02 07:41:35 -0800</bug_when>
    <thetext>Created attachment 453610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847613</commentid>
    <comment_count>6</comment_count>
      <attachid>453658</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-02 14:08:44 -0800</bug_when>
    <thetext>Created attachment 453658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847641</commentid>
    <comment_count>7</comment_count>
      <attachid>453666</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-02 15:27:43 -0800</bug_when>
    <thetext>Created attachment 453666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847649</commentid>
    <comment_count>8</comment_count>
      <attachid>453670</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-02 15:49:34 -0800</bug_when>
    <thetext>Created attachment 453670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847880</commentid>
    <comment_count>9</comment_count>
      <attachid>453734</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 07:32:43 -0800</bug_when>
    <thetext>Created attachment 453734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847888</commentid>
    <comment_count>10</comment_count>
      <attachid>453735</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 07:51:14 -0800</bug_when>
    <thetext>Created attachment 453735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847894</commentid>
    <comment_count>11</comment_count>
      <attachid>453738</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 07:58:24 -0800</bug_when>
    <thetext>Created attachment 453738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847899</commentid>
    <comment_count>12</comment_count>
      <attachid>453742</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 08:05:38 -0800</bug_when>
    <thetext>Created attachment 453742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847905</commentid>
    <comment_count>13</comment_count>
      <attachid>453744</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 08:17:50 -0800</bug_when>
    <thetext>Created attachment 453744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847911</commentid>
    <comment_count>14</comment_count>
      <attachid>453747</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 08:55:19 -0800</bug_when>
    <thetext>Created attachment 453747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847955</commentid>
    <comment_count>15</comment_count>
      <attachid>453756</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 10:21:31 -0800</bug_when>
    <thetext>Created attachment 453756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848009</commentid>
    <comment_count>16</comment_count>
      <attachid>453768</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 11:37:56 -0800</bug_when>
    <thetext>Created attachment 453768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848045</commentid>
    <comment_count>17</comment_count>
      <attachid>453781</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 13:18:31 -0800</bug_when>
    <thetext>Created attachment 453781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848071</commentid>
    <comment_count>18</comment_count>
      <attachid>453787</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-03 14:34:20 -0800</bug_when>
    <thetext>Created attachment 453787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848353</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-04 10:52:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89823305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849257</commentid>
    <comment_count>20</comment_count>
      <attachid>454120</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-08 07:26:23 -0800</bug_when>
    <thetext>Created attachment 454120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850085</commentid>
    <comment_count>21</comment_count>
      <attachid>454361</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-10 07:32:29 -0800</bug_when>
    <thetext>Created attachment 454361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850276</commentid>
    <comment_count>22</comment_count>
      <attachid>454411</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-10 15:39:51 -0800</bug_when>
    <thetext>Created attachment 454411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850285</commentid>
    <comment_count>23</comment_count>
      <attachid>454415</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-10 16:01:51 -0800</bug_when>
    <thetext>Created attachment 454415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850297</commentid>
    <comment_count>24</comment_count>
      <attachid>454421</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-10 16:16:22 -0800</bug_when>
    <thetext>Created attachment 454421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850506</commentid>
    <comment_count>25</comment_count>
      <attachid>454486</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-11 08:05:35 -0800</bug_when>
    <thetext>Created attachment 454486
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850509</commentid>
    <comment_count>26</comment_count>
      <attachid>454487</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-11 08:20:51 -0800</bug_when>
    <thetext>Created attachment 454487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851287</commentid>
    <comment_count>27</comment_count>
      <attachid>454705</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-15 07:25:52 -0700</bug_when>
    <thetext>Created attachment 454705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851312</commentid>
    <comment_count>28</comment_count>
      <attachid>454712</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-15 08:53:55 -0700</bug_when>
    <thetext>Created attachment 454712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851858</commentid>
    <comment_count>29</comment_count>
      <attachid>454847</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-16 09:37:37 -0700</bug_when>
    <thetext>Created attachment 454847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851869</commentid>
    <comment_count>30</comment_count>
      <attachid>454851</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-16 10:14:41 -0700</bug_when>
    <thetext>Created attachment 454851
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852271</commentid>
    <comment_count>31</comment_count>
      <attachid>454970</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-17 07:24:40 -0700</bug_when>
    <thetext>Created attachment 454970
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852277</commentid>
    <comment_count>32</comment_count>
      <attachid>454972</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-17 07:34:27 -0700</bug_when>
    <thetext>Created attachment 454972
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852360</commentid>
    <comment_count>33</comment_count>
      <attachid>454972</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-17 10:32:54 -0700</bug_when>
    <thetext>Comment on attachment 454972
Patch

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

r=me

&gt; Source/WebCore/loader/DocumentLoader.cpp:144
&gt; +    static bool filter;

Does this need a default initializer?

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.h:105
&gt; +    void contentFilterDidBlockLoad(const WebCore::ContentFilterUnblockHandler&amp;, String&amp;&amp; unblockRequestDeniedScript, const WebCore::ResourceError&amp;, const URL&amp; blockedPageURL,  WebCore::SubstituteData&amp;&amp;);

Nit: two spaces between comma and &apos;WebCore::SubstituteData&amp;&amp;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852368</commentid>
    <comment_count>34</comment_count>
      <attachid>454992</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-17 10:46:02 -0700</bug_when>
    <thetext>Created attachment 454992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852370</commentid>
    <comment_count>35</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-17 10:49:17 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #33)
&gt; Comment on attachment 454972 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454972&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:144
&gt; &gt; +    static bool filter;
&gt; 
&gt; Does this need a default initializer?
&gt; 

Added.

&gt; &gt; Source/WebKit/WebProcess/Network/WebResourceLoader.h:105
&gt; &gt; +    void contentFilterDidBlockLoad(const WebCore::ContentFilterUnblockHandler&amp;, String&amp;&amp; unblockRequestDeniedScript, const WebCore::ResourceError&amp;, const URL&amp; blockedPageURL,  WebCore::SubstituteData&amp;&amp;);
&gt; 
&gt; Nit: two spaces between comma and &apos;WebCore::SubstituteData&amp;&amp;&apos;

Fixed.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852742</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 09:38:47 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 454992 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852754</commentid>
    <comment_count>37</comment_count>
      <attachid>455105</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-18 10:04:35 -0700</bug_when>
    <thetext>Created attachment 455105
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852852</commentid>
    <comment_count>38</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 15:13:27 -0700</bug_when>
    <thetext>Committed r291499 (248611@main): &lt;https://commits.webkit.org/248611@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455105.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453237</attachid>
            <date>2022-02-25 11:29:46 -0800</date>
            <delta_ts>2022-03-01 08:02:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220225112944.patch</filename>
            <type>text/plain</type>
            <size>72080</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0xOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gU2FmYXJpIGNhbiBzb21ldGltZXMgaGFuZyB3aGlsZSBwcmludGlu
ZyBkdWUgdG8gc3luYyBJUEMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJ
KHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29jb2Eu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9DT05U
RU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05URVhU
X01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVYVF9N
RU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIy
LTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBO
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRp
ZEJsb2NrKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OnNldFVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZCBjb25zdCk6CisgICAgICAg
ICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICog
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKTogRGVsZXRl
ZC4KKwogMjAyMi0wMi0yMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0lGQ11bSW50ZWdyYXRpb25dIFRha2UgdmVydGljYWwtcmwgd3JpdGluZyBtb2RlIHZhbHVl
IGludG8gYWNjb3VudCB3aGVuIGNvbnZlcnRpbmcgdmlzdWFsIG1hcmdpbi9ib3JkZXIvcGFkZGlu
ZyB2YWx1ZSB0byBsb2dpY2FsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTM0MDIsOCArMzQwMiw2IEBACiAJCUExQURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJv
dmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmgg
Ki87IH07CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QUZFREU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsg
fTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
NUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICov
OyB9OwotCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
NUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIx
NTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBB
cHBsZVBheUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4
NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0Qg
LyogTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQxMSw4ICszNDA5LDYgQEAKIAkJQTFC
Qjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5
QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlB
MUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlC
M0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNN
b2NrUGF5bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwICovOyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMx
NTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThD
IC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRN
ZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
Q0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlB
MUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1
NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAgLTUyOTEsNiArNTI4NywxNCBAQAog
CQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcw
MUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFE
QURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVD
b25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVD
MjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhS
VGVzdC5jcHAgKi87IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdE
MDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNw
cCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5
NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4
IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3
MzU4LDYgKzE3MzYyLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1v
ZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jp
cHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5
NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFy
YW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdG
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4
QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMw
MDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01K
SVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZy
YWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTUwLDkg
KzIxMTU3LDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVu
dEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYw
NDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFB
ODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlB
RUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8s
CisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVw
YWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5o
ICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmNwcCAqLywKQEAgLTMzMzg0LDggKzMzMzk0LDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3
QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
QkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4g
SGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFF
M0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VP
dmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM0NTE0LDYgKzM0NTIyLDggQEAKIAkJ
CQkyRDI5Mzg2QjIzNUY2QjY5MDBDN0YzQjIgLyogRXhjZXB0aW9uRGV0YWlscy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNEMTk2MzExRDZDQUI3NjAwRkM3RTQ3IC8qIEV4Y2VwdGlvbk9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzdGQjM0NTFGOUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUwQkNGMzUyN0MwNjYxMDAwQkZCMkRC
IC8qIEV4dGVuZGVkRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTBCQ0YzNDI3QzA2NjEwMDBCRkIyREIgLyogRXh0ZW5kZWRET01Jc29TdWJzcGFjZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHls
ZVNoZWV0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM0MzA0QjExOTFBQzkwODAwMEUyQkMwIC8q
IEVYVFNoYWRlclRleHR1cmVMT0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTc3Mjg2OTRGMTRGODg4
MjUwMEY0ODREQyAvKiBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBpbiBIZWFkZXJzICov
LApAQCAtMzUxODgsNyArMzUxOTgsNiBAQAogCQkJCTcxNEM3QzZEMUZEQURBRjYwMEYyQkVFMSAv
KiBKU0FuaW1hdGlvblBsYXliYWNrRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTAy
NUVERTFGOTlGMUVDMDA0QTI1MEMgLyogSlNBbmltYXRpb25UaW1lbGluZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTE5NTZGMUMyMzMxQTY3NzAwNTdFOUQyIC8qIEpTQXBwbGVQYXlDYW5jZWxFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUwQkNGMzUyN0MwNjYxMDAwQkZCMkRCIC8qIEV4dGVu
ZGVkRE9NQ2xpZW50SXNvU3Vic3BhY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMURGNUE5OTFG
N0VDOEMwMDA1OEE0NzcgLyogSlNBcHBsZVBheUNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTU5NkI5MzgyNURFRUYwMzAwRUQyQ0ZBIC8qIEpTQXBwbGVQYXlDb3Vwb25Db2RlQ2hh
bmdlZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NUVBRDU4MzI2NkVGNTNCMDA0QjlDRjEg
LyogSlNBcHBsZVBheUNvdXBvbkNvZGVEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzYy
LDYgKzM2MzcxLDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3gu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RN
RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8q
IE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJG
RUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2
aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM3MTExLDcgKzM3MTI0LDYgQEAKIAkJCQkwNzhFMDk0
NDE3RDE2RTFDMDA0MjBBQTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzEzNTkxMEIxRTdEREM3MzAwRjMwNjMwIC8qIFJUQ1NpZ25hbGluZ1N0
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzhFMDkyQTE3RDE0RDFDMDA0MjBBQTEgLyogUlRD
U3RhdHNSZXBvcnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMEJDRjM0MjdDMDY2MTAwMEJGQjJE
QiAvKiBFeHRlbmRlZERPTUlzb1N1YnNwYWNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUUyQzQz
NjgxQkNFRTM3NzAwMDFFMkJDIC8qIFJUQ1RyYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OEUwOTQ3MTdEMTZFMUMwMDQyMEFBMSAvKiBSVENWb2lkUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTgyNEFCQTMxQUU4MTExNjAwOTA3NEI3IC8qIFJ1YnlFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzAyLDggKzM4NzE0LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODc5MSw2ICszODgwMSw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTQ0MSw2ICszOTQ1NCw3IEBACiAJCQkJMDdG
NUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1BdWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RDOTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1
MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBXS1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAwRDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM3LDggKzI0MzcsOSBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLVJlc291cmNlRXJyb3IgRG9jdW1l
bnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFu
ZGxlQ29udGVudEZpbHRlckRpZEJsb2NrIik7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFj
aGFibGVVUkwoZG9jdW1lbnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdC5pc0VtcHR5KCkgJiYgZnJhbWUoKSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFw
V2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgp
LT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRl
ZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKQEAgLTI0NDYsNyArMjQ0Nyw3IEBAIFJlc291cmNl
RXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKICAgICAgICAgICAgICAgICBzY3JpcHRD
b250cm9sbGVyLT5leGVjdXRlU2NyaXB0SWdub3JpbmdFeGNlcHRpb24oc2NyaXB0KTsKICAgICAg
ICAgfSk7CiAgICAgfQotICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgIGZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxl
ciksIHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CiAgICAgYXV0byBlcnJvciA9IGZyYW1lTG9hZGVy
KCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDcg
KzQwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFs
IHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgotICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92
aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNyArMzU4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdmly
dHVhbCB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIHsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgPSAwOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjkw
MjQ2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsMTIgKzE4NSwyMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVj
a2VyOjpjaGVja05hCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAg
ICBpZiAobV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KSkgeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVS
ZXF1ZXN0KHJlcXVlc3QsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSkgewogICAgICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lIHsgJm1fZnJhbWUgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBBU1NFUlQobV91bmJsb2NrZWRBZnRl
clJlcXVlc3QpOworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRs
ZVJlcXVlc3QgdW5ibG9ja2VkICVkIiwgKm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKKyAgICAg
ICAgaWYgKCptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiByZWxvYWQiKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ZyYW1lXSB7CisgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIG1fY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2ZyYW1lXShib29sIHVuYmxvY2tl
ZCkgewogICAgICAgICAgICAgaWYgKHVuYmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgIFBPTElDWUNI
RUNLRVJfUkVMRUFTRV9MT0coImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVz
ZSBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwog
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb246Oklnbm9yZUxvYWQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaAkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdm9pZCBzZXRDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZSh1bmJsb2NrSGFuZGxl
cik7IH0KKyAgICB2b2lkIHNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0g
V1RGTW92ZSh1bmJsb2NrZWRBZnRlclJlcXVlc3QpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTEwNCw2ICsxMDUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
OwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkocmV2aXNpb24gMjkwMjQ2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbmVlZHNVSVByb2Nlc3MoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29k
ZShOU0NvZGVyICopIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoTlNDb2RlciAqLCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFVuYmxvY2tBc3luYyhEZWNpc2lvbkhh
bmRsZXJGdW5jdGlvbikgY29uc3Q7CiAgICAgdm9pZCB3cmFwV2l0aERlY2lzaW9uSGFuZGxlcihj
b25zdCBEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw5ICsxMTgsMTMgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI6OmRlY29kZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAorYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1fdW5ibG9ja1JlcXVl
c3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVz
dCIpOworICAgIGlmICh1bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsICp1bmJsb2NrZWRBZnRlclJl
cXVlc3QpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIgJiYgIXVuYmxvY2tlZEFmdGVy
UmVxdWVzdCkgewogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRM
RVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMzQsNiArMTM4LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OmNhbkhhbgogICAgIGlmIChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29u
dGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8
JXM+IGFzIGFuIHVuYmxvY2sgcmVxdWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogI2VuZGlmCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBj
YW5IYW5kbGVSZXF1ZXN0ICVkIiwgaXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5i
bG9ja1JlcXVlc3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQor
ICAgIAordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgewor
cHVibGljOgorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQgdm9pZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQ+KTsKKyAgICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNl
dHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+
IG1fY2xpZW50OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwMjQ2KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIK
ICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2Nr
Q29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NCwxMiArNDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRG
aQogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xl
dG9uKCkgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFi
bGVkKTsKICAgICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9l
bmFibGVkID0gZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2Nr
ZWRTdHJpbmcpCit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0
RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNp
c2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNp
b24pCit7CisgICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERl
Y2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2Nr
UmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRS
ZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9k
aWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigp
KTsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2Nr
UmVxdWVzdFVSTCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9u
KCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2Nr
VVJMSG9zdCgpIHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUg
Z2VuZXJhdGVkIGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4
LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9j
a2VkU3RyaW5nOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9j
a2VkU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBv
aW50KCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNp
c2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQg
PSBkZWNpc2lvblBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBz
ZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24o
KSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNp
c2lvbiBkZWNpc2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lz
aW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1
ZXN0RGVjaXNpb247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNp
b24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0
cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBj
b25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZp
ZWRSZXF1ZXN0VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3Ry
aW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmll
ZFJlcXVlc3RVUkw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1v
ZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBk
ZWNvZGUoRGVjb2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MoKSA9IGRlZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVk
IHsgZmFsc2UgfTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9u
UG9pbnQ6OkFmdGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBi
bG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBvaW50KCk7CisgICAgZW5j
b2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3REZWNpc2lv
bigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3RVUkwoKTsKKyAgICBlbmNvZGVyIDw8
IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9ja2VkU3RyaW5nOworICAgIGlmICgh
YmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNp
c2lvblBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAg
IGlmICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5i
bG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNp
b247CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTDsK
KyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0VVJMOworICAgIGlmICghdW5ibG9ja1JlcXVl
c3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVz
dFVSTDsKKyAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0
b24oKS5zZXRFbmFibGVkKCplbmFibGVkKTsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRCbG9ja2VkU3RyaW5nKCpibG9ja2VkU3RyaW5nKTsK
KyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRE
ZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldE1vZGlmaWVkUmVxdWVzdFVS
TCgqbW9kaWZpZWRSZXF1ZXN0VVJMKTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlIik7CisgICAgcmV0dXJuIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MoKTsKK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVu
YWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2
aWdhdGlvbik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5n
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6
CisKIDIwMjItMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEJldHRlciBpc29sYXRlIFJlbW90ZVZpZGVvRnJhbWVPYmplY3RIZWFwIGNsaWVudHMgZnJv
bSBUaHJlYWRTYWZlT2JqZWN0SGVhcCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywxMCBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtl
KHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYmKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVm
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJl
dmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgaW5zdGFsbE1vY2tD
b250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisKIHBy
aXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6Okxv
YWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykKKwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDI0
NikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiArMjM5LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJpbmciKTsKICAgICBp
ZiAoIWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0
ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtMTc3MywyNSArMTc3NSwzMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2so
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxv
Y2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9j
a2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVs
b2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5u
ZWVkc1VJUHJvY2VzcygpKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCwgc3RkOjpudWxsb3B0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRl
ci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9v
bCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCwgdW5ibG9ja2VkKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVu
YmxvY2tlZCk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2Vk
QnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBl
cnJvcjsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKy8vICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAg
ICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKICAgICBlbHNlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZp
c2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CiB9CkBAIC0xMzEsNiArMTMzLDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExp
bmVhclRpbWluZ0Z1bmN0aW9uOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNs
YXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKQEAgLTg1NSw2ICs4NTgsMjYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAg
ICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpB
ZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAg
ICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
bjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uOjpCbG9jaworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjbwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxl
Q29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCwgc3RkOjpudWxsb3B0KSkgewogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciA9IHsgfTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk4OSw2ICsxOTg5LDgg
QEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIwQjIzOTlBMkREMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2
NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUxQkYwMEQyMzc0RiAv
KiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlk
aW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07CiAJCUUzQ0FBQTQ0
MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMyNDEzMjc4QTAwQ0VE
MkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02NDU5LDYgKzY0NjEs
OCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzMTM2
NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0QjExMEMyN0M0
NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzYxMkZG
MDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjQ3MSw2ICs2NDc1LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJ
ZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTgyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTQ1MCw2ICs5NDU2LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8qIHdlYnJ0YyAqLywK
KwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAyMTYzQTNCMUMwMEVD
MzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05OTY5
LDYgKzk5NzcsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM0QjExMEMy
N0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLywKKwkJCQlFMzRC
MTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAog
CQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLywK
IAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc1MEYz
MkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLApA
QCAtMTI4MzYsOSArMTI4NDYsOSBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCi0JCQkJNTFFOTA0
OUIyN0JDQjlENDAwOTI5RTdFIC8qIExhdW5jaFNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUU5MDQ5NTI3QkNCM0M5MDA5MjlFN0UgLyogSUNBcHBCdW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxRTkwNDlEMjdCQ0I5RDQwMDkyOUU3RSAvKiBJbnN0YWxsQ29vcmRpbmF0aW9u
U1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUU5MDQ5QjI3QkNCOUQ0MDA5MjlFN0UgLyogTGF1
bmNoU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTMyNDAsMTEgKzEzMjUwLDEzIEBA
CiAJCQkJOTE5Nzk0MDUyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjJCOUQyNUUyNTdGRjAwNzE5Mzc5IC8qIEluc3BlY3Rv
ckV4dGVuc2lvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4
MDBDOEZCMzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
RTkwNDlDMjdCQ0I5RDQwMDkyOUU3RSAvKiBJbnN0YWxsQ29vcmRpbmF0aW9uU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZv
cm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMw
MDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTMxRjYwQTQyNUNDN0RCOTAwQUYxNEY0IC8qIElQQ1NlbWFwaG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUI0NzkwOEYyNTMxNTFDQzAwRUMxMUFCIC8qIEpTSVBDQmluZGluZy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzE2NjNFNUIyNEFFQUEyRjAwQzZBM0IyIC8qIExhdW5jaFNlcnZp
Y2VzRGF0YWJhc2VYUENDb25zdGFudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRTkwNDlBMjdC
Q0I5RDQwMDkyOUU3RSAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFMDkzNzgxNEZCMTI4QzAwMTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOTJEQzExMTJGOEJBNDYwMDE3QUY2NSAvKiBMYXllclRyZWVDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NEU5MzZGRDI0NDdDMkQ4MDA5RkEzRTMgLyogTGVnYWN5
Q3VzdG9tUHJvdG9jb2xJRC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzMwMiw2ICsxMzMxNCw3IEBA
CiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAx
NkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8q
IE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEw
MEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMzM3Myw3ICsx
MzM4Niw2IEBACiAJCQkJMzc1NEQ1NDUxQjNBMjlGRDAwM0E0QzdGIC8qIE5TSW52b2NhdGlvblNQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERDcyQUIyNjgyMTY3MzAwQTkwQzcxIC8qIE5XU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09i
amVjdEdyYXBoLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUU5MDQ5QTI3QkNCOUQ0MDA5MjlFN0Ug
LyogTGF1bmNoU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDg1RENBMjZFMjk3
NzUwMDBFQzZBNyAvKiBPcmlnaW5TdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjRFQjRBRkQyNjlDRDdGMzAwRDI5N0FFIC8qIE9TU3RhdGVTUEkuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRjQ3RkZCMTcyNzVDNTcwMDhBQ0I5MSAvKiBQYWdlQmFubmVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTEzNTg3LDcgKzEzNTk5LDYgQEAKIAkJCQkxQUYwNUQ4NzE0Njg4MzQ4MDA4QjFFODEg
LyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjQ4NTcwQTMyNjQ0QkVDNTAwQzA1RjcxIC8qIFRpbWVvdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJGODMzNjg2MUZBMTM5REYwMEM2RTA4MCAvKiBUb3VjaEJhck1lbnVEYXRhLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1MUU5MDQ5QzI3QkNCOUQ0MDA5MjlFN0UgLyogSW5zdGFsbENvb3JkaW5h
dGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2RTMyMkZCQjIxQTAwMjY5ODY3IC8q
IFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdF
QjJFM0EyMUUxOTgzRTAwQjg5Q0RGIC8qIFUyZkF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRkU0MzY2MThCNkMwODEwMDlDN0E0OCAvKiBVSURlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE1NjYxLDYgKzE1NjcyLDcgQEAKIAkJCQkxQUE1NzYwMjE0OTZCOTc5MDBBNEVF
MDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBGdWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0
aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMxQTE1MkQ3MjRFNUEyOUEwMDk3
OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2VzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTFFOTA0OTcyN0JDQjNEOTAwOTI5RTdFIC8qIElDQXBwQnVuZGxlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIxNDY1NjFFMDA4MzgwQkYgLyogSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMTREMzdGRTI0
QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRhYmFzZU1hbmFnZXIubW0gaW4gU291
cmNlcyAqLywKQEAgLTE1NjczLDkgKzE1Njg1LDkgQEAKIAkJCQkwN0UxOUVGQjIzRDQwMUYxMDA5
NEZGQjQgLyogTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFERjI5RTY0MjU3RjM3QTMwMDNDMjhBRiAvKiBNZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI0Nzkw
OTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk1MUU5MDQ5NzI3QkNCM0Q5MDA5MjlFN0UgLyogSUNBcHBCdW5kbGUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0Fw
cEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2
MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hT
ZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAw
MEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFC
MzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5t
bSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFn
ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2Vy
dmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Ojptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChhdXRv
IGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29udGVu
dEZpbHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigp
OworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5h
bDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw2ICsyMzEsOCBAQAogI2luY2x1ZGUgPHd0Zi9s
aW51eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5l
IFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUlu
dDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zMzgsNiArMzQwLDggQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9jZXNzOjp+V2Vi
UHJvY2VzcygpCkBAIC0yMjIwLDcgKzIyMjQsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5naW5l
Q29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShy
ZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJhbWV0
ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBXRUJM
T0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWlu
ZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZhbHVl
T3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSku
dG9VSW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFt
ZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDAp
KSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVs
ZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1
bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNo
ZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKFJl
ZgogICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3RyYWNr
aW5nUGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxvYWRl
cjo6fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVNYWlu
UmVzb3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3VyY2VM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdCB3
aG9sZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3MgYm9k
eSB3aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpAQCAt
MzUxLDExICszNTMsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291
cgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1
ZXN0KQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92
ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBX
VEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgJKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIs
NyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChj
b25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCk7CiAgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9h
ZGVyIExlZ2FjeVJlY2UKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjkwMjQ2KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg3MywxMCArMTg3MywxMSBAQCBSZWY8RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gV2ViRnJhbWVMb2FkCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQogewogICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNV
SVByb2Nlc3MoKSkgewogICAgICAgICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9s
aWN5Q2hlY2tlcigpLnNldENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKSk7CisgICAgICAgIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xp
Y3lDaGVja2VyKCkuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KFdURk1vdmUodW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYzLDcgKzI2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKLSAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwcmVmZXRjaERO
Uyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxNCw2
ICsxNzE0LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycwogCiAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wZW5kaW5n
V2Vic2l0ZVBvbGljaWVzKTsKKwogfQogCiAvLyBMb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNz
TGF1bmNoIHNob3VsZCBuZXZlciBiZSBzZW50IHRvIHRoZSBXZWJQcm9jZXNzLiBJdCBtdXN0IGFs
d2F5cyBiZSBjb252ZXJ0ZWQgdG8gYSBMb2FkUmVxdWVzdCBtZXNzYWdlLgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZp
c2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNyArMzYxLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIC8vIFRoaXMgbWV0aG9kIGNhbGwgd2ls
bCBhbHNvIGNhbGwgUmVnaXN0ZXJBcHBsaWNhdGlvbiwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3Ig
dXMgdG8gY2FsbCB0aGlzIG9yCiAgICAgLy8gY2hlY2sgaW4gd2l0aCBMYXVuY2ggU2VydmljZXMK
ICAgICBbTlNBcHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwotCisgICAgCiAg
ICAgLy8gVXBkYXRlIHByb2Nlc3MgbmFtZSB3aGlsZSBob2xkaW5nIHRoZSBMYXVuY2ggU2Vydmlj
ZXMgc2FuZGJveCBleHRlbnNpb24KICAgICB1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0lu
aXRpYWxpemF0aW9uOjpZZXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyOTAyNDYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBl
bmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMTggIFJvYmVydCBKZW5uZXIgIDxKZW5u
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkwMTQ5LgpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyOTAyNDYpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJs
b2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpIGZpbmFsOworICAg
IHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogI2VuZGlmCiAKICAgICB2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI5MDI0NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDQ1LDkgKzIwNDUsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi12b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcikKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVu
YmxvY2tlZEFmdGVyUmVxdWVzdCkKIHsKICAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2Fk
ZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKFdURk1v
dmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIo
KS5wb2xpY3lDaGVja2VyKCkuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KFdURk1vdmUodW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KSk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453499</attachid>
            <date>2022-03-01 08:02:08 -0800</date>
            <delta_ts>2022-03-01 12:36:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220301080207.patch</filename>
            <type>text/plain</type>
            <size>67191</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzcsOCArMjQzNyw5IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KICNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotUmVzb3VyY2VFcnJv
ciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29s
PiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5z
ZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5k
bGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7
IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewpAQCAtMjQ0Niw3ICsyNDQ3LDcgQEAg
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udAogICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKSwgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICBhdXRvIGVycm9yID0gZnJh
bWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDcsNyArNDA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBS
ZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlm
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVD
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2Nr
ZWRBZnRlclJlcXVlc3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZp
bHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICsz
NTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LSAgICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikg
eyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
KSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NSwxMiArMTg1LDIzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmEKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1
ZXN0KHJlcXVlc3QpKSB7CisgICAgaWYgKG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNh
bkhhbmRsZVJlcXVlc3QocmVxdWVzdCwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpKSB7CiAgICAg
ICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9OworI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIEFTU0VSVChtX3VuYmxv
Y2tlZEFmdGVyUmVxdWVzdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjog
Y2FuSGFuZGxlUmVxdWVzdCB1bmJsb2NrZWQgJWQiLCAqbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qp
OworICAgICAgICBpZiAoKm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlbG9hZCIpOworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZnJhbWVdIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVs
b2FkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgbV9jb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbZnJhbWVdKGJvb2wg
dW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAodW5ibG9ja2VkKQogICAgICAgICAgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgfSk7CisjZW5kaWYKICAgICAgICAg
UE9MSUNZQ0hFQ0tFUl9SRUxFQVNFX0xPRygiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBpZ25vcmlu
ZyBiZWNhdXNlIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBjYW4gaGFuZGxlIHRoZSByZXF1
ZXN0Iik7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2b2lkIHNldENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIpIHsgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSBXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKTsgfQorICAgIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsgbV91bmJsb2NrZWRBZnRlclJl
cXVlc3QgPSBXVEZNb3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpAQCAtMTA0LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91bmJsb2NrZWRBZnRl
clJlcXVlc3Q7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBuZWVkc1VJUHJvY2VzcygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5jb2RlKE5TQ29kZXIgKikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShOU0NvZGVyICosIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25hbDxib29s
PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0VW5ibG9ja0FzeW5jKERl
Y2lzaW9uSGFuZGxlckZ1bmN0aW9uKSBjb25zdDsKICAgICB2b2lkIHdyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKGNvbnN0IERlY2lzaW9uSGFuZGxlckZ1bmN0aW9uJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDkgKzExOCwxMyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6ZGVjb2RlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpIGNvbnN0Citib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJs
b2NrUmVxdWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5k
bGVSZXF1ZXN0Iik7CisgICAgaWYgKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwgKnVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCk7CisKKyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxP
Q0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1YXRvcikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxMzgsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5ibG9ja1JlcXVlc3QpCiAgICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHdpbGwg
aGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0LlxuIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxvY2tSZXF1ZXN0KTsKICAgICByZXR1
cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZp
bHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1
ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2Nr
Q29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAg
ICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlc2V0Iik7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQog
CiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRo
aXMsIGVuYWJsZWQpOwogICAgIE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsK
ICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAg
ICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OworICAgIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lv
biBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xl
dG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBt
X3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2Vk
KHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRN
b2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7Cisg
ICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBz
aW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRy
aWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVk
LgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJs
b2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmlu
ZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lk
IHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50IGRl
Y2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lk
IHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNp
b25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9S
VCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBk
ZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERlY2lz
aW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAg
ICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5i
bG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNp
c2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAg
Y29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsK
IAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChj
b25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9
IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZv
aWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNv
bnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1
bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBt
X2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsg
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9OwpAQCAtODcsNCArOTAsNTcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNv
ZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsK
KyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdFVSTCgpOworICAgIGVu
Y29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7Cisg
ICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVy
ID4+IGRlY2lzaW9uUG9pbnQ7CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNp
b247CisgICAgaWYgKCFkZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uPiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbjsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVuYmxvY2tSZXF1
ZXN0VVJMOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3RVUkw7CisgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZp
ZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNpbmdsZXRvbigpLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldEJsb2NrZWRTdHJpbmcoKmJsb2NrZWRT
dHJpbmcpOworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRv
bigpLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldERlY2lzaW9uKCpkZWNpc2lvbik7
CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0
VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0TW9kaWZpZWRS
ZXF1ZXN0VVJMKCptb2RpZmllZFJlcXVlc3RVUkwpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250
ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAgICByZXR1
cm4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVz
IHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVu
YmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmds
ZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRP
YnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHBy
b2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywxMCBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtl
KHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYmKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVm
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBC
bG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgaW5zdGFsbE1vY2tD
b250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisKIHBy
aXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
LCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVj
dGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6Okxv
YWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykKKwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3Mo
KS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiArMjM5LDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJpbmciKTsKICAgICBp
ZiAoIWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0
ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtMTc3MywyNSArMTc3NSwzMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2so
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxv
Y2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9j
a2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVs
b2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5u
ZWVkc1VJUHJvY2VzcygpKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCwgc3RkOjpudWxsb3B0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRl
ci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9v
bCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCwgdW5ibG9ja2VkKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVu
YmxvY2tlZCk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2Vk
QnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBl
cnJvcjsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKy8vICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAg
ICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKICAgICBlbHNlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CiB9CkBAIC0xMzEsNiArMTMzLDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsK
IGNsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExp
bmVhclRpbWluZ0Z1bmN0aW9uOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNs
YXNzIE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5
bWVudEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKQEAgLTg1NSw2ICs4NTgsMjYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAg
ICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpB
ZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAg
ICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1W
YWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
bjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uOjpCbG9jaworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjbwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxl
Q29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCwgc3RkOjpudWxsb3B0KSkgewogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciA9IHsgfTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5MCw2ICsxOTkwLDgg
QEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIwQjIzOTlBMkREMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2
NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUxQkYwMEQyMzc0RiAv
KiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlk
aW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07CiAJCUUzQ0FBQTQ0
MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMyNDEzMjc4QTAwQ0VE
MkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02NDYzLDYgKzY0NjUs
OCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzMTM2
NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0QjExMEMyN0M0
NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzYxMkZG
MDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJ
ZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTgyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8qIHdlYnJ0YyAqLywK
KwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAyMTYzQTNCMUMwMEVD
MzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05OTc2
LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM0QjExMEMy
N0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLywKKwkJCQlFMzRC
MTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAog
CQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLywK
IAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc1MEYz
MkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLApA
QCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdDMjc1RTk3QjYwMDJEQzIyRCAvKiBN
b2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjVGODAyNzVF
OTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzcyMTRGMTgzMDAw
MTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENF
REMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVD
MTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBC
dW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkU5MjdDNkI4NDkwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNoU2VydmljZUNvbm5lY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxk
U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMxQjMwRjI1NDBGNTBEMDBEOTEwMEIg
LyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAgIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGlu
Z3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZzZXR0aW5n
cywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAw
KTsKKworfQorCisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzIsNiArMjMyLDggQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRz
Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCiAj
dW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9O
X0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0Myw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nl
c3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKKworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc3Rh
cnRPYnNlcnZpbmcoKTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3
ICsyMjMzLDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgVwogICAg
IHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFT
RV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmln
YXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFT
RV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhl
IE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOworCiAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FE
RVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2No
ZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAg
ICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIFdl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6IG1fY29yZUxvYWRl
cihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFtZXRlcnModHJhY2tp
bmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVz
b3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJSZXNvdXJjZUxvYWRl
cigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNlIFdlYlJlc291cmNl
TG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJv
cG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8g
bm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92
ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM1MSwxMSArMzUzLDExIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKIHsKICAgICBpZiAoIW1f
Y29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNv
bnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCksIHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
LSAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpOworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpOwogICAg
IHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
Ci0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKICAg
ICBDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKQogICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0
aXR1dGVEYXRhKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzcsMTAg
KzE4NzcsMTEgQEAgUmVmPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZAogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlcikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRl
bnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKIHsKICAgICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKICAgICAg
ICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgICAg
ICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldFVuYmxv
Y2tlZEFmdGVyUmVxdWVzdChXVEZNb3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw3ICsyNjMsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAg
dm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcikgZmluYWw7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikg
ZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmlu
YWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTQsNiArMTcxNCw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMKIAogICAgIEFTU0VSVCghbV9wZW5kaW5n
TmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyk7CisK
IH0KIAogLy8gTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCBzaG91bGQgbmV2ZXIg
YmUgc2VudCB0byB0aGUgV2ViUHJvY2Vzcy4gSXQgbXVzdCBhbHdheXMgYmUgY29udmVydGVkIHRv
IGEgTG9hZFJlcXVlc3QgbWVzc2FnZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplV2ViUHIKICAgICAvLyBUaGlzIG1ldGhvZCBjYWxsIHdpbGwgYWxzbyBjYWxsIFJlZ2lzdGVy
QXBwbGljYXRpb24sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHVzIHRvIGNhbGwgdGhpcyBvcgog
ICAgIC8vIGNoZWNrIGluIHdpdGggTGF1bmNoIFNlcnZpY2VzCiAgICAgW05TQXBwbGljYXRpb24g
X2FjY2Vzc2liaWxpdHlJbml0aWFsaXplXTsKLQorICAgIAogICAgIC8vIFVwZGF0ZSBwcm9jZXNz
IG5hbWUgd2hpbGUgaG9sZGluZyB0aGUgTGF1bmNoIFNlcnZpY2VzIHNhbmRib3ggZXh0ZW5zaW9u
CiAgICAgdXBkYXRlUHJvY2Vzc05hbWUoSXNJblByb2Nlc3NJbml0aWFsaXphdGlvbjo6WWVzKTsK
IApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0
ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQp
OgorCiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4gSGFz
aGVyIGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICB2b2lkIGNvbnRl
bnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
KSBmaW5hbDsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICNl
bmRpZgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjA0NSw5ICsyMDQ1LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW4KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIpCit2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgc3RkOjpvcHRp
b25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CiAgICAgY29yZShtX3dlYkZyYW1l
LmdldCgpKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcihXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgY29yZShtX3dlYkZyYW1lLmdl
dCgpKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChX
VEZNb3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453523</attachid>
            <date>2022-03-01 12:36:16 -0800</date>
            <delta_ts>2022-03-01 13:50:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220301123614.patch</filename>
            <type>text/plain</type>
            <size>71871</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzcsMTYgKzI0MzcsMjUgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMbwogI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi1SZXNvdXJjZUVy
cm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCkKK1Jlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRl
bnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxvY2tIYW5kbGVy
LnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBpZiAodW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0ICYmICEqdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQorICAgICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgpLT5zY3Jp
cHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHko
KV0oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNjcmlwdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlv
bihzY3JpcHQpOworICAgICAgICAgICAgfSk7CisjZWxzZQogICAgICAgICB1bmJsb2NrSGFuZGxl
ci53cmFwV2l0aERlY2lzaW9uSGFuZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBm
cmFtZSgpLT5zY3JpcHQoKSB9LCBzY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5p
c29sYXRlZENvcHkoKV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlmICghdW5ibG9j
a2VkICYmIHNjcmlwdENvbnRyb2xsZXIpCiAgICAgICAgICAgICAgICAgc2NyaXB0Q29udHJvbGxl
ci0+ZXhlY3V0ZVNjcmlwdElnbm9yaW5nRXhjZXB0aW9uKHNjcmlwdCk7CiAgICAgICAgIH0pOwor
I2VuZGlmCiAgICAgfQotICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgIGZyYW1lTG9hZGVyKCkt
PmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxl
ciksIHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CiAgICAgYXV0byBlcnJvciA9IGZyYW1lTG9hZGVy
KCktPmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KCkpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDA3LDcg
KzQwNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFs
IHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgotICAgIFdF
QkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92
aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNyArMzU4LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdmly
dHVhbCB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIHsgfQogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgPSAwOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODUsMTIgKzE4NSwyMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVj
a2VyOjpjaGVja05hCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAg
ICBpZiAobV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KSkgeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVS
ZXF1ZXN0KHJlcXVlc3QsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSkgewogICAgICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lIHsgJm1fZnJhbWUgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBBU1NFUlQobV91bmJsb2NrZWRBZnRl
clJlcXVlc3QpOworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRs
ZVJlcXVlc3QgdW5ibG9ja2VkICVkIiwgKm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKKyAgICAg
ICAgaWYgKCptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiByZWxvYWQiKTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2ZyYW1lXSB7CisgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIG1fY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2ZyYW1lXShib29sIHVuYmxvY2tl
ZCkgewogICAgICAgICAgICAgaWYgKHVuYmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+
bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgIFBPTElDWUNI
RUNLRVJfUkVMRUFTRV9MT0coImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVz
ZSBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwog
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb246Oklnbm9yZUxvYWQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
b2xpY3lDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdm9pZCBzZXRDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZSh1bmJsb2NrSGFuZGxl
cik7IH0KKyAgICB2b2lkIHNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChzdGQ6Om9wdGlvbmFsPGJv
b2w+JiYgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0g
V1RGTW92ZSh1bmJsb2NrZWRBZnRlclJlcXVlc3QpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTEwNCw2ICsxMDUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
OwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbmVlZHNVSVByb2Nlc3MoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29k
ZShOU0NvZGVyICopIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoTlNDb2RlciAqLCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVxdWVzdFVuYmxvY2tBc3luYyhEZWNpc2lvbkhh
bmRsZXJGdW5jdGlvbikgY29uc3Q7CiAgICAgdm9pZCB3cmFwV2l0aERlY2lzaW9uSGFuZGxlcihj
b25zdCBEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw5ICsxMTgsMTMgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI6OmRlY29kZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSBjb25zdAorYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1fdW5ibG9ja1JlcXVl
c3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVz
dCIpOworICAgIGlmICh1bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsICp1bmJsb2NrZWRBZnRlclJl
cXVlc3QpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIgJiYgIXVuYmxvY2tlZEFmdGVy
UmVxdWVzdCkgewogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRM
RVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMzQsNiArMTM4LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OmNhbkhhbgogICAgIGlmIChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29u
dGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8
JXM+IGFzIGFuIHVuYmxvY2sgcmVxdWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwogI2VuZGlmCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBj
YW5IYW5kbGVSZXF1ZXN0ICVkIiwgaXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5i
bG9ja1JlcXVlc3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQor
ICAgIAordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgewor
cHVibGljOgorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQgdm9pZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQ+KTsKKyAgICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNl
dHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+
IG1fY2xpZW50OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIK
ICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2Nr
Q29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00NCwxMiArNDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRG
aQogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xl
dG9uKCkgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFi
bGVkKTsKICAgICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9l
bmFibGVkID0gZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2Nr
ZWRTdHJpbmcpCit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0
RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNp
c2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNp
b24pCit7CisgICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERl
Y2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2Nr
UmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRS
ZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9k
aWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigp
KTsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2Nr
UmVxdWVzdFVSTCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9u
KCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2Nr
VVJMSG9zdCgpIHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUg
Z2VuZXJhdGVkIGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4
LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9j
a2VkU3RyaW5nOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9j
a2VkU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBv
aW50KCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNp
c2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQg
PSBkZWNpc2lvblBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBz
ZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24o
KSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNp
c2lvbiBkZWNpc2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lz
aW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1
ZXN0RGVjaXNpb247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNp
b24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0
cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBj
b25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZp
ZWRSZXF1ZXN0VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3Ry
aW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmll
ZFJlcXVlc3RVUkw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1v
ZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBk
ZWNvZGUoRGVjb2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MoKSA9IGRlZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVk
IHsgZmFsc2UgfTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9u
UG9pbnQ6OkFmdGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU3IEBAIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBi
bG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBvaW50KCk7CisgICAgZW5j
b2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3REZWNpc2lv
bigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3RVUkwoKTsKKyAgICBlbmNvZGVyIDw8
IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3Rk
OjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxi
b29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9ja2VkU3RyaW5nOworICAgIGlmICgh
YmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNp
c2lvblBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAg
IGlmICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5i
bG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNp
b247CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB1bmJsb2NrUmVxdWVzdFVSTDsK
KyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0VVJMOworICAgIGlmICghdW5ibG9ja1JlcXVl
c3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVz
dFVSTDsKKyAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0
b24oKS5zZXRFbmFibGVkKCplbmFibGVkKTsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRCbG9ja2VkU3RyaW5nKCpibG9ja2VkU3RyaW5nKTsK
KyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRE
ZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldE1vZGlmaWVkUmVxdWVzdFVS
TCgqbW9kaWZpZWRSZXF1ZXN0VVJMKTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlIik7CisgICAgcmV0dXJuIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MoKTsKK30KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVu
YWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2
aWdhdGlvbik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5n
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6
CisKIDIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRv
IHByb3ZpZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDM3LDYgKzE0MzcsMTAgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0
d29ya0NvbgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJj
ZUxvYWRJZGVudGlmaWVyKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmJikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7
CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGlj
OgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBK
U0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGluc3RhbGxNb2NrQ29udGVudEZp
bHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOworCiBwcml2YXRlOgog
ICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTExMyw0ICsxMTMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzCiAjZW5kaWYKICAgICBTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1
bGluZ01vZGUgbW9kZSkKICAgICBQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRp
bmdzKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5l
dHdvcmtSZXNvdXJjZUxvCiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQo
KSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9CiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpAQCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydCgpCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRl
bnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogc3RhcnRDb250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01h
aW5SZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29u
dGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAg
IGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNz
KSk7CiAgICAgfQogCkBAIC0xNzczLDI1ICsxNzc3LDMxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewot
ICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlm
ICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRl
bnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJv
ciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1
ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRp
ZEJsb2NrIik7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBzdGQ6
Om51bGxvcHQpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQgPSBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdGhpcywgZXJyb3Is
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgeworICAgICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCB1bmJs
b2NrZWQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2VkKTsKICAgICAgICAgfSk7
CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvciht
X3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJM
LCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05OCw2ICs5OCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnNDRi5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Lmg+CisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KQEAgLTEzMSw2
ICsxMzMsNyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwogY2xhc3MgSFRUUEhlYWRlck1hcDsK
IGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb247Citj
bGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xh
c3MgUGFzdGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1
cmF0aW9uOwpAQCAtODU1LDYgKzg1OCwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAor
ICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsK
K307CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVu
dD4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1
dG9wbGF5RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5
LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6OnNldFVucmVhY2hhYmxlVVJMKGNvCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogYm9vbCBXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05h
dmlnYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghbV9j
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewor
ICAgIGlmICghbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChy
ZXF1ZXN0LCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyID0geyB9OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIz
OTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3Nh
Z2VzLmggKi87IH07CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJRTM4QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJG
MjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUy
RkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTky
N0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQy
Mzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5
NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87
IH07CiAJCUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFj
Y2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1
cHBvcnRTUEkuaCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2
M0MwMDk0RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8q
IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2Vi
Q29yZVRlc3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0
U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjEx
MEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBT
YW5kYm94ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
Zm9sZGVyOyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0Nzks
OCBAQAogCQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNz
YWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIz
QTU1MTE0MDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVz
ZXJJbnRlcmZhY2VJZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZC
RjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBD
QzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAw
NjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFG
MzQwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYg
Kzk0NjMsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMw
NzU5RTFERTg1RTY1MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2
MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1
MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAq
LywKIAkJCQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmggKi8sCiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBG
MzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGli
V2ViQ29yZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAv
KiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAw
RjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYw
MDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyog
TG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBA
CiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAx
NkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29u
bmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8q
IE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEw
MEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsx
NTY5NSw3IEBACiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVu
dERlc2NyaXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAy
REMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5
MDAgLyogTW9ja1B1c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3
QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUMxQzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKwor
I2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVy
TWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7Cisg
ICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzdGFydE9ic2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkp
OworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlz
dGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Oklu
c3RhbGxNb2NrQ29udGVudEZpbHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAg
IC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAog
I2luY2x1ZGUgPHd0Zi9saW51eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVk
ZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVB
U0VfTE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9z
ZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0z
NDEsNiArMzQzLDggQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdp
Z2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBX
ZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkBAIC0yMjI5LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRp
YUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2
ICs0NzEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAg
aWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZSht
X2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxs
b3B0KTsKICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBS
ZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9y
aXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIg
UFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJp
b3JpdHkoKSksIHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZSkudG9VSW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJj
ZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9H
X0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJj
ZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBm
YWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1
c2UgaXQgaGFkIGNyYXNoZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJl
c291cmNlTG9hZGVyKFJlZgogICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikp
CiAgICAgLCBtX3RyYWNraW5nUGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBX
ZWJSZXNvdXJjZUxvYWRlcjo6fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBA
QCBNYWluRnJhbWVNYWluUmVzb3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBS
ZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFr
ZSB0aGUgcmVxdWVzdCB3aG9sZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRo
ZSByZXF1ZXN0J3MgYm9keSB3aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5j
ZSByZWFzb25zLgpAQCAtMzUxLDI0ICszNTMsMzAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3Qg
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5i
bG9ja2VkQWZ0ZXJSZXF1ZXN0KQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2Nr
SGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIG1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVu
YmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFp
blJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjog
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIgbm8gbG9hZGVyIik7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcm4gZWFybHkgcmV0dXJuIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhh
bmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBz
dWJzdGl0dXRlRGF0YSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBj
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2
b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICB2b2lkIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIENvbnRl
bnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAg
Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwg
c3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiAgICAgQ2FuY2VsTWFp
blJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKICAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJM
IGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODc3LDEwICsxODc3LDExIEBA
IFJlZjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWQKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CiAgICAg
aWYgKCF1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7CiAgICAgICAgIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICAgICAgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRVbmJsb2NrZWRBZnRlclJl
cXVlc3QoV1RGTW92ZSh1bmJsb2NrZWRBZnRlclJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIHZvaWQgY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIp
IGZpbmFsOworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzE0LDYgKzE3MTQsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRS
ZXF1ZXN0KExvYWRQYXJhbWV0ZXJzCiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmlnYXRpb25J
RCk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMpOworCiB9CiAKIC8vIExv
YWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2ggc2hvdWxkIG5ldmVyIGJlIHNlbnQgdG8g
dGhlIFdlYlByb2Nlc3MuIEl0IG11c3QgYWx3YXlzIGJlIGNvbnZlcnRlZCB0byBhIExvYWRSZXF1
ZXN0IG1lc3NhZ2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1
Miw3ICszNTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAg
ICAgLy8gVGhpcyBtZXRob2QgY2FsbCB3aWxsIGFsc28gY2FsbCBSZWdpc3RlckFwcGxpY2F0aW9u
LCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB1cyB0byBjYWxsIHRoaXMgb3IKICAgICAvLyBjaGVj
ayBpbiB3aXRoIExhdW5jaCBTZXJ2aWNlcwogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmls
aXR5SW5pdGlhbGl6ZV07Ci0KKyAgICAKICAgICAvLyBVcGRhdGUgcHJvY2VzcyBuYW1lIHdoaWxl
IGhvbGRpbmcgdGhlIExhdW5jaCBTZXJ2aWNlcyBzYW5kYm94IGV4dGVuc2lvbgogICAgIHVwZGF0
ZVByb2Nlc3NOYW1lKElzSW5Qcm9jZXNzSW5pdGlhbGl6YXRpb246Olllcyk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0w
Mi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3Ry
aW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFk
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdm9pZCBjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikgZmluYWw7Cisg
ICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAjZW5kaWYKIAogICAg
IHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIwNDUsOSArMjA0NSwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xv
YWRlckNsaWVuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKQordm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQogewogICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxv
YWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RG
TW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRl
cigpLnBvbGljeUNoZWNrZXIoKS5zZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoV1RGTW92ZSh1bmJs
b2NrZWRBZnRlclJlcXVlc3QpKTsKIH0KICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3Qg
ZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBw
cm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQ
bHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRl
cmluZy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRp
YWwgc2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRH
bG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkw
NTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nUGx1Z0luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0j
aW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW4uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50Rmls
dGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nv
bnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkg
KzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFs
VmFsdWVzLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>
<flag name="commit-queue"
          id="480937"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453538</attachid>
            <date>2022-03-01 13:41:22 -0800</date>
            <delta_ts>2022-03-02 07:41:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220301134121.patch</filename>
            <type>text/plain</type>
            <size>73518</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzcsOCArMjQzNyw5IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KICNlbmRpZiAvLyBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotUmVzb3VyY2VFcnJv
ciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpCitSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29s
PiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5z
ZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5k
bGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7
IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewpAQCAtMjQ0Niw3ICsyNDQ3LDcgQEAg
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udAogICAgICAgICAgICAgICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQp
OwogICAgICAgICB9KTsKICAgICB9Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKSwgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICBhdXRvIGVycm9yID0gZnJh
bWVMb2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDcsNyArNDA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBS
ZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29u
c3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlm
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVD
b250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2Nr
ZWRBZnRlclJlcXVlc3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZp
bHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICsz
NTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LSAgICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikg
eyB9CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
KSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NSwxMiArMTg1LDIzIEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBv
bGljeUNoZWNrZXI6OmNoZWNrTmEKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1
ZXN0KHJlcXVlc3QpKSB7CisgICAgaWYgKG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNh
bkhhbmRsZVJlcXVlc3QocmVxdWVzdCwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpKSB7CiAgICAg
ICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9OworI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIEFTU0VSVChtX3VuYmxv
Y2tlZEFmdGVyUmVxdWVzdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjog
Y2FuSGFuZGxlUmVxdWVzdCB1bmJsb2NrZWQgJWQiLCAqbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qp
OworICAgICAgICBpZiAoKm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlbG9hZCIpOworICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZnJhbWVdIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVs
b2FkKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgbV9jb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbZnJhbWVdKGJvb2wg
dW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBpZiAodW5ibG9ja2VkKQogICAgICAgICAgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgfSk7CisjZW5kaWYKICAgICAgICAg
UE9MSUNZQ0hFQ0tFUl9SRUxFQVNFX0xPRygiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBpZ25vcmlu
ZyBiZWNhdXNlIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBjYW4gaGFuZGxlIHRoZSByZXF1
ZXN0Iik7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BvbGljeUNoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICB2b2lkIHNldENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9j
a0hhbmRsZXIpIHsgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSBXVEZNb3ZlKHVuYmxv
Y2tIYW5kbGVyKTsgfQorICAgIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHN0ZDo6b3B0
aW9uYWw8Ym9vbD4mJiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsgbV91bmJsb2NrZWRBZnRlclJl
cXVlc3QgPSBXVEZNb3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpAQCAtMTA0LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91bmJsb2NrZWRBZnRl
clJlcXVlc3Q7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBuZWVkc1VJUHJvY2VzcygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5jb2RlKE5TQ29kZXIgKikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShOU0NvZGVyICosIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjpvcHRpb25hbDxib29s
PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0VW5ibG9ja0FzeW5jKERl
Y2lzaW9uSGFuZGxlckZ1bmN0aW9uKSBjb25zdDsKICAgICB2b2lkIHdyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKGNvbnN0IERlY2lzaW9uSGFuZGxlckZ1bmN0aW9uJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTE4LDkgKzExOCwxMyBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6ZGVjb2RlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpIGNvbnN0Citib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJs
b2NrUmVxdWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5k
bGVSZXF1ZXN0Iik7CisgICAgaWYgKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwgKnVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCk7CisKKyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxP
Q0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1YXRvcikKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxMzgsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5ibG9ja1JlcXVlc3QpCiAgICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHdpbGwg
aGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0LlxuIiwgcmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxvY2tSZXF1ZXN0KTsKICAgICByZXR1
cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBj
b25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZp
bHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1
ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2Nr
Q29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAg
ICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlc2V0Iik7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQog
CiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRo
aXMsIGVuYWJsZWQpOwogICAgIE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsK
ICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAg
ICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OworICAgIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lv
biBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xl
dG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBt
X3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2Vk
KHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRN
b2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7Cisg
ICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBz
aW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRy
aWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVk
LgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRT
dHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJs
b2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmlu
ZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lk
IHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50IGRl
Y2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lk
IHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNp
b25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9S
VCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBk
ZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERlY2lz
aW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAg
ICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5i
bG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNp
c2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAg
Y29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsK
IAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChj
b25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9
IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZv
aWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNv
bnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1
bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBt
X2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsg
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9OwpAQCAtODcsNCArOTAsNTcgQEAgcHJpdmF0
ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNv
ZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsK
KyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdFVSTCgpOworICAgIGVu
Y29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlmICgh
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7Cisg
ICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVy
ID4+IGRlY2lzaW9uUG9pbnQ7CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNp
b247CisgICAgaWYgKCFkZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uPiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbjsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHVuYmxvY2tSZXF1
ZXN0VVJMOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3RVUkw7CisgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZp
ZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNpbmdsZXRvbigpLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldEJsb2NrZWRTdHJpbmcoKmJsb2NrZWRT
dHJpbmcpOworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRv
bigpLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLnNldERlY2lzaW9uKCpkZWNpc2lvbik7
CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0
VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuc2V0TW9kaWZpZWRS
ZXF1ZXN0VVJMKCptb2RpZmllZFJlcXVlc3RVUkwpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250
ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAgICByZXR1
cm4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4g
eworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdl
ZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5n
IGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50Rmls
dGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlv
bik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIw
MjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRvIHByb3Zp
ZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM3LDYgKzE0MzcsMTAgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0Nv
bgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5z
dGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
JikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JF
TEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFz
cyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0
b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0xOTgsNiArMTk5LDggQEAgcHVibGljOgogICAg
IHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jl
c291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcik7CiAKKyAgICB2b2lkIGluc3RhbGxNb2NrQ29udGVudEZpbHRlcihX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOworCiBwcml2YXRlOgogICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEx
Myw0ICsxMTMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAj
ZW5kaWYKICAgICBTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01v
ZGUgbW9kZSkKICAgICBQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29u
dGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQor
I2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtS
ZXNvdXJjZUxvCiAgICAgLCBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyht
X2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAg
ICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSB9CiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVz
b3VyY2VMb2FkZXIiKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBjb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKCkpKQpAQCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0
ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29u
dGVudEZpbHRlcjogc3RhcnRDb250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSgpKQogICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICgh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJz
LnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAg
ICAgfQogCkBAIC0xNzczLDI1ICsxNzc3LDMxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAg
ICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5i
bG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0
ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdl
YktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsK
KworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2Nr
Iik7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBzdGQ6Om51bGxv
cHQpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0
VW5ibG9ja0FzeW5jKFt1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQg
PSBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdGhpcywgZXJyb3IsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgeworICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCB1bmJsb2NrZWQp
KTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVu
YmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAg
fQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFt
ZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9j
b250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJz
dGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2
ICs5OCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnND
Ri5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KQEAgLTEzMSw2ICsxMzMs
NyBAQCBjbGFzcyBGb250UGxhdGZvcm1EYXRhOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNz
IEtleWZyYW1lVmFsdWVMaXN0OwogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb247CitjbGFzcyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFz
dGVib2FyZEN1c3RvbURhdGE7CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9u
OwpAQCAtODU1LDYgKzg1OCwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OlJlCiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRl
clJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpE
ZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAgICAgIFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyRmlu
aXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsKK307CisK
IHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4gewog
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYkZyYW1lUHJv
eHk6OnNldFVucmVhY2hhYmxlVVJMKGNvCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
Ym9vbCBXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRp
b24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlmICghbV9jb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgeworICAgIGlm
ICghbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0
LCBzdGQ6Om51bGxvcHQpKSB7CiAgICAgICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
ID0geyB9OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlE
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmgg
Ki87IH07CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJRTM4QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUx
QkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdD
NkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MEND
NjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUw
MDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJ
CUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2li
aWxpdHlTdXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRT
UEkuaCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0
RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0
aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0
NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEy
N0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAog
CQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0
MDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRl
cmZhY2VJZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1
MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVXNlckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNE
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFE
RTg1RTY1MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2
ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBE
NDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJ
CQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAz
MkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29y
ZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJX
ZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2
IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0
MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJ
NTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcg
LyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZF
NzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVC
MCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3
IEBACiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2Ny
aXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQg
LyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4
NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyog
TW9ja1B1c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1
MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMxQzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0
dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpz
dGFydE9ic2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAg
IGlmIChhdXRvIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNp
bmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogI2luY2x1
ZGUgPHd0Zi9saW51eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9H
CiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9u
SUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiAr
MzQzLDggQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdl
Ojpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9j
ZXNzOjp+V2ViUHJvY2VzcygpCkBAIC0yMjI5LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxv
YWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsK
ICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJj
ZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVk
LCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0
ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHko
KSksIHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSkudG9VSW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQo
bG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9S
KCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRl
ci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQg
dG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQg
aGFkIGNyYXNoZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNl
TG9hZGVyKFJlZgogICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAg
LCBtX3RyYWNraW5nUGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNv
dXJjZUxvYWRlcjo6fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWlu
RnJhbWVNYWluUmVzb3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2Vi
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUg
cmVxdWVzdCB3aG9sZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1
ZXN0J3MgYm9keSB3aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFz
b25zLgpAQCAtMzUxLDI0ICszNTMsMzAgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc291cgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0KQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxl
ciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIG1fY29yZUxvYWRl
ci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tI
YW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIgbm8gbG9hZGVyIik7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQor
ICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkg
fHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cm4gZWFybHkgcmV0dXJuIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0
dXRlRGF0YSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2b2lkIGNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0
aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIENvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpv
cHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiAgICAgQ2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAg
ICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2Nr
ZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODc3LDEwICsxODc3LDExIEBAIFJlZjxG
cmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZUxvYWQKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwg
c3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CiAgICAgaWYgKCF1
bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7CiAgICAgICAgIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICAgICAgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRVbmJsb2NrZWRBZnRlclJlcXVlc3Qo
V1RGTW92ZSh1bmJsb2NrZWRBZnRlclJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjMsNyArMjYzLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIHZvaWQgY29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpIGZpbmFs
OworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogI2VuZGlmCiAK
ICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzE0LDYgKzE3MTQsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0
KExvYWRQYXJhbWV0ZXJzCiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmlnYXRpb25JRCk7CiAg
ICAgQVNTRVJUKCFtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMpOworCiB9CiAKIC8vIExvYWRSZXF1
ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2ggc2hvdWxkIG5ldmVyIGJlIHNlbnQgdG8gdGhlIFdl
YlByb2Nlc3MuIEl0IG11c3QgYWx3YXlzIGJlIGNvbnZlcnRlZCB0byBhIExvYWRSZXF1ZXN0IG1l
c3NhZ2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1Miw3ICsz
NTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgLy8g
VGhpcyBtZXRob2QgY2FsbCB3aWxsIGFsc28gY2FsbCBSZWdpc3RlckFwcGxpY2F0aW9uLCBzbyB0
aGVyZSBpcyBubyBuZWVkIGZvciB1cyB0byBjYWxsIHRoaXMgb3IKICAgICAvLyBjaGVjayBpbiB3
aXRoIExhdW5jaCBTZXJ2aWNlcwogICAgIFtOU0FwcGxpY2F0aW9uIF9hY2Nlc3NpYmlsaXR5SW5p
dGlhbGl6ZV07Ci0KKyAgICAKICAgICAvLyBVcGRhdGUgcHJvY2VzcyBuYW1lIHdoaWxlIGhvbGRp
bmcgdGhlIExhdW5jaCBTZXJ2aWNlcyBzYW5kYm94IGV4dGVuc2lvbgogICAgIHVwZGF0ZVByb2Nl
c3NOYW1lKElzSW5Qcm9jZXNzSW5pdGlhbGl6YXRpb246Olllcyk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAy
LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
dGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3
b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0Myw3ICsyNDMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcikgZmluYWw7CisgICAgdm9p
ZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikgZmluYWw7CiAjZW5kaWYKIAogICAgIHZvaWQg
cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIwNDUsOSArMjA0NSwxMCBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNs
aWVuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKQordm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KQogewogICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigp
LnBvbGljeUNoZWNrZXIoKS5zZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RGTW92ZSh1
bmJsb2NrSGFuZGxlcikpOworICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLnBv
bGljeUNoZWNrZXIoKS5zZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoV1RGTW92ZSh1bmJsb2NrZWRB
ZnRlclJlcXVlc3QpKTsKIH0KICNlbmRpZgogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVy
ZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4u
bW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5t
bToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0
dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZp
bHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxW
YWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRy
YXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
PgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkwNTI1KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5n
UGx1Z0luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0
ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4u
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
Lmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5n
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVz
LmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453610</attachid>
            <date>2022-03-02 07:41:35 -0800</date>
            <delta_ts>2022-03-02 14:19:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220302074133.patch</filename>
            <type>text/plain</type>
            <size>74617</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzcsOCArMjQzNywxNiBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLVJlc291cmNlRXJy
b3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQogeworICAgIGlmICh1bmJsb2NrZWRBZnRlclJlcXVl
c3QpIHsKKyAgICAgICAgYXV0byByZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gKnVuYmxvY2tlZEFm
dGVyUmVxdWVzdF0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJG
dW5jdGlvbiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja1JlcXVlc3RlckZ1bmN0
aW9uKHJlcXVlc3Rlcik7CisgICAgfQorCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRV
bnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVy
LndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZy
YW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlz
b2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewpAQCAtMjQ0Niw3ICsyNDU0LDcgQEAgUmVz
b3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udAogICAgICAgICAgICAgICAgIHNj
cmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwog
ICAgICAgICB9KTsKICAgICB9Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tI
YW5kbGVyKSwgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICBhdXRvIGVycm9yID0gZnJhbWVM
b2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDcsNyArNDA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZD
b3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3Qg
ZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRB
ZnRlclJlcXVlc3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRl
clByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3Qg
U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICszNTgs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikgeyB9
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NSwxMiArMTg1LDI4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmNoZWNrTmEKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1ZXN0
KHJlcXVlc3QpKSB7CisgICAgaWYgKG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhh
bmRsZVJlcXVlc3QocmVxdWVzdCwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpKSB7CiAgICAgICAg
IFJlZlB0cjxGcmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9OworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIEFTU0VSVChtX3VuYmxvY2tl
ZEFmdGVyUmVxdWVzdCk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2Fu
SGFuZGxlUmVxdWVzdCB1bmJsb2NrZWQgJWQiLCAqbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpOwor
ICAgICAgICBpZiAoKm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlbG9hZCIpOworICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbZnJhbWVdIHsKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2Fk
KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2ZyYW1lXShib29s
IHVuYmxvY2tlZCkgeworICAgICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCisgICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisjZWxzZQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1
ZXN0VW5ibG9ja0FzeW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGlm
ICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwog
ICAgICAgICB9KTsKKyNlbmRpZgogICAgICAgICBQT0xJQ1lDSEVDS0VSX1JFTEVBU0VfTE9HKCJj
aGVja05hdmlnYXRpb25Qb2xpY3k6IGlnbm9yaW5nIGJlY2F1c2UgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIGNhbiBoYW5kbGUgdGhlIHJlcXVlc3QiKTsKICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uKHsgfSwgbnVsbHB0ciwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkKTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgJKHJldmlzaW9u
IDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIHZvaWQgc2V0Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcikgeyBtX2NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciA9IFdURk1vdmUodW5ibG9ja0hhbmRsZXIpOyB9CisgICAgdm9pZCBzZXRV
bmJsb2NrZWRBZnRlclJlcXVlc3Qoc3RkOjpvcHRpb25hbDxib29sPiYmIHVuYmxvY2tlZEFmdGVy
UmVxdWVzdCkgeyBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFdURk1vdmUodW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0KTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdDsKICNlbmRpZgogfTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzVUlQcm9jZXNzKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNDb2RlciAqKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KE5TQ29kZXIgKiwgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlcXVlc3RVbmJsb2NrQXN5bmMoRGVjaXNpb25IYW5kbGVyRnVuY3Rpb24pIGNvbnN0
OwogICAgIHZvaWQgd3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoY29uc3QgRGVjaXNpb25IYW5kbGVy
RnVuY3Rpb24mKTsKIApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2
b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwg
PSB1cmw7IH0KIAorICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3RlckZ1bmN0aW9uKFVuYmxvY2tS
ZXF1ZXN0ZXJGdW5jdGlvbiYmKTsKKyAgICAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdW5ibG9j
a1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTExOCw5ICsxMTgsMTMgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OmRlY29kZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAorYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6Om9wdGlvbmFsPGJv
b2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAoIW1fdW5ibG9ja1Jl
cXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVx
dWVzdCIpOworICAgIGlmICh1bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsICp1bmJsb2NrZWRBZnRl
clJlcXVlc3QpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIgJiYgIXVuYmxvY2tlZEFm
dGVyUmVxdWVzdCkgewogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hB
TkRMRVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiArMTM4LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OmNhbkhhbgogICAgIGlmIChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRs
ZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVxdWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwogI2VuZGlmCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwgaXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlz
VW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAgLTE2MCw2ICsxNjUsMTEgQEAgdm9pZCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tSZXF1ZXN0ZXJGdW5jdGlvbihVbmJsb2NrUmVxdWVz
dGVyRnVuY3Rpb24mJiB1bmJsb2NrUmVxdWVzdGVyKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3Rl
ciA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3Rlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFu
YWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVu
dChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gY2xpZW50KQoreworICAg
IG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChzZXR0aW5ncyk7Cit9CisKK307
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAgICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50OworfTsKKworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgIk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiArNDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
KCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiByZXNldCIpOworICAgIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNp
bmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVw
IGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAgICBNb2NrQ29udGVudEZpbHRlcjo6ZW5z
dXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0
cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpCit7CisgICAgbV9ibG9ja2VkU3RyaW5n
ID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lz
aW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsKKyAgICBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0
RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9u
OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRS
ZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0
VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXQoKTsKKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldCgpOwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgpIHsgcmV0dXJuICJtb2NrLXVuYmxvY2si
OyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIGludG8gdGhpbmtpbmcg
d2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9
Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykg
eyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
RGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvblBv
aW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Q
b2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OyB9CisgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQpOwog
CiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0g
ICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikgeyBtX2RlY2lzaW9uID0gZGVj
aXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9u
KERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSBjb25z
dCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KLSAgICB2b2lkIHNldFVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikgeyBtX3Vu
YmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9CisgICAgV0VC
Q09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsK
KyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1
ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2Rp
ZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpIHsgbV9tb2Rp
ZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7IH0KKyAgICBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmKTsK
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYpOwogCi1wcml2YXRlOgogICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRlZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWxldGU7
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJh
dG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OworcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAgICBEZWNpc2lvblBvaW50IG1f
ZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQg
KzkwLDU3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsK
IAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Vu
YWJsZWQ7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBk
ZWNpc2lvblBvaW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIg
PDwgdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVl
c3RVUkwoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciAp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5h
YmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBi
bG9ja2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9p
bnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lvblBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2lu
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBk
ZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlmICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVy
ID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiB1bmJsb2NrUmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0VVJM
OworICAgIGlmICghdW5ibG9ja1JlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBk
ZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVS
TCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRFbmFibGVkKCplbmFibGVkKTsKKyAgICBX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXRCbG9ja2Vk
U3RyaW5nKCpibG9ja2VkU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzaW5nbGV0b24oKS5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5zZXREZWNp
c2lvbigqZGVjaXNpb24pOworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNpbmdsZXRvbigpLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24pOworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRv
bigpLnNldE1vZGlmaWVkUmVxdWVzdFVSTCgqbW9kaWZpZWRSZXF1ZXN0VVJMKTsKKworICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVj
b2RlIik7CisgICAgcmV0dXJuIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKK30KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisK
K307CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFy
bmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVy
ZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZp
bHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVy
VW5ibG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFy
dE9ic2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcg
cHJvY2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDEwIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VM
b2FkZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRh
a2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiYpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNz
IEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29sOwpAQCAtMTk4LDYgKzE5OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2Fn
ZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisgICAgdm9pZCBpbnN0YWxsTW9j
a0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmKTsKKwog
cHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
cyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoVmVj
dG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQor
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTIzOCw2ICsyMzksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAg
IGlmICghaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGVudEZp
bHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CkBAIC05MzMsMTEgKzkzNSwxMyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAg
ICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7Cisg
ICAgICAgICAgICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogYmxvY2tlZCIpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRl
cmluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9CiAjZW5kaWYKLQogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtM
b2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTc3MywyNSArMTc3NywzMSBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9j
ZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAg
ICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVsb2FkQWZ0ZXJVbmJs
b2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCksIDApOworICAg
IGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFt
ZXRlcnMucmVxdWVzdCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNvbnRl
bnRGaWx0ZXJEaWRCbG9jayIpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2Vz
cygpKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCwgc3RkOjpudWxsb3B0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5ibG9j
a0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCksIHRo
aXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQp
IHsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCwgdW5ibG9ja2VkKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVuYmxvY2tlZCk7CiAg
ICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50Rmls
dGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250
ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVyLT5oYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKy8vICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAgICAgaWYgKHN1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9j
a2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKICAgICBlbHNlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9
CkBAIC0xMzEsNiArMTMzLDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNsYXNzIEhUVFBI
ZWFkZXJNYXA7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExpbmVhclRpbWluZ0Z1
bmN0aW9uOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIE5vdGlmaWNh
dGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVudEluc3RhbGxt
ZW50Q29uZmlndXJhdGlvbjsKQEAgLTg1NSw2ICs4NTgsMjYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBF
bnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9p
bnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5k
UmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGRE
YXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
blBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3csCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9j
aworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1
dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBX
ZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjbwogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRl
clVuYmxvY2tOYXZpZ2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAg
ICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRsZVJlcXVlc3QocmVx
dWVzdCkpIHsKKyAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCwgc3RkOjpudWxsb3B0KSkgewogICAgICAgICBtX2NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlciA9IHsgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZC
MEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlD
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJm
YWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9
OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZF
NjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgy
N0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJ
CUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENF
RDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vz
c2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBD
RkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYw
MDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJF
IC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJX
ZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHls
aWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3
QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3
NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
RTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8q
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2
MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERD
MjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2
MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZF
ODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJ
CQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
Ki8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBA
QAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQy
RjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5
MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0
Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYx
NTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAw
Mzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiAr
MTMzMjIsNyBAQAogCQkJCTUxN0I1RjdDMjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxl
Rm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJE
IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0Iy
MTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1v
Y2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMw
MDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0
QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MTU2ODQsNiArMTU2OTUsNyBAQAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNz
YWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQy
NzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTE3QjVGODYyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1
RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNoU2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDMUMxQjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBt
YW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5n
ZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZzZXR0aW5ncywgc2V0dGluZ3Mu
ZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKKworfQorCisK
K307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsK
KyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Cisg
ICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiAr
MjMyLDggQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYK
IAorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCiAjdW5kZWYgV0VCUFJP
Q0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Np
b25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNpZiBSRUxFQVNFX0xPR19ESVNB
QkxFRApAQCAtMzQxLDYgKzM0Myw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlm
CiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKKwor
ICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRPYnNlcnZpbmco
KTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjMzLDYgQEAg
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3Vw
cGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2Vu
ZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lP
Tl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
RnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAg
ICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUs
IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVk
dWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9S
RUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3Vy
Y2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2Ug
cHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24g
MjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIFdlYlJlc291cmNlTG9h
ZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNv
cmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFtZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJz
KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXIi
KTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJSZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMs
NiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNlIFdlYlJlc291cmNlTG9hZGVyOgogCiB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0
Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAog
ICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5
IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3Ig
cGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM1MSwyNCArMzUzLDMwIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBzdGQ6Om9wdGlvbmFs
PGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKIHsKICAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsK
KyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJE
aWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCksIHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIG5vIGxvYWRl
ciIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3Ip
OwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmICghbV9jb3Jl
TG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAgICByZXR1cm47CisgICAg
fQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2Vk
UGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQot
ICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CiAgICAg
dm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJlY2UKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
LSAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQogICAg
IENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50
RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3Rp
dHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3NywxMCAr
MTg3NywxMSBAQCBSZWY8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVMb2FkCiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIHVuYmxvY2tIYW5kbGVyKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
KQogewogICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewogICAgICAg
ICBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgICAg
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0VW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KFdURk1vdmUodW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYzLDcgKzI2Myw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICB2
b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyKSBmaW5hbDsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2Vi
Q29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBm
aW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSBmaW5h
bDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxNCw2ICsxNzE0LDcgQEAgdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdO
YXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKTsKKwog
fQogCiAvLyBMb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoIHNob3VsZCBuZXZlciBi
ZSBzZW50IHRvIHRoZSBXZWJQcm9jZXNzLiBJdCBtdXN0IGFsd2F5cyBiZSBjb252ZXJ0ZWQgdG8g
YSBMb2FkUmVxdWVzdCBtZXNzYWdlLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcgogICAgIC8vIFRoaXMgbWV0aG9kIGNhbGwgd2lsbCBhbHNvIGNhbGwgUmVnaXN0ZXJB
cHBsaWNhdGlvbiwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgdXMgdG8gY2FsbCB0aGlzIG9yCiAg
ICAgLy8gY2hlY2sgaW4gd2l0aCBMYXVuY2ggU2VydmljZXMKICAgICBbTlNBcHBsaWNhdGlvbiBf
YWNjZXNzaWJpbGl0eUluaXRpYWxpemVdOwotCisgICAgCiAgICAgLy8gVXBkYXRlIHByb2Nlc3Mg
bmFtZSB3aGlsZSBob2xkaW5nIHRoZSBMYXVuY2ggU2VydmljZXMgc2FuZGJveCBleHRlbnNpb24K
ICAgICB1cGRhdGVQcm9jZXNzTmFtZShJc0luUHJvY2Vzc0luaXRpYWxpemF0aW9uOjpZZXMpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRl
cmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1c2UgdGhlIG1vZGVybiBIYXNo
ZXIgaW5zdGVhZApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIHZvaWQgY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIp
IGZpbmFsOworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDQ1LDkgKzIwNDUsMTAgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcikKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKIHsKICAgICBjb3JlKG1fd2ViRnJhbWUu
Z2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKFdURk1vdmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0
KCkpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KFdU
Rk1vdmUodW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSk7CiB9CiAjZW5kaWYKIApJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNjYx
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjItMDMtMDEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhl
IE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmcubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nUGx1Z0luLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nv
bnRlbnRGaWx0ZXJpbmcubW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRh
cmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9uIFVS
TCBvbiBpbml0aWFsIHNldHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJE
ZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0j
aW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdD
b25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBA
QAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRl
cmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJQcm9jZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90
ZU9iamVjdEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
Q29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVj
YXRlZEdsb2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
IgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5o
IgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5o
PgogCg==
</data>
<flag name="commit-queue"
          id="481096"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453658</attachid>
            <date>2022-03-02 14:08:44 -0800</date>
            <delta_ts>2022-03-02 15:38:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220302140842.patch</filename>
            <type>text/plain</type>
            <size>75474</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzcsOCArMjQzNywxNiBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLVJlc291cmNlRXJy
b3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KQorUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQogeworICAgIGlmICh1bmJsb2NrZWRBZnRlclJlcXVl
c3QpIHsKKyAgICAgICAgYXV0byByZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gKnVuYmxvY2tlZEFm
dGVyUmVxdWVzdF0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJG
dW5jdGlvbiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja1JlcXVlc3RlckZ1bmN0
aW9uKHJlcXVlc3Rlcik7CisgICAgfQorCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRV
bnJlYWNoYWJsZVVSTChkb2N1bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVy
LndyYXBXaXRoRGVjaXNpb25IYW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZy
YW1lKCktPnNjcmlwdCgpIH0sIHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlz
b2xhdGVkQ29weSgpXShib29sIHVuYmxvY2tlZCkgewpAQCAtMjQ0Niw3ICsyNDU0LDcgQEAgUmVz
b3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udAogICAgICAgICAgICAgICAgIHNj
cmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHRJZ25vcmluZ0V4Y2VwdGlvbihzY3JpcHQpOwog
ICAgICAgICB9KTsKICAgICB9Ci0gICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY29udGVudEZp
bHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgZnJhbWVMb2Fk
ZXIoKS0+Y2xpZW50KCkuY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXVEZNb3ZlKHVuYmxvY2tI
YW5kbGVyKSwgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKICAgICBhdXRvIGVycm9yID0gZnJhbWVM
b2FkZXIoKS0+YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QoKSk7CiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MDcsNyArNDA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZD
b3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3Qg
ZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCi0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRB
ZnRlclJlcXVlc3QpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRl
clByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3Qg
U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw3ICszNTgs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikgeyB9
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NywxMCArMTg3LDI2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGlj
eUNoZWNrZXI6OmNoZWNrTmEKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYg
KG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkp
IHsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBmcmFtZSB7ICZtX2ZyYW1lIH07CisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgQVNTRVJU
KG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0IHVuYmxvY2tlZCAlZCIsICptX3VuYmxvY2tlZEFmdGVy
UmVxdWVzdCk7CisgICAgICAgIGlmICgqbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVsb2FkIik7CisgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtmcmFtZV0geworICAgICAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS5yZWxvYWQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhb
ZnJhbWVdKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgICAgICAgICAgaWYgKHVuYmxvY2tlZCkK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyNlbHNlCiAgICAgICAgIG1fY29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2ZyYW1lXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgaWYgKHVuYmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCku
cmVsb2FkKCk7CiAgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgIFBPTElDWUNIRUNLRVJfUkVM
RUFTRV9MT0coImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwogICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Okln
bm9yZUxvYWQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgdm9pZCBzZXRDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIoQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKSB7IG1fY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGTW92ZSh1bmJsb2NrSGFuZGxlcik7IH0KKyAg
ICB2b2lkIHNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYgdW5i
bG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0gV1RGTW92ZSh1
bmJsb2NrZWRBZnRlclJlcXVlc3QpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEwNCw2ICsx
MDUsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsK
KyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0OwogI2VuZGlm
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JK
Q19DTEFTUyBOU0NvZGVyOworT0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDkg
QEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVy
biBtX3VucmVhY2hhYmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBV
UkwmIHVybCkgeyBtX3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAKKyAgICB2b2lkIHNldFVuYmxv
Y2tSZXF1ZXN0ZXJGdW5jdGlvbihVbmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZh
dGU6CiAgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVV
Ukw7CkBAIC03MSw2ICs3NSw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9M
U19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9y
PiBtX3dlYkZpbHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07
CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFi
bGVVUkwiIH07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RL
ZXkgeyBAInVuYmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09O
VFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJG
aWx0ZXJFdmFsdWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsx
MDIsMTAgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhB
VkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVu
Y29kZU9iamVjdDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZh
bHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVy
UmVxdWVzdCBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09O
VFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0
ZXJFdmFsdWF0b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFs
dWF0b3JDbGFzcygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJs
b2NrSGFuZGxlci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RP
ZkNsYXNzOltOU051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07
CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29u
c3QKIHsKLSAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFm
dGVyUmVxdWVzdCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5k
bGVSZXF1ZXN0ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAg
IGlmICghbV91bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewog
I2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAg
IGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMzQsNiArMTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhh
bgogICAgIGlmIChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmlu
ZywgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVu
YmxvY2sgcmVxdWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwogI2VuZGlmCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1
ZXN0ICVkIiwgaXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7
CiB9CiAKQEAgLTE2MCw2ICsxNzMsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6
OnNldFVuYmxvY2tSZXF1ZXN0ZXJGdW5jdGlvbihVbmJsb2NrUmVxdWVzdGVyRnVuY3Rpb24mJiB1
bmJsb2NrUmVxdWVzdGVyKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3RlciA9IFdURk1vdmUodW5i
bG9ja1JlcXVlc3Rlcik7Cit9CisKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpz
ZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2Nr
ZWRBZnRlclJlcXVlc3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBt
YW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisgICAgCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFu
Z2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7CitwdWJsaWM6Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lk
IHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4pOworICAg
IAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFu
Z2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7
Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUg
IkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tDb250ZW50Rmls
dGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0
NSw0NiBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZpCiB2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0b24oKSA9IE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IHJlc2V0Iik7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOwogICAg
IE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJsZWQgPSBl
bmFibGVkOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5
U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykK
K3sKKyAgICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRv
bigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBv
aW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9uUG9pbnQg
PSBkZWNpc2lvblBvaW50OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9u
KCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAg
ICBtX2RlY2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpz
aW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVj
aXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVj
aXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30K
Kwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwo
Y29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmllZFJlcXVl
c3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiBj
b25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJM
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsKLSAgICBz
dGF0aWMgdm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRp
YyB2b2lkIHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxIb3N0KCkg
eyByZXR1cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5lcmF0ZWQg
YmluZGluZ3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYgKzU4LDI5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEVuYWJs
ZWQoYm9vbCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7
IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRTdHJpbmco
Y29uc3QgU3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9uUG9pbnQo
RGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9u
UG9pbnQ7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9u
UG9pbnQoRGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lz
aW9uKSB7IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JUIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lv
bjsgfQotICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2Nr
UmVxdWVzdERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1
ZXN0RGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldFVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5nJiB1bmJs
b2NrUmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIGNv
bnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJlcXVlc3RV
Ukw7IH0KLSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlm
aWVkUmVxdWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVS
TDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZpZWRSZXF1
ZXN0VVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29kZShEZWNv
ZGVyJik7CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpID0gZGVm
YXVsdDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNv
bnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MmKSA9IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9
OwogICAgIERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2ludDo6QWZ0
ZXJSZXNwb25zZSB9OwpAQCAtODcsNCArOTAsNTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9t
b2RpZmllZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9p
bnQoKTsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2Nr
UmVxdWVzdERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAg
ZW5jb2RlciA8PCBtb2RpZmllZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK3N0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYg
KCFlbmFibGVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8RGVjaXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9u
UG9pbnQ7CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6RGVjaXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247CisgICAgaWYg
KCFkZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1bmJsb2Nr
UmVxdWVzdERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsK
KyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVj
b2RlciA+PiBibG9ja2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9kaWZpZWRS
ZXF1ZXN0VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGlmICgh
bW9kaWZpZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5zZXRFbmFi
bGVkKCplbmFibGVkKTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBv
aW50KTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNldHRpbmdz
LnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAg
IHNldHRpbmdzLnNldEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykpOworICAg
IHNldHRpbmdzLnNldE1vZGlmaWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJlcXVlc3RV
UkwpKTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6ZGVjb2RlIik7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3
aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRDb250ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJs
b2NrTmF2aWdhdGlvbik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24pOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2Jz
ZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6CisKIDIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9j
ZXNzIHRvIHByb3ZpZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDM3LDYgKzE0MzcsMTEgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4gTmV0d29ya0NvbgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzaW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
NjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZl
cmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAg
LTE5OCw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2Fn
ZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVz
b3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAorICAgIHZv
aWQgaW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmJik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
TmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNj
aGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50
OF90IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNv
dXJjZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJ
ZGVudGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24u
bmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiAr
MjM5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0
ZXJpbmciKTsKICAgICBpZiAoIWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtOTMz
LDExICs5MzUsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQog
ICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNl
TG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMjUgKzE3NzcsMzIg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRs
ZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxl
ci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJs
b2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxv
Y2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJl
bG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVy
RXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIu
bmVlZHNVSVByb2Nlc3MoKSkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQsIHN0ZDo6bnVsbG9wdCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3VuYmxvY2tIYW5kbGVy
LCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpLCB0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJv
b2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHVuYmxvY2tIYW5kbGVyLnNldFVu
YmxvY2tlZEFmdGVyUmVxdWVzdCh1bmJsb2NrZWQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hh
bmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCB1bmJsb2NrZWQpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7
CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRl
ciByZXF1ZXN0ICVkIiwgdW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVy
biBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVz
dCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVy
KTsKLSAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJy
b3IpOworLy8gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIiKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkp
OwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBACiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisKIG5hbWVzcGFjZSBX
VEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KQEAgLTEzMSw2ICsxMzMsNyBAQCBjbGFzcyBG
b250UGxhdGZvcm1EYXRhOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEtleWZyYW1lVmFs
dWVMaXN0OwogY2xhc3MgTGluZWFyVGltaW5nRnVuY3Rpb247CitjbGFzcyBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOwogY2xhc3MgTm90aWZpY2F0aW9uOwogY2xhc3MgUGFzdGVib2FyZEN1c3Rv
bURhdGE7CiBjbGFzcyBQYXltZW50SW5zdGFsbG1lbnRDb25maWd1cmF0aW9uOwpAQCAtODU1LDYg
Kzg1OCwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlCiAgICAg
PjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAor
ICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdE
YXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
blBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4gewogICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNiArMTk5MCw4IEBACiAJCUUzODY2QjBB
MjM5OUEyRDkwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
ODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJRTM4NjZCMEIyMzk5QTJERDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDYyMzk5OTc5QzAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQlFMzhBMUZDMDIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFj
ZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLzsgfTsK
KwkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OworCQlF
Mzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU4MjdD
NkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OwogCQlF
Mzk2MjhERDIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJRTM5NjI4REUyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovOyB9OwogCQlFM0NBQUE0NDI0MTMyNzk5MDBDRUQy
RTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0FBQTQzMjQxMzI3OEEwMENFRDJFMiAvKiBBY2Nlc3Np
YmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OwpAQCAtNjQ2Myw2ICs2NDY1LDggQEAKIAkJRTMwQ0ZC
OUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHBhdGgg
PSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzEzNjY0RDI2NUVFNUFGMDA1
MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAv
KiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2Vi
Q29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAwN0Ix
MTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NzUs
NiArNjQ3OSw4IEBACiAJCUUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUz
OEExRkJFMjNBNTUxMTQwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVXNlckludGVyZmFjZUlkaW9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4
REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQzIz
OTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4
RTQyMzk3MUYzNDAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTk0NTcsNiArOTQ2Myw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTQxMzA3NTlFMURFODVFNjUwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCisJCQkJRTM5NTJGRTgy
N0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJ
RTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICov
LAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZCMDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtOTk3Niw2ICs5OTg0LDggQEAK
IAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYy
RSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQwOTAw
NkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJGNDI3
OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZGMTUy
NTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4
OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKQEAgLTEzMzEyLDYgKzEz
MzIyLDcgQEAKIAkJCQk1MTdCNUY3QzI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZv
clRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgwMjc1RTk3QjYwMDJEQzIyRCAv
KiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFRENCMjE0
RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAx
NkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2NEMy
MzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTE1
Njg0LDYgKzE1Njk1LDcgQEAKIAkJCQk5QjQ3OTA5MTI1MzE1NjMyMDBFQzExQUIgLyogTWVzc2Fn
ZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg0Mjc1
RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnku
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCQThEM0I2MjdBNUUz
M0YwMENCNzkwMCAvKiBNb2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzFDMUIzMEYyNTQwRjUwRDAwRDkxMDBCIC8qIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFu
YWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2Vk
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgJWQiLCAmc2V0dGluZ3MsIHNldHRpbmdzLmVu
YWJsZWQoKSk7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rp
b24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKHNldHRpbmdzKSwgMCk7CisKK30KKworCit9
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nKCk7Cisg
ICAgCisgICAgLy8gV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudAorICAg
IHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYpIGZpbmFsOworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIz
Miw4IEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2VuZGlmCiAK
KyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKwogI3VuZGVmIFdFQlBST0NF
U1NfUkVMRUFTRV9MT0cKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9u
SUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJM
RUQKQEAgLTM0MSw2ICszNDMsOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRpZgog
CiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CisKKyAg
ICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7
CiB9CiAKIFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMjksNyArMjIzMyw2IEBAIFJl
bW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBs
ZW1lbnQ8UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRp
ZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05f
SUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcxLDYgKzQ3MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZy
b20KICAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAg
ICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4
Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBz
dGQ6Om51bGxvcHQpOwogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVs
ZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVl
c3QoKS5wcmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKKwogICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVs
ZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVM
RUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNl
IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHBy
b2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBXZWJSZXNvdXJjZUxvYWRl
cjo6V2ViUmVzb3VyY2VMb2FkZXIoUmVmCiAgICAgOiBtX2NvcmVMb2FkZXIoV1RGTW92ZShjb3Jl
TG9hZGVyKSkKICAgICAsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzKHRyYWNraW5nUGFyYW1ldGVycykK
IHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyIik7
CiB9CiAKIFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3VyY2VMb2FkZXIoKQpAQCAtMTEzLDYg
KzExNCw3IEBAIE1haW5GcmFtZU1haW5SZXNvdXJjZSBXZWJSZXNvdXJjZUxvYWRlcjoKIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHBy
b3Bvc2VkUmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHByb3Bvc2VkUmVxdWVzdEJv
ZHksIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCIp
OwogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICAvLyBNYWtlIHRoZSByZXF1ZXN0IHdob2xlIGFnYWluIGFzIHdlIGRvIG5vdCBub3JtYWxseSBl
bmNvZGUgdGhlIHJlcXVlc3QncyBib2R5IHdoZW4gc2VuZGluZyBpdCBvdmVyIElQQywgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMuCkBAIC0zNTEsMjQgKzM1MywzMCBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgc3RkOjpvcHRpb25hbDxi
b29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cisg
ICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
LCB1bmJsb2NrZWRBZnRlclJlcXVlc3QpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciBubyBsb2FkZXIi
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIik7CiAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4iKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBh
Z2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAg
ICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
OworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCwgc3RkOjpvcHRpb25hbDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpOwogICAgIHZv
aWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6
OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzksNyAr
MzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0g
ICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkKICAgICBD
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKQogICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1
dGVEYXRhKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzcsMTAgKzE4
NzcsMTEgQEAgUmVmPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTG9hZAogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlcikKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVu
YmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkK
IHsKICAgICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKICAgICAgICAg
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOworICAgICAgICBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldFVuYmxvY2tl
ZEFmdGVyUmVxdWVzdChXVEZNb3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdm9p
ZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcikgZmluYWw7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25hbDxib29sPikgZmlu
YWw7CiAjZW5kaWYKIAogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmluYWw7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTQsNiArMTcxNCw3IEBAIHZvaWQgV2ViUGFn
ZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2
aWdhdGlvbklEKTsKICAgICBBU1NFUlQoIW1fcGVuZGluZ1dlYnNpdGVQb2xpY2llcyk7CisKIH0K
IAogLy8gTG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaCBzaG91bGQgbmV2ZXIgYmUg
c2VudCB0byB0aGUgV2ViUHJvY2Vzcy4gSXQgbXVzdCBhbHdheXMgYmUgY29udmVydGVkIHRvIGEg
TG9hZFJlcXVlc3QgbWVzc2FnZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHIKICAgICAvLyBUaGlzIG1ldGhvZCBjYWxsIHdpbGwgYWxzbyBjYWxsIFJlZ2lzdGVyQXBw
bGljYXRpb24sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHVzIHRvIGNhbGwgdGhpcyBvcgogICAg
IC8vIGNoZWNrIGluIHdpdGggTGF1bmNoIFNlcnZpY2VzCiAgICAgW05TQXBwbGljYXRpb24gX2Fj
Y2Vzc2liaWxpdHlJbml0aWFsaXplXTsKLQorICAgIAogICAgIC8vIFVwZGF0ZSBwcm9jZXNzIG5h
bWUgd2hpbGUgaG9sZGluZyB0aGUgTGF1bmNoIFNlcnZpY2VzIHNhbmRib3ggZXh0ZW5zaW9uCiAg
ICAgdXBkYXRlUHJvY2Vzc05hbWUoSXNJblByb2Nlc3NJbml0aWFsaXphdGlvbjo6WWVzKTsKIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJp
bmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgor
CiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4gSGFzaGVy
IGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSBm
aW5hbDsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLCBzdGQ6Om9wdGlvbmFsPGJvb2w+KSBmaW5hbDsKICNlbmRp
ZgogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjA0NSw5ICsyMDQ1LDEwIEBAIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW4KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIpCit2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgc3RkOjpvcHRpb25h
bDxib29sPiB1bmJsb2NrZWRBZnRlclJlcXVlc3QpCiB7CiAgICAgY29yZShtX3dlYkZyYW1lLmdl
dCgpKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcihXVEZNb3ZlKHVuYmxvY2tIYW5kbGVyKSk7CisgICAgY29yZShtX3dlYkZyYW1lLmdldCgp
KS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChXVEZN
b3ZlKHVuYmxvY2tlZEFmdGVyUmVxdWVzdCkpOwogfQogI2VuZGlmCiAKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDY2MSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIy
LTAzLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBO
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5n
Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZp
bHRlcmluZ1BsdWdJbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250
ZW50RmlsdGVyaW5nLm1tOgorCiAyMDIyLTAzLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gR2F0ZSBpbmZvcm1hdGlvbiBVUkwg
b24gaW5pdGlhbCBzZXR1cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVw
cmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2lt
cG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJp
bmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nv
bnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0
ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4K
IApJbmRleDogV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNv
dXJjZS54Y3NjaGVtZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRk
YXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2NoZW1lCShyZXZpc2lvbiAyOTA1MjUpCisrKyBX
ZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9BbGwgU291cmNlLnhjc2No
ZW1lCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcgQEAKICAgICAgIDwvVGVzdGFibGVz
PgogICAgPC9UZXN0QWN0aW9uPgogICAgPExhdW5jaEFjdGlvbgotICAgICAgYnVpbGRDb25maWd1
cmF0aW9uID0gIkRlYnVnIgorICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gIlJlbGVhc2UiCiAg
ICAgICBzZWxlY3RlZERlYnVnZ2VySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRp
b24uRGVidWdnZXIuTExEQiIKICAgICAgIHNlbGVjdGVkTGF1bmNoZXJJZGVudGlmaWVyID0gIlhj
b2RlLkRlYnVnZ2VyRm91bmRhdGlvbi5MYXVuY2hlci5MTERCIgogICAgICAgbGF1bmNoU3R5bGUg
PSAiMCIK
</data>
<flag name="commit-queue"
          id="481103"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453666</attachid>
            <date>2022-03-02 15:27:43 -0800</date>
            <delta_ts>2022-03-02 15:56:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220302152741.patch</filename>
            <type>text/plain</type>
            <size>65732</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIDEKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9DT05U
RVhUX01FTlVTKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBFTkFCTEVfQ09OVEVY
VF9NRU5VUyAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisy
MDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRo
ZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0No
YW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2Nr
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6CisgICAg
ICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVj
aXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisKIDIwMjItMDItMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1hZGQgWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LCByZW1vdmVkIGluIHIyODUyNTIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMzQwNiw4ICszNDA2LDYgQEAKIAkJQTFBREFGN0UyMzYwRkQzRTAwOUNC
Nzc2IC8qIFByZXZpZXdDb252ZXJ0ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFBREFGN0MyMzYwRkQzRTAwOUNCNzc2IC8qIFByZXZp
ZXdDb252ZXJ0ZXJQcm92aWRlci5oICovOyB9OwogCQlBMUFGRURFNjFGOEJGRjZEMDA4NzAxM0Yg
LyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFBRkVERTQxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50
Q29vcmRpbmF0b3IuaCAqLzsgfTsKIAkJQTFBRkVERTcxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQ
YXltZW50Q29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFBRkVERTUxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuY3BwICovOyB9OwotCQlBMUI1QjI5RTFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi87IH07Ci0JCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUExQkI4NTlDMjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1OTkyMTU5QUVB
MTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1QTMyMTU5QUY1NzAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUEwMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTFCQjg1QTkyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUE2MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggKi87IH07CkBAIC0zNDE1LDggKzM0
MTMsNiBAQAogCQlBMUJCODVCMzIxNTlCMUExMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29u
dGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVBRjIxNTlCMUEwMDA2N0UwN0QgLyogSlNBcHBsZVBheUVycm9yQ29udGFjdEZpZWxk
LmggKi87IH07CiAJCUExQkI4NUI4MjE1OUIzQTQwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFC
Qjg1QjQyMTU5QjM4OTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgKi87IH07CiAJ
CUExQkI4NUI5MjE1OUIzQUUwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI1MjE1OUIzOEEw
MDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKLQkJQTFCRjZCODIxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5jcHAgKi87IH07Ci0JCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
Ki87IH07CiAJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUMxNTA3ODFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQ0JFRjY0MUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQkVGNjMxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9k
LmggKi87IH07CiAJCUExQ0M1NjY3MUY0NjE0N0EwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNDNTY2
NTFGNDYxNDY4MDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oICovOyB9OwpAQCAtNTI5Niw2
ICs1MjkyLDE0IEBACiAJCUUzNkQ3MDIwMjdCNzIwMTMwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzZENzAxRTI3QjcxRjA0MDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVu
dENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzNzdGRTREMURBREUxNjUwMENERDAyNSAvKiBOb2RlQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QwNDk5MzFEQURDMDQ1MDA3
MThGM0MgLyogTm9kZUNvbnN0YW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzN0M4NjUwMUVCNjNFM0YwMDg3QzZDQSAvKiBKU0RPTVByb21p
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzN0M4
NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RPTVByb21pc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQjI3QzZEQ0NGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdlYlhSVGVzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThEODNFMDI0M0Y3MUNFMDA5
MjQ3RDYgLyogV2ViWFJUZXN0LmNwcCAqLzsgfTsKKwkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OworCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYzMjdDN0NGREQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwogCQlFMzk2MjhCRjIzOTU3MjhGMDA2NThFQ0QgLyogRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzk2MjhDMTIzOTU3NDMxMDA2NThFQ0QgLyogTW90aW9uTWFu
YWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0E3NzY2NzFE
Qzg1RDI4MDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNzc2NjUxREM4NUQyMjAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTczNzAsNiArMTczNzQsOSBAQAogCQlFMzg4Mzg5NDFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODgzODk1MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjA5MUY4RTgxMTkwMDY0OUNGMiAvKiBN
b2R1bGVGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhCRDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vdGlvbk1hbmFnZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NzVCNzYxRUM5QUYzOTAwODQ3NzE3IC8qIEpTRG9jdW1l
bnRGcmFnbWVudERPTUpJVC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjExNzQsOSArMjExODEsMTIgQEAKIAkJCQlDREY0QjcxRjFFMDNCRjZGMDBFMjM1QTIg
LyogTW9ja0NETUZhY3RvcnkuaWRsICovLAogCQkJCUExQkY2QjgwMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi8sCiAJCQkJQTFCRjZCODExQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmggKi8sCisJCQkJRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRUEyN0M2REND
RTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCUExQjVCMjlD
MUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLywKIAkJ
CQlBMUI1QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
ICovLAogCQkJCUExOUFFQTFDMUFBQTdDNDkwMEI1MkIyNSAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmlkbCAqLywKKwkJCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovLAogCQkJCTUxMDU4QUQ3MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZC5jcHAgKi8sCiAJCQkJNTEwNThBRDgxRDY3OTI1NzAwOUE1MzhDIC8q
IE1vY2tHYW1lcGFkLmggKi8sCiAJCQkJNTEwNThBRDkxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkUHJvdmlkZXIuY3BwICovLApAQCAtMzM0MTEsOCArMzM0MjEsNiBAQAogCQkJCTQyN0RB
NzFFMTM3MzVERkEwMDdDNTdGQiAvKiBKU1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUVCRjUxMjFEMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDMjZCNDExNjBBOENDRTAwMjY3NTdCIC8qIExlZ2Fj
eU1vY2tDRE0uaCBpbiBIZWFkZXJzICovLAotCQkJCUExQkY2QjgzMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFCNUIyOUYxQUFBODQ2
RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxNTdFQkZCMUUzQUI2N0YwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlD
MyAvKiBNb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzYzOTEsNiAr
MzYzOTksMTAgQEAKIAkJCQlDREYyQjAxMTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjQxRTAzQkY4MTAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyMDFFMDNCRjZGMDBFMjM1QTIgLyogTW9j
a0NETUZhY3RvcnkuaWRsIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFQjI3
QzZEQ0NGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMTI3QzdDREI1MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4
QUUwMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEwNThBRTIxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0NDRDRBMjBERTAzNEYwMDY1QTIxQSAvKiBNb2NrTWVkaWFEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzg3MzQsOCArMzg3NDYsNiBAQAogCQkJCUNEQzI2QjQwMTYw
QThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
RTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODIzLDYg
KzM4ODMzLDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNzaW9u
SGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1QTFC
IC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMzQ0I4
QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYw
MjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmlnYXRv
ckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0MzOTgz
IC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKQEAgLTM5NDczLDYgKzM5NDg2LDcgQEAK
IAkJCQkwN0Y1Q0ZGNjI1ODJBNTI5MDA2NjJFRjUgLyogV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2Ny
aXB0T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VDREM5M0MyMUYyOTcyOTAwOTc2QkQx
IC8qIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJYUlRlc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTE0ODMyQzIxODdGNjVDNzAwREE2M0E2IC8qIFdLVXRpbGl0aWVzLmMgaW4gU291
cmNlcyAqLywKIAkJCQlBODMzQzdDQzBBMkNGMDc0MDBENTc2NjQgLyogWExpbmtOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBODMzQzgwQzBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzksNiArMjQzOSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dBbHdheXMo
IkNvbnRlbnRGaWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxv
Y2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAg
dW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIg
PSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOwor
T0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NM
QVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgogICAgIGNv
bnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJM
OyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVybCkgeyBtX3VucmVh
Y2hhYmxlVVJMID0gdXJsOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tl
ZEFmdGVyUmVxdWVzdChib29sKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91bmJsb2NrVVJM
SG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc0LDkgQEAgcHJpdmF0
ZToKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAg
IFJldGFpblB0cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9yOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBOU051bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwgfTsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxvY2tVUkxI
b3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVu
cmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKK3N0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleSB7IEAidW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IiB9OwogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAid2ViRmls
dGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwMiwxMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVyRXZhbHVh
dG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBbY29kZXIg
ZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1bmJsb2NrZWRBZnRl
clJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9
CiAKQEAgLTExMyw2ICsxMTgsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikK
ICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBkZWNvZGVP
YmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5OndlYkZpbHRl
ckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXSBmb3JL
ZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjAs
NyArMTI4LDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKIAog
Ym9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJsb2NrUmVx
dWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1
ZXN0Iik7CisgICAgaWYgKG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQorICAgICAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBtX3VuYmxvY2tlZEFm
dGVyUmVxdWVzdC5ib29sVmFsdWUpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIgJiYg
IW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1YXRvcikK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxNDYsNyBAQCBib29sIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5ibG9ja1JlcXVlc3Qp
CiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyIHdpbGwgaGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0LlxuIiwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBXVEZMb2dBbHdheXMo
IkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxvY2tSZXF1ZXN0KTsK
ICAgICByZXR1cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApAQCAtMTUxLDggKzE2NCwxNiBAQCB2
b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAgfQogI2VuZGlmCiAK
LSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7Ci0gICAgICAgIG1fdW5ibG9ja1JlcXVlc3Rl
cihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgeworICAgIGF1dG8gdW5ibG9ja1Jl
cXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3RlcjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghdW5ibG9ja1JlcXVlc3RlciAmJiBt
X3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICB1bmJsb2NrUmVxdWVzdGVyID0gW3Vu
YmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZV0oQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBmdW5jdGlvbikgeworICAg
ICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAgICAgICAgfTsKKyAgICB9CisjZW5kaWYK
KyAgICBpZiAodW5ibG9ja1JlcXVlc3RlcikgeworICAgICAgICB1bmJsb2NrUmVxdWVzdGVyKFtk
ZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAgICAgICAgIGRl
Y2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CkBAIC0xNjAsNiArMTgx
LDExIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICB9CiB9
CiAKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJl
cXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXIm
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVy
biBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0
Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7
CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30K
KworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7
CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAi
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBAQCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MoKTsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlc2V0Iik7CisgICAg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5n
ZWQoc2luZ2xldG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNl
dEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOwogICAgIE1vY2tDb250ZW50RmlsdGVy
OjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNp
bmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9j
a2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Jsb2NrZWRT
dHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQg
ZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50Owor
ICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3ND
aGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9uID0gZGVj
aXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJl
cXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3Rp
ZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcmIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCByZXNldCgp
OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0KCk7CiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1vY2stdW5i
bG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50byB0aGlu
a2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKICAgICBj
b25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRTdHJp
bmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3Ry
aW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
ICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2RlY2lz
aW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNp
c2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2lu
dCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb247
IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVjaXNpb24g
PSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVj
aXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0
VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7
IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNv
bnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYgdW5ibG9j
a1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2b2lkIHNl
dE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkgeyBt
X21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmlu
ZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXByaXZhdGU6
CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRl
bGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYg
b3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7Citw
cml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lzaW9uUG9p
bnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9OwpAQCAt
ODcsNCArOTAsNTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVlc3RVUkw7
CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsKKyAgICBlbmNvZGVy
IDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCk7
CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBtb2RpZmll
ZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9u
YWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5h
YmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Qb2ludD4g
ZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uUG9pbnQ7CisgICAgaWYgKCFk
ZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IGRlY2lz
aW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247CisgICAgaWYgKCFkZWNpc2lvbikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOwor
ICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBpZiAoIXVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9ja2VkU3Ry
aW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGRl
Y29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJM
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVkKCplbmFibGVkKTsKKyAg
ICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBzZXR0aW5n
cy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldFVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldEJsb2Nr
ZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykpOworICAgIHNldHRpbmdzLnNldE1vZGlm
aWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJlcXVlc3RVUkwpKTsKKworICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2Rl
Iik7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IDog
cHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4geworcHVi
bGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRl
bnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbik6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAg
KFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6Oldl
YlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMjItMDIt
MjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ug
c3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRvIHByb3ZpZGUgdGhl
IExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM3LDYg
KzE0MzcsMTEgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0NvbgogICAg
IHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJZGVudGlm
aWVyKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1v
Y2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJiBzZXR0
aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKSA9IFdU
Rk1vdmUoc2V0dGluZ3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENP
Tk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlz
aW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9i
UGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3Vy
Y2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgaW5zdGFsbE1vY2tDb250
ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisKIHByaXZh
dGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkxvYWRT
Y2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3RvcjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykKKworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgSW5z
dGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mg
c2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5h
YmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiArMjM5LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0
Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJpbmciKTsKICAgICBpZiAo
IWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtOTMzLDExICs5MzUsMTMgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYg
KG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAg
ICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCht
X3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1l
dHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMjUgKzE3NzcsMzIgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2Vzcygp
KSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAg
ICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2Vk
Q29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAwKTsKKyAgICBhdXRv
IGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJz
LnJlcXVlc3QpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjb250ZW50Rmls
dGVyRGlkQmxvY2siKTsKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkg
eworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
KTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
KGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSBX
VEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdGhpcywgZXJyb3IsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QodW5ibG9ja2VkKTsK
KyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlKGVycm9yKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjog
dW5ibG9ja2VkIGFmdGVyIHJlcXVlc3QgJWQiLCB1bmJsb2NrZWQpOwogICAgICAgICB9KTsKICAg
ICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFy
YW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7CiB9CiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVCht
X2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7CisvLyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkK
IHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1
YnN0aXR1dGVEYXRhKSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4
LDYgKzk4LDggQEAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
c0NGLmgiCiAKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4K
KwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpAQCAtMTMxLDYgKzEz
Myw3IEBAIGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xh
c3MgS2V5ZnJhbWVWYWx1ZUxpc3Q7CiBjbGFzcyBMaW5lYXJUaW1pbmdGdW5jdGlvbjsKK2NsYXNz
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBOb3RpZmljYXRpb247CiBjbGFzcyBQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTsKIGNsYXNzIFBheW1lbnRJbnN0YWxsbWVudENvbmZpZ3VyYXRp
b247CkBAIC04NTUsNiArODU4LDI2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6UmUKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJG
aW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNp
b24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFsbG93LAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+OworfTsK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBdXRvcGxheUV2ZW50PiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5MCw2ICsxOTkwLDgg
QEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIwQjIzOTlBMkREMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2
NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUxQkYwMEQyMzc0RiAv
KiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlk
aW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07CiAJCUUzQ0FBQTQ0
MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMyNDEzMjc4QTAwQ0VE
MkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02NDYzLDYgKzY0NjUs
OCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzMTM2
NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM0QjExMEMyN0M0
NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzYxMkZG
MDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlv
bS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJ
ZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTgyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8qIHdlYnJ0YyAqLywK
KwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3QTAwRTI3NzA5IC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAyMTYzQTNCMUMwMEVD
MzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCkBAIC05OTc2
LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM0QjExMEMy
N0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLywKKwkJCQlFMzRC
MTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAog
CQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLywK
IAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc1MEYz
MkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLApA
QCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdDMjc1RTk3QjYwMDJEQzIyRCAvKiBN
b2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QjVGODAyNzVF
OTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNhdG9yTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzcyMTRGMTgzMDAw
MTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENF
REMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZpY2UuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJCTlCNDc5MDkxMjUzMTU2MzIwMEVD
MTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBC
dW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkU5MjdDNkI4NDkwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNoU2VydmljZUNvbm5lY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAgLyogTmVhckZpZWxk
U29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMxQjMwRjI1NDBGNTBEMDBEOTEwMEIg
LyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAgIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGlu
Z3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZzZXR0aW5n
cywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAw
KTsKKworfQorCisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMzIsNiArMjMyLDggQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRz
Lmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCiAj
dW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNFX0xPR19TRVNTSU9O
X0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNpZiBSRUxF
QVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0Myw4IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nl
c3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKKworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc3Rh
cnRPYnNlcnZpbmcoKTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3
ICsyMjMzLDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgVwogICAg
IHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFT
RV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmln
YXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFT
RV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhl
IE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOworCiAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FE
RVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2No
ZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAg
ICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIFdl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6IG1fY29yZUxvYWRl
cihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFtZXRlcnModHJhY2tp
bmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVz
b3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJSZXNvdXJjZUxvYWRl
cigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNlIFdlYlJlc291cmNl
TG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJv
cG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8g
bm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92
ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM2MCwxNSArMzYyLDIxIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWQKIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIg
bm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOwog
ICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9h
ZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYg
KCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewor
ICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkgcmV0dXJuIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJl
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTcxNCw2ICsxNzE0LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2Fk
UGFyYW1ldGVycwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIEFT
U0VSVCghbV9wZW5kaW5nV2Vic2l0ZVBvbGljaWVzKTsKKwogfQogCiAvLyBMb2FkUmVxdWVzdFdh
aXRpbmdGb3JQcm9jZXNzTGF1bmNoIHNob3VsZCBuZXZlciBiZSBzZW50IHRvIHRoZSBXZWJQcm9j
ZXNzLiBJdCBtdXN0IGFsd2F5cyBiZSBjb252ZXJ0ZWQgdG8gYSBMb2FkUmVxdWVzdCBtZXNzYWdl
LgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcgogICAgIC8vIFRoaXMg
bWV0aG9kIGNhbGwgd2lsbCBhbHNvIGNhbGwgUmVnaXN0ZXJBcHBsaWNhdGlvbiwgc28gdGhlcmUg
aXMgbm8gbmVlZCBmb3IgdXMgdG8gY2FsbCB0aGlzIG9yCiAgICAgLy8gY2hlY2sgaW4gd2l0aCBM
YXVuY2ggU2VydmljZXMKICAgICBbTlNBcHBsaWNhdGlvbiBfYWNjZXNzaWJpbGl0eUluaXRpYWxp
emVdOwotCisgICAgCiAgICAgLy8gVXBkYXRlIHByb2Nlc3MgbmFtZSB3aGlsZSBob2xkaW5nIHRo
ZSBMYXVuY2ggU2VydmljZXMgc2FuZGJveCBleHRlbnNpb24KICAgICB1cGRhdGVQcm9jZXNzTmFt
ZShJc0luUHJvY2Vzc0luaXRpYWxpemF0aW9uOjpZZXMpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3Qg
ZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBw
cm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMjIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6
aGFzaE1lbW9yeSgpIGFuZCB1c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkw
NjYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjItMDMtMDEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4g
dGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nUGx1Z0luLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L0NvbnRlbnRGaWx0ZXJpbmcubW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9u
IFVSTCBvbiBpbml0aWFsIHNldHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0
ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgi
Ci0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0J
KHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZp
bHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVw
cmVjYXRlZEdsb2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2Nv
bC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0
ZS5oPgogCkluZGV4OiBXZWJLaXQueGN3b3Jrc3BhY2UveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9B
bGwgU291cmNlLnhjc2NoZW1lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC54Y3dvcmtzcGFjZS94Y3No
YXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFdlYktpdC54Y3dvcmtzcGFjZS94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2Uu
eGNzY2hlbWUJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQAogICAgICAgPC9UZXN0
YWJsZXM+CiAgICA8L1Rlc3RBY3Rpb24+CiAgICA8TGF1bmNoQWN0aW9uCi0gICAgICBidWlsZENv
bmZpZ3VyYXRpb24gPSAiRGVidWciCisgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFz
ZSIKICAgICAgIHNlbGVjdGVkRGVidWdnZXJJZGVudGlmaWVyID0gIlhjb2RlLkRlYnVnZ2VyRm91
bmRhdGlvbi5EZWJ1Z2dlci5MTERCIgogICAgICAgc2VsZWN0ZWRMYXVuY2hlcklkZW50aWZpZXIg
PSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkxhdW5jaGVyLkxMREIiCiAgICAgICBsYXVuY2hT
dHlsZSA9ICIwIgo=
</data>
<flag name="commit-queue"
          id="481106"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453670</attachid>
            <date>2022-03-02 15:49:34 -0800</date>
            <delta_ts>2022-03-03 07:32:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220302154932.patch</filename>
            <type>text/plain</type>
            <size>65755</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworCiAj
aWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVOVVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVTIDAKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVz
dCk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhh
bmRsZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9k
aWZpZWRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0QmxvY2tlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKTogRGVsZXRlZC4KKwogMjAyMi0w
Mi0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlLWFkZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQsIHJlbW92ZWQgaW4gcjI4NTI1MgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDA2LDggKzM0MDYsNiBAQAog
CQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIz
NjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUEx
QUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZE
MDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFG
OEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAx
M0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi87IH07Ci0JCUExQjVCMjlFMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUYxQUFB
ODQ2RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1OUMyMTU5QUVBMTAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODU5OTIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVB
MzIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QTAyMTU5QUY1NzAw
NjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVBOTIxNTlCMDJDMDA2N0UwN0Qg
LyogTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFCQjg1QTYyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3Iu
aCAqLzsgfTsKQEAgLTM0MTUsOCArMzQxMyw2IEBACiAJCUExQkI4NUIzMjE1OUIxQTEwMDY3RTA3
RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUFGMjE1OUIxQTAwMDY3RTA3RCAvKiBKU0Fw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCAqLzsgfTsKIAkJQTFCQjg1QjgyMTU5QjNBNDAwNjdF
MDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmNwcCAqLzsgfTsKIAkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9j
a1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFCQjg1QjUyMTU5QjM4QTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwotCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAx
QUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKLQkJQTFCRjZC
ODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThD
IC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFD
QkVGNjQxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAyOERF
N0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAwQTQ1
NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY1MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRy
ZXNzLmggKi87IH07CkBAIC01Mjk2LDYgKzUyOTIsMTQgQEAKIAkJRTM2RDcwMjAyN0I3MjAxMzAw
NjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAv
KiBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5v
ZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3Qzg2NTAxRUI2M0Uz
RjAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
OTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZF
NDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVC
MjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkVBMjdDNkRDQ0UwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyog
V2ViWFJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOEQ4M0UwMjQzRjcxQ0UwMDkyNDdENiAvKiBXZWJYUlRlc3QuY3BwICovOyB9OworCQlF
Mzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkVEMjdD
NkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OworCQlF
Mzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1QjI5QzFB
QUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi87IH07CisJ
CUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1QjI5RDFB
QUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYyMjdDN0NGRDMw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250
ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFB
OTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUUzOTYyOEJG
MjM5NTcyOEYwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhCRDIzOTU3
MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYyOEMxMjM5NTc0
MzEwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90
aW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2
NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzM3MCw2ICsxNzM3NCw5IEBACiAJ
CUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2
MDkxRjhFODExOTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
QTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAv
KiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1h
bmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW90aW9uTWFu
YWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk3NUI3NjFFQzlB
RjM5MDA4NDc3MTcgLyogSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudERPTUpJVC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE3NCw5ICsyMTE4MSwxMiBAQAogCQkJCUNE
RjRCNzFGMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgKi8sCiAJCQkJQTFC
RjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLywKIAkJCQlB
MUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLywKKwkJCQlF
Mzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAq
LywKKwkJCQlFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmggKi8sCiAJCQkJQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwICovLAogCQkJCUExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJQTE5QUVBMUMxQUFBN0M0OTAwQjUyQjI1
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsICovLAorCQkJCUUzOTUyRkU0MjdDNkFD
N0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi8sCiAJCQkJ
NTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTA1
OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1OEFEOTFE
Njc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0zMzQxMSw4
ICszMzQyMSw2IEBACiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdv
cmtlckludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZC
RDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2
MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFC
RjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTEx
QzFFQ0IyRjAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ5N0YwNDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNjM5MSw2ICszNjM5OSwxMCBAQAogCQkJCUNERjJCMDExMTgyMDU0MDYw
MEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyNDFFMDNCRjgx
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzIw
MUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZF
NTI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFk
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dh
bWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQ0NENEEyMERFMDM0RjAwNjVB
MjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODczNCw4ICszODc0
Niw2IEBACiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFMDg2NjMyNDg5RDM0RTAwRTQ5NkQ5IC8qIE1vY2tBcHBs
ZVBheVNldHVwRmVhdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCRjZC
ODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QURCMUQ2NzkyQzEwMDlBNTM4QyAvKiBN
b2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERDFENjc5MkMxMDA5QTUz
OEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3RUJG
QTFFM0FCNjc5MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzg4MjMsNiArMzg4MzMsOSBAQAogCQkJCUNEQTk1OTM1MjQxMjNDQjgw
MDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRjMyN0M3Q0ZERDAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QkY3NDIxREJGREMyNzAwN0E3
RDk5IC8qIE5hdmlnYXRvckVNRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIxMDE5NTRE
NjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTU2OUQxMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovLApA
QCAtMzk0NzMsNiArMzk0ODYsNyBAQAogCQkJCTA3RjVDRkY2MjU4MkE1MjkwMDY2MkVGNSAvKiBX
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDQUYzNDgyMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RUNEQzkzQzIxRjI5NzI5MDA5NzZCRDEgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdl
YlhSVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJDMjE4N0Y2NUM3MDBEQTYzQTYg
LyogV0tVdGlsaXRpZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1
NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQzOSw2ICsyNDM5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
bwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIFJlc291cmNlRXJyb3IgRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlQ29udGVudEZpbHRl
ckRpZEJsb2NrIik7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1l
bnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkg
JiYgZnJhbWUoKSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFu
ZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgpLT5zY3JpcHQoKSB9LCBz
Y3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1
bmJsb2NrZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQsNiAr
NjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNv
bnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpA
QCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93
ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVx
dWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJM
IiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5IHsg
QCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xT
X1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2ViRmlsdGVy
RXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0xMDEsNiArMTAyLDEw
IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtjb2RlciBlbmNvZGVP
YmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRv
cktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrZWRBZnRlclJlcXVl
c3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKKwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5IEBAIGJvb2wgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xT
X1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZh
bHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9y
Q2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdW5ibG9ja0hh
bmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91bmJsb2NrZWRBZnRlclJl
cXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVx
dWVzdCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisKKyAgICBpZiAo
IW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAgICBpZiAo
IW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM0
LDYgKzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW4KICAg
ICBpZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVzPiBhcyBhbiB1bmJsb2Nr
IHJlcXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNl
bmRpZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAl
ZCIsIGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxvY2tSZXF1ZXN0OwogfQog
CkBAIC0xNTEsOCArMTY0LDE2IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpy
ZXF1ZXMKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKLSAg
ICAgICAgbV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2Vk
KSB7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAg
IHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qu
Ym9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1
bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAg
ICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAg
ICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2Vk
XSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTE2MCw2ICsxODEsMTEgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRd
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NoYW5nZWQoc2V0dGluZ3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7
CisgICAgCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5n
c0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2Ns
aWVudDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5j
bHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQs
MTIgKzQ1LDQ2IEBAIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigp
ID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogcmVzZXQiKTsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7
CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3Ry
aW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lz
aW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1fZGVjaXNpb25Q
b2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQor
eworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVl
c3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVz
dFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVk
UmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9
CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVl
c3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwot
ICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
c3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhv
c3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVy
YXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiAr
NTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0
RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhj
b25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0
cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVj
aXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVj
aXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24g
ZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcm
IHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3Qg
U3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVx
dWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYg
bW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1
ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmll
ZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2Rl
KERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkg
PSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50
OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2
b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNp
b25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsK
KyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAg
ICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29kZXIgPj4gZGVj
aXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAg
ICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAg
ICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2Rp
ZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAg
aWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnNl
dEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lz
aW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0
dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7
CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7
CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVx
dWVzdFVSTCkpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9Owor
Cit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRG
aWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRl
clVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3Rh
cnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5n
IHByb2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywxMSBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50
YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNpbmdsZXRvbigpID0gV1RGTW92ZShzZXR0aW5ncyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdv
cmtSZXNvdXJjZUxvYWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VM
b2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6
ZVJlc291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4g
bG9hZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcg
QEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsg
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTIz
OCw2ICsyMzksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVu
dEZpbHRlcmluZyIpOwogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CkBA
IC05MzMsMTEgKzkzNSwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSkgeworICAg
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogYmxvY2tlZCIpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGVu
dEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9CiAjZW5kaWYK
LQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVz
b3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTc3MywyNSArMTc3
NywzMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2Nr
SGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tI
YW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVz
dFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wg
dW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6UmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRG
aWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOworICAgIGlmICh1bmJsb2NrSGFu
ZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVu
YmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3VuYmxvY2tIYW5kbGVyLCB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
LCB0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9j
a2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHVuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tlZEFm
dGVyUmVxdWVzdCh1bmJsb2NrZWQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVuYmxv
Y2tlZCk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlD
b250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJv
cjsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50Rmls
dGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKy8vICAgIG1fY29udGVu
dEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAgICAg
aWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKICAgICBlbHNlIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5k
UmlnaHQ7CiB9CkBAIC0xMzEsNiArMTMzLDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExpbmVh
clRpbWluZ0Z1bmN0aW9uOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNz
IE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKQEAgLTg1NSw2ICs4NTgsMjYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRl
cldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6
QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6
QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uOjpCbG9jaworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAog
ICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07
CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4
QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQy
Mzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4
RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYy
OERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlT
dXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAq
LzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAv
KiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGlt
LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAw
NkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRo
ID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlF
RDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2
NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJ
ZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBE
MjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNl
ckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
NjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1
MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3
QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1
QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJ
CQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMw
MDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
aGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxp
YldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBs
aWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50
aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVG
N0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9j
a0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZC
NjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNl
cnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBN
b2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJ
CQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5
N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1
c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYx
NDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMx
QzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01h
Yy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1h
bmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29u
dGVudEZpbHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRv
bigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBm
aW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogI2luY2x1ZGUgPHd0
Zi9saW51eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVm
aW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRv
VUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQzLDgg
QEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3Ji
aWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9jZXNzOjp+
V2ViUHJvY2VzcygpCkBAIC0yMjI5LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBX
RUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBi
ZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwg
c3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZh
bHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSkudG9VSW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBh
cmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSks
IDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hl
ZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2No
ZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNy
YXNoZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVy
KFJlZgogICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3Ry
YWNraW5nUGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxv
YWRlcjo6fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVN
YWluUmVzb3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVz
dCB3aG9sZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3Mg
Ym9keSB3aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpA
QCAtMzYwLDE1ICszNjIsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZAogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQor
ICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSBy
ZXR1cm4iKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIp
OwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRl
clByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzE0LDYgKzE3MTQsNyBAQCB2b2lkIFdl
YlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzCiAKICAgICBBU1NFUlQoIW1fcGVuZGlu
Z05hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdXZWJzaXRlUG9saWNpZXMpOwor
CiB9CiAKIC8vIExvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2ggc2hvdWxkIG5ldmVy
IGJlIHNlbnQgdG8gdGhlIFdlYlByb2Nlc3MuIEl0IG11c3QgYWx3YXlzIGJlIGNvbnZlcnRlZCB0
byBhIExvYWRSZXF1ZXN0IG1lc3NhZ2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByCiAgICAgLy8gVGhpcyBtZXRob2QgY2FsbCB3aWxsIGFsc28gY2FsbCBSZWdpc3Rl
ckFwcGxpY2F0aW9uLCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciB1cyB0byBjYWxsIHRoaXMgb3IK
ICAgICAvLyBjaGVjayBpbiB3aXRoIExhdW5jaCBTZXJ2aWNlcwogICAgIFtOU0FwcGxpY2F0aW9u
IF9hY2Nlc3NpYmlsaXR5SW5pdGlhbGl6ZV07Ci0KKyAgICAKICAgICAvLyBVcGRhdGUgcHJvY2Vz
cyBuYW1lIHdoaWxlIGhvbGRpbmcgdGhlIExhdW5jaCBTZXJ2aWNlcyBzYW5kYm94IGV4dGVuc2lv
bgogICAgIHVwZGF0ZVByb2Nlc3NOYW1lKElzSW5Qcm9jZXNzSW5pdGlhbGl6YXRpb246Olllcyk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmls
dGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhh
c2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGlu
ZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0w
MSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13
ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjks
MTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBv
cnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
RXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAKSW5kZXg6IFdlYktpdC54Y3dvcmtzcGFjZS94
Y3NoYXJlZGRhdGEveGNzY2hlbWVzL0FsbCBTb3VyY2UueGNzY2hlbWUKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3Nj
aGVtZQkocmV2aXNpb24gMjkwNTI1KQorKysgV2ViS2l0Lnhjd29ya3NwYWNlL3hjc2hhcmVkZGF0
YS94Y3NjaGVtZXMvQWxsIFNvdXJjZS54Y3NjaGVtZQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcg
KzE1Nyw3IEBACiAgICAgICA8L1Rlc3RhYmxlcz4KICAgIDwvVGVzdEFjdGlvbj4KICAgIDxMYXVu
Y2hBY3Rpb24KLSAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJEZWJ1ZyIKKyAgICAgIGJ1aWxk
Q29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgogICAgICAgc2VsZWN0ZWREZWJ1Z2dlcklkZW50aWZp
ZXIgPSAiWGNvZGUuRGVidWdnZXJGb3VuZGF0aW9uLkRlYnVnZ2VyLkxMREIiCiAgICAgICBzZWxl
Y3RlZExhdW5jaGVySWRlbnRpZmllciA9ICJYY29kZS5EZWJ1Z2dlckZvdW5kYXRpb24uTGF1bmNo
ZXIuTExEQiIKICAgICAgIGxhdW5jaFN0eWxlID0gIjAiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453734</attachid>
            <date>2022-03-03 07:32:43 -0800</date>
            <delta_ts>2022-03-03 08:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303073242.patch</filename>
            <type>text/plain</type>
            <size>65486</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklORyAxCiAjZW5kaWYKIAorI2RlZmluZSBFTkFCTEVfQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTIEVOQUJMRV9DT05URU5UX0ZJTFRFUklORworCiAj
aWYgIWRlZmluZWQoRU5BQkxFX0NPTlRFWFRfTUVOVVMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAjZGVmaW5lIEVOQUJMRV9DT05URVhUX01FTlVTIDAKICNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVz
dCk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhh
bmRsZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9k
aWZpZWRSZXF1ZXN0VVJMKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0QmxvY2tlZFN0cmluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKTogRGVsZXRlZC4KKwogMjAyMi0w
Mi0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlLWFkZCBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQsIHJlbW92ZWQgaW4gcjI4NTI1MgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNDA2LDggKzM0MDYsNiBAQAog
CQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIz
NjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUEx
QUZFREU2MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZE
MDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFG
OEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAx
M0YgLyogTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAgKi87IH07Ci0JCUExQjVCMjlFMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUYxQUFB
ODQ2RjAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFCQjg1OUMyMTU5QUVBMTAwNjdFMDdEIC8qIEFw
cGxlUGF5RXJyb3JDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODU5OTIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVB
MzIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QTAyMTU5QUY1NzAw
NjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVBOTIxNTlCMDJDMDA2N0UwN0Qg
LyogTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFCQjg1QTYyMTU5QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3Iu
aCAqLzsgfTsKQEAgLTM0MTUsOCArMzQxMyw2IEBACiAJCUExQkI4NUIzMjE1OUIxQTEwMDY3RTA3
RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUFGMjE1OUIxQTAwMDY3RTA3RCAvKiBKU0Fw
cGxlUGF5RXJyb3JDb250YWN0RmllbGQuaCAqLzsgfTsKIAkJQTFCQjg1QjgyMTU5QjNBNDAwNjdF
MDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmNwcCAqLzsgfTsKIAkJQTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9j
a1BheW1lbnRFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTFCQjg1QjUyMTU5QjM4QTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwotCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAx
QUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKLQkJQTFCRjZC
ODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThD
IC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFD
QkVGNjQxRjlGMTEyOTAwMjhERTdDIC8qIE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAyOERF
N0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAwQTQ1
NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY1MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRy
ZXNzLmggKi87IH07CkBAIC01Mjk2LDYgKzUyOTIsMTQgQEAKIAkJRTM2RDcwMjAyN0I3MjAxMzAw
NjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAv
KiBFbXB0eUF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5v
ZGVDb25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDA0OTkzMURBREMwNDUwMDcxOEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3Qzg2NTAxRUI2M0Uz
RjAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM3Qzg2NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlz
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUz
OTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZF
NDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVC
MjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkVBMjdDNkRDQ0UwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyog
V2ViWFJUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOEQ4M0UwMjQzRjcxQ0UwMDkyNDdENiAvKiBXZWJYUlRlc3QuY3BwICovOyB9OworCQlF
Mzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkVEMjdD
NkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OworCQlF
Mzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1QjI5QzFB
QUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi87IH07CisJ
CUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1QjI5RDFB
QUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYyMjdDN0NGRDMw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250
ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgwMUFB
OTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUUzOTYyOEJG
MjM5NTcyOEYwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhCRDIzOTU3
MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYyOEMxMjM5NTc0
MzEwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90
aW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0E3NzY2
NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzM3MCw2ICsxNzM3NCw5IEBACiAJ
CUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYyRUUzIC8q
IFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2
MDkxRjhFODExOTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
QTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAv
KiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1vdGlvbk1h
bmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW90aW9uTWFu
YWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk3NUI3NjFFQzlB
RjM5MDA4NDc3MTcgLyogSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudERPTUpJVC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE3NCw5ICsyMTE4MSwxMiBAQAogCQkJCUNE
RjRCNzFGMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgKi8sCiAJCQkJQTFC
RjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLywKIAkJCQlB
MUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLywKKwkJCQlF
Mzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAq
LywKKwkJCQlFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmggKi8sCiAJCQkJQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwICovLAogCQkJCUExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJQTE5QUVBMUMxQUFBN0M0OTAwQjUyQjI1
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsICovLAorCQkJCUUzOTUyRkU0MjdDNkFD
N0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi8sCiAJCQkJ
NTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJCQk1MTA1
OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1OEFEOTFE
Njc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0zMzQxMSw4
ICszMzQyMSw2IEBACiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2VydmljZVdv
cmtlckludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2QzAwNTZC
RDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMyNkI0MTE2
MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTFC
RjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAq
LywKLQkJCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5IC8qIE1v
Y2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2RjNFOTEx
QzFFQ0IyRjAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ5N0YwNDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0zNjM5MSw2ICszNjM5OSwxMCBAQAogCQkJCUNERjJCMDExMTgyMDU0MDYw
MEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyNDFFMDNCRjgx
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzIw
MUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZF
NTI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFk
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dh
bWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQ0NENEEyMERFMDM0RjAwNjVB
MjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODczNCw4ICszODc0
Niw2IEBACiAJCQkJQ0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFMDg2NjMyNDg5RDM0RTAwRTQ5NkQ5IC8qIE1vY2tBcHBs
ZVBheVNldHVwRmVhdHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3
MDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCRjZC
ODIxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QURCMUQ2NzkyQzEwMDlBNTM4QyAvKiBN
b2NrR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERDFENjc5MkMxMDA5QTUz
OEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3RUJG
QTFFM0FCNjc5MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzg4MjMsNiArMzg4MzMsOSBAQAogCQkJCUNEQTk1OTM1MjQxMjNDQjgw
MDkxMEVFRiAvKiBNZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
NzYzOEE5QTE4ODQ0ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRjMyN0M3Q0ZERDAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QkY3NDIxREJGREMyNzAwN0E3
RDk5IC8qIE5hdmlnYXRvckVNRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIxMDE5NTRE
NjI3MDBGQTVDMkUgLyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTU2OUQxMzBEN0UyQjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovLApA
QCAtMzk0NzMsNiArMzk0ODYsNyBAQAogCQkJCTA3RjVDRkY2MjU4MkE1MjkwMDY2MkVGNSAvKiBX
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDQUYzNDgyMEE2
QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
RUNEQzkzQzIxRjI5NzI5MDA5NzZCRDEgLyogV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUMyN0M2RENEMzAwODZGNUQ5IC8qIFdl
YlhSVGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTQ4MzJDMjE4N0Y2NUM3MDBEQTYzQTYg
LyogV0tVdGlsaXRpZXMuYyBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDN0NDMEEyQ0YwNzQwMEQ1
NzY2NCAvKiBYTGlua05hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MzNDODBDMEEyQ0Yy
NTYwMEQ1NzY2NCAvKiBYTUxOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQzOSw2ICsyNDM5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
bwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIFJlc291cmNlRXJyb3IgRG9jdW1lbnRM
b2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlQ29udGVudEZpbHRl
ckRpZEJsb2NrIik7CiAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5yZWFjaGFibGVVUkwoZG9jdW1l
bnRVUkwoKSk7CiAgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc0VtcHR5KCkg
JiYgZnJhbWUoKSkgewogICAgICAgICB1bmJsb2NrSGFuZGxlci53cmFwV2l0aERlY2lzaW9uSGFu
ZGxlcihbc2NyaXB0Q29udHJvbGxlciA9IFdlYWtQdHIgeyBmcmFtZSgpLT5zY3JpcHQoKSB9LCBz
Y3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5pc29sYXRlZENvcHkoKV0oYm9vbCB1
bmJsb2NrZWQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQsNiAr
NjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNv
bnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworCiBwcml2YXRlOgog
ICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpA
QCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93
ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVx
dWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJM
IiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5IHsg
QCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xT
X1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2ViRmlsdGVy
RXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0xMDEsNiArMTAyLDEw
IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtjb2RlciBlbmNvZGVP
YmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRv
cktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrZWRBZnRlclJlcXVl
c3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKKwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5IEBAIGJvb2wgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xT
X1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZh
bHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9y
Q2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdW5ibG9ja0hh
bmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAg
IHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91bmJsb2NrZWRBZnRlclJl
cXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVx
dWVzdCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisKKyAgICBpZiAo
IW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAgICBpZiAo
IW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM0
LDYgKzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW4KICAg
ICBpZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVzPiBhcyBhbiB1bmJsb2Nr
IHJlcXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNl
bmRpZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAl
ZCIsIGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxvY2tSZXF1ZXN0OwogfQog
CkBAIC0xNTEsOCArMTY0LDE2IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpy
ZXF1ZXMKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKLSAg
ICAgICAgbV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2Vk
KSB7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAg
IHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qu
Ym9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1
bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAg
ICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAg
ICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2Vk
XSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTE2MCw2ICsxODEsMTEgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRd
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAg
aWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NoYW5nZWQoc2V0dGluZ3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7
CisgICAgCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5n
c0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2Ns
aWVudDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5j
bHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQs
MTIgKzQ1LDQ2IEBAIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigp
ID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogcmVzZXQiKTsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7
CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3Ry
aW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lz
aW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1fZGVjaXNpb25Q
b2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQor
eworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVl
c3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVz
dFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVk
UmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9
CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVl
c3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwot
ICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
c3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhv
c3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVy
YXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiAr
NTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0
RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhj
b25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0
cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0
cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVj
aXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVj
aXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24g
ZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcm
IHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3Qg
U3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVx
dWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYg
bW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1
ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmll
ZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2Rl
KERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkg
PSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50
OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2
b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNp
b25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsK
KyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAg
c3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAg
ICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpv
cHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29kZXIgPj4gZGVj
aXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAg
ICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVu
YmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAg
ICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2Rp
ZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAg
aWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnNl
dEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lz
aW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0
dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7
CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7
CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVx
dWVzdFVSTCkpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9Owor
Cit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRG
aWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRl
clVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3Rh
cnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5n
IHByb2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywxMSBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50
YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNpbmdsZXRvbigpID0gV1RGTW92ZShzZXR0aW5ncyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdv
cmtSZXNvdXJjZUxvYWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VM
b2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6
ZVJlc291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4g
bG9hZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcg
QEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91
bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsg
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTIz
OCw2ICsyMzksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVu
dEZpbHRlcmluZyIpOwogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7CkBA
IC05MzMsMTEgKzkzNSwxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSkgeworICAg
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogYmxvY2tlZCIpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY29udGVu
dEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9CiAjZW5kaWYK
LQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVz
b3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTc3MywyNSArMTc3
NywzMiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2Nr
SGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tI
YW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVz
dFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wg
dW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6UmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRG
aWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOworICAgIGlmICh1bmJsb2NrSGFu
ZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVu
YmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3VuYmxvY2tIYW5kbGVyLCB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
LCB0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9j
a2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHVuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tlZEFm
dGVyUmVxdWVzdCh1bmJsb2NrZWQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJDb250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVuYmxv
Y2tlZCk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlD
b250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJv
cjsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50Rmls
dGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKy8vICAgIG1fY29udGVu
dEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIik7CiAgICAg
aWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKICAgICBlbHNlIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQog
I2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIAorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5k
UmlnaHQ7CiB9CkBAIC0xMzEsNiArMTMzLDcgQEAgY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNs
YXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKIGNsYXNzIExpbmVh
clRpbWluZ0Z1bmN0aW9uOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNz
IE5vdGlmaWNhdGlvbjsKIGNsYXNzIFBhc3RlYm9hcmRDdXN0b21EYXRhOwogY2xhc3MgUGF5bWVu
dEluc3RhbGxtZW50Q29uZmlndXJhdGlvbjsKQEAgLTg1NSw2ICs4NTgsMjYgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRl
cldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6
QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1
ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6
QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uOjpCbG9jaworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAog
ICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07
CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4
QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQy
Mzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4
RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYy
OERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlT
dXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAq
LzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAv
KiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0g
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2Vi
S2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGlt
LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAw
NkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRo
ID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlF
RDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2
NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJ
ZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBE
MjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNl
ckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
NjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1
MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3
QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1
QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJ
CQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMw
MDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
aGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxp
YldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBs
aWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50
aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVG
N0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9j
a0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZC
NjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNl
cnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBN
b2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJ
CQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9j
a0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5
N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1
c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYx
NDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMx
QzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01h
Yy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1h
bmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChh
dXRvIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29u
dGVudEZpbHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRv
bigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBm
aW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogI2luY2x1ZGUgPHd0
Zi9saW51eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVm
aW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRv
VUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQzLDgg
QEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3Ji
aWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9jZXNzOjp+
V2ViUHJvY2VzcygpCkBAIC0yMjI5LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5n
aW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJh
bWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBX
RUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBi
ZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwg
c3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZh
bHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSkudG9VSW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBh
cmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSks
IDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hl
ZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2No
ZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNy
YXNoZWQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVy
KFJlZgogICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3Ry
YWNraW5nUGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxv
YWRlcjo6fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVN
YWluUmVzb3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVz
dCB3aG9sZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3Mg
Ym9keSB3aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpA
QCAtMzYwLDE1ICszNjIsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZAogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQor
ICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxv
YWRGb3JDb250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSBy
ZXR1cm4iKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIp
OwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRl
clByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsK
IH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBm
aWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOgorCiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4g
SGFzaGVyIGluc3RlYWQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDY2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tOgorCiAyMDIyLTAz
LTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0
LXdlYmtpdF0gR2F0ZSBpbmZvcm1hdGlvbiBVUkwgb24gaW5pdGlhbCBzZXR1cApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC04
OCw3ICs4OCw3IEBAIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAKIAog
T1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7
CiAKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlw
dENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBN
ZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykg
JChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdT
KSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9M
REZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9M
REZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RI
RVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAt
ZnJhbWV3b3JrIFdlYktpdCAtZnJhbWV3b3JrIFdlYkNvcmUgLWxXZWJDb3JlVGVzdFN1cHBvcnQg
LWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBP
UlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdL
X0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAk
KFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklT
SU9OS0lUQ09SRV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9U
T1VDSCkpOwogT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFt
ZXdvcmsgQ2FyYm9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlP
Uy4gSW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxp
Y2F0aW9uLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEds
b2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNp
bXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1Bs
dWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0
ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29u
dGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxW
YWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>
<flag name="commit-queue"
          id="481183"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453735</attachid>
            <date>2022-03-03 07:51:14 -0800</date>
            <delta_ts>2022-03-03 09:00:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303075112.patch</filename>
            <type>text/plain</type>
            <size>65580</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDExIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3Mg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBA
IC0xOTgsNiArMTk5LDggQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIGluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNvdXJjZUxvYWRT
Y2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlvcml0aXplUmVz
b3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBsb2Fk
SWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBtX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBjb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpAQCAtMjM4LDYg
KzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRDb250ZW50Rmls
dGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTkz
MywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EK
ICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1ICsxNzc3LDMy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5k
bGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRs
ZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJs
b2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRl
ckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5ibG9j
a0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCksIHRo
aXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQp
IG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2Vk
KTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwog
fQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9jb250ZW50Rmls
dGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBpZiAo
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw4IEBACiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmg+CisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdo
dDsKIH0KQEAgLTg1NSw2ICs4NTcsMjYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6
QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAorICAgICAg
ICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRl
ckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAgID47Cit9
OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+
IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRv
cGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDYgKzE5OTAs
OCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUzODY2QjBCMjM5OUEyREQw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
ODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4QTFGQzAyM0E1NTFCRjAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNl
SWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJRTNDQUFB
NDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBQUE0MzI0MTMyNzhBMDBD
RUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2
NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMx
MzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2Iu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUw
QiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3
QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEy
RkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlk
aW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFj
ZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFODI3QzZC
ODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1MDAzOUVDNjkgLyogd2VicnRjICov
LAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAw
RUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5
NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEw
QzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUz
NEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8s
CiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICov
LAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUw
RjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8s
CkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8q
IE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3
NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMw
MDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdE
Q0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAw
RUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3Rpbmcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRTkyN0M2Qjg0OTAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hTZXJ2aWNlQ29ubmVjdGlvbi5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmll
bGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFCMzBGMjU0MEY1MEQwMEQ5MTAw
QiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZp
bHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZygpCit7CisgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhp
cyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0
aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwICVkIiwgJnNldHRp
bmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQor
ICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29udGVudEZpbHRlcihzZXR0aW5ncyks
IDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRp
YyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFy
dE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogI2luY2x1ZGUgPHd0Zi9saW51eC9SZWFsVGltZVRocmVh
ZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisK
ICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJ
T05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQzLDggQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5z
dGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkBAIC0yMjI5
LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5JiBXCiAg
ICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rv
cnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxF
QVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2
aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxF
QVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkudG9VSW50NjQoKSk7CisKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxP
QURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBz
Y2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwg
c3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwog
ICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAg
V2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKFJlZgogICAgIDogbV9jb3JlTG9h
ZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3RyYWNraW5nUGFyYW1ldGVycyh0cmFj
a2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJS
ZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxvYWRlcjo6fldlYlJlc291cmNlTG9h
ZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVNYWluUmVzb3VyY2UgV2ViUmVzb3Vy
Y2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBw
cm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkK
IHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdCB3aG9sZSBhZ2FpbiBhcyB3ZSBk
byBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3MgYm9keSB3aGVuIHNlbmRpbmcgaXQg
b3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpAQCAtMzYwLDE1ICszNjIsMjEgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZAogCiB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlmICghbV9jb3JlTG9hZGVy
IHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
ciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMo
IkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIik7
CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBp
ZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFz
dWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4iKTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDIt
MjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0
ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorCiAyMDIyLTAyLTIyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4gSGFzaGVyIGluc3RlYWQKSW5kZXg6
IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5MDY2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDIyLTAzLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5n
IGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGVudEZpbHRlcmluZ1BsdWdJbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9Db250ZW50RmlsdGVyaW5nLm1tOgorCiAyMDIyLTAzLTAxICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gR2F0ZSBpbmZvcm1h
dGlvbiBVUkwgb24gaW5pdGlhbCBzZXR1cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNp
b24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMSArODgsMTEgQEAgV0tfVUlL
SVRNQUNIRUxQRVJfTERGTEFHU19tYWNjYXRhbHlzdCA9IAogCiBPVEhFUl9DUExVU1BMVVNGTEFH
UyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9
ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9s
aWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdl
YktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9T
dXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFH
UykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxB
R1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRN
QUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERG
TEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdTID0gJChpbmhl
cml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RX
ZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1m
cmFtZXdvcmsgV2ViQ29yZSAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1m
cmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FV
VEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tf
T1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1Mp
ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1Mp
ICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZM
QUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3Vs
ZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCi1PVEhFUl9MREZM
QUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBD
b3JlR3JhcGhpY3MgLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIE1vYmlsZUNvcmVTZXJ2aWNl
czsKK09USEVSX0xERkxBR1NfUExBVEZPUk1fY29jb2F0b3VjaCA9IC1mcmFtZXdvcmsgQ29yZUdy
YXBoaWNzIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29yayBNb2JpbGVDb3JlU2VydmljZXM7CiAK
IExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIkBsb2FkZXJfcGF0aCI7CiAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjks
MTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBv
cnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
RXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>
<flag name="commit-queue"
          id="481195"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453738</attachid>
            <date>2022-03-03 07:58:24 -0800</date>
            <delta_ts>2022-03-03 08:40:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303075822.patch</filename>
            <type>text/plain</type>
            <size>65709</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDExIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3Mg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBA
IC0xOTgsNiArMTk5LDggQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIGluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNvdXJjZUxvYWRT
Y2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlvcml0aXplUmVz
b3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBsb2Fk
SWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBtX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBjb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpAQCAtMjM4LDYg
KzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRDb250ZW50Rmls
dGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTkz
MywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EK
ICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1ICsxNzc3LDMy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5k
bGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRs
ZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJs
b2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRl
ckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5ibG9j
a0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCksIHRo
aXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQp
IG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2Vk
KTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwog
fQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9jb250ZW50Rmls
dGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBpZiAo
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRT
aXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3Rp
ZmljYXRpb25EaXJlY3Rpb24uaD4KQEAgLTg1NSw2ICs4NTYsMjYgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxT
ZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJB
ZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Cisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAg
ICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3cs
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpC
bG9jaworICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAg
ICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUz
ODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4QTFGQzAy
M0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAv
KiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8q
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4RUNEIC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYyOERFMjM5
NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERDMjM5
NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAq
LzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NB
QUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsK
QEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYz
MjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJF
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2Fu
ZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2NkIwNzIz
OTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3NEYgLyog
VXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYg
LyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVy
ZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNjI3QzZC
NjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1MDAzOUVD
NjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3QTdBMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1QjBENTE2
MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFG
QjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0
NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5
bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktp
dEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYu
YSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlv
bi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVGN0MyNzVF
OTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhl
bnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZj
U2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJCQkJOUI0
NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1
bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2MDAy
REMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5
NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hTZXJ2
aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3
MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFCMzBG
MjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIu
Z2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2Vydmlu
ZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpt
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChhdXRvIGNv
bm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29udGVudEZp
bHRlcihzZXR0aW5ncyksIDApOworCit9CisKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
IDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOwor
CisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsK
K307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsOCBAQAogI2luY2x1ZGUgPHd0Zi9saW51
eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmgiCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJF
TEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0
KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQzLDggQEAgV2Vi
UHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNh
YmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOwogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJv
Y2VzcygpCkBAIC0yMjI5LDcgKzIyMzMsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJz
LmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBXRUJMT0FE
RVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBz
Y2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGlj
X2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZhbHVlT3JE
ZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkudG9V
SW50NjQoKSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRl
cnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7
CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxv
YWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAo
cHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCku
cHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUg
dGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKFJlZgog
ICAgIDogbV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3RyYWNraW5n
UGFyYW1ldGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250
ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxvYWRlcjo6
fldlYlJlc291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVNYWluUmVz
b3VyY2UgV2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdCB3aG9s
ZSBhZ2FpbiBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3MgYm9keSB3
aGVuIHNlbmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpAQCAtMzYw
LDE1ICszNjIsMjEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZAog
CiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAo
IW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlm
ICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5j
ZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVM
b2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4i
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAg
IG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlclByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJp
bmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgor
CiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNlIHRoZSBtb2Rlcm4gSGFzaGVy
IGluc3RlYWQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI5MDY2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTAxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNv
bnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tOgorCiAyMDIyLTAzLTAxICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtp
dF0gR2F0ZSBpbmZvcm1hdGlvbiBVUkwgb24gaW5pdGlhbCBzZXR1cApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZwkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMSAr
ODgsMTEgQEAgV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU19tYWNjYXRhbHlzdCA9IAogCiBPVEhF
Ul9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAot
T1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29y
ZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFs
IC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdL
X0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQo
V0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxB
R1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxB
R1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9M
REZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNU
U19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFt
ZXdvcmsgV2ViS2l0IC1mcmFtZXdvcmsgV2ViQ29yZSAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJh
bWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9M
REZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElE
X0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tf
U1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05L
SVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNI
KSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29y
ayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJ
bnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRp
b24uCi1PVEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtZnJhbWV3b3JrIFdlYkNv
cmUgLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBVSUtpdCAtZnJhbWV3b3JrIE1v
YmlsZUNvcmVTZXJ2aWNlczsKK09USEVSX0xERkxBR1NfUExBVEZPUk1fY29jb2F0b3VjaCA9IC1m
cmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29yayBNb2JpbGVD
b3JlU2VydmljZXM7CiAKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIkBsb2FkZXJfcGF0aCI7
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZp
bHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxW
YWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRy
YXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
PgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkwNTI1KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5n
UGx1Z0luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0
ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4u
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNl
Lmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5n
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVz
LmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQu
aD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>
<flag name="commit-queue"
          id="481190"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453742</attachid>
            <date>2022-03-03 08:05:38 -0800</date>
            <delta_ts>2022-03-03 08:47:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303080535.patch</filename>
            <type>text/plain</type>
            <size>65704</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDExIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3Mg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBA
IC0xOTgsNiArMTk5LDggQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyAgICB2
b2lkIGluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiYpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNvdXJjZUxvYWRT
Y2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWlu
dDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlvcml0aXplUmVz
b3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyPiBsb2Fk
SWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBtX3Nob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1cmVFeHRyYU5l
dHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2FkSUQgeyBOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBjb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpAQCAtMjM4LDYg
KzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRDb250ZW50Rmls
dGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKQEAgLTkz
MywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EK
ICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJj
ZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1ICsxNzc3LDMy
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5k
bGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRs
ZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJs
b2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94
eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRl
ckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5ibG9j
a0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCksIHRo
aXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQp
IG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2Vk
KTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwog
fQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9jb250ZW50Rmls
dGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBpZiAo
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAor
ICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsK
K307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBdXRv
cGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5
MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIw
QjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUx
QkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNl
ckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2
MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2
MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07
CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMy
NDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02
NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0
NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAv
KiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAx
RDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5
RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJ
bnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVz
ZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJ
ZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5
NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8q
IHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAy
MTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyog
RnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAq
LywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRp
dGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8s
CiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdDMjc1RTk3QjYw
MDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNh
dG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VE
QzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZp
Y2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJCTlCNDc5MDkx
MjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdCNjAwMkRDMjJE
IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkU5
MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNoU2VydmljZUNv
bm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMxQjMwRjI1NDBG
NTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMubW0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQor
eworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0
Q2xpZW50KHRoaXMpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYgc2V0dGluZ3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAl
ZCIsICZzZXR0aW5ncywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0
aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIo
c2V0dGluZ3MpLCAwKTsKKworfQorCisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1
YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAg
IHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9Owor
Cit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDggQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVh
bFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNF
X0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDog
MCkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0Myw4IEBAIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkuc3RhcnRPYnNlcnZpbmcoKTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3Mo
KQpAQCAtMjIyOSw3ICsyMjMzLDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3Vy
YXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
dW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24g
MjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01h
aW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RS
QVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1
bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0
PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVs
dChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0
KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAg
ICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBV
bmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9y
aXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9y
aXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMg
bG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2
ICs3MSw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6
IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFt
ZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogV2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJS
ZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNl
IFdlYlJlc291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdh
aW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBz
ZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM2MCwxNSAr
MzYyLDIxIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWQKIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2Nv
cmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoIW1f
Y29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIgbm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFp
blJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEp
CiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICghbV9jb3JlTG9hZGVy
IHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkgcmV0dXJuIik7CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25h
bExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGlu
IHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAy
Mi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Ag
U3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0
ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50
IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdh
dGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25m
aWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODgsMTEgKzg4LDEx
IEBAIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAKIAogT1RIRVJfQ1BM
VVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CiAKLU9USEVS
X0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZy
YW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJh
bWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRI
S0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09Q
RU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAk
KFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAk
KE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RIRVJfTERGTEFH
UyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3Jr
IFdlYktpdCAtZnJhbWV3b3JrIFdlYkNvcmUgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29y
ayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFH
UykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZM
QUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RF
TV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09S
RV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOwog
T1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ2Fy
Ym9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlPUy4gSW5zdGVh
ZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxpY2F0aW9uLgot
T1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWZyYW1ld29yayBXZWJDb3JlIC1m
cmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29yayBNb2JpbGVD
b3JlU2VydmljZXM7CitPVEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2ggPSAtZnJhbWV3
b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgTW9iaWxlQ29yZVNl
cnZpY2VzOwogCiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJAbG9hZGVyX3BhdGgiOwogCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVz
LmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQg
PFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Z1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJ
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVy
aW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgot
I2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgogCg==
</data>
<flag name="commit-queue"
          id="481193"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453744</attachid>
            <date>2022-03-03 08:17:50 -0800</date>
            <delta_ts>2022-03-03 08:59:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303081748.patch</filename>
            <type>text/plain</type>
            <size>65827</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
aW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xl
TWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNv
dXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlv
cml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBj
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpA
QCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRD
b250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlz
KTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7
CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNl
bmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5p
c2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1
ICsxNzc3LDMyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVu
YmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5i
bG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
Ym9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxv
Y2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1
bmJsb2NrZWQpIG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9j
b250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsK
ICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRS
ZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERh
dGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2Nr
CisgICAgPjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICAgICAgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9Owog
CQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEEx
RkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0Qg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhE
RTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87
IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZC
MDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRp
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIz
NzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJ
bnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAw
MzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIw
RDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJ
CTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAz
ODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJX
ZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGli
V1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGlj
YXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdD
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4
MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJ
CTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdC
NjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNo
U2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQw
MDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMx
QjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5h
Z2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNl
cnZpbmcoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiAlcCAlZCIsICZzZXR0aW5ncywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0
byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRl
bnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKKworfQorCisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24o
KTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmlu
YWw7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDggQEAKICNpbmNsdWRlIDx3dGYv
bGludXgvUmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgIk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oIgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmlu
ZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJ
bnQ2NCgpIDogMCkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0Myw4IEBA
IFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlk
RGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworICAgIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkuc3RhcnRPYnNlcnZpbmcoKTsKIH0KIAogV2ViUHJvY2Vzczo6fldl
YlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjMzLDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1
cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2lu
ZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1l
dGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VC
TE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVp
bmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1
ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUp
LnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJh
bWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAw
KSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1
bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVk
dWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFz
aGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw2ICs3MSw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihS
ZWYKICAgICA6IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFj
a2luZ1BhcmFtZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2Fk
ZXI6On5XZWJSZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFp
blJlc291cmNlIFdlYlJlc291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBX
ZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qg
d2hvbGUgYWdhaW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJv
ZHkgd2hlbiBzZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAg
LTM2MCwxNSArMzYyLDIxIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJE
aWQKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNv
bnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAg
aWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIgbm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICghbV9j
b3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkgcmV0
dXJuIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsK
ICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmls
dGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhh
c2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGlu
ZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0w
MSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13
ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODgs
MTEgKzg4LDExIEBAIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAKIAog
T1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7
CiAKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlw
dENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBN
ZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykg
JChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdT
KSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9M
REZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9M
REZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RI
RVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAt
ZnJhbWV3b3JrIFdlYktpdCAtZnJhbWV3b3JrIFdlYkNvcmUgLWxXZWJDb3JlVGVzdFN1cHBvcnQg
LWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBP
UlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdL
X0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAk
KFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklT
SU9OS0lUQ09SRV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9U
T1VDSCkpOwogT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFt
ZXdvcmsgQ2FyYm9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlP
Uy4gSW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxp
Y2F0aW9uLgotT1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWZyYW1ld29yayBX
ZWJDb3JlIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29y
ayBNb2JpbGVDb3JlU2VydmljZXM7CitPVEhFUl9MREZMQUdTX1BMQVRGT1JNX2NvY29hdG91Y2gg
PSAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3JrIFVJS2l0IC1mcmFtZXdvcmsgTW9i
aWxlQ29yZVNlcnZpY2VzOwogCiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJAbG9hZGVyX3Bh
dGgiOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xv
YmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
RXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJldmlzaW9uIDI5MDUy
NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRl
cmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2lt
cG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1
Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVy
ZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRl
cmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250
ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsy
Niw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZh
bHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2ltcG9ydCA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgogCg==
</data>
<flag name="commit-queue"
          id="481194"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453747</attachid>
            <date>2022-03-03 08:55:19 -0800</date>
            <delta_ts>2022-03-03 10:33:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303085518.patch</filename>
            <type>text/plain</type>
            <size>66014</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
aW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xl
TWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNv
dXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlv
cml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBj
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpA
QCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRD
b250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlz
KTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7
CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNl
bmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5p
c2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1
ICsxNzc3LDMyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVu
YmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5i
bG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
Ym9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxv
Y2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1
bmJsb2NrZWQpIG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9j
b250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsK
ICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRS
ZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERh
dGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2Nr
CisgICAgPjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICAgICAgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9Owog
CQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEEx
RkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0Qg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhE
RTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87
IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZC
MDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRp
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIz
NzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJ
bnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAw
MzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIw
RDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJ
CTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAz
ODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJX
ZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGli
V1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGlj
YXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdD
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4
MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJ
CTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdC
NjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNo
U2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQw
MDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMx
QjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdl
ci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2
aW5nKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogJXAgJWQiLCAmc2V0dGluZ3MsIHNldHRpbmdzLmVuYWJsZWQoKSk7CisgICAgaWYgKGF1dG8g
Y29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50
RmlsdGVyKHNldHRpbmdzKSwgMCk7CisKK30KKworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JikgZmluYWw7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgIk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0Vf
TE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNz
aW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEs
NiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdh
Y2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOworI2VuZGlmCiB9CiAK
IFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMjksNyArMjIzNyw2IEBAIFJlbW90ZU1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcx
LDYgKzQ3MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAg
ICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdl
KG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51
bGxvcHQpOwogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6
IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJp
b3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKKwogICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBXZWJSZXNvdXJjZUxvYWRlcjo6V2Vi
UmVzb3VyY2VMb2FkZXIoUmVmCiAgICAgOiBtX2NvcmVMb2FkZXIoV1RGTW92ZShjb3JlTG9hZGVy
KSkKICAgICAsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzKHRyYWNraW5nUGFyYW1ldGVycykKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyIik7CiB9CiAK
IFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3VyY2VMb2FkZXIoKQpAQCAtMTEzLDYgKzExNCw3
IEBAIE1haW5GcmFtZU1haW5SZXNvdXJjZSBXZWJSZXNvdXJjZUxvYWRlcjoKIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2Vk
UmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHByb3Bvc2VkUmVxdWVzdEJvZHksIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCIpOwogICAg
IFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBN
YWtlIHRoZSByZXF1ZXN0IHdob2xlIGFnYWluIGFzIHdlIGRvIG5vdCBub3JtYWxseSBlbmNvZGUg
dGhlIHJlcXVlc3QncyBib2R5IHdoZW4gc2VuZGluZyBpdCBvdmVyIElQQywgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMuCkBAIC0zNjAsMTUgKzM2MiwyMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIG5vIGxvYWRlciIpOwogICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFi
bGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZp
bHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1
c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNjYxKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMDEgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0lu
Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcu
bW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9uIFVSTCBvbiBpbml0aWFsIHNl
dHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTg4LDExICs4OCwxMSBAQCBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTX21h
Y2NhdGFseXN0ID0gCiAKIE9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChpbmhlcml0ZWQpIC1pc3lz
dGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3Jr
L1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3Qg
LWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJh
bWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBw
b3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJT
VVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsg
JChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFH
UykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdL
X1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09D
T0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2Vf
bG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsg
SmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWZyYW1ld29yayBXZWJDb3JlIC1sV2Vi
Q29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChX
S19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3
b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19Q
REZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9M
REZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRG
T1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVSX0xERkxBR1NfUExBVEZPUk1fID0gLWZyYW1l
d29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsKIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5v
dCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ugc2hvdWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVz
dFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KLU9USEVSX0xERkxBR1NfUExBVEZPUk1fY29jb2F0b3Vj
aCA9IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJhbWV3b3JrIENvcmVHcmFwaGljcyAtZnJhbWV3b3Jr
IFVJS2l0IC1mcmFtZXdvcmsgTW9iaWxlQ29yZVNlcnZpY2VzOworT1RIRVJfTERGTEFHU19QTEFU
Rk9STV9jb2NvYXRvdWNoID0gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBVSUtp
dCAtZnJhbWV3b3JrIE1vYmlsZUNvcmVTZXJ2aWNlczsKIAogTERfUlVOUEFUSF9TRUFSQ0hfUEFU
SFMgPSAiQGxvYWRlcl9wYXRoIjsKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24g
MjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9y
dCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5o
IgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1t
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRG
aWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tS
ZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRl
cHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9j
b2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZh
dGUuaD4KIAo=
</data>
<flag name="commit-queue"
          id="481211"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453756</attachid>
            <date>2022-03-03 10:21:31 -0800</date>
            <delta_ts>2022-03-03 12:07:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303102130.patch</filename>
            <type>text/plain</type>
            <size>64918</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
aW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xl
TWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNv
dXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlv
cml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBj
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpA
QCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRD
b250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlz
KTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7
CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNl
bmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5p
c2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1
ICsxNzc3LDMyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVu
YmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5i
bG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
Ym9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxv
Y2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1
bmJsb2NrZWQpIG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9j
b250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsK
ICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRS
ZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERh
dGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2Nr
CisgICAgPjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICAgICAgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9Owog
CQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEEx
RkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0Qg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhE
RTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87
IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZC
MDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRp
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIz
NzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJ
bnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAw
MzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIw
RDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJ
CTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAz
ODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJX
ZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGli
V1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGlj
YXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdD
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4
MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJ
CTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdC
NjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNo
U2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQw
MDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMx
QjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdl
ci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2
aW5nKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogJXAgJWQiLCAmc2V0dGluZ3MsIHNldHRpbmdzLmVuYWJsZWQoKSk7CisgICAgaWYgKGF1dG8g
Y29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50
RmlsdGVyKHNldHRpbmdzKSwgMCk7CisKK30KKworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JikgZmluYWw7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgIk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0Vf
TE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNz
aW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEs
NiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdh
Y2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOworI2VuZGlmCiB9CiAK
IFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMjksNyArMjIzNyw2IEBAIFJlbW90ZU1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcx
LDYgKzQ3MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAg
ICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdl
KG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51
bGxvcHQpOwogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6
IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJp
b3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKKwogICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBXZWJSZXNvdXJjZUxvYWRlcjo6V2Vi
UmVzb3VyY2VMb2FkZXIoUmVmCiAgICAgOiBtX2NvcmVMb2FkZXIoV1RGTW92ZShjb3JlTG9hZGVy
KSkKICAgICAsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzKHRyYWNraW5nUGFyYW1ldGVycykKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyIik7CiB9CiAK
IFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3VyY2VMb2FkZXIoKQpAQCAtMTEzLDYgKzExNCw3
IEBAIE1haW5GcmFtZU1haW5SZXNvdXJjZSBXZWJSZXNvdXJjZUxvYWRlcjoKIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2Vk
UmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHByb3Bvc2VkUmVxdWVzdEJvZHksIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCIpOwogICAg
IFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBN
YWtlIHRoZSByZXF1ZXN0IHdob2xlIGFnYWluIGFzIHdlIGRvIG5vdCBub3JtYWxseSBlbmNvZGUg
dGhlIHJlcXVlc3QncyBib2R5IHdoZW4gc2VuZGluZyBpdCBvdmVyIElQQywgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMuCkBAIC0zNjAsMTUgKzM2MiwyMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIG5vIGxvYWRlciIpOwogICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFi
bGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZp
bHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1
c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNjYxKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMDEgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0lu
Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcu
bW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9uIFVSTCBvbiBpbml0aWFsIHNl
dHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJh
bWV3b3JrIENvYwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlPUy4g
SW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxpY2F0
aW9uLgogT1RIRVJfTERGTEFHU19QTEFURk9STV9jb2NvYXRvdWNoID0gLWZyYW1ld29yayBXZWJD
b3JlIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgVUlLaXQgLWZyYW1ld29yayBN
b2JpbGVDb3JlU2VydmljZXM7CitPVEhFUl9MREZMQUdTX1BMQVRGT1JNX2lwaG9uZW9zID0gLWZy
YW1ld29yayBXZWJDb3JlCitPVEhFUl9MREZMQUdTX1BMQVRGT1JNX2lwaG9uZXNpbXVsYXRvciA9
IC1mcmFtZXdvcmsgV2ViQ29yZQogCiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJAbG9hZGVy
X3BhdGgiOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVk
R2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0
aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
aD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJldmlzaW9uIDI5
MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZp
bHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgot
I2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8V2ViQ29yZS9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNz
UGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdElu
dGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZp
bHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9D
b250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5
ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2Jh
bFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2ltcG9y
dCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgogCg==
</data>
<flag name="commit-queue"
          id="481229"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453768</attachid>
            <date>2022-03-03 11:37:56 -0800</date>
            <delta_ts>2022-03-03 13:22:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303113755.patch</filename>
            <type>text/plain</type>
            <size>66110</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxNCBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVDMjdDNkRDRDMwMDg2RjVEOSAvKiBXZWJY
UlRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTE4RDgzRTAyNDNGNzFDRTAwOTI0N0Q2IC8qIFdlYlhSVGVzdC5jcHAgKi87IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3Mzc0LDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgxLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIxLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk5LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ2LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMyw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0z
OTQ3Myw2ICszOTQ4Niw3IEBACiAJCQkJMDdGNUNGRjYyNTgyQTUyOTAwNjYyRUY1IC8qIFdlYk1B
dWRpb1V0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNBRjM0ODIwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQ0RD
OTNDMjFGMjk3MjkwMDk3NkJEMSAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFQzI3QzZEQ0QzMDA4NkY1RDkgLyogV2ViWFJU
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNDgzMkMyMTg3RjY1QzcwMERBNjNBNiAvKiBX
S1V0aWxpdGllcy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M3Q0MwQTJDRjA3NDAwRDU3NjY0
IC8qIFhMaW5rTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgzM0M4MEMwQTJDRjI1NjAw
RDU3NjY0IC8qIFhNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDM5
LDYgKzI0MzksNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRl
cjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1bWVudFVS
TCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHkoKSAmJiBm
cmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25IYW5kbGVy
KFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0sIHNjcmlw
dCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29sIHVuYmxv
Y2tlZCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9C
SkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSw4
IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1
cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3Qg
VVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisKIHByaXZhdGU6CiAgICAg
U3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFibGVVUkw7CkBAIC03
MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VO
QkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBtX3dlYkZp
bHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3QiIH07CiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFjaGFibGVVUkwiIH07
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVu
YmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFs
dWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDIsMTAgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVj
dDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBm
b3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAgYm9vbCBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lU
SF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0
b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFz
cygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxl
ci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltO
U051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
ICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZp
bHRlcjogY2FuSGFuZGxlUmVxdWVzdCIpOworICAgIGlmIChtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0
ICVkIiwgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlKTsKKworICAgIGlmICghbV91
bmJsb2NrUmVxdWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93
ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzQsNiAr
MTQ2LDcgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbgogICAgIGlm
IChpc1VuYmxvY2tSZXF1ZXN0KQogICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB3aWxsIGhhbmRsZSA8JXM+IGFzIGFuIHVuYmxvY2sgcmVx
dWVzdC5cbiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5kbGVSZXF1ZXN0ICVkIiwg
aXNVbmJsb2NrUmVxdWVzdCk7CiAgICAgcmV0dXJuIGlzVW5ibG9ja1JlcXVlc3Q7CiB9CiAKQEAg
LTE1MSw4ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE4MSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDYgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiByZXNldCIpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwIGVuYWJsZWQgJWQiLCB0aGlzLCBlbmFibGVkKTsKICAg
ICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlm
eVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcp
Cit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50
ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7Cisg
ICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9
CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1
ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAg
c3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgp
IHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwy
OSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5n
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5n
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29u
c3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lv
blBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lv
blBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7
IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNp
c2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNp
b247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBj
b25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RV
Ukw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVx
dWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVj
b2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRl
ZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDU0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
bW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBv
aW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9j
a1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAg
IGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
ICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lv
blBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlm
ICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRl
Y29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVk
UmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAo
IW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5h
YmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Q
b2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5n
cy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAg
ICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAg
ICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0
VVJMKSk7CisKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZSIpOworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUg
Vm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMg
d2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0Q29udGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24pOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOgorCiAyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBNYWtlIHN1cmUgdGhlcmUgaXMgYSBkZWZhdWx0IE5ldHdvcmtpbmcgcHJv
Y2VzcyB0byBwcm92aWRlIHRoZSBMYXVuY2ggU2VydmljZXMgZGF0YWJhc2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQzNyw2ICsxNDM3LDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2Uo
cmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
aW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmls
ZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29s
OwpAQCAtMTk4LDYgKzE5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xl
TWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
dm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNv
dXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlv
cml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsx
MTYsNyBAQCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvCiAgICAgLCBt
X3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyhtX2Nvbm5lY3Rpb24tPmNhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQoKSkKICAgICAsIG1fcmVzb3VyY2VMb2Fk
SUQgeyBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9CiB7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBj
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpKQpA
QCAtMjM4LDYgKzIzOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogc3RhcnRD
b250ZW50RmlsdGVyaW5nIik7CiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlz
KTsKQEAgLTkzMywxMSArOTM1LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRG
aW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7
CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNl
bmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5p
c2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1
ICsxNzc3LDMyIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVu
YmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5i
bG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5y
ZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0o
Ym9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29u
dGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY29udGVudEZpbHRlckRpZEJsb2NrIik7CisgICAgaWYgKHVuYmxv
Y2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCksIHRoaXMsIGVycm9yLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1
bmJsb2NrZWQpIG11dGFibGUgeworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworLy8gICAgbV9j
b250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsK
ICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2UgewpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRS
ZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERh
dGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2Nr
CisgICAgPjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICAgICAgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9Owog
CQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEEx
RkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0Qg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhE
RTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87
IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZC
MDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRp
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIz
NzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJ
bnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAw
MzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIw
RDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJ
CTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAz
ODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJX
ZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGli
V1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGlj
YXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdD
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4
MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJ
CTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdC
NjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNo
U2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQw
MDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMx
QjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdl
ci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2
aW5nKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogJXAgJWQiLCAmc2V0dGluZ3MsIHNldHRpbmdzLmVuYWJsZWQoKSk7CisgICAgaWYgKGF1dG8g
Y29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50
RmlsdGVyKHNldHRpbmdzKSwgMCk7CisKK30KKworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JikgZmluYWw7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDEwIEBACiAjaW5jbHVk
ZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgIk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0Vf
TE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNz
aW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEs
NiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdh
Y2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2VydmluZygpOworI2VuZGlmCiB9CiAK
IFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMjksNyArMjIzNyw2IEBAIFJlbW90ZU1l
ZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8
UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcx
LDYgKzQ3MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAg
ICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdl
KG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51
bGxvcHQpOwogICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6
IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJp
b3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKKwogICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBXZWJSZXNvdXJjZUxvYWRlcjo6V2Vi
UmVzb3VyY2VMb2FkZXIoUmVmCiAgICAgOiBtX2NvcmVMb2FkZXIoV1RGTW92ZShjb3JlTG9hZGVy
KSkKICAgICAsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzKHRyYWNraW5nUGFyYW1ldGVycykKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyIik7CiB9CiAK
IFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3VyY2VMb2FkZXIoKQpAQCAtMTEzLDYgKzExNCw3
IEBAIE1haW5GcmFtZU1haW5SZXNvdXJjZSBXZWJSZXNvdXJjZUxvYWRlcjoKIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2Vk
UmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHByb3Bvc2VkUmVxdWVzdEJvZHksIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCIpOwogICAg
IFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBN
YWtlIHRoZSByZXF1ZXN0IHdob2xlIGFnYWluIGFzIHdlIGRvIG5vdCBub3JtYWxseSBlbmNvZGUg
dGhlIHJlcXVlc3QncyBib2R5IHdoZW4gc2VuZGluZyBpdCBvdmVyIElQQywgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMuCkBAIC0zNjAsMTUgKzM2MiwyMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIG5vIGxvYWRlciIpOwogICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3Rp
dHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFi
bGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVudEZp
bHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFuZCB1
c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNjYxKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMDEgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0lu
Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcu
bW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9uIFVSTCBvbiBpbml0aWFsIHNl
dHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDkgKzg2LDE0IEBAIFdLX1NZU1RFTV9MREZMQUdTX0lPU19TSU5DRV8x
NSA9IC1mcmFtZXcKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MgPSAkKFdLX1VJS0lUTUFDSEVM
UEVSX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZM
QUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBVSUtpdE1hY0hlbHBlcjsKIAorV0tfV0VCQ09S
RV9MREZMQUdTX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05B
TUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKKwogT1RIRVJf
Q1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CiAKLU9U
SEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUg
LWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAt
ZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19B
VVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdL
X09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdT
KSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdT
KSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3
b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdv
cmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRf
TERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdM
X0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tf
VUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoV0tf
V0VCQ09SRV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VD
SCkpOwogT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdv
cmsgQ2FyYm9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlPUy4g
SW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxpY2F0
aW9uLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2Jh
bFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRl
Lmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBv
cnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZh
Y2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJp
bmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYs
OSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1
ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>
<flag name="commit-queue"
          id="481239"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453781</attachid>
            <date>2022-03-03 13:18:31 -0800</date>
            <delta_ts>2022-03-03 15:28:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303131829.patch</filename>
            <type>text/plain</type>
            <size>66636</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzksNiArMjQzOSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAg
IHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKICAg
ICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRy
b2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0Nv
ZGVyOworT0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBP
QkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgog
ICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hh
YmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVybCkgeyBt
X3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVu
YmxvY2tlZEFmdGVyUmVxdWVzdChib29sKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91bmJs
b2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc0LDkgQEAg
cHJpdmF0ZToKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgIFJldGFpblB0cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9y
OwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBOU051bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwgfTsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxv
Y2tVUkxIb3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IHVucmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleSB7IEAidW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0IiB9OwogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAi
d2ViRmlsdGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwMiwxMCBAQCB2b2lkIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVy
RXZhbHVhdG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBb
Y29kZXIgZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1bmJsb2Nr
ZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiB9CiAKQEAgLTExMyw2ICsxMTgsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjo6ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5Ondl
YkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XSBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMjAsNyArMTI4LDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNv
ZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJs
b2NrUmVxdWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5k
bGVSZXF1ZXN0Iik7CisgICAgaWYgKG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQorICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBtX3VuYmxv
Y2tlZEFmdGVyUmVxdWVzdC5ib29sVmFsdWUpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0
ZXIgJiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05U
Uk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1
YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxNDYsNyBAQCBib29s
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5ibG9ja1Jl
cXVlc3QpCiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHdpbGwgaGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0LlxuIiwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxvY2tSZXF1
ZXN0KTsKICAgICByZXR1cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApAQCAtMTUxLDggKzE2NCwx
NiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7Ci0gICAgICAgIG1fdW5ibG9ja1Jl
cXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgeworICAgIGF1dG8gdW5i
bG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3RlcjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghdW5ibG9ja1JlcXVlc3Rl
ciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICB1bmJsb2NrUmVxdWVzdGVy
ID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZV0oQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBmdW5jdGlvbikg
eworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAgICAgICAgfTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3RlcikgeworICAgICAgICB1bmJsb2NrUmVxdWVz
dGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CkBAIC0xNjAs
NiArMTgxLDExIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAg
ICB9CiB9CiAKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRB
ZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVl
c3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAg
IHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdz
KTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xl
dG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChS
ZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5j
bHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBAQCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlc2V0Iik7
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5n
c0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOwogICAgIE1vY2tDb250ZW50
RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAg
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFu
Z2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Js
b2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwor
dm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9u
UG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBv
aW50OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9u
ID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJs
b2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5n
JiBtb2RpZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2Rp
ZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcm
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0
KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1v
Y2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50
byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
ZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9j
a2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2lu
dCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNp
b25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVj
aXNpb247IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVj
aXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
c2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNp
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZv
aWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYg
dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRS
ZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2
b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVS
TCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXBy
aXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
KSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1
bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lz
aW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9
OwpAQCAtODcsNCArOTAsNTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVl
c3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsKKyAgICBl
bmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKCk7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBt
b2RpZmllZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Q
b2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uUG9pbnQ7CisgICAg
aWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+
IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247CisgICAgaWYgKCFkZWNpc2lvbikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9j
a2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOwor
ICAgIGRlY29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1
ZXN0VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVkKCplbmFibGVk
KTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBz
ZXR0aW5ncy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHNldHRpbmdzLnNl
dEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykpOworICAgIHNldHRpbmdzLnNl
dE1vZGlmaWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJlcXVlc3RVUkwpKTsKKworICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
ZGVjb2RlIik7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4g
eworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdl
ZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5n
IGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50Rmls
dGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlv
bik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIw
MjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRvIHByb3Zp
ZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM3LDYgKzE0MzcsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0Nv
bgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxs
TW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmIHNl
dHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpID0g
V1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwog
Y2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0xOTgsNiAr
MTk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6
TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxv
YWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVu
dGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdheXMo
IkNvbnRlbnRGaWx0ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiArMjM5
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJp
bmciKTsKICAgICBpZiAoIWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtOTMzLDEx
ICs5MzUsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAg
ICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9h
ZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMjUgKzE3NzcsMzIgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5u
ZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2Nr
QXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tl
ZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9h
ZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQp
LCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJy
b3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIubmVl
ZHNVSVByb2Nlc3MoKSkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmJsb2NrSGFu
ZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQgPSBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdGhpcywg
ZXJyb3IsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0
YWJsZSB7CisgICAgICAgICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbmJsb2NrZWRBZnRlclJlcXVl
c3QodW5ibG9ja2VkKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogdW5ibG9ja2VkIGFmdGVyIHJlcXVlc3QgJWQiLCB1bmJsb2NrZWQpOwog
ICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZp
bHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7CiB9CiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisvLyAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAgIGlmIChzdWJz
dGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxv
Y2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhS
Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
Q0YuaCIKIApAQCAtODU1LDYgKzg1OSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJG
aW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNp
b24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFsbG93LAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+OworfTsK
KyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDYg
KzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUzODY2QjBCMjM5
OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4QTFGQzAyM0E1NTFCRjAw
RDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50
ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYyOERFMjM5NjBDQzYwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERDMjM5NjBDQzYwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJ
RTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBQUE0MzI0MTMy
NzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsKQEAgLTY0NjMs
NiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0Ew
MDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRC
MTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2FuZGJveDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFEMjdC
NzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2NkIwNzIzOTk5NzlEMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3NEYgLyogVXNlckludGVy
ZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlcklu
dGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9t
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
ODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1MDAzOUVDNjkgLyogd2Vi
cnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1QjBENTE2MkY3QTdBMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFGQjA5MDIxNjNB
M0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
QEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlF
MzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovLAor
CQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHls
aWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9u
cy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJ
CQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdv
cmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAwMkRD
MjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdC
NUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDNzIx
NEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJCQkJOUI0NzkwOTEyNTMx
NTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRl
c3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyog
TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRTkyN0M2
Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hTZXJ2aWNlQ29ubmVj
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBO
ZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFCMzBGMjU0MEY1MEQw
MEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50
KHRoaXMpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYg
c2V0dGluZ3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZz
ZXR0aW5ncywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGlu
Z3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgv
UmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50
NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6
fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFy
YW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMg
YmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIs
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2
YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUp
LCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2No
ZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNj
aGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBj
cmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRl
cihSZWYKICAgICA6IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90
cmFja2luZ1BhcmFtZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VM
b2FkZXI6On5XZWJSZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1l
TWFpblJlc291cmNlIFdlYlJlc291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVl
c3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdz
IGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
QEAgLTM2MCwxNSArMzYyLDIxIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWQKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0g
ICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkK
KyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIgbm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlciIpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+
ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICgh
bV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0
aXR1dGVEYXRhLmlzVmFsaWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkg
cmV0dXJuIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250
ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIi
KTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0
ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxl
LmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQg
ZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJu
IEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFi
bGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0w
My0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dp
dC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAt
ODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZyYW1ldwog
V0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU18k
KFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5
c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitXS19XRUJDT1JFX0xERkxBR1NfTERG
TEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tfV0VC
Q09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xE
RkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xE
RkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dh
dGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQTFVTUExVU0ZMQUdT
ID0gJChpbmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdTID0g
JChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xp
YlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2Vi
S2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1
cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdT
KSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFH
UykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1B
Q0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9MREZM
QUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVy
aXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdl
YktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxX
ZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAk
KFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFt
ZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdL
X1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVS
X0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dFQkNPUkVfTERGTEFH
UykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVSX0xE
RkxBR1NfUExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsKIAog
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ugc2hv
dWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZp
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlBy
b2Nlc3NQbHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsKIFBS
T0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNUX05BTUU6cmZjMTAz
NGlkZW50aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBFUl9FWFRF
TlNJT04gPSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29y
ayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydDsK
K1dLX1dFQkNPUkVfTERGTEFHU19MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxBR1NfJChXS19Q
TEFURk9STV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBXZWJDb3Jl
CitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUK
KworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3Jl
IC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0ICQoV0tfV0VCQ09SRV9MREZM
QUdTKTsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1tYWNvc3gqXSA9ICJAbG9hZGVyX3Bh
dGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPWVtYmVkZGVkKl0gPSAi
QGxvYWRlcl9wYXRoLy4uIjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUy
NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRl
cmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRl
cHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNp
bXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0Nv
bmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktp
dC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2
aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
b250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBA
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJDb250ZW50RmlsdGVy
aW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCisjaW1wb3J0IDxX
ZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3Rl
T2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9D
b250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEZXByZWNh
dGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgi
CisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+
CiAK
</data>
<flag name="commit-queue"
          id="481253"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453787</attachid>
            <date>2022-03-03 14:34:20 -0800</date>
            <delta_ts>2022-03-08 07:26:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220303143418.patch</filename>
            <type>text/plain</type>
            <size>66656</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MzksNiArMjQzOSw3IEBA
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5k
bGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAg
IHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKICAg
ICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRy
b2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0Nv
ZGVyOworT0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBP
QkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgog
ICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hh
YmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVybCkgeyBt
X3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVu
YmxvY2tlZEFmdGVyUmVxdWVzdChib29sKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91bmJs
b2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc0LDkgQEAg
cHJpdmF0ZToKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgIFJldGFpblB0cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9y
OwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBOU051bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwgfTsKKyNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxv
Y2tVUkxIb3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmluZyAqIGNv
bnN0IHVucmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IHVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleSB7IEAidW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0IiB9OwogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAi
d2ViRmlsdGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwMiwxMCBAQCB2b2lkIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVy
RXZhbHVhdG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBb
Y29kZXIgZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1bmJsb2Nr
ZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiB9CiAKQEAgLTExMyw2ICsxMTgsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjo6ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5Ondl
YkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XSBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMjAsNyArMTI4LDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNv
ZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJs
b2NrUmVxdWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5IYW5k
bGVSZXF1ZXN0Iik7CisgICAgaWYgKG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQorICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBtX3VuYmxv
Y2tlZEFmdGVyUmVxdWVzdC5ib29sVmFsdWUpOworCisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0
ZXIgJiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRBTF9DT05U
Uk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1
YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxNDYsNyBAQCBib29s
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5ibG9ja1Jl
cXVlc3QpCiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyIHdpbGwgaGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0LlxuIiwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxvY2tSZXF1
ZXN0KTsKICAgICByZXR1cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApAQCAtMTUxLDggKzE2NCwx
NiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAgfQogI2Vu
ZGlmCiAKLSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7Ci0gICAgICAgIG1fdW5ibG9ja1Jl
cXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgeworICAgIGF1dG8gdW5i
bG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3RlcjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghdW5ibG9ja1JlcXVlc3Rl
ciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICB1bmJsb2NrUmVxdWVzdGVy
ID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZV0oQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBmdW5jdGlvbikg
eworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAgICAgICAgfTsKKyAgICB9Cisj
ZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3RlcikgeworICAgICAgICB1bmJsb2NrUmVxdWVz
dGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CkBAIC0xNjAs
NiArMTgxLDExIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAg
ICB9CiB9CiAKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRB
ZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVl
c3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAg
IHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGll
bnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdz
KTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xl
dG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChS
ZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5j
bHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBAQCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlc2V0Iik7
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5n
c0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOwogICAgIE1vY2tDb250ZW50
RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAg
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFu
Z2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Js
b2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwor
dm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9u
UG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBv
aW50OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9u
ID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJs
b2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5n
JiBtb2RpZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2Rp
ZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcm
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCBy
ZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0
KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1v
Y2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50
byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
ZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9j
a2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAKICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2lu
dCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNp
b25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVj
aXNpb247IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVj
aXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
c2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNp
c2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZv
aWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247
IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYg
dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRS
ZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2
b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVS
TCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXBy
aXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
KSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1
bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lz
aW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9
OwpAQCAtODcsNCArOTAsNTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVl
c3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsKKyAgICBl
bmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKCk7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBt
b2RpZmllZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6
b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Q
b2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uUG9pbnQ7CisgICAg
aWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+
IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247CisgICAgaWYgKCFkZWNpc2lvbikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9j
a2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOwor
ICAgIGRlY29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1
ZXN0VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVkKCplbmFibGVk
KTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBz
ZXR0aW5ncy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHNldHRpbmdzLnNl
dEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykpOworICAgIHNldHRpbmdzLnNl
dE1vZGlmaWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJlcXVlc3RVUkwpKTsKKworICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
ZGVjb2RlIik7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4g
eworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQo
KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdl
ZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9s
bGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5n
IGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50Rmls
dGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50
RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJv
bUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlv
bik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAg
ICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIw
MjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRvIHByb3Zp
ZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM3LDYgKzE0MzcsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0Nv
bgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxs
TW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmIHNl
dHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpID0g
V1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwog
Y2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0xOTgsNiAr
MTk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6
TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxv
YWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVu
dGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dBbHdheXMo
IkNvbnRlbnRGaWx0ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rpb24ubmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0yMzgsNiArMjM5
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJp
bmciKTsKICAgICBpZiAoIWlzTWFpblJlc291cmNlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwpAQCAtOTMzLDEx
ICs5MzUsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAg
ICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAg
ICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9h
ZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMjUgKzE3NzcsMzIgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIs
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5u
ZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2Nr
QXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tl
ZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9h
ZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQp
LCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJy
b3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBjb250ZW50RmlsdGVyRGlkQmxvY2siKTsKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIubmVl
ZHNVSVByb2Nlc3MoKSkgeworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpKTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1bmJsb2NrSGFu
ZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQgPSBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSwgdGhpcywg
ZXJyb3IsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0
YWJsZSB7CisgICAgICAgICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbmJsb2NrZWRBZnRlclJlcXVl
c3QodW5ibG9ja2VkKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogdW5ibG9ja2VkIGFmdGVyIHJlcXVlc3QgJWQiLCB1bmJsb2NrZWQpOwog
ICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZp
bHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7CiB9CiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29u
dGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBS
RUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVudEZpbHRlci0+aGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisvLyAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciIpOwogICAgIGlmIChzdWJz
dGl0dXRlRGF0YS5pc1ZhbGlkKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxv
Y2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhS
Lmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJz
Q0YuaCIKIApAQCAtODU1LDYgKzg1OSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJG
aW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNp
b24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFsbG93LAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+OworfTsK
KyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3Jl
OjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkwLDYg
KzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUzODY2QjBCMjM5
OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4QTFGQzAyM0E1NTFCRjAw
RDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50
ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYyOERFMjM5NjBDQzYwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERDMjM5NjBDQzYwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJ
RTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBQUE0MzI0MTMy
NzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsKQEAgLTY0NjMs
NiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0Ew
MDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzRC
MTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2FuZGJveDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRF
bGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFEMjdC
NzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2NkIwNzIzOTk5NzlEMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3NEYgLyogVXNlckludGVy
ZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNlcklu
dGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9t
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZF
ODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1MDAzOUVDNjkgLyogd2Vi
cnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1QjBENTE2MkY3QTdBMDBF
Mjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFGQjA5MDIxNjNB
M0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLywK
QEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlF
MzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovLAor
CQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHls
aWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9u
cy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJ
CQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdv
cmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAwMkRD
MjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdC
NUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDNzIx
NEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJCQkJOUI0NzkwOTEyNTMx
NTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRl
c3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyog
TW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRTkyN0M2
Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hTZXJ2aWNlQ29ubmVj
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAvKiBO
ZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFCMzBGMjU0MEY1MEQw
MEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5h
Z2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZzZXR0aW5ncywgc2V0dGluZ3MuZW5h
YmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKKworfQorCit9Owor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2Vydmlu
ZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
Miw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRzLmg+CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisjZW5kaWYKKwogI3Vu
ZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9J
RCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjaWYgUkVMRUFT
RV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vz
cygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0T2Jz
ZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMjIy
OSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgVwog
ICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVM
RUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVM
RUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOworCiAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJM
T0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8g
c2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIs
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsK
ICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBA
IFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6IG1fY29yZUxv
YWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFtZXRlcnModHJh
Y2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2Vi
UmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJSZXNvdXJjZUxv
YWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNlIFdlYlJlc291
cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Up
CiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdhaW4gYXMgd2Ug
ZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBzZW5kaW5nIGl0
IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM2MCwxNSArMzYyLDIxIEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWQKIAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIg
fHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRl
ciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIgbm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIp
OwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNl
TG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAg
aWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAh
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkgcmV0dXJuIik7CiAgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIiKTsKICAgICBtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWls
dXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAy
LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
dGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3
b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmlu
ZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3Jt
YXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlz
aW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdl
YktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lT
VEVNX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZyYW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERG
TEFHUyA9ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsK
IFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0
TWFjSGVscGVyOwogCitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18k
KFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFt
ZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFt
ZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdl
YkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2Vi
Q29yZQorCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNE
S1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRl
SGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9s
b2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBK
YXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJh
bWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9M
REZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElE
X0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tf
U1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05L
SVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNI
KSk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChC
VUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3Jp
cHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsg
TWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1Mp
ICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFH
UykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1f
TERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVf
TERGTEFHUykgJChXS19XRUJDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8k
KFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsg
Q29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUg
YnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJL
aXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lv
biAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nl
c3NQbHVnSW4ueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RV
Q1RfTkFNRSA9IFRlc3RXZWJLaXRBUEk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29t
LmFwcGxlLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VG
RklYID0gLmJ1bmRsZTsKIFdSQVBQRVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBX
ZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQ7CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dF
QkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19p
cGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNp
bXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3Mg
PSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9
IC1mcmFtZXdvcmsgV2ViQ29yZQorCitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFt
ZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBv
cnQgJChXS19XRUJDT1JFX0xERkxBR1MpOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1h
Y29zeCpdID0gIkBsb2FkZXJfcGF0aC8uLi8uLi8uLiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRI
U1tzZGs9ZW1iZWRkZWQqXSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Zy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjks
MTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29u
dGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJl
Zi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNp
bXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24g
MjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmlu
Zy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454120</attachid>
            <date>2022-03-08 07:26:23 -0800</date>
            <delta_ts>2022-03-10 07:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220308072620.patch</filename>
            <type>text/plain</type>
            <size>74888</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMSw2ICsyMzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVx
dWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwgdGhpcywgIHJlcS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNpbmcgYW4gdW5yZWFjaGFibGUgVVJM
IHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBhIHNlcnZlci1zaWRlCiAgICAgLy8g
cmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiByZXBsYWNlIGEgY29tbWl0dGVkIGRh
dGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hhYmxlVVJMID0gZmFsc2U7CkBAIC00
MDEsNiArNDAyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0SWZSZWFkeSgpCiB7CiAg
ICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2NvbW1pdHRlZCA9IHRydWU7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9jdW1lbnRMb2FkZXI6OmNvbW1pdElm
UmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMsIGZyYW1lTG9hZGVyKCkpOwogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICB9CiB9CkBA
IC0yNDM5LDYgKzI0NDEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25h
bExvCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1
bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHko
KSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0s
IHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29s
IHVuYmxvY2tlZCkgewpAQCAtMjQ1OSw2ICsyNDYyLDcgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2MgbG9hZGVyICVwIiwgdGhpcywgZnJhbWVMb2Fk
ZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZnJhbWVMb2FkZXIo
KS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3Rp
dHV0ZURhdGEpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiwxNCBAQCBwdWJsaWM6CiAgICAg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSNp
ZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyNlbHNl
CiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3Vu
dGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmlu
YWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQogI2VuZGlmCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTk5Niw2ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExv
YWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogeworICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCB0aGlzICVwIGRvYyBsb2FkZXIgJXAiLCB0aGlzLCBkb2N1bWVudExvYWRlcigpKTsK
ICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcjsKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjM1LDEyICs2MzUsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRy
b2xsZXI6OmluaQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwog
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5IGluaXRpYWxpemVJdGVt
IGZyYW1lIGxvYWRlciAlcCBtX2ZyYW1lLmxvYWRlcigpICVwIGRvY3VtZW50IGxvYWRlciAlcCIs
IHRoaXMsICZtX2ZyYW1lLmxvYWRlcigpLCBkb2N1bWVudExvYWRlcik7CisgICAgCiAgICAgVVJM
IHVucmVhY2hhYmxlVVJMID0gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAKICAg
ICBVUkwgdXJsOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVV
UkwuaXNFbXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogdW5y
ZWFjaGFibGVVUkwiKTsKICAgICAgICAgdXJsID0gdW5yZWFjaGFibGVVUkw7CiAgICAgICAgIG9y
aWdpbmFsVVJMID0gdW5yZWFjaGFibGVVUkw7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4
LDYgKzE4OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAg
ICBpZiAobV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KSkgewogICAgICAgICBSZWZQdHI8RnJhbWU+IGZyYW1lIHsgJm1fZnJhbWUgfTsKICAgICAg
ICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbZnJh
bWVdKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IHJlbG9hZCAlZCIsIHVuYmxvY2tlZCk7CiAgICAgICAgICAgICBpZiAodW5ibG9ja2Vk
KQogICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAgICAgICAgfSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFT
UyBOU0NvZGVyOworT0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDggQEAgcHVi
bGljOgogICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3Vu
cmVhY2hhYmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVy
bCkgeyBtX3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcg
bV91bmJsb2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc0
LDkgQEAgcHJpdmF0ZToKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19I
QU5ETEVSKQogICAgIFJldGFpblB0cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZh
bHVhdG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBOU051bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwg
fTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0
IHVuYmxvY2tVUkxIb3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmlu
ZyAqIGNvbnN0IHVucmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKK3N0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IHVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleSB7IEAidW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0IiB9OwogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxP
Q0tfSEFORExFUikKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktl
eSB7IEAid2ViRmlsdGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwMiwxMCBAQCB2b2lkIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05U
Uk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2Vi
RmlsdGVyRXZhbHVhdG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1
bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiB9CiAKQEAgLTExMyw2ICsxMTgsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxP
Q0tfSEFORExFUikKICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtj
b2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9y
S2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5i
bG9ja2VkQWZ0ZXJSZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXSBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJl
dHVybiB0cnVlOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMjAsNyArMTI4LDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpkZWNvZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICgh
bV91bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBj
YW5IYW5kbGVSZXF1ZXN0Iik7CisgICAgaWYgKG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KQorICAg
ICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBt
X3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29sVmFsdWUpOworCisgICAgaWYgKCFtX3VuYmxvY2tS
ZXF1ZXN0ZXIgJiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQQVJFTlRB
TF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dlYkZpbHRl
ckV2YWx1YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNCw2ICsxNDYsNyBA
QCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuCiAgICAgaWYgKGlzVW5i
bG9ja1JlcXVlc3QpCiAgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyIHdpbGwgaGFuZGxlIDwlcz4gYXMgYW4gdW5ibG9jayByZXF1ZXN0Llxu
IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKKyAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QgJWQiLCBpc1VuYmxv
Y2tSZXF1ZXN0KTsKICAgICByZXR1cm4gaXNVbmJsb2NrUmVxdWVzdDsKIH0KIApAQCAtMTUxLDgg
KzE2NCwxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAg
fQogI2VuZGlmCiAKLSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7Ci0gICAgICAgIG1fdW5i
bG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgeworICAgIGF1
dG8gdW5ibG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3RlcjsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghdW5ibG9ja1Jl
cXVlc3RlciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAgICAgICB1bmJsb2NrUmVx
dWVzdGVyID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZV0o
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiBmdW5j
dGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsKKyAgICAgICAgfTsKKyAg
ICB9CisjZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3RlcikgeworICAgICAgICB1bmJsb2Nr
UmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2VkKSB7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0gewogICAgICAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAgICAgICAgICAgfSk7CkBA
IC0xNjAsNiArMTgxLDExIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1
ZXMKICAgICB9CiB9CiAKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJs
b2NrZWRBZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRl
clJlcXVlc3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQ29udGVudEZp
bHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2Vy
OworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisgICAgCit2b2lkIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAoreworICAgIGlmIChtX2NsaWVu
dCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNl
dHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNv
cmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VC
Q09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYg
c2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldENs
aWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4pOworICAgIAorICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7Cit9Owor
Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0NSw0NiBA
QCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZpCiB2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJl
c2V0Iik7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogeworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogJXAgZW5hYmxlZCAlZCIsIHRoaXMsIGVuYWJsZWQpOwogICAgIE1vY2tD
b250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJsZWQgPSBlbmFibGVk
OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGlu
Z3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykKK3sKKyAg
ICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KERl
Y2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNp
c2lvblBvaW50OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90
aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikKK3sKKyAgICBtX2Rl
Y2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24g
dW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24g
PSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6
c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3Qg
U3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmllZFJlcXVlc3RVUkwg
PSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiBjb25zdCBT
dHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0
YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMg
dm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lk
IHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1
cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5lcmF0ZWQgYmluZGlu
Z3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5n
JiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNp
b25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7
IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uUG9pbnQo
RGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7
IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQot
ICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVj
aXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVx
dWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0
cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgbW9k
aWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJlcXVlc3RVUkw7IH0K
LSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVx
dWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7
CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsK
LSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9
IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAg
IERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNw
b25zZSB9OwpAQCAtODcsNCArOTAsNTQgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9tb2RpZmll
ZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsK
KyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2Rl
ciA8PCBtb2RpZmllZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K3N0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gZW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFi
bGVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVj
aXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uUG9pbnQ7
CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247CisgICAgaWYgKCFkZWNp
c2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBp
ZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+
PiBibG9ja2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0
VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZp
ZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5zZXRFbmFibGVkKCpl
bmFibGVkKTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsK
KyAgICBzZXR0aW5ncy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldFVu
YmxvY2tSZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOworICAgIHNldHRp
bmdzLnNldEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykpOworICAgIHNldHRp
bmdzLnNldE1vZGlmaWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJlcXVlc3RVUkwpKTsK
KworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6ZGVjb2RlIik7CisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVu
YWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2
aWdhdGlvbik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgor
ICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5n
KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6
CisKIDIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2luZyBwcm9jZXNzIHRv
IHByb3ZpZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDM3LDYgKzE0MzcsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0
d29ya0NvbgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJj
ZUxvYWRJZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpp
bnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyYmIHNldHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRv
bigpID0gV1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJl
bmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0x
OTgsNiArMTk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNv
dXJjZUxvYWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGlu
c3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9h
ZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1
aW50OF90IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVS
ZXNvdXJjZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxv
YWRJZGVudGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBA
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG8KICAgICAsIG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKG1fY29ubmVjdGlvbi0+Y2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCgpKQogICAgICwgbV9yZXNvdXJjZUxvYWRJRCB7IE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH0KIHsKKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOwogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IGNvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSkpCkBAIC0xODcs
MTYgKzE4OCwxNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFydDog
aGFzTmV0d29ya0xvYWRDaGVja2VyPSVkIiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyAg
ICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9
OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgaWYgKCFzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCkpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9jb25uZWN0aW9u
LT5zdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWQoKSk7CiAKICAgICBBU1NFUlQoIW1f
d2FzU3RhcnRlZCk7CiAgICAgbV93YXNTdGFydGVkID0gdHJ1ZTsKIAotICAgIGF1dG8gbmV3UmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBzdGFydENvbnRl
bnRGaWx0ZXJpbmcobmV3UmVxdWVzdCk7Ci0jZW5kaWYKLQogICAgIGlmIChtX25ldHdvcmtMb2Fk
Q2hlY2tlcikgewogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VS
ZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBA
IC0yMzYsMTQgKzIzOCwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQog
fQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
LXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29u
dGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBzdGFydENvbnRlbnRGaWx0ZXJpbmciKTsKICAgICBpZiAoIWlz
TWFpblJlc291cmNlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKICAgICBp
ZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJl
cXVlc3QudXJsKCkpOworICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAKQEAgLTkzMywxMSAr
OTM3LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAg
ICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVy
bCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBibG9ja2VkIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xNzczLDI1ICsxNzc5LDM5IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJD
b3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVl
ZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0Fz
eW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQp
IHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRB
ZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwg
MCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9y
KG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogY29udGVudEZpbHRlckRpZEJsb2NrICVzIiwgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKHVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQ
cm9jZXNzKCkpIHsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIu
cmVxdWVzdFVuYmxvY2tBc3luYyhbdW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0ID0gV1RGTW92ZSh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCksIHRoaXMsIGVycm9y
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIG11dGFibGUg
eworICAgICAgICAgICAgdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVu
YmxvY2tlZCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpKTsKKworICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Cisg
ICAgICAgICAgICBpZiAobV93YXNTdGFydGVkIHx8IHVuYmxvY2tlZCkKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0ID0gbV9wYXJhbWV0ZXJzLnJlcXVlc3Q7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdChhYm91dEJsYW5rVVJMKCkpOwor
ICAgICAgICAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVy
cm9yKHJlcXVlc3QpOworICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogdW5ibG9ja2VkIGFmdGVyIHJlcXVlc3QgJWQiLCB1bmJsb2NrZWQpOwogICAgICAg
ICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVy
cm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7CiB9CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZp
bHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisvLyAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0
dXRlRGF0YSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciBzdWJzdGl0dXRlIGRhdGEgdmFsaWQg
JWQiLCBzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkws
IHN1YnN0aXR1dGVEYXRhKSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZp
bHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENv
ZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAor
ICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsK
K307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBdXRv
cGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2Vi
Q29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5
MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9OwogCQlFMzg2NkIw
QjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEExRkMwMjNBNTUx
QkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNl
ckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhERTIzOTYwQ0M2
MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQzIzOTYwQ0M2
MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi87IH07
CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDQUFBNDMy
NDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87IH07CkBAIC02
NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2MzIzNDU0
NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAv
KiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAx
RDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZCMDcyMzk5OTc5
RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9XZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRGIC8qIFVzZXJJ
bnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVz
ZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJ
ZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYyN0M2QjY4MTAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5
NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAwMzlFQzY5IC8q
IHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3QTAwRTI3NzA5
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIwRDUxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJCTUxRkIwOTAy
MTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Ki8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyog
RnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAq
LywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRp
dGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8s
CiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJh
bWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdDMjc1RTk3QjYw
MDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tBdXRoZW50aWNh
dG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VE
QzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2aWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9ja05mY1NlcnZp
Y2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJCTlCNDc5MDkx
MjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVG
b3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdCNjAwMkRDMjJE
IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkU5
MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNoU2VydmljZUNv
bm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQwMDBCNzJFQjAg
LyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMxQjMwRjI1NDBG
NTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMubW0gaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFu
Z2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgJWQiLCAmc2V0dGluZ3MsIHNldHRpbmdz
LmVuYWJsZWQoKSk7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKHNldHRpbmdzKSwgMCk7CisKK30KKwor
fTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJD
b3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNl
cnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzIsNiArMjMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5o
PgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisK
ICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJ
T05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlBy
b2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2UoKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFy
dE9ic2VydmluZygpOworI2VuZGlmCiB9CiAKIFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAg
LTIyMjksNyArMjIzNyw2IEBAIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnkm
IFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVm
IFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDYgKzQ3MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJh
bWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkxPQURFUlNUUkFURUdZ
X1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsK
KwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxl
IHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgp
KSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIoUmVmCiAgICAgOiBtX2Nv
cmVMb2FkZXIoV1RGTW92ZShjb3JlTG9hZGVyKSkKICAgICAsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
KHRyYWNraW5nUGFyYW1ldGVycykKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IFdlYlJlc291cmNlTG9hZGVyIik7CiB9CiAKIFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3Vy
Y2VMb2FkZXIoKQpAQCAtMTEzLDYgKzExNCw3IEBAIE1haW5GcmFtZU1haW5SZXNvdXJjZSBXZWJS
ZXNvdXJjZUxvYWRlcjoKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHByb3Bvc2VkUmVxdWVzdEJvZHksIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCIpOwogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBNYWtlIHRoZSByZXF1ZXN0IHdob2xlIGFnYWluIGFz
IHdlIGRvIG5vdCBub3JtYWxseSBlbmNvZGUgdGhlIHJlcXVlc3QncyBib2R5IHdoZW4gc2VuZGlu
ZyBpdCBvdmVyIElQQywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCkBAIC0zNjAsMTUgKzM2Miwy
MSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkCiAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9h
ZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVM
b2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZM
b2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyIG5vIGxvYWRlciIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIiKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewot
ICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkg
fHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAh
bV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIGNvcmUgbG9hZGVyICVwICVz
IiwgbV9jb3JlTG9hZGVyLmdldCgpLCBibG9ja2VkUGFnZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRG
aWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0
YSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFw
cGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRl
bnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9k
ZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBl
bmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAy
Mi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZp
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RX
ZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZyYW1l
dwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFH
U18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0
YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitXS19XRUJDT1JFX0xERkxBR1Mg
PSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVf
TERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdT
X2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdT
X3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNp
bXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQo
aW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
U3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQoaW5o
ZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0
V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAt
bFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9TdXJmYWNl
ICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgLWZy
YW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQo
V0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRNQUNIRUxQ
RVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19Q
TEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQp
IC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJLaXRB
UEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29y
ZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChXS19B
UFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3b3Jr
IE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZL
SVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9MREZM
QUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChXS19XRUJDT1JFX0xERkxBR1MpICQo
T1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZMQUdT
X1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3VsZCBj
cmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNz
UGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRBUEk7CiBQUk9EVUNU
X0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVu
dGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsKIFdSQVBQRVJfRVhURU5TSU9O
ID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2
YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQ7CitXS19X
RUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUp
KTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tf
V0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tf
V0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVf
TERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCitPVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBX
ZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJDT1JFX0xERkxBR1MpOwogTERfUlVO
UEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBsb2FkZXJfcGF0aC8uLi8uLi8uLiI7
CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRkZWQqXSA9ICJAbG9hZGVyX3BhdGgv
Li4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2Jh
bFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRl
Lmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBv
cnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZh
Y2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJp
bmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYs
OSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1
ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454361</attachid>
            <date>2022-03-10 07:32:29 -0800</date>
            <delta_ts>2022-03-10 15:39:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220310073226.patch</filename>
            <type>text/plain</type>
            <size>79912</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMSw2ICsyMzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNlUmVx
dWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBEb2N1
bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwgdGhpcywgIHJlcS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNpbmcgYW4gdW5yZWFjaGFibGUgVVJM
IHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBhIHNlcnZlci1zaWRlCiAgICAgLy8g
cmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiByZXBsYWNlIGEgY29tbWl0dGVkIGRh
dGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hhYmxlVVJMID0gZmFsc2U7CkBAIC00
MDEsNiArNDAyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0SWZSZWFkeSgpCiB7CiAg
ICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2NvbW1pdHRlZCA9IHRydWU7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9jdW1lbnRMb2FkZXI6OmNvbW1pdElm
UmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMsIGZyYW1lTG9hZGVyKCkpOwogICAg
ICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICB9CiB9CkBA
IC0yNDM5LDYgKzI0NDEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVQcm92aXNpb25h
bExvCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50Rmls
dGVyRGlkQmxvY2siKTsKICAgICB1bmJsb2NrSGFuZGxlci5zZXRVbnJlYWNoYWJsZVVSTChkb2N1
bWVudFVSTCgpKTsKICAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LmlzRW1wdHko
KSAmJiBmcmFtZSgpKSB7CiAgICAgICAgIHVuYmxvY2tIYW5kbGVyLndyYXBXaXRoRGVjaXNpb25I
YW5kbGVyKFtzY3JpcHRDb250cm9sbGVyID0gV2Vha1B0ciB7IGZyYW1lKCktPnNjcmlwdCgpIH0s
IHNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0Lmlzb2xhdGVkQ29weSgpXShib29s
IHVuYmxvY2tlZCkgewpAQCAtMjQ1OSw2ICsyNDYyLDcgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlQ29udAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2MgbG9hZGVyICVwIiwgdGhpcywgZnJhbWVMb2Fk
ZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZnJhbWVMb2FkZXIo
KS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3Rp
dHV0ZURhdGEpKTsKIH0KIApAQCAtMjQ3NSw2ICsyNDc5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6Y29udGVudEZpbHRlckhhbmRsZQogewogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKKyAgICBoYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdlVVJMLCBt
X3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOwogI2Vsc2UKICAgICBpZiAobV9jb250
ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoZXJyb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDIsMTMgKzQwMiwxNiBAQCBwdWJsaWM6CiAgICAg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSNp
ZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKKyAgICB2
b2lkIHNldEJsb2NrZWRQYWdlVVJMKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwpIHsgbV9ibG9j
a2VkUGFnZVVSTCA9IGJsb2NrZWRQYWdlVVJMOyB9CisgICAgdm9pZCBzZXRTdWJzdGl0dXRlRGF0
YUZyb21Db250ZW50RmlsdGVyKFN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURhdGFGcm9tQ29u
dGVudEZpbHRlcikgeyBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIgPSBXVEZNb3Zl
KHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOyB9CisjZWxzZQogICAgIENvbnRlbnRG
aWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0
KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExv
YWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KICNlbmRpZgogICAgIFdFQkNPUkVfRVhQT1JU
IFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CkBAIC02NjksNiArNjcyLDgg
QEAgcHJpdmF0ZToKICNlbHNlCiAgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBm
YWxzZSB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7CisgICAgVVJMIG1fYmxv
Y2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250
ZW50RmlsdGVyOwogI2VuZGlmCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTk2LDYgKzE5OTYsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpjbGVhclByb3Zpc2lvbmFsTG9hZCgpCiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkIHRoaXMgJXAgZG9jIGxvYWRl
ciAlcCIsIHRoaXMsIGRvY3VtZW50TG9hZGVyKCkpOwogICAgIFJlZlB0cjxEb2N1bWVudExvYWRl
cj4gcGRsID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwogICAgIFJlZjxGcmFtZT4gcHJv
dGVjdChtX2ZyYW1lKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzUsMTIgKzYzNSwxNSBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpIaXN0b3J5Q29udHJvbGxlcjo6aW5pCiAgICAgRG9jdW1lbnRM
b2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
OwogICAgIEFTU0VSVChkb2N1bWVudExvYWRlcik7CiAKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGhpc3RvcnkgaW5pdGlhbGl6ZUl0ZW0gZnJhbWUgbG9hZGVyICVwIG1fZnJhbWUu
bG9hZGVyKCkgJXAgZG9jdW1lbnQgbG9hZGVyICVwIiwgdGhpcywgJm1fZnJhbWUubG9hZGVyKCks
IGRvY3VtZW50TG9hZGVyKTsKKyAgICAKICAgICBVUkwgdW5yZWFjaGFibGVVUkwgPSBkb2N1bWVu
dExvYWRlci0+dW5yZWFjaGFibGVVUkwoKTsKIAogICAgIFVSTCB1cmw7CiAgICAgVVJMIG9yaWdp
bmFsVVJMOwogCiAgICAgaWYgKCF1bnJlYWNoYWJsZVVSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiB1bnJlYWNoYWJsZVVSTCIpOwogICAgICAgICB1
cmwgPSB1bnJlYWNoYWJsZVVSTDsKICAgICAgICAgb3JpZ2luYWxVUkwgPSB1bnJlYWNoYWJsZVVS
TDsKICAgICB9IGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIFJlZlB0cjxG
cmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9OwogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAg
ICAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVsb2FkICVkIiwgdW5ibG9j
a2VkKTsKICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLnJlbG9hZCgpOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5T
TnVtYmVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVy
RXZhbHVhdG9yOwpAQCAtNjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lk
IHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1
cmw7IH0KIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
KGJvb2wpOworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVS
TCBtX3VucmVhY2hhYmxlVVJMOwpAQCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdl
YkZpbHRlckV2YWx1YXRvcj4gbV93ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVy
KiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQko
cmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVu
YmxvY2tVUkxIb3N0IiB9Owogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxL
ZXkgeyBAInVucmVhY2hhYmxlVVJMIiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0S2V5IHsgQCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3Ry
aW5nICogY29uc3Qgd2ViRmlsdGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3Ii
IH07CkBAIC0xMDEsNiArMTAyLDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjplbmNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9y
S2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6
bV91bmJsb2NrZWRBZnRlclJlcXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07
CisjZW5kaWYKKwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYg
KzExOCw5IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tI
YW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29k
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRB
ZnRlclJlcXVlc3RLZXldOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAg
Ym9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBp
ZiAobV91bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJv
b2xWYWx1ZSk7CisKKyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRB
ZnRlclJlcXVlc3QpIHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19I
QU5ETEVSKQogICAgICAgICBpZiAoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTM0LDYgKzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOjpjYW5IYW4KICAgICBpZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5k
bGUgPCVzPiBhcyBhbiB1bmJsb2NrIHJlcXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKICNlbmRpZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsIGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBp
c1VuYmxvY2tSZXF1ZXN0OwogfQogCkBAIC0xNTAsOSArMTYzLDE4IEBAIHZvaWQgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgotCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1
ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHJlcXVlc3RVbmJsb2NrQXN5bmMgJXAiLCBtX3VuYmxvY2tlZEFm
dGVyUmVxdWVzdCk7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVz
dGVyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7
CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVxdWVzdFVuYmxvY2tBc3lu
YyAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisgICAgICAgIHVuYmxv
Y2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZh
bHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9u
IGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAgICAgICB9
OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgICAgIHVu
YmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAg
ICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9
KTsKQEAgLTE2MCw2ICsxODIsMTEgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6
OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNl
dFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3VuYmxvY2tl
ZEFmdGVyUmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRdOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250
ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1h
bmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5n
ZWQoc2V0dGluZ3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQg
c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAg
CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5n
ZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsK
K307CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAi
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0
ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1
LDQ2IEBAIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogcmVzZXQiKTsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5v
dGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CiAgICAg
TW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVu
YWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQor
eworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9u
KCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9p
bnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9
IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAg
IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNp
c2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNp
c2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChj
b25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVz
dFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNv
bnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwo
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0
YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGlj
IHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7
IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBi
aW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxl
ZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0
dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBT
dHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsg
fQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhj
b25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChE
ZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Q
b2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Q
b2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNp
b24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2Nr
UmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9u
OyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5i
bG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxv
Y2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29u
c3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5n
JiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVS
TDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZp
ZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJM
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVl
c3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29k
ZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZh
dWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29u
c3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRl
clJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21v
ZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2lu
dCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBl
bmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpv
cHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAo
IWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25h
bDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Q
b2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAo
IWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOwor
ICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNv
ZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJl
cXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFt
b2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJs
ZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9p
bnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Mu
c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAg
c2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAg
c2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVS
TCkpOworCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpkZWNvZGUiKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZv
bGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdo
ZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxv
Y2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNl
cnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHByb2Nl
c3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzcsNiArMTQzNywxMyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVy
PiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJl
c291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2lu
Z2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFz
cyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsK
QEAgLTE5OCw2ICsxOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZv
aWQgaW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3Jp
dGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
cj4gbG9hZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2
LDcgQEAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9z
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElE
IHsgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29u
bmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAg
LTE4NywxNiArMTg4LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0
YXJ0OiBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsK
IAorICAgIGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVz
dCgpIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICBpZiAoIXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5l
Y3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VS
VCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBu
ZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0
Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29y
a0xvYWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNv
dXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKQEAgLTIzNiwxNCArMjM4LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFy
dCgpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBXVEZM
b2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAgIGlm
ICghaXNNYWluUmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwog
ICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3Vy
Y2UocmVxdWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMz
LDExICs5MzcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQog
ICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNl
TG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMjUgKzE3NzksNDMg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRs
ZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxl
ci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJs
b2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxv
Y2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJl
bG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVy
RXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVu
YmxvY2tIYW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9jayAlcyIsIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJ
UHJvY2VzcygpKSB7CisgICAgICAgIC8vc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LCBlcnJvcikpOworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIHVuYmxv
Y2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3VuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCA9IFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpLCB0
aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2Vk
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisgICAgICAgICAgICAvL3NlbmQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgZXJyb3IpKTsKKworICAgICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgICAgICAgICBpZiAobV93YXNTdGFydGVkIHx8IHVuYmxv
Y2tlZCkKKyAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbV9wYXJhbWV0ZXJzLnJlcXVlc3Q7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVz
dChhYm91dEJsYW5rVVJMKCkpOworICAgICAgICAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6Ymxv
Y2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QpOworICAgICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogdW5ibG9ja2VkIGFmdGVyIHJlcXVlc3QgJWQi
LCB1bmJsb2NrZWQpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6Ymxv
Y2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1
cm4gZXJyb3I7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVz
b3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisvLyAgICBt
X2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQog
CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciBz
dWJzdGl0dXRlIGRhdGEgdmFsaWQgJWQiLCBzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOworI2lm
IDAKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogICAgIGVsc2Ug
ewpAQCAtMTc5OSw2ICsxODIzLDkgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZVByb3ZpcwogICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVy
cm9yKCk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxN
YWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwogICAgIH0KKyNlbmRpZgor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIG1f
Y29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRl
RGF0YSkpOworCiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2YXRlUmVsYXllZC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudEZpbHRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTIzOSw3
ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5m
bygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKICNlbmRpZgogCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgbV9wYXJhbWV0ZXJzOwpAQCAtMjg5LDYgKzI5MCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisgICAgV2Vi
Q29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fdW5ibG9ja0hhbmRsZXI7CisgICAg
U3RyaW5nIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQ7CiAjZW5kaWYKIAogICAgIFByaXZh
dGVSZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQgeyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lv
biAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtWFIuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaD4KKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1l
bnRDb2RlcnNDRi5oIgogCkBAIC04NTUsNiArODU5LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6UmUKICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVz
dCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Q
b2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAor
ICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAg
ID47Cit9OworI2VuZGlmCisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
QXV0b3BsYXlFdmVudD4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAg
IFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTE5OTAsNiArMTk5MCw4IEBACiAJCUUzODY2QjBBMjM5OUEyRDkwMEY4OEZFOSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJRTM4
NjZCMEIyMzk5QTJERDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjZCMDYyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlFMzhBMUZDMDIz
QTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8q
IFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLzsgfTsKKwkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OworCQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyog
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwICovOyB9OwogCQlFMzk2MjhERDIzOTYwQ0M2MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgfTsKIAkJRTM5NjI4REUyMzk2
MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REMyMzk2
MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICov
OyB9OwogCQlFM0NBQUE0NDI0MTMyNzk5MDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0FB
QTQzMjQxMzI3OEEwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OwpA
QCAtNjQ2Myw2ICs2NDY1LDggQEAKIAkJRTMwQ0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQlFMzEzNjY0RDI2NUVFNUFGMDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMy
MzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUg
LyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5k
Ym94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NzUsNiArNjQ3OSw4IEBACiAJCUUzODY2QjA3MjM5
OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2Fn
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQv
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzOEExRkJFMjNBNTUxMTQwMEQyMzc0RiAvKiBV
c2VySW50ZXJmYWNlSWRpb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAv
KiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJm
YWNlSWRpb20ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU2MjdDNkI2
ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4RTQyMzk3MUYzNDAwNjU4RUNEIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NTcsNiArOTQ2Myw4IEBACiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzA3NTlFMURFODVFNjUwMDM5RUM2
OSAvKiB3ZWJydGMgKi8sCisJCQkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8q
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUy
NzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYy
RjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZC
MDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluICovLApAQCAtOTk3Niw2ICs5OTg0LDggQEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3
IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHls
aWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3Vw
cG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJGNDI3OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0
QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5h
ICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9u
LmZyYW1ld29yayAqLywKQEAgLTEzMzEyLDYgKzEzMzIyLDcgQEAKIAkJCQk1MTdCNUY3QzI3NUU5
N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxN0I1RjgwMjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVu
dGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU3MjdDNkI2ODEwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3
RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNT
ZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTE1Njg0LDYgKzE1Njk1LDcgQEAKIAkJCQk5QjQ3
OTA5MTI1MzE1NjMyMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg0Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVu
ZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJE
QzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1
MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUVCQThEM0I2MjdBNUUzM0YwMENCNzkwMCAvKiBNb2NrUHVzaFNlcnZp
Y2VDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcy
RUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFDMUIzMEYy
NTQwRjUwRDAwRDkxMDBCIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKworI2luY2x1ZGUgIk5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisK
K3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sK
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6ICVwICVkIiwgJnNldHRpbmdzLCBzZXR0
aW5ncy5lbmFibGVkKCkpOworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpKQorICAgICAgICBj
b25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29udGVudEZpbHRlcihzZXR0aW5ncyksIDApOworCit9
CisKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0
T2JzZXJ2aW5nKCk7CisgICAgCisgICAgLy8gV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudAorICAgIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGZpbmFsOworfTsKKworfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDYgKzIzMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9saW51eC9SZWFsVGltZVRocmVh
ZHMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKyNlbmRp
ZgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNFX0xPR19T
RVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkKICNp
ZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0NSwxMCBAQCBXZWJQcm9jZXNzOjpX
ZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1ByaW1p
dGl2ZUdpZ2FjYWdlKCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
c3RhcnRPYnNlcnZpbmcoKTsKKyNlbmRpZgogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJvY2Vzcygp
CkBAIC0yMjI5LDcgKzIyMzcsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0
b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNyBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKICAgICBXRUJMT0FERVJTVFJB
VEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZhbHVlT3JEZWZhdWx0
KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkudG9VSW50NjQo
KSk7CisKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAgICAg
ICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVu
YWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3Jp
dHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBs
b2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYg
KzcxLDcgQEAgV2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKFJlZgogICAgIDog
bV9jb3JlTG9hZGVyKFdURk1vdmUoY29yZUxvYWRlcikpCiAgICAgLCBtX3RyYWNraW5nUGFyYW1l
dGVycyh0cmFja2luZ1BhcmFtZXRlcnMpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50Rmls
dGVyOiBXZWJSZXNvdXJjZUxvYWRlciIpOwogfQogCiBXZWJSZXNvdXJjZUxvYWRlcjo6fldlYlJl
c291cmNlTG9hZGVyKCkKQEAgLTExMyw2ICsxMTQsNyBAQCBNYWluRnJhbWVNYWluUmVzb3VyY2Ug
V2ViUmVzb3VyY2VMb2FkZXI6CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiBwcm9wb3NlZFJlcXVlc3RCb2R5LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IFdlYlJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QiKTsKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSB0aGUgcmVxdWVzdCB3aG9sZSBhZ2Fp
biBhcyB3ZSBkbyBub3Qgbm9ybWFsbHkgZW5jb2RlIHRoZSByZXF1ZXN0J3MgYm9keSB3aGVuIHNl
bmRpbmcgaXQgb3ZlciBJUEMsIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgpAQCAtMzUxLDI0ICsz
NTMsMzMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVUkwmIGJsb2NrZWRQ
YWdlVVJMLCAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAg
ICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQog
ICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zZXRC
bG9ja2VkUGFnZVVSTChibG9ja2VkUGFnZVVSTCk7CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5zZXRTdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKFdURk1vdmUoc3Vi
c3RpdHV0ZURhdGEpKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRs
ZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIG5vIGxv
YWRlciIpOwogICAgICAgICByZXR1cm47CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIiKTsKICAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJy
b3IpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRG
YWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3Qg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmICghbV9j
b3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1
dGVEYXRhLmlzVmFsaWQoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXJuIGVhcmx5IHJldHVybiIpOwogICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyIGNvcmUgbG9hZGVyICVwICVzIiwgbV9jb3JlTG9h
ZGVyLmdldCgpLCBibG9ja2VkUGFnZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNp
b25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSk7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEw
Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9j
a0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEm
Jik7CiAgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29u
c3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9hZGVyIExlZ2FjeVJl
Y2UKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKLSAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0KQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFVSTCBibG9j
a2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAgICAg
Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvcikKICAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0
dXRlRGF0YSkKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxp
bmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQpOgorCiAyMDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgRHJvcCBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoKSBhbmQgdXNl
IHRoZSBtb2Rlcm4gSGFzaGVyIGluc3RlYWQKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDY2MSkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTAxICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1t
OgorCiAyMDIyLTAzLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbZ2l0LXdlYmtpdF0gR2F0ZSBpbmZvcm1hdGlvbiBVUkwgb24gaW5pdGlhbCBzZXR1
cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw5ICs4NiwxNSBAQCBXS19TWVNURU1fTERGTEFHU19JT1NfU0lOQ0VfMTUg
PSAtZnJhbWV3CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTID0gJChXS19VSUtJVE1BQ0hFTFBF
Ul9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFH
U19tYWNjYXRhbHlzdCA9IC1mcmFtZXdvcmsgVUlLaXRNYWNIZWxwZXI7CiAKK1dLX1dFQkNPUkVf
TERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tf
V0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JF
X0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JF
X0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdT
X3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQTFVTUExVU0ZM
QUdTID0gJChpbmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdT
ID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIp
L2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsg
V2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJ
T1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZM
QUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERG
TEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJ
VE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9M
REZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGlu
aGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVz
dFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQg
LWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFj
ZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1m
cmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAk
KFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVM
UEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dFQkNPUkVfTERG
TEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVS
X0xERkxBR1NfUExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsK
IAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ug
c2hvdWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dl
YlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsK
IFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNUX05BTUU6cmZj
MTAzNGlkZW50aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBFUl9F
WFRFTlNJT04gPSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9y
dDsKK1dLX1dFQkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZP
Uk1fTkFNRSkpOworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJD
b3JlCitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJD
b3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tf
V0VCQ09SRV9MREZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKK09U
SEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJh
bWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX1dFQkNPUkVfTERGTEFHUyk7
CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRlcl9wYXRoLy4u
Ly4uLy4uIjsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1lbWJlZGRlZCpdID0gIkBsb2Fk
ZXJfcGF0aC8uLiI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNh
dGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0
ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1
cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJldmlzaW9u
IDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5o
IgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEds
b2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454411</attachid>
            <date>2022-03-10 15:39:51 -0800</date>
            <delta_ts>2022-03-10 16:05:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220310153949.patch</filename>
            <type>text/plain</type>
            <size>95609</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5n
TWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9t
YWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEz
NCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
LSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgor
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNp
emUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7Cisg
ICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsy
MDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxz
ZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1h
aW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRl
bnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENv
bnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI4OSwxMSArMzEzLDExIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291
cmNlRGF0YSgKIAogVVJMIENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJl
c291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1f
bWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlm
CiB9CkBAIC0zMDcsNyArMzMxLDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3Rp
dmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBp
ZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpA
QCAtMzIyLDcgKzM0NSw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0
aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAg
ICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAj
ZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291
cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTAg
KzY2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAgICAgYm9vbCBjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBi
b29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2Fk
ZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsK
QEAgLTExMiw5ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPFJl
c291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIGNv
bnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxs
cHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQz
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vi
c3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgYm9vbCYgc2hvdWxkRmlsdGVyKCkKK3sKKyAgICBz
dGF0aWMgYm9vbCBmaWx0ZXI7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBmaWx0ZXI7Cit9CisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNv
dXJjZUxvYWRlck1hcCYgbG9hZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlU
b1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkKQEAgLTIzMSw2ICsyMzgsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNl
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBEb2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwg
dGhpcywgIHJlcS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNp
bmcgYW4gdW5yZWFjaGFibGUgVVJMIHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBh
IHNlcnZlci1zaWRlCiAgICAgLy8gcmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiBy
ZXBsYWNlIGEgY29tbWl0dGVkIGRhdGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hh
YmxlVVJMID0gZmFsc2U7CkBAIC00MDEsNiArNDA5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0SWZSZWFkeSgpCiB7CiAgICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2Nv
bW1pdHRlZCA9IHRydWU7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9j
dW1lbnRMb2FkZXI6OmNvbW1pdElmUmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMs
IGZyYW1lTG9hZGVyKCkpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25h
bExvYWQoKTsKICAgICB9CiB9CkBAIC00MTksNyArNDI4LDcgQEAgYm9vbCBEb2N1bWVudExvYWRl
cjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVz
b3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTksNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Qu
c2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTEsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNl
cnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21w
bGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIy
LDcgKzEzMzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CkBAIC0xNDYzLDcgKzE0NzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJh
bWUoKQogICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFp
blJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAy
NSwxMCArMjAzNCwxOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAg
IG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyAgICBzaG91bGRGaWx0ZXIoKSA9IHRydWU7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBBbHdheXMgZmlsdGVyIGluIFdL
MQorICAgIHNob3VsZEZpbHRlcigpID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9m
cmFtZS0+dmlldygpLT5wbGF0Zm9ybVdpZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoc2hvdWxk
RmlsdGVyKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2VuZGlm
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCBzaG91bGRGaWx0ZXIgJWQiLCBt
X2NvbnRlbnRGaWx0ZXIuZ2V0KCksIHNob3VsZEZpbHRlcigpKTsKKyAgICAKKyAgICAKICAgICAv
LyBNYWtlIHN1cmUgd2UgcmUtYXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhlIERvY3VtZW50J3Mg
UmVzb3VyY2VSZXF1ZXN0IHVwb24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVkZGluZwogICAgIC8v
IGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUgcHJldmlvdXMgdXNl
ciBhZ2VudCB2YWx1ZSBoZXJlIGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVlIGluIENhY2hlZFJl
c291cmNlTG9hZGVyLgogICAgIG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdlbnQoKTsKQEAgLTIy
MzAsNyArMjI0Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBt
X21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2Ut
PnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAg
LTIzNTcsNyArMjM3NCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRM
b2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MTQs
NyArMjQzMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKQEAgLTI0MzQsMTEgKzI0NTEsMTIgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCkt
PmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxvY2tIYW5kbGVy
LnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAgdW5ibG9ja0hh
bmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRy
IHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CkBAIC0yNDU5LDI1ICsyNDc3LDI5
IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQogeworLy8gICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2Mg
bG9hZGVyICVwIiwgdGhpcywgZnJhbWVMb2FkZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFt
ZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAogYm9vbCBEb2N1bWVu
dExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
bV9jb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzaG91bGRGaWx0ZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2Nr
ZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJv
ci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVu
dEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50Rmls
dGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CisgICAgaWYgKHNob3VsZEZpbHRlcigpKQorICAgICAgICByZXR1cm47CisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBoYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdlVVJMLCBt
X3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291
bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAsIHB1Ymxp
YyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgewpAQCAtNDAyLDEzICs0MDIsMTYgQEAgcHVibGljOgogICAgIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFn
YXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBzZXRC
bG9ja2VkUGFnZVVSTChjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBhZ2VV
UkwgPSBibG9ja2VkUGFnZVVSTDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29u
dGVudEZpbHRlcihTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0
ZXIpIHsgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJzdGl0
dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVu
dEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZv
aWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9h
ZGVyPjo6ZGVyZWYoKTsgfQotI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVy
cm9yIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY2NCwxMyAr
NjY3LDE0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsK
LSNlbHNlCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CiAgICAgUmVz
b3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisgICAgVVJMIG1fYmxv
Y2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250
ZW50RmlsdGVyOworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fcHJldmlld0Nv
bnZlcnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk5Niw2ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQ
cm92aXNpb25hbExvYWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExv
YWQoKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCB0aGlzICVwIGRvYyBsb2FkZXIgJXAiLCB0aGlzLCBkb2N1bWVu
dExvYWRlcigpKTsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcjsKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDEyICs2MzUsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
SGlzdG9yeUNvbnRyb2xsZXI6OmluaQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1l
bnRMb2FkZXIpOwogCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5IGlu
aXRpYWxpemVJdGVtIGZyYW1lIGxvYWRlciAlcCBtX2ZyYW1lLmxvYWRlcigpICVwIGRvY3VtZW50
IGxvYWRlciAlcCIsIHRoaXMsICZtX2ZyYW1lLmxvYWRlcigpLCBkb2N1bWVudExvYWRlcik7Cisg
ICAgCiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxl
VVJMKCk7CiAKICAgICBVUkwgdXJsOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICgh
dW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogdW5yZWFjaGFibGVVUkwiKTsKICAgICAgICAgdXJsID0gdW5yZWFjaGFibGVVUkw7
CiAgICAgICAgIG9yaWdpbmFsVVJMID0gdW5yZWFjaGFibGVVUkw7CiAgICAgfSBlbHNlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6
OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURh
dGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0
YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUg
PSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3Rp
dHV0ZURhdGEpOwogI2VuZGlmCkBAIC0xODgsNiArMTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlci5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4g
ZnJhbWUgeyAmbV9mcmFtZSB9OwogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVsb2FkICVkIiwgdW5ibG9ja2VkKTsK
ICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLnJlbG9hZCgpOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVy
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVh
dG9yOwpAQCAtNjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wp
OworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3Vu
cmVhY2hhYmxlVVJMOwpAQCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRl
ckV2YWx1YXRvcj4gbV93ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
IAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tV
UkxIb3N0IiB9Owogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBA
InVucmVhY2hhYmxlVVJMIiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0S2V5IHsgQCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICog
Y29uc3Qgd2ViRmlsdGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBA
IC0xMDEsNiArMTAyLDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNv
ZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAg
IFtjb2RlciBlbmNvZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5Ondl
YkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJs
b2NrZWRBZnRlclJlcXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5k
aWYKKwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5
IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVy
Lm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2Vi
RmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNl
bmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJl
cXVlc3RLZXldOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZM
b2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91
bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1
ZSk7CisKKyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJl
cXVlc3QpIHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgICAgICBpZiAoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTM0LDYgKzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjpjYW5IYW4KICAgICBpZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRl
bnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVz
PiBhcyBhbiB1bmJsb2NrIHJlcXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKICNlbmRpZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2Fu
SGFuZGxlUmVxdWVzdCAlZCIsIGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxv
Y2tSZXF1ZXN0OwogfQogCkBAIC0xNTAsOSArMTYzLDE4IEBAIHZvaWQgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0g
ICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1ZXN0ZXIo
W2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IHJlcXVlc3RVbmJsb2NrQXN5bmMgJXAiLCBtX3VuYmxvY2tlZEFmdGVyUmVx
dWVzdCk7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
aWYgKCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVxdWVzdFVuYmxvY2tBc3luYyAlZCIs
IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisgICAgICAgIHVuYmxvY2tSZXF1
ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0
aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAgICAgICB9OworICAg
IH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tS
ZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAg
LTE2MCw2ICsxODIsMTEgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxv
Y2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3VuYmxvY2tlZEFmdGVy
UmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRdOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50Rmls
dGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7
CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+
IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0
dGluZ3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xp
ZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisK
K307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIK
KyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ2IEBA
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncygpOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVz
ZXQiKTsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNl
dHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CiAgICAgTW9ja0Nv
bnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5n
c0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQoreworICAg
IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwor
fQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVj
aXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lz
aW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3Rp
ZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVj
aXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9
IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpz
aW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBT
dHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9
IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmds
ZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0
cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3Rh
dGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2
b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQg
cmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVy
biAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29s
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcm
IGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBT
dHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lv
blBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsg
fQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChE
ZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsg
bV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0g
ICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNp
c2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1Jl
cXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1
ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3Ry
aW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQot
ICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1
ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwo
Y29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsK
IAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0Owot
ICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0g
ZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
RGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3Bv
bnNlIH07CkBAIC04Nyw0ICs5MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVk
UmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOwor
ICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVy
IDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNp
c2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsK
KyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+
IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RV
Ukw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmll
ZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVu
YWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOwor
ICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5i
bG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgc2V0dGlu
Z3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGlu
Z3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOwor
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpkZWNvZGUiKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
aGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5h
YmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRl
bnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHByb2Nlc3MgdG8g
cHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MzcsNiArMTQzNywxMyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3
b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omlu
c3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9u
KCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5
OCw2ICsxOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
SlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291
cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgaW5z
dGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VMb2Fk
U2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6ZVJl
c291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbG9h
ZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVjdGlv
bi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTE4Nywx
NiArMTg4LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0OiBo
YXNOZXR3b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorICAg
IGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBpZiAoIXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24t
PnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCghbV93
YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdSZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xvYWRD
aGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJl
cXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAg
LTIzNiwxNCArMjM4LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiB9
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAgIGlmICghaXNN
YWluUmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGlm
ICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVx
dWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMzLDExICs5
MzcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAg
ICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJs
KCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3Rp
ZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0
b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChu
ZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMzIgKzE3NzksNDAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVk
c1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5
bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkg
ewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFm
dGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAw
KTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3Io
bV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVuYmxvY2tI
YW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayAlcyIsIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2Vz
cygpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoZXJyb3IpOworICAgIGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJv
b2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0
VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8fCB1bmJsb2Nr
ZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1ZXN0OworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qo
YWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJz
dGl0dXRlRGF0YSkpOwotICAgIGVsc2UgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRl
bnRGaWx0ZXIpOwotICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tl
ZEVycm9yKCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwotICAgIH0KKyAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlciBzdWJzdGl0dXRlIGRhdGEgdmFsaWQgJWQiLCBzdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQsIG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdl
VVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Lmg+CkBAIC0yMzksNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8oKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKQEAgLTI4OSw2ICsyOTAsOCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50Rmls
dGVyOworICAgIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX3VuYmxvY2tI
YW5kbGVyOworICAgIFN0cmluZyBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0OwogI2VuZGlm
CiAKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0ZVJlbGF5ZWQ6
Ok5vIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIApAQCAtODU1LDYgKzg1OSwyOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJX
aWxsU2VuZFJlcXVlc3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyQWRkRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFs
bG93LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
bjo6QmxvY2sKKyAgICA+OworfTsKKyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlE
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmgg
Ki87IH07CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJRTM4QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUx
QkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdD
NkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MEND
NjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUw
MDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJ
CUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2li
aWxpdHlTdXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRT
UEkuaCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0
RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0
aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0
NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEy
N0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAog
CQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0
MDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRl
cmZhY2VJZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1
MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVXNlckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNE
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFE
RTg1RTY1MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2
ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBE
NDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJ
CQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAz
MkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29y
ZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJX
ZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2
IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0
MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJ
NTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcg
LyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZF
NzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVC
MCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3
IEBACiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2Ny
aXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQg
LyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4
NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyog
TW9ja1B1c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1
MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMxQzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50
KHRoaXMpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYg
c2V0dGluZ3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZz
ZXR0aW5ncywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGlu
Z3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgv
UmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50
NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6
fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFy
YW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMg
YmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIs
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2
YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUp
LCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2No
ZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNj
aGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBj
cmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRl
cihSZWYKICAgICA6IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90
cmFja2luZ1BhcmFtZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VM
b2FkZXI6On5XZWJSZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1l
TWFpblJlc291cmNlIFdlYlJlc291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVl
c3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdz
IGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
QEAgLTM1MSwyNCArMzUzLDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXIKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
a0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2Nr
SGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0
ZURhdGEpCiB7CiAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+c2V0QmxvY2tlZFBhZ2VVUkwoYmxvY2tlZFBhZ2VVUkwpOworICAgIG1fY29yZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRl
cihXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1v
dmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlmICghbV9jb3Jl
TG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVz
b3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsK
LSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
IHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4iKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciBjb3JlIGxvYWRlciAlcCAl
cyIsIG1fY29yZUxvYWRlci5nZXQoKSwgYmxvY2tlZFBhZ2VVUkwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURh
dGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIm
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRl
bnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxv
YWRlciBMZWdhY3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJD
b3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1
dGVEYXRhKQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVt
b3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0w
My0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4
IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9u
IGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2Nv
bmZpZwkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tf
VUlLSVRNQUNIRUxQRVJfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFD
SEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwog
CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JN
X05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29y
ZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29y
ZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dF
QkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhF
Ul9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAot
T1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29y
ZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFs
IC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdL
X0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQo
V0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxB
R1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxB
R1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9M
REZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNU
U19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFt
ZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1l
d29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJ
VF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVO
R0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChX
S19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChX
S19XRUJDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RP
VUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1l
d29yayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9T
LiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGlj
YXRpb24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nl
c3NQbHVnSW4ueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRl
c3RXZWJLaXRBUEk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJP
RFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRs
ZTsKIFdSQVBQRVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhl
cml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJD
b3JlVGVzdFN1cHBvcnQ7CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFH
U18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1m
cmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1m
cmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsg
V2ViQ29yZQorCitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNj
cmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJD
T1JFX0xERkxBR1MpOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBs
b2FkZXJfcGF0aC8uLi8uLi8uLiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRk
ZWQqXSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNp
b24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lt
cG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmlu
Zy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50
RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lz
dGVyV2l0aFNjaGVtZTpAImh0dHAiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vdGVzdCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJv
bGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtj
b250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0
NDUsMTEgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAg
ICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtb
Y29udHJvbGxlciB3ZWJWaWV3XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBh
cmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOworI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhw
ZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJv
dG9jb2wgdW5yZWdpc3Rlcl07CiAjZW5kaWYKICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBv
cnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkw
NTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
ICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>
<flag name="commit-queue"
          id="482047"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454415</attachid>
            <date>2022-03-10 16:01:51 -0800</date>
            <delta_ts>2022-03-10 16:29:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220310160149.patch</filename>
            <type>text/plain</type>
            <size>95609</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5n
TWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9t
YWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEz
NCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
LSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgor
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNp
emUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7Cisg
ICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsy
MDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxz
ZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1h
aW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRl
bnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENv
bnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI4OSwxMSArMzEzLDExIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291
cmNlRGF0YSgKIAogVVJMIENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJl
c291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1f
bWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlm
CiB9CkBAIC0zMDcsNyArMzMxLDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3Rp
dmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBp
ZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpA
QCAtMzIyLDcgKzM0NSw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0
aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAg
ICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAj
ZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291
cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTAg
KzY2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAgICAgYm9vbCBjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBi
b29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2Fk
ZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsK
QEAgLTExMiw5ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPFJl
c291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIGNv
bnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxs
cHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQz
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vi
c3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgYm9vbCYgc2hvdWxkRmlsdGVyKCkKK3sKKyAgICBz
dGF0aWMgYm9vbCBmaWx0ZXI7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiBmaWx0ZXI7Cit9CisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNv
dXJjZUxvYWRlck1hcCYgbG9hZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlU
b1ZlY3Rvcihsb2FkZXJzLnZhbHVlcygpKSkKQEAgLTIzMSw2ICsyMzgsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpyZXBsYWNlUmVxdWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNl
dFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBEb2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwg
dGhpcywgIHJlcS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNp
bmcgYW4gdW5yZWFjaGFibGUgVVJMIHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBh
IHNlcnZlci1zaWRlCiAgICAgLy8gcmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiBy
ZXBsYWNlIGEgY29tbWl0dGVkIGRhdGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hh
YmxlVVJMID0gZmFsc2U7CkBAIC00MDEsNiArNDA5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0SWZSZWFkeSgpCiB7CiAgICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2Nv
bW1pdHRlZCA9IHRydWU7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9j
dW1lbnRMb2FkZXI6OmNvbW1pdElmUmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMs
IGZyYW1lTG9hZGVyKCkpOwogICAgICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25h
bExvYWQoKTsKICAgICB9CiB9CkBAIC00MTksNyArNDI4LDcgQEAgYm9vbCBEb2N1bWVudExvYWRl
cjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVz
b3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTksNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Qu
c2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTEsNyBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNl
cnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21w
bGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNw
b25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIy
LDcgKzEzMzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAK
IHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlm
CkBAIC0xNDYzLDcgKzE0NzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJh
bWUoKQogICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFp
blJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVt
b3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAy
NSwxMCArMjAzNCwxOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAg
IG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKKyAgICBzaG91bGRGaWx0ZXIoKSA9IHRydWU7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBBbHdheXMgZmlsdGVyIGluIFdL
MQorICAgIHNob3VsZEZpbHRlcigpID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9m
cmFtZS0+dmlldygpLT5wbGF0Zm9ybVdpZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoc2hvdWxk
RmlsdGVyKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgc2hvdWxkRmlsdGVyICVkIiwgbV9jb250ZW50
RmlsdGVyLmdldCgpLCBzaG91bGRGaWx0ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICAKICAgICAv
LyBNYWtlIHN1cmUgd2UgcmUtYXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhlIERvY3VtZW50J3Mg
UmVzb3VyY2VSZXF1ZXN0IHVwb24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVkZGluZwogICAgIC8v
IGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUgcHJldmlvdXMgdXNl
ciBhZ2VudCB2YWx1ZSBoZXJlIGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVlIGluIENhY2hlZFJl
c291cmNlTG9hZGVyLgogICAgIG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdlbnQoKTsKQEAgLTIy
MzAsNyArMjI0Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBt
X21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2Ut
PnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAg
LTIzNTcsNyArMjM3NCw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRM
b2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MTQs
NyArMjQzMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVu
dChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKQEAgLTI0MzQsMTEgKzI0NTEsMTIgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCkt
PmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1
dGVEYXRhKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CiBSZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxv
Y2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxvY2tIYW5kbGVy
LnNldFVucmVhY2hhYmxlVVJMKGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQuaXNFbXB0eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAgdW5ibG9ja0hh
bmRsZXIud3JhcFdpdGhEZWNpc2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRy
IHsgZnJhbWUoKS0+c2NyaXB0KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQuaXNvbGF0ZWRDb3B5KCldKGJvb2wgdW5ibG9ja2VkKSB7CkBAIC0yNDU5LDI1ICsyNDc3LDI5
IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKIAogdm9pZCBEb2N1
bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29u
c3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVE
YXRhKQogeworLy8gICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2Mg
bG9hZGVyICVwIiwgdGhpcywgZnJhbWVMb2FkZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFt
ZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAogYm9vbCBEb2N1bWVu
dExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
bV9jb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikp
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzaG91bGRGaWx0ZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2Nr
ZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJv
ci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVu
dEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50Rmls
dGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CisgICAgaWYgKHNob3VsZEZpbHRlcigpKQorICAgICAgICByZXR1cm47CisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBoYW5k
bGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdlVVJMLCBt
X3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291
bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2
ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAsIHB1Ymxp
YyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgewpAQCAtNDAyLDEzICs0MDIsMTYgQEAgcHVibGljOgogICAgIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFn
YXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBzZXRC
bG9ja2VkUGFnZVVSTChjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBhZ2VV
UkwgPSBibG9ja2VkUGFnZVVSTDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29u
dGVudEZpbHRlcihTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0
ZXIpIHsgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJzdGl0
dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVu
dEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZv
aWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7
IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9h
ZGVyPjo6ZGVyZWYoKTsgfQotI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVy
cm9yIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY2NCwxMyAr
NjY3LDE0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBv
bGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsK
LSNlbHNlCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKICAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CiAgICAgUmVz
b3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisgICAgVVJMIG1fYmxv
Y2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250
ZW50RmlsdGVyOworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fcHJldmlld0Nv
bnZlcnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTk5Niw2ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQ
cm92aXNpb25hbExvYWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExv
YWQoKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCB0aGlzICVwIGRvYyBsb2FkZXIgJXAiLCB0aGlzLCBkb2N1bWVu
dExvYWRlcigpKTsKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcjsKICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDEyICs2MzUsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
SGlzdG9yeUNvbnRyb2xsZXI6OmluaQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1l
bnRMb2FkZXIpOwogCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5IGlu
aXRpYWxpemVJdGVtIGZyYW1lIGxvYWRlciAlcCBtX2ZyYW1lLmxvYWRlcigpICVwIGRvY3VtZW50
IGxvYWRlciAlcCIsIHRoaXMsICZtX2ZyYW1lLmxvYWRlcigpLCBkb2N1bWVudExvYWRlcik7Cisg
ICAgCiAgICAgVVJMIHVucmVhY2hhYmxlVVJMID0gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxl
VVJMKCk7CiAKICAgICBVUkwgdXJsOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICgh
dW5yZWFjaGFibGVVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogdW5yZWFjaGFibGVVUkwiKTsKICAgICAgICAgdXJsID0gdW5yZWFjaGFibGVVUkw7
CiAgICAgICAgIG9yaWdpbmFsVVJMID0gdW5yZWFjaGFibGVVUkw7CiAgICAgfSBlbHNlIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MDUy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6
OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURh
dGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0
YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUg
PSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3Rp
dHV0ZURhdGEpOwogI2VuZGlmCkBAIC0xODgsNiArMTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlci5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4g
ZnJhbWUgeyAmbV9mcmFtZSB9OwogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVsb2FkICVkIiwgdW5ibG9ja2VkKTsK
ICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLnJlbG9hZCgpOwogICAgICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVy
OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVh
dG9yOwpAQCAtNjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVu
cmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0K
IAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wp
OworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3Vu
cmVhY2hhYmxlVVJMOwpAQCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRl
ckV2YWx1YXRvcj4gbV93ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNp
b24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
IAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tV
UkxIb3N0IiB9Owogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBA
InVucmVhY2hhYmxlVVJMIiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0S2V5IHsgQCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICog
Y29uc3Qgd2ViRmlsdGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBA
IC0xMDEsNiArMTAyLDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNv
ZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAg
IFtjb2RlciBlbmNvZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5Ondl
YkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJs
b2NrZWRBZnRlclJlcXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5k
aWYKKwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5
IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBB
UkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVy
Lm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2Vi
RmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNl
bmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJl
cXVlc3RLZXldOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZM
b2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91
bmJsb2NrZWRBZnRlclJlcXVlc3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogY2FuSGFuZGxlUmVxdWVzdCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1
ZSk7CisKKyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJl
cXVlc3QpIHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgICAgICBpZiAoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTM0LDYgKzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjpjYW5IYW4KICAgICBpZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRl
bnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVz
PiBhcyBhbiB1bmJsb2NrIHJlcXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpKTsKICNlbmRpZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2Fu
SGFuZGxlUmVxdWVzdCAlZCIsIGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxv
Y2tSZXF1ZXN0OwogfQogCkBAIC0xNTAsOSArMTYzLDE4IEBAIHZvaWQgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0g
ICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1ZXN0ZXIo
W2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IHJlcXVlc3RVbmJsb2NrQXN5bmMgJXAiLCBtX3VuYmxvY2tlZEFmdGVyUmVx
dWVzdCk7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOwor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAg
aWYgKCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVxdWVzdFVuYmxvY2tBc3luYyAlZCIs
IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisgICAgICAgIHVuYmxvY2tSZXF1
ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0
aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAgICAgICB9OworICAg
IH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tS
ZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAg
LTE2MCw2ICsxODIsMTEgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVl
cwogICAgIH0KIH0KIAordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxv
Y2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3VuYmxvY2tlZEFmdGVy
UmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRdOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50Rmls
dGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7
CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+
IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50
KQorICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0
dGluZ3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBz
aW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xp
ZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAg
IFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisK
K307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIK
KyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ2IEBA
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncygpOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVz
ZXQiKTsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNl
dHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CiAgICAgTW9ja0Nv
bnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5n
c0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQoreworICAg
IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwor
fQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVj
aXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lz
aW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3Rp
ZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVj
aXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9
IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpz
aW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBT
dHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9
IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmds
ZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0
cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3Rh
dGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2
b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQg
cmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVy
biAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29s
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
YmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcm
IGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBT
dHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lv
blBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsg
fQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChE
ZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsg
bV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVz
dERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0g
ICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNp
c2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1Jl
cXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1
ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3Ry
aW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2Rp
ZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQot
ICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1
ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwo
Y29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsK
IAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0Owot
ICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0g
ZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
RGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3Bv
bnNlIH07CkBAIC04Nyw0ICs5MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVk
UmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAg
IGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOwor
ICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVy
IDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25h
bDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJs
ZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNp
c2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsK
KyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlm
ICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+
IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RV
Ukw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmll
ZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVu
YWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOwor
ICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5i
bG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgc2V0dGlu
Z3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGlu
Z3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOwor
CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpkZWNvZGUiKTsKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
aGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAg
PHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5h
YmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRl
bnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcp
OgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHByb2Nlc3MgdG8g
cHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MzcsNiArMTQzNywxMyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3
b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omlu
c3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9u
KCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5
OCw2ICsxOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
SlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291
cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgaW5z
dGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VMb2Fk
U2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6ZVJl
c291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbG9h
ZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxvZ0Fs
d2F5cygiQ29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVjdGlv
bi5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTE4Nywx
NiArMTg4LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0OiBo
YXNOZXR3b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorICAg
IGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBpZiAoIXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24t
PnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCghbV93
YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdSZXF1
ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xvYWRD
aGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJl
cXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAg
LTIzNiwxNCArMjM4LDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiB9
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250
ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnRlbnRGaWx0ZXI6IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAgIGlmICghaXNN
YWluUmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGlm
ICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UoKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVx
dWVzdC51cmwoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMzLDExICs5
MzcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAg
ICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJs
KCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3Rp
ZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0
b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChu
ZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTE3NzMsMzIgKzE3NzksNDAgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVk
c1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5
bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkg
ewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFm
dGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAw
KTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3Io
bV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVuYmxvY2tI
YW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayAlcyIsIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2Vz
cygpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoZXJyb3IpOworICAgIGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5i
bG9ja0FzeW5jKFt0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJv
b2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0
VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8fCB1bmJsb2Nr
ZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1ZXN0OworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qo
YWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwg
dW5ibG9ja2VkKTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJu
IGVycm9yOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291
cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRl
bnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJz
dGl0dXRlRGF0YSkpOwotICAgIGVsc2UgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRl
bnRGaWx0ZXIpOwotICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tl
ZEVycm9yKCk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwotICAgIH0KKyAgICBX
VEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlciBzdWJzdGl0dXRlIGRhdGEgdmFsaWQgJWQiLCBzdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQsIG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdl
VVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFj
Y2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Lmg+CkBAIC0yMzksNyArMjQwLDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJl
c291cmNlTG9hZEluZm8oKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKQEAgLTI4OSw2ICsyOTAsOCBAQCBwcml2YXRl
OgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50Rmls
dGVyOworICAgIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX3VuYmxvY2tI
YW5kbGVyOworICAgIFN0cmluZyBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0OwogI2VuZGlm
CiAKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0ZVJlbGF5ZWQ6
Ok5vIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIApAQCAtODU1LDYgKzg1OSwyOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJX
aWxsU2VuZFJlcXVlc3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyQWRkRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFs
bG93LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
bjo6QmxvY2sKKyAgICA+OworfTsKKyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTkwLDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlE
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmgg
Ki87IH07CiAJCUUzODY2QjBCMjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJRTM4QTFGQzAyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUx
QkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdD
NkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0
OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MEND
NjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUw
MDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJ
CUUzOTYyOERFMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyLmNwcCAqLzsgfTsKIAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2li
aWxpdHlTdXBwb3J0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0NBQUE0MzI0MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRT
UEkuaCAqLzsgfTsKQEAgLTY0NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0
RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0
aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0
NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEy
N0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAog
CQlFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0
MDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRl
cmZhY2VJZGlvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1
MUJGMDBEMjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVXNlckludGVyZmFjZUlkaW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNE
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1
OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFE
RTg1RTY1MDAzOUVDNjkgLyogd2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2
ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBE
NDE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJ
CQk1MTA1QjBENTE2MkY3QTdBMDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgg
Ki8sCiAJCQkJNTFGQjA5MDIxNjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiAqLywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAz
MkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29y
ZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJX
ZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2
IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0
MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxB
dXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJ
NTE3QjVGN0MyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRs
ZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcg
LyogTW9ja0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZF
NzI3QzZCNjgxMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0RDRURDNzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tM
b2NhbFNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVC
MCAvKiBNb2NrTmZjU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3
IEBACiAJCQkJOUI0NzkwOTEyNTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2Ny
aXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQg
LyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4
NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyog
TW9ja1B1c2hTZXJ2aWNlQ29ubmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1
MjMwNEYxNDAwMEI3MkVCMCAvKiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUMxQzFCMzBGMjU0MEY1MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRl
ICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50
KHRoaXMpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYg
c2V0dGluZ3MpCit7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZz
ZXR0aW5ncywgc2V0dGluZ3MuZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGlu
Z3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgv
UmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50
NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6
fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFy
YW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMg
YmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIs
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2
YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUp
LCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2No
ZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNj
aGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBj
cmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRl
cihSZWYKICAgICA6IG1fY29yZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90
cmFja2luZ1BhcmFtZXRlcnModHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogV2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VM
b2FkZXI6On5XZWJSZXNvdXJjZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1l
TWFpblJlc291cmNlIFdlYlJlc291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVy
OiBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVl
c3Qgd2hvbGUgYWdhaW4gYXMgd2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdz
IGJvZHkgd2hlbiBzZW5kaW5nIGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4K
QEAgLTM1MSwyNCArMzUzLDMzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXIKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
a0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2Nr
SGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0
ZURhdGEpCiB7CiAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKSkKICAgICAgICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+c2V0QmxvY2tlZFBhZ2VVUkwoYmxvY2tlZFBhZ2VVUkwpOworICAgIG1fY29yZUxv
YWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRl
cihXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExv
YWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1v
dmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlmICghbV9jb3Jl
TG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlciBubyBsb2FkZXIiKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dB
bHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVz
b3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsK
LSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
IHx8ICFzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4iKTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciBjb3JlIGxvYWRlciAlcCAl
cyIsIG1fY29yZUxvYWRlci5nZXQoKSwgYmxvY2tlZFBhZ2VVUkwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50
RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURh
dGEpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIm
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRl
bnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxl
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxv
YWRlciBMZWdhY3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJD
b3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1
dGVEYXRhKQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVt
b3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0w
My0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4
IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9u
IGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2Nv
bmZpZwkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1Nf
SU9TX1NJTkNFXzE1ID0gLWZyYW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tf
VUlLSVRNQUNIRUxQRVJfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFD
SEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwog
CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JN
X05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29y
ZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29y
ZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dF
QkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhF
Ul9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAot
T1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29y
ZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFs
IC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdL
X0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQo
V0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxB
R1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxB
R1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9M
REZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNU
U19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFt
ZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1l
d29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJ
VF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVO
R0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChX
S19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChX
S19XRUJDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RP
VUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1l
d29yayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9T
LiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGlj
YXRpb24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nl
c3NQbHVnSW4ueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRl
c3RXZWJLaXRBUEk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJP
RFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRs
ZTsKIFdSQVBQRVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhl
cml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJD
b3JlVGVzdFN1cHBvcnQ7CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFH
U18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1m
cmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1m
cmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsg
V2ViQ29yZQorCitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNj
cmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJD
T1JFX0xERkxBR1MpOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBs
b2FkZXJfcGF0aC8uLi8uLi8uLiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRk
ZWQqXSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNp
b24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2lt
cG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmlu
Zy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50
RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lz
dGVyV2l0aFNjaGVtZTpAImh0dHAiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vdGVzdCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJv
bGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtj
b250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0
NDUsMTEgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAg
ICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtb
Y29udHJvbGxlciB3ZWJWaWV3XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBh
cmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOworI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhw
ZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJv
dG9jb2wgdW5yZWdpc3Rlcl07CiAjZW5kaWYKICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBv
cnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkw
NTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
ICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>
<flag name="commit-queue"
          id="482050"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454421</attachid>
            <date>2022-03-10 16:16:22 -0800</date>
            <delta_ts>2022-03-11 08:05:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220310161620.patch</filename>
            <type>text/plain</type>
            <size>95648</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5n
TWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9t
YWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEz
NCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
LSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgor
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNp
emUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7Cisg
ICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsy
MDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxz
ZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1h
aW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRl
bnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENv
bnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI4OSwxMSArMzEzLDExIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291
cmNlRGF0YSgKIAogVVJMIENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJl
c291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1f
bWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlm
CiB9CkBAIC0zMDcsNyArMzMxLDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3Rp
dmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBp
ZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpA
QCAtMzIyLDcgKzM0NSw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0
aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAg
ICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAj
ZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291
cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTAg
KzY2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAgICAgYm9vbCBjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBi
b29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2Fk
ZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsK
QEAgLTExMiw5ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPFJl
c291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIGNv
bnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxs
cHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQz
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vi
c3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorc3RhdGlj
IGJvb2wmIHNob3VsZEZpbHRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVyOworICAgIFJF
TEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorI2Vu
ZGlmCisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9h
ZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZh
bHVlcygpKSkKQEAgLTIzMSw2ICsyNDAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNl
UmVxdWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBE
b2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwgdGhpcywgIHJlcS51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNpbmcgYW4gdW5yZWFjaGFibGUg
VVJMIHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBhIHNlcnZlci1zaWRlCiAgICAg
Ly8gcmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiByZXBsYWNlIGEgY29tbWl0dGVk
IGRhdGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hhYmxlVVJMID0gZmFsc2U7CkBA
IC00MDEsNiArNDExLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0SWZSZWFkeSgpCiB7
CiAgICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2NvbW1pdHRlZCA9IHRydWU7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9jdW1lbnRMb2FkZXI6OmNvbW1p
dElmUmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMsIGZyYW1lTG9hZGVyKCkpOwog
ICAgICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICB9CiB9
CkBAIC00MTksNyArNDMwLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29u
c3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3VyY2UpKQogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MjEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJs
KSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0
KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsK
ICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVy
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3Bv
bnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIyLDcgKzEzMzMsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xNDYzLDcgKzE0NzQs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAgIHN0b3BMb2Fk
aW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGll
bnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAyNSwxMCArMjAzNiwxOCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIG1fY29udGVudEZpbHRlciA9
ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhp
cykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBzaG91bGRG
aWx0ZXIoKSA9IHRydWU7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICAvLyBBbHdheXMgZmlsdGVyIGluIFdLMQorICAgIHNob3VsZEZpbHRl
cigpID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+dmlldygpLT5wbGF0
Zm9ybVdpZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoc2hvdWxkRmlsdGVyKCkpCisgICAgICAg
IG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogJXAgc2hvdWxkRmlsdGVyICVkIiwgbV9jb250ZW50RmlsdGVyLmdldCgpLCBzaG91
bGRGaWx0ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgcmUt
YXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhlIERvY3VtZW50J3MgUmVzb3VyY2VSZXF1ZXN0IHVw
b24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVkZGluZwogICAgIC8vIGFwcGxpY2F0aW9uIGhhcyBj
aGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUgcHJldmlvdXMgdXNlciBhZ2VudCB2YWx1ZSBoZXJl
IGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVlIGluIENhY2hlZFJlc291cmNlTG9hZGVyLgogICAg
IG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdlbnQoKTsKQEAgLTIyMzAsNyArMjI0OSw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFz
Q2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhp
cyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNTcsNyArMjM3Niw3IEBA
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50
RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MTQsNyArMjQzMyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5p
dCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBkYXRhUmVjZWl2ZWQo
YnVmZmVyKTsKQEAgLTI0MzQsMTEgKzI0NTMsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZUNvbnRl
bnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJM
KGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNF
bXB0eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNp
c2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0
KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCld
KGJvb2wgdW5ibG9ja2VkKSB7CkBAIC0yNDU5LDI1ICsyNDc5LDI5IEBAIFJlc291cmNlRXJyb3Ig
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxl
Q29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworLy8gICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2MgbG9hZGVyICVwIiwgdGhpcywg
ZnJhbWVMb2FkZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZnJh
bWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVS
TCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZp
bHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53
aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChzaG91bGRGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0
dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUo
KSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJv
ci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRl
bnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRp
ZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgaWYg
KHNob3VsZEZpbHRlcigpKQorICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBoYW5kbGVDb250ZW50RmlsdGVyUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdlVVJMLCBtX3N1YnN0aXR1dGVEYXRhRnJv
bUNvbnRlbnRGaWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGNs
YXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRl
cj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBD
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVyQ2xp
ZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpAQCAt
NDAyLDEzICs0MDIsMTYgQEAgcHVibGljOgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRl
bnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBzZXRCbG9ja2VkUGFnZVVSTChjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBhZ2VVUkwgPSBibG9ja2VkUGFnZVVS
TDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihTdWJzdGl0
dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpIHsgbV9zdWJzdGl0dXRl
RGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJzdGl0dXRlRGF0YUZyb21Db250ZW50
RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmlu
YWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
KCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQot
I2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29u
TG9hZGluZygpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY2NCwxMyArNjY3LDE0IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKLSNlbHNlCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBib29sIG1fYmxv
Y2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2Nr
ZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisgICAgVVJMIG1fYmxvY2tlZFBhZ2VVUkw7CisgICAg
U3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyOworI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fcHJldmlld0NvbnZlcnRlcjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5
Niw2ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogeworICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCB0aGlzICVwIGRvYyBsb2FkZXIgJXAiLCB0aGlzLCBkb2N1bWVudExvYWRlcigpKTsKICAgICBS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjsK
ICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjM1LDEyICs2MzUsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6
OmluaQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwogCisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5IGluaXRpYWxpemVJdGVtIGZyYW1l
IGxvYWRlciAlcCBtX2ZyYW1lLmxvYWRlcigpICVwIGRvY3VtZW50IGxvYWRlciAlcCIsIHRoaXMs
ICZtX2ZyYW1lLmxvYWRlcigpLCBkb2N1bWVudExvYWRlcik7CisgICAgCiAgICAgVVJMIHVucmVh
Y2hhYmxlVVJMID0gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICBVUkwg
dXJsOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNF
bXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogdW5yZWFjaGFi
bGVVUkwiKTsKICAgICAgICAgdXJsID0gdW5yZWFjaGFibGVVUkw7CiAgICAgICAgIG9yaWdpbmFs
VVJMID0gdW5yZWFjaGFibGVVUkw7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRv
JiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICAgICBp
ZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlm
CkBAIC0xODgsNiArMTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1
ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9
OwogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0Fz
eW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogcmVsb2FkICVkIiwgdW5ibG9ja2VkKTsKICAgICAgICAgICAgIGlmICh1
bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwogICAg
ICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBP
QkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQsNiArNjUs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0
IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpAQCAt
NzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9V
TkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93ZWJG
aWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJMIiB9
Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5IHsgQCJ1
bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJ
VEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2ViRmlsdGVyRXZh
bHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0xMDEsNiArMTAyLDEwIEBA
IHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUKICNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtjb2RlciBlbmNvZGVPYmpl
Y3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRvcktl
eV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrZWRBZnRlclJlcXVlc3Qg
Zm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKKwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5IEBAIGJvb2wgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJ
VEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVh
dG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xh
c3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdW5ibG9ja0hhbmRs
ZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91bmJsb2NrZWRBZnRlclJlcXVl
c3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVz
dCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisKKyAgICBpZiAoIW1f
dW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKICNpZiBIQVZF
KFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAgICBpZiAoIW1f
d2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM0LDYg
KzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW4KICAgICBp
ZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVzPiBhcyBhbiB1bmJsb2NrIHJl
cXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNlbmRp
ZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIs
IGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxvY2tSZXF1ZXN0OwogfQogCkBA
IC0xNTAsOSArMTYzLDE4IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1
ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0gICAgaWYgKG1fdW5ibG9ja1Jl
cXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0o
Ym9vbCB1bmJsb2NrZWQpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlcXVl
c3RVbmJsb2NrQXN5bmMgJXAiLCBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CisgICAgYXV0byB1
bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOworI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKCF1bmJsb2NrUmVxdWVz
dGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogcmVxdWVzdFVuYmxvY2tBc3luYyAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0LmJvb2xWYWx1ZSk7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2Vk
ID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAgICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlm
ICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9u
SGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25I
YW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MCw2ICsxODIsMTEgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9p
ZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChi
b29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFn
ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQo
UmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Ojpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0dGluZ3MpOworfQorCit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZlB0cjxNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisKK307CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ2IEBAIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygp
OworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVzZXQiKTsKKyAgICBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5n
bGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCBl
bmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3Vy
ZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9u
KCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9
IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lv
blBvaW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQo
c2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsK
KyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdz
Q2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVj
aXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVx
dWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVS
TDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRp
bmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlz
aW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsg
fQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdl
J3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQot
ICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsg
bV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERl
Y2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2lu
dDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9p
bnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAog
ICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAg
IHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lz
aW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihE
ZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2Nr
UmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJs
b2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNp
c2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVz
dFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBj
b25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZp
ZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZp
ZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOwor
ICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRv
cj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6
CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2Rl
Y2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5
MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFi
bGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVj
aXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBl
bmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVz
dFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwor
ICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lv
blBvaW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9u
UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247Cisg
ICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVj
b2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7Cisg
ICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+
PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
IHNldHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRp
bmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERl
Y2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmlu
ZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1
ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0
ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFu
Z2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRo
ZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHByb2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywx
MyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJu
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZp
bHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7Cisg
ICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRp
bmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFy
dDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0g
Y2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNl
LCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBSZWZQdHI8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgaW5zdGFsbE1vY2tDb250ZW50Rmls
dGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TG9h
ZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoVmVjdG9y
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQorCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBJ
bnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTE4NywxNiArMTg4LDE3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0OiBoYXNOZXR3b3JrTG9hZENoZWNr
ZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07CisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXN0YXJ0Q29udGVu
dEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBt
X25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNv
dXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBt
X3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1
ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1
ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAg
IG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0
IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0byYmIHJl
c3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzNiwxNCArMjM4LDE2IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiB9CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Citib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGlmICghbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fY29udGVu
dEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVxdWVzdC51cmwoKSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMzLDExICs5MzcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAg
aWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3Mp
KTsKICAgICB9CiAKQEAgLTE3NzMsMzIgKzE3NzksNDAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRl
bnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVk
U2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0g
ICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgaWYg
KCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVu
dEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAwKTsKKyAgICBhdXRvIGVycm9y
ID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVl
c3QpOworCisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVuYmxvY2tIYW5kbGVyOworICAgIG1fdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKKyAg
ICAKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayAlcyIsIG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKQorICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIGVs
c2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBl
cnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1
ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Owor
ICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8fCB1bmJsb2NrZWQpCisgICAgICAgICAgICAg
ICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1ZXN0OworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoYWJvdXRCbGFua1VSTCgpKTsK
KyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IHVuYmxvY2tlZCBhZnRlciByZXF1ZXN0ICVkIiwgdW5ibG9ja2VkKTsKICAgICAg
ICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUkVMRUFT
RV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKIHsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwotICAg
IGVsc2UgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgICAg
ICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCk7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVzb3VyY2VMb2Fk
Rm9yQ29udGVudEZpbHRlcihlcnJvcikpOwotICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlciBz
dWJzdGl0dXRlIGRhdGEgdmFsaWQgJWQiLCBzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIG1fY29u
dGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0
YSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xp
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC0yMzksNyArMjQw
LDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0g
ICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgYm9vbCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAjZW5kaWYKIAogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1f
cGFyYW1ldGVyczsKQEAgLTI4OSw2ICsyOTAsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOworICAgIFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX3VuYmxvY2tIYW5kbGVyOworICAgIFN0cmlu
ZyBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0OwogI2VuZGlmCiAKICAgICBQcml2YXRlUmVs
YXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0ZVJlbGF5ZWQ6Ok5vIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVhSLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Lmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXJzQ0YuaCIKIApAQCAtODU1LDYgKzg1OSwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6
OkFmdGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0
ZXJGaW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVyCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFsbG93LAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+Owor
fTsKKyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9w
bGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJD
b3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkw
LDYgKzE5OTAsOCBAQAogCQlFMzg2NkIwQTIzOTlBMkQ5MDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNzIzOTk5NzlEMDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmggKi87IH07CiAJCUUzODY2QjBC
MjM5OUEyREQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODY2QjA2MjM5OTk3OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJRTM4QTFGQzAyM0E1NTFC
RjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2Vy
SW50ZXJmYWNlSWRpb20ubW0gKi87IH07CisJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaCAqLzsgfTsKKwkJRTM5NTJGRTkyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM5NjI4REQyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IH07CiAJCUUzOTYyOERFMjM5NjBDQzYw
MDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOERDMjM5NjBDQzYw
MDY1OEVDRCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLzsgfTsK
IAkJRTNDQUFBNDQyNDEzMjc5OTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0NBQUE0MzI0
MTMyNzhBMDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCAqLzsgfTsKQEAgLTY0
NjMsNiArNjQ2NSw4IEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYzMjM0NTQ2
M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJD
b3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2FuZGJveDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUzMUI3IC8q
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFE
MjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02NDc1LDYgKzY0NzksOCBAQAogCQlFMzg2NkIwNzIzOTk5NzlE
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L1dlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzhBMUZCRTIzQTU1MTE0MDBEMjM3NEYgLyogVXNlcklu
dGVyZmFjZUlkaW9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VJZGlvbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMUZCRjIzQTU1MUJGMDBEMjM3NEYgLyogVXNl
ckludGVyZmFjZUlkaW9tLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVyZmFjZUlk
aW9tLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNjI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1
MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERCMjM5NjBDQzUwMDY1OEVDRCAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEU0MjM5NzFGMzQwMDY1OEVDRCAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDU3LDYgKzk0NjMsOCBAQAogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk0MTMwNzU5RTFERTg1RTY1MDAzOUVDNjkgLyog
d2VicnRjICovLAorCQkJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQk1MTA1QjBENDE2MkY3QTdBMDBFMjc3MDkg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCAqLywKIAkJCQk1MTA1QjBENTE2MkY3QTdB
MDBFMjc3MDkgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFGQjA5MDIx
NjNBM0IxQzAwRUMzMjRBIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAq
LywKQEAgLTk5NzYsNiArOTk4NCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICov
LAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0
aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywK
IAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFt
ZXdvcmsgKi8sCkBAIC0xMzMxMiw2ICsxMzMyMiw3IEBACiAJCQkJNTE3QjVGN0MyNzVFOTdCNjAw
MkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTdCNUY4MDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1N0RDRURDQjIxNEY0RTQyMDAxNkI4NDcgLyogTW9ja0F1dGhlbnRpY2F0
b3JNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzk1MkZFNzI3QzZCNjgxMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURD
NzIxNEYxODMwMDAxNkI4NDcgLyogTW9ja0xvY2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTdEQ0VEQzMyMTRGMTE0QzAwMTZCODQ3IC8qIE1vY2tMb2NhbFNlcnZpY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3QjgyNjRDMjMwNjAzQzEwMEI3MkVCMCAvKiBNb2NrTmZjU2Vydmlj
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTY4NCw2ICsxNTY5NSw3IEBACiAJCQkJOUI0NzkwOTEy
NTMxNTYzMjAwRUMxMUFCIC8qIE1lc3NhZ2VBcmd1bWVudERlc2NyaXB0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZv
clRlc3RpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQg
LyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRTky
N0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFQkE4RDNCNjI3QTVFMzNGMDBDQjc5MDAgLyogTW9ja1B1c2hTZXJ2aWNlQ29u
bmVjdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QjgyNjQ1MjMwNEYxNDAwMEI3MkVCMCAv
KiBOZWFyRmllbGRTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMxQzFCMzBGMjU0MEY1
MEQwMEQ5MTAwQiAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01hYy5tbSBpbiBTb3Vy
Y2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBt
YW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lk
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5n
ZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCAlZCIsICZzZXR0aW5ncywgc2V0dGluZ3Mu
ZW5hYmxlZCgpKTsKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKKworfQorCit9
OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNv
cmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2Vy
dmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRzLmg+
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisjZW5kaWYKKwog
I3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lP
Tl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVH
aWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0
T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAt
MjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYg
VwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFt
ZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdp
dGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4o
cmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOwor
CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBX
RUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUg
dG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVk
KSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkp
KTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3
IEBAIFdlYlJlc291cmNlTG9hZGVyOjpXZWJSZXNvdXJjZUxvYWRlcihSZWYKICAgICA6IG1fY29y
ZUxvYWRlcihXVEZNb3ZlKGNvcmVMb2FkZXIpKQogICAgICwgbV90cmFja2luZ1BhcmFtZXRlcnMo
dHJhY2tpbmdQYXJhbWV0ZXJzKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjog
V2ViUmVzb3VyY2VMb2FkZXIiKTsKIH0KIAogV2ViUmVzb3VyY2VMb2FkZXI6On5XZWJSZXNvdXJj
ZUxvYWRlcigpCkBAIC0xMTMsNiArMTE0LDcgQEAgTWFpbkZyYW1lTWFpblJlc291cmNlIFdlYlJl
c291cmNlTG9hZGVyOgogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcHJvcG9zZWRSZXF1ZXN0Qm9keSwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBXZWJSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE1ha2UgdGhlIHJlcXVlc3Qgd2hvbGUgYWdhaW4gYXMg
d2UgZG8gbm90IG5vcm1hbGx5IGVuY29kZSB0aGUgcmVxdWVzdCdzIGJvZHkgd2hlbiBzZW5kaW5n
IGl0IG92ZXIgSVBDLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KQEAgLTM1MSwyNCArMzUzLDMz
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYg
KCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0QmxvY2tl
ZFBhZ2VVUkwoYmxvY2tlZFBhZ2VVUkwpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+c2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihXVEZNb3ZlKHN1YnN0aXR1
dGVEYXRhKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNl
bE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50
RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciBubyBsb2FkZXIi
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0
ZXI6IGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyIik7CiAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoIW1fY29yZUxv
YWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0
YS5pc1ZhbGlkKCkpCisgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZy
b21Db250ZW50RmlsdGVybiBlYXJseSByZXR1cm4iKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlciBjb3JlIGxvYWRlciAlcCAlcyIsIG1fY29yZUxvYWRlci5n
ZXQoKSwgYmxvY2tlZFBhZ2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOwogfQogI2VuZGlmIC8v
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25z
dCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYpOwog
ICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0
RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBVUkwgYmxvY2tlZFBh
Z2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQogICAgIENhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVy
KFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURh
dGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFu
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNv
bnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUg
bW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hl
biBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwog
MjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rl
c3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZy
YW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERG
TEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFj
Y2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitXS19XRUJDT1JFX0xERkxB
R1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNP
UkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZM
QUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZM
QUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRj
aHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9
ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQo
aW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJU
ZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktp
dCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9TdXJm
YWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykg
LWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1Mp
ICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRNQUNI
RUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJL
aXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2Vi
Q29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChX
S19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3
b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19Q
REZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9M
REZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChXS19XRUJDT1JFX0xERkxBR1Mp
ICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZM
QUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3Vs
ZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9j
ZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRBUEk7CiBQUk9E
VUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRp
ZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsKIFdSQVBQRVJfRVhURU5T
SU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsg
SmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQ7CitX
S19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05B
TUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNP
UkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCitPVEhFUl9M
REZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29y
ayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJDT1JFX0xERkxBR1MpOwogTERf
UlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBsb2FkZXJfcGF0aC8uLi8uLi8u
LiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRkZWQqXSA9ICJAbG9hZGVyX3Bh
dGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEds
b2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CkBAIC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlM
b2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0
dHAiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxvYWRSZXF1ZXN0OltOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vdGVzdCJd
XV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSNpZiBQTEFU
Rk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRh
bENvbnRyb2xzTG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBh
cmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0NDUsMTEgQEAgVEVTVChDb250
ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJl
Z2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtbY29udHJvbGxlciB3ZWJWaWV3
XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2Fk
ZWQ6Tk9dOworI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9s
c0xvYWRlZDpZRVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07
CiAjZW5kaWYKICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJp
bmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nv
bnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0
ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8
V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454486</attachid>
            <date>2022-03-11 08:05:35 -0800</date>
            <delta_ts>2022-03-11 08:20:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220311080533.patch</filename>
            <type>text/plain</type>
            <size>96456</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0Jh
Y2tGb3J3YXJkQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsNyBAQCBib29sIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6Z29Gb3J3
YXJkKCkKIAogdm9pZCBCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIGl0ZW0pCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBCYWNrRm9y
d2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0gJXMiLCBpdGVtLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICBtX2NsaWVudC0+YWRkSXRlbShXVEZNb3ZlKGl0ZW0pKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTEsNiArMjExLDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0QWx0ZXJuYXRlVGl0bGUoY29u
cwogCiB2b2lkIEhpc3RvcnlJdGVtOjpzZXRVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5ICVzIiwgdXJs
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdXJsU3RyaW5nID0gdXJsU3RyaW5nOwogICAg
IG5vdGlmeUNoYW5nZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmRpc3BhdGNoTG9hZEV2ZW4KIHsKICAgICBBU1NFUlQoIWhh
dmVGaXJlZExvYWRFdmVudCgpKTsKICAgICBzZXRIYXZlRmlyZWRMb2FkRXZlbnQodHJ1ZSk7Ci0K
KyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGRpc3BhdGNoTG9hZEV2ZW50Iik7CiAg
ICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5n
TWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9t
YWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEz
NCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
LSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgor
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNp
emUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7Cisg
ICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsy
MDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxz
ZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1h
aW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRl
bnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENv
bnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI4OSwxMSArMzEzLDExIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291
cmNlRGF0YSgKIAogVVJMIENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJl
c291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1f
bWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAg
IHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlm
CiB9CkBAIC0zMDcsNyArMzMxLDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwo
KQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3Rp
dmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBp
ZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpA
QCAtMzIyLDcgKzM0NSw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0
aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAg
ICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAj
ZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291
cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTAg
KzY2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJl
Y2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAgICAgYm9vbCBjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRl
ck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0jZW5kaWYKIAogICAgIHN0YXRpYyBi
b29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2Fk
ZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIHdpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBjb25zdDsK
QEAgLTExMiw5ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPFJl
c291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIGNv
bnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxs
cHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3Vy
Y2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250
ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQz
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1
ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImLCBzaXplX3QpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vi
c3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorc3RhdGlj
IGJvb2wmIHNob3VsZEZpbHRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVyOworICAgIFJF
TEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmlsdGVyOworfQorI2Vu
ZGlmCisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1hcCYgbG9h
ZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2FkZXJzLnZh
bHVlcygpKSkKQEAgLTIzMSw2ICsyNDAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXBsYWNl
UmVxdWVzdFVSTEZvCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBE
b2N1bWVudExvYWRlcjo6c2V0UmVxdWVzdCB0aGlzICVwICVzIiwgdGhpcywgIHJlcS51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAvLyBSZXBsYWNpbmcgYW4gdW5yZWFjaGFibGUg
VVJMIHdpdGggYWx0ZXJuYXRlIGNvbnRlbnQgbG9va3MgbGlrZSBhIHNlcnZlci1zaWRlCiAgICAg
Ly8gcmVkaXJlY3QgYXQgdGhpcyBwb2ludCwgYnV0IHdlIGNhbiByZXBsYWNlIGEgY29tbWl0dGVk
IGRhdGFTb3VyY2UuCiAgICAgYm9vbCBoYW5kbGluZ1VucmVhY2hhYmxlVVJMID0gZmFsc2U7CkBA
IC00MDEsNiArNDExLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0SWZSZWFkeSgpCiB7
CiAgICAgaWYgKCFtX2NvbW1pdHRlZCkgewogICAgICAgICBtX2NvbW1pdHRlZCA9IHRydWU7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogRG9jdW1lbnRMb2FkZXI6OmNvbW1p
dElmUmVhZHkgdGhpcyAlcCBmcmFtZWxvYWRlciAlcCIsIHRoaXMsIGZyYW1lTG9hZGVyKCkpOwog
ICAgICAgICBmcmFtZUxvYWRlcigpLT5jb21taXRQcm92aXNpb25hbExvYWQoKTsKICAgICB9CiB9
CkBAIC00MTksNyArNDMwLDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nKCkgY29u
c3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50
RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3VyY2UpKQogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MjEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJs
KSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0
KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRpZmljYXRlSW5mbygpKTsK
ICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlckNhbGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVy
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3Bv
bnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIyLDcgKzEzMzMsNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVj
ZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xNDYzLDcgKzE0NzQs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAgIHN0b3BMb2Fk
aW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGll
bnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAyNSwxMCArMjAzNiwxOCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIG1fY29udGVudEZpbHRlciA9
ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhp
cykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBzaG91bGRG
aWx0ZXIoKSA9IHRydWU7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICAvLyBBbHdheXMgZmlsdGVyIGluIFdLMQorICAgIHNob3VsZEZpbHRl
cigpID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+dmlldygpLT5wbGF0
Zm9ybVdpZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoc2hvdWxkRmlsdGVyKCkpCisgICAgICAg
IG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVu
dEZpbHRlcjogJXAgc2hvdWxkRmlsdGVyICVkIiwgbV9jb250ZW50RmlsdGVyLmdldCgpLCBzaG91
bGRGaWx0ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgcmUt
YXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhlIERvY3VtZW50J3MgUmVzb3VyY2VSZXF1ZXN0IHVw
b24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVkZGluZwogICAgIC8vIGFwcGxpY2F0aW9uIGhhcyBj
aGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUgcHJldmlvdXMgdXNlciBhZ2VudCB2YWx1ZSBoZXJl
IGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVlIGluIENhY2hlZFJlc291cmNlTG9hZGVyLgogICAg
IG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdlbnQoKTsKQEAgLTIyMzAsNyArMjI0OSw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFz
Q2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhp
cyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIzNTcsNyArMjM3Niw3IEBA
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVu
dExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50
RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5kaWYKQEAgLTI0MTQsNyArMjQzMyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5p
dCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBkYXRhUmVjZWl2ZWQo
YnVmZmVyKTsKQEAgLTI0MzQsMTEgKzI0NTMsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZUNvbnRl
bnRGaWx0ZXJEaWRCbG9jayIpOwogICAgIHVuYmxvY2tIYW5kbGVyLnNldFVucmVhY2hhYmxlVVJM
KGRvY3VtZW50VVJMKCkpOwogICAgIGlmICghdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNF
bXB0eSgpICYmIGZyYW1lKCkpIHsKICAgICAgICAgdW5ibG9ja0hhbmRsZXIud3JhcFdpdGhEZWNp
c2lvbkhhbmRsZXIoW3NjcmlwdENvbnRyb2xsZXIgPSBXZWFrUHRyIHsgZnJhbWUoKS0+c2NyaXB0
KCkgfSwgc2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQuaXNvbGF0ZWRDb3B5KCld
KGJvb2wgdW5ibG9ja2VkKSB7CkBAIC0yNDU5LDI1ICsyNDc5LDI5IEBAIFJlc291cmNlRXJyb3Ig
RG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxl
Q29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFn
ZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogeworLy8gICAgV1RG
TG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZSB0aGlzICVwIGZyYW1lIGxvYWRlciAlcCBkb2MgbG9hZGVyICVwIiwgdGhpcywg
ZnJhbWVMb2FkZXIoKSwgZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZnJh
bWVMb2FkZXIoKS0+bG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVS
TCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KIAogYm9vbCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZp
bHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53
aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGlmIChzaG91bGRGaWx0ZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0
dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUo
KSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJv
ci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRl
bnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRp
ZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIFVOVVNFRF9QQVJB
TShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgaWYg
KHNob3VsZEZpbHRlcigpKQorICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBoYW5kbGVDb250ZW50RmlsdGVyUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdlVVJMLCBtX3N1YnN0aXR1dGVEYXRhRnJv
bUNvbnRlbnRGaWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGNs
YXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRl
cj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBD
b250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVyQ2xp
ZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpAQCAt
NDAyLDEzICs0MDIsMTYgQEAgcHVibGljOgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRl
bnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9pZCBzZXRCbG9ja2VkUGFnZVVSTChjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBhZ2VVUkwgPSBibG9ja2VkUGFnZVVS
TDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihTdWJzdGl0
dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpIHsgbV9zdWJzdGl0dXRl
RGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJzdGl0dXRlRGF0YUZyb21Db250ZW50
RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29uc3QgZmlu
YWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lkIGRlcmVm
KCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQot
I2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNvbnRlbnRG
aWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNv
bnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3RhcnRJY29u
TG9hZGluZygpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0
ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY2NCwxMyArNjY3LDE0IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKLSNlbHNlCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBib29sIG1fYmxv
Y2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2Nr
ZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisgICAgVVJMIG1fYmxvY2tlZFBhZ2VVUkw7CisgICAg
U3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyOworI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fcHJldmlld0NvbnZlcnRlcjsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5
Niw2ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXJQcm92aXNpb25hbExvYWQoKQog
CiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogeworICAgIFdURkxv
Z0Fsd2F5cygiQ29udGVudEZpbHRlcjogRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCB0aGlzICVwIGRvYyBsb2FkZXIgJXAiLCB0aGlzLCBkb2N1bWVudExvYWRlcigpKTsKICAgICBS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHBkbCA9IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcjsK
ICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjM1LDEyICs2MzUsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6SGlzdG9yeUNvbnRyb2xsZXI6
OmluaQogICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKTsKICAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIpOwogCisgICAg
V1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoaXN0b3J5IGluaXRpYWxpemVJdGVtIGZyYW1l
IGxvYWRlciAlcCBtX2ZyYW1lLmxvYWRlcigpICVwIGRvY3VtZW50IGxvYWRlciAlcCIsIHRoaXMs
ICZtX2ZyYW1lLmxvYWRlcigpLCBkb2N1bWVudExvYWRlcik7CisgICAgCiAgICAgVVJMIHVucmVh
Y2hhYmxlVVJMID0gZG9jdW1lbnRMb2FkZXItPnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICBVUkwg
dXJsOwogICAgIFVSTCBvcmlnaW5hbFVSTDsKIAogICAgIGlmICghdW5yZWFjaGFibGVVUkwuaXNF
bXB0eSgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogdW5yZWFjaGFi
bGVVUkwiKTsKICAgICAgICAgdXJsID0gdW5yZWFjaGFibGVVUkw7CiAgICAgICAgIG9yaWdpbmFs
VVJMID0gdW5yZWFjaGFibGVVUkw7CiAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRv
JiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICAgICBp
ZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlm
CkBAIC0xODgsNiArMTg4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5jYW5IYW5kbGVSZXF1
ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgeyAmbV9mcmFtZSB9
OwogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0Fz
eW5jKFtmcmFtZV0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogcmVsb2FkICVkIiwgdW5ibG9ja2VkKTsKICAgICAgICAgICAgIGlmICh1
bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwogICAg
ICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBP
QkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQsNiArNjUs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0
IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworCiBwcml2YXRlOgogICAg
IFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpAQCAt
NzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9V
TkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93ZWJG
aWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAogc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJMIiB9
Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5IHsgQCJ1
bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJ
VEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2ViRmlsdGVyRXZh
bHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0xMDEsNiArMTAyLDEwIEBA
IHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUKICNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtjb2RlciBlbmNvZGVPYmpl
Y3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRvcktl
eV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrZWRBZnRlclJlcXVlc3Qg
Zm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKKwogICAgIEVORF9CTE9D
S19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5IEBAIGJvb2wgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJ
VEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVh
dG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xh
c3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdW5ibG9ja0hhbmRs
ZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlm
CiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsMTEgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRG
aWx0ZXI6IGNhbkhhbmRsZVJlcXVlc3QiKTsKKyAgICBpZiAobV91bmJsb2NrZWRBZnRlclJlcXVl
c3QpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVz
dCAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0LmJvb2xWYWx1ZSk7CisKKyAgICBpZiAoIW1f
dW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKICNpZiBIQVZF
KFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAgICBpZiAoIW1f
d2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM0LDYg
KzE0Niw3IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW4KICAgICBp
ZiAoaXNVbmJsb2NrUmVxdWVzdCkKICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2lsbCBoYW5kbGUgPCVzPiBhcyBhbiB1bmJsb2NrIHJl
cXVlc3QuXG4iLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNlbmRp
ZgorICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogY2FuSGFuZGxlUmVxdWVzdCAlZCIs
IGlzVW5ibG9ja1JlcXVlc3QpOwogICAgIHJldHVybiBpc1VuYmxvY2tSZXF1ZXN0OwogfQogCkBA
IC0xNTAsOSArMTYzLDE4IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1
ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0gICAgaWYgKG1fdW5ibG9ja1Jl
cXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0o
Ym9vbCB1bmJsb2NrZWQpIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IHJlcXVl
c3RVbmJsb2NrQXN5bmMgJXAiLCBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCk7CisgICAgYXV0byB1
bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOworI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYgKCF1bmJsb2NrUmVxdWVz
dGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogcmVxdWVzdFVuYmxvY2tBc3luYyAlZCIsIG1fdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0LmJvb2xWYWx1ZSk7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2Vk
ID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAgICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlm
ICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9u
SGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25I
YW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MCw2ICsxODIsMTEgQEAg
dm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9p
ZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChi
b29sIHVuYmxvY2tlZCkKK3sKKyAgICBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDp1bmJsb2NrZWRdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFn
ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQo
UmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBt
X2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Ojpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0dGluZ3MpOworfQorCit9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZlB0cjxNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisKK307CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ2IEBAIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygp
OworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogcmVzZXQiKTsKKyAgICBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5n
bGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiAlcCBl
bmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3Vy
ZUluc3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9u
KCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJp
bmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9
IGJsb2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24o
KS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lv
blBvaW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQo
c2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsK
KyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdz
Q2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVj
aXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVx
dWVzdFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVS
TDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRp
bmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlz
aW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsg
fQogCiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdl
J3JlIFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0
cmluZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQot
ICAgIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsg
bV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERl
Y2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2lu
dDsgfQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9p
bnQpIHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAog
ICAgIERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAg
IHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lz
aW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihE
ZWNpc2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2Nr
UmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJs
b2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNP
UkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNp
c2lvbik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVz
dFVSTCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBj
b25zdCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZp
ZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZp
ZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOwor
ICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRv
cj0oY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6
CiAKICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2Rl
Y2lzaW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5
MCw1NCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFi
bGVkOworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVj
aXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBl
bmNvZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVz
dFVSTCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOwor
ICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lv
blBvaW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9u
UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247Cisg
ICAgZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVj
b2RlciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7Cisg
ICAgaWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+
PiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
IHNldHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRp
bmdzLnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERl
Y2lzaW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bigqdW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmlu
ZyhXVEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1
ZXN0VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgV1RGTG9nQWx3YXlz
KCJDb250ZW50RmlsdGVyOiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUiKTsKKyAg
ICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMg
UmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDUgQEAKKzIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0
ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9j
ayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cik6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0
OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFu
Z2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRo
ZXJlIGlzIGEgZGVmYXVsdCBOZXR3b3JraW5nIHByb2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNo
IFNlcnZpY2VzIGRhdGFiYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywx
MyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJu
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOwog
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZp
bHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7Cisg
ICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRp
bmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFy
dDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0g
Y2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNl
LCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBSZWZQdHI8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgaW5zdGFsbE1vY2tDb250ZW50Rmls
dGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TG9h
ZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoVmVjdG9y
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQorCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBJ
bnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpOZXR3b3JrUmVzb3VyY2VMbwogICAgICwgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MobV9jb25uZWN0aW9uLT5jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NF
bmFibGVkKCkpCiAgICAgLCBtX3Jlc291cmNlTG9hZElEIHsgTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRl
cjogTmV0d29ya1Jlc291cmNlTG9hZGVyIik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIAogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKQEAgLTE4NywxNiArMTg4LDE3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0OiBoYXNOZXR3b3JrTG9hZENoZWNr
ZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07CisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXN0YXJ0Q29udGVu
dEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisKICAgICBt
X25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNv
dXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCghbV93YXNTdGFydGVkKTsKICAgICBt
X3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1
ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1
ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAg
IG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0
IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoYXV0byYmIHJl
c3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzNiwxNCArMjM4LDE2IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiB9CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
Citib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6
IHN0YXJ0Q29udGVudEZpbHRlcmluZyIpOwogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGlmICghbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIG1fY29udGVu
dEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVxdWVzdC51cmwoKSk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMzLDExICs5MzcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAg
aWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNv
bnRlbnRGaWx0ZXI6IGJsb2NrZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3Mp
KTsKICAgICB9CiAKQEAgLTEwMjgsOCArMTAzNCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0
UmVzcG9uc2UudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KSkKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCAlcyIsIHJlZGlyZWN0UmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOworICAgIFdURkxvZ0Fsd2F5cygi
Q29udGVudEZpbHRlcjogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0ICVzIiwgcmVkaXJlY3RSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogI2VuZGlmCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE7CkBAIC0xNzczLDMyICsxNzgxLDQwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nl
c3MoKSkgewotICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAg
ICAgICAgIGlmICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxv
Y2tlZENvbnRlbnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAg
YXV0byBlcnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1l
dGVycy5yZXF1ZXN0KTsKKworICAgIG1fdW5ibG9ja0hhbmRsZXIgPSB1bmJsb2NrSGFuZGxlcjsK
KyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQ7CisgICAgCisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBjb250ZW50Rmls
dGVyRGlkQmxvY2sgJXMiLCBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkKKyAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3lu
YyhbdGhpcywgZXJyb3IsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxv
Y2tlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX3VuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCh1bmJsb2NrZWQpOworCisgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdDsKKyAgICAgICAgICAgIGlmIChtX3dhc1N0YXJ0ZWQgfHwgdW5ibG9ja2VkKQorICAg
ICAgICAgICAgICAgIHJlcXVlc3QgPSBtX3BhcmFtZXRlcnMucmVxdWVzdDsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGFib3V0Qmxh
bmtVUkwoKSk7CisgICAgICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IocmVxdWVzdCk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiB1bmJsb2NrZWQgYWZ0ZXIgcmVxdWVzdCAlZCIsIHVuYmxvY2tl
ZCk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsK
IH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVy
LT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZp
bHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYg
c3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURh
dGEpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVy
KTsKLSAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigp
OwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgV1RGTG9nQWx3
YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRl
bnRGaWx0ZXIgc3Vic3RpdHV0ZSBkYXRhIHZhbGlkICVkIiwgc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZChtX3VuYmxvY2tIYW5kbGVyLCBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0LCBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpLCBibG9ja2VkUGFnZVVSTCwgc3Vi
c3RpdHV0ZURhdGEpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlByaXZhdGVSZWxheWVkLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50RmlsdGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAt
MjM5LDcgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxv
YWRJbmZvKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotICAgIHZvaWQgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOworICAgIGJvb2wgc3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwogI2VuZGlmCiAKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyBtX3BhcmFtZXRlcnM7CkBAIC0yODksNiArMjkwLDggQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyAg
ICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV91bmJsb2NrSGFuZGxlcjsK
KyAgICBTdHJpbmcgbV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKICNlbmRpZgogCiAgICAg
UHJpdmF0ZVJlbGF5ZWQgbV9wcml2YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVkOjpObyB9OwpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSwxMCBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJB
cmd1bWVudENvZGVyc0NGLmgiCiAKQEAgLTg1NSw2ICs4NTksMjggQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dD4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRS
ZXF1ZXN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERh
dGEsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2Nr
CisgICAgPjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpBdXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAg
ICAgICAgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkwNTI1KQorKysgU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTk5MCw2ICsxOTkwLDggQEAKIAkJRTM4NjZCMEEyMzk5QTJEOTAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDcyMzk5OTc5RDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlcy5oICovOyB9Owog
CQlFMzg2NkIwQjIzOTlBMkREMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNjIzOTk5NzlDMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCUUzOEEx
RkMwMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhBMUZCRjIzQTU1MUJGMDBEMjM3
NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tICovOyB9OworCQlFMzk1MkZFNzI3QzZCNjgxMDA4
NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNjI3QzZCNjgxMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CisJCUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzOTYyOEREMjM5NjBDQzYwMDY1OEVD
RCAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0Qg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovOyB9OwogCQlFMzk2MjhE
RTIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi87IH07CiAJCUUzQ0FBQTQ0MjQxMzI3OTkwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi87
IH07CkBAIC02NDYzLDYgKzY0NjUsOCBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3NSw2ICs2NDc5LDggQEAKIAkJRTM4NjZC
MDcyMzk5OTc5RDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJN
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdC9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM4QTFGQkUyM0E1NTExNDAwRDIzNzRG
IC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRp
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTFGQkYyM0E1NTFCRjAwRDIz
NzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVzZXJJ
bnRlcmZhY2VJZGlvbS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTYy
N0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhEQjIzOTYwQ0M1MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOERDMjM5NjBDQzYwMDY1OEVDRCAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhFNDIzOTcxRjM0MDA2NThFQ0QgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ1Nyw2ICs5NDYzLDggQEAKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNDEzMDc1OUUxREU4NUU2NTAw
MzlFQzY5IC8qIHdlYnJ0YyAqLywKKwkJCQlFMzk1MkZFODI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzk1MkZFNjI3QzZCNjgxMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJNTEwNUIwRDQxNjJGN0E3
QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8sCiAJCQkJNTEwNUIw
RDUxNjJGN0E3QTAwRTI3NzA5IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oICovLAogCQkJ
CTUxRkIwOTAyMTYzQTNCMUMwMEVDMzI0QSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gKi8sCkBAIC05OTc2LDYgKzk5ODQsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAz
ODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYiAqLywKKwkJCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovLAogCQkJCURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJX
ZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGli
V1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGlj
YXRpb24uZnJhbWV3b3JrICovLApAQCAtMTMzMTIsNiArMTMzMjIsNyBAQAogCQkJCTUxN0I1RjdD
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE3QjVGODAyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdEQ0VEQ0IyMTRGNEU0MjAwMTZCODQ3IC8qIE1vY2tB
dXRoZW50aWNhdG9yTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRTcyN0M2QjY4
MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTdEQ0VEQzcyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTU3RENFREMzMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I4MjY0QzIzMDYwM0MxMDBCNzJFQjAgLyogTW9j
a05mY1NlcnZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMTU2ODQsNiArMTU2OTUsNyBAQAogCQkJ
CTlCNDc5MDkxMjUzMTU2MzIwMEVDMTFBQiAvKiBNZXNzYWdlQXJndW1lbnREZXNjcmlwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODQyNzVFOTdCNjAwMkRDMjJEIC8qIE1vY2tB
cHBCdW5kbGVGb3JUZXN0aW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE3QjVGODYyNzVFOTdC
NjAwMkRDMjJEIC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUUzOTUyRkU5MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRUJBOEQzQjYyN0E1RTMzRjAwQ0I3OTAwIC8qIE1vY2tQdXNo
U2VydmljZUNvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1N0I4MjY0NTIzMDRGMTQw
MDBCNzJFQjAgLyogTmVhckZpZWxkU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMUMx
QjMwRjI1NDBGNTBEMDBEOTEwMEIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNYWMu
bW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
PgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nKCkKK3sKKyAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENsaWVudCh0aGlzKTsK
K30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdz
KQoreworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogJXAgJWQiLCAmc2V0dGluZ3Ms
IHNldHRpbmdzLmVuYWJsZWQoKSk7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkpCisgICAg
ICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKHNldHRpbmdzKSwgMCk7
CisKK30KKworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQg
c3RhcnRPYnNlcnZpbmcoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdl
ZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzIsNiArMjMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1l
VGhyZWFkcy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgor
I2VuZGlmCisKICN1bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX1NFU1NJT05fSUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAw
KQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQ1LDEwIEBAIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5n
UHJpbWl0aXZlR2lnYWNhZ2UoKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zdGFydE9ic2VydmluZygpOworI2VuZGlmCiB9CiAKIFdlYlByb2Nlc3M6On5XZWJQcm9j
ZXNzKCkKQEAgLTIyMjksNyArMjIzNyw2IEBAIFJlbW90ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlv
bkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAJKHJldmlz
aW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDYgKzQ3MSw3IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb20KICAgICBpZiAobG9hZFBhcmFtZXRlcnMu
aXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51bGxvcHQpOwogICAgIFdFQkxPQURF
UlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgdmFsdWVPckRl
ZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKS50b1VJ
bnQ2NCgpKTsKKwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVy
cywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsK
ICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9h
ZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChw
cmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0
aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsNyBAQCBXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIoUmVmCiAg
ICAgOiBtX2NvcmVMb2FkZXIoV1RGTW92ZShjb3JlTG9hZGVyKSkKICAgICAsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzKHRyYWNraW5nUGFyYW1ldGVycykKIHsKKyAgICBXVEZMb2dBbHdheXMoIkNvbnRl
bnRGaWx0ZXI6IFdlYlJlc291cmNlTG9hZGVyIik7CiB9CiAKIFdlYlJlc291cmNlTG9hZGVyOjp+
V2ViUmVzb3VyY2VMb2FkZXIoKQpAQCAtMTEzLDYgKzExNCw3IEBAIE1haW5GcmFtZU1haW5SZXNv
dXJjZSBXZWJSZXNvdXJjZUxvYWRlcjoKIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHByb3Bvc2VkUmVxdWVzdEJvZHksIFJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlKQogeworICAgIFdURkxvZ0Fsd2F5cygiQ29udGVudEZpbHRlcjogV2ViUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCIpOwogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBNYWtlIHRoZSByZXF1ZXN0IHdob2xl
IGFnYWluIGFzIHdlIGRvIG5vdCBub3JtYWxseSBlbmNvZGUgdGhlIHJlcXVlc3QncyBib2R5IHdo
ZW4gc2VuZGluZyBpdCBvdmVyIElQQywgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCkBAIC0zNTEs
MjQgKzM1MywzMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhKQog
ewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoV1RGTW92
ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKKyAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiQ29udGVudEZpbHRlcjogY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIg
bm8gbG9hZGVyIik7CiAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJD
b250ZW50RmlsdGVyOiBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlciIpOwog
ICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9h
ZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBj
b25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYg
KCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCkgfHwgIXN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkgewor
ICAgICAgICBXVEZMb2dBbHdheXMoIkNvbnRlbnRGaWx0ZXI6IGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcm4gZWFybHkgcmV0dXJuIik7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDb250ZW50RmlsdGVyOiBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIgY29yZSBsb2FkZXIgJXAgJXMiLCBtX2Nv
cmVMb2FkZXIuZ2V0KCksIGJsb2NrZWRQYWdlVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlclBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NyArMTAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9j
a0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY29udGVudEZpbHRlckRp
ZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYmKTsKICAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVn
YWN5UmVjZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQotICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3Jl
OjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgVVJM
IGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkK
ICAgICBDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKQogICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1
YnN0aXR1dGVEYXRhKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFu
ICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBl
bmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZCk6CisKIDIwMjItMDItMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeSgpIGFu
ZCB1c2UgdGhlIG1vZGVybiBIYXNoZXIgaW5zdGVhZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNjYxKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMDEgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZh
aWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1
Z0luLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJp
bmcubW06CisKIDIwMjItMDMtMDEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29t
PgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBHYXRlIGluZm9ybWF0aW9uIFVSTCBvbiBpbml0aWFs
IHNldHVwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDE1IEBAIFdLX1NZU1RFTV9MREZMQUdTX0lPU19TSU5D
RV8xNSA9IC1mcmFtZXcKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MgPSAkKFdLX1VJS0lUTUFD
SEVMUEVSX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19VSUtJVE1BQ0hFTFBFUl9M
REZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBVSUtpdE1hY0hlbHBlcjsKIAorV0tfV0VC
Q09SRV9MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7
CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dF
QkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dF
QkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xE
RkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUKKwogT1RIRVJfQ1BMVVNQ
TFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CiAKLU9USEVSX0xE
RkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1l
d29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3
b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lU
X0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5H
TF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdL
X1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKE9U
SEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RIRVJfTERGTEFHUyA9
ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9s
aWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdl
YktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9T
dXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFH
UykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxB
R1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRN
QUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoV0tfV0VCQ09S
RV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOwog
T1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFtZXdvcmsgQ2Fy
Ym9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlPUy4gSW5zdGVh
ZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxpY2F0aW9uLgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0lu
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMiBAQCBQUk9EVUNUX05BTUUgPSBUZXN0V2ViS2l0
QVBJOwogUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9IGNvbS5hcHBsZS4kKFBST0RVQ1RfTkFN
RTpyZmMxMDM0aWRlbnRpZmllcik7CiBFWEVDVVRBQkxFX1NVRkZJWCA9IC5idW5kbGU7CiBXUkFQ
UEVSX0VYVEVOU0lPTiA9IHdrYnVuZGxlOwotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAt
ZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RT
dXBwb3J0OworV0tfV0VCQ09SRV9MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxBR1NfJChXS19Q
TEFURk9STV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBXZWJDb3Jl
CitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUK
KworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3Jl
IC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0ICQoV0tfV0VCQ09SRV9MREZM
QUdTKTsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1tYWNvc3gqXSA9ICJAbG9hZGVyX3Bh
dGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPWVtYmVkZGVkKl0gPSAi
QGxvYWRlcl9wYXRoLy4uIjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUy
NSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRl
cmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpbXBvcnQgIkRl
cHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNp
bXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldLV2ViVmlld0Nv
bmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBvcnQgPFdlYktp
dC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgpAQCAtNDMzLDcgKzQzMyw3IEBAIFRFU1QoQ29udGVudEZpbHRlcmlu
ZywgTGF6aWx5TG9hZFBsYXRmb3IKICAgICAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhT
Y2hlbWU6QCJodHRwIl07CiAgICAgICAgIFtbY29udHJvbGxlciB3ZWJWaWV3XSBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cDovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgW2NvbnRyb2xsZXIgZXhw
ZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpOT107CiAjZWxzZQogICAgICAgICBbY29udHJvbGxl
ciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOllFU107CkBAIC00NDUsNyArNDQ1LDExIEBA
IFRFU1QoQ29udGVudEZpbHRlcmluZywgTGF6aWx5TG9hZFBsYXRmb3IKICAgICAgICAgW1Rlc3RQ
cm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogICAgICAgICBbW2NvbnRyb2xs
ZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRhbENv
bnRyb2xzTG9hZGVkOk5PXTsKKyNlbHNlCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVu
dGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKKyNlbmRpZgogICAgICAgICBbVGVzdFByb3RvY29sIHVu
cmVnaXN0ZXJdOwogI2VuZGlmCiAgICAgfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJ
bi5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3
ICsyOCw3IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaW1wb3J0ICJDb250
ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCisj
aW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5MDUyNSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0
ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4K
ICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXRFcnJvcnNQ
cml2YXRlLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454487</attachid>
            <date>2022-03-11 08:20:51 -0800</date>
            <delta_ts>2022-03-15 07:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220311082049.patch</filename>
            <type>text/plain</type>
            <size>87830</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNiBA
QCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVuCiB7CiAgICAgQVNTRVJU
KCFoYXZlRmlyZWRMb2FkRXZlbnQoKSk7CiAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUp
OwotCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0Rmls
dGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAg
ICAgbV9tYWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2Um
IHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMz
LDcgKzEzNCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAg
ICBBU1NFUlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJj
ZTsKIH0KLSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlclJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0j
ZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xp
ZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBj
b250ZW50RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7
CiAgICAgICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAm
ZGF0YSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNl
bmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkZpbHRlcmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBk
YXRhLnNpemUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZv
ckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRv
JiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0
YSk7CisgICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkg
ewogICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAg
ICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwog
ICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3
LDE4ICsyMDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYg
cmVzb3VyY2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVm
PENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7
Ci0jZWxzZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVy
aW5nIG1haW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAg
IGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRh
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAh
PSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAg
UmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsK
ICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsK
ICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNo
IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBT
dGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAg
aWYgKGF1dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAg
ZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAg
ICAgfQotI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
U3RvcHBlZCkKQEAgLTI4OSwxMSArMzEzLDExIEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZl
clJlc291cmNlRGF0YSgKIAogVVJMIENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1f
bWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0
dXJuIG1fbWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0g
ICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwog
I2VuZGlmCiB9CkBAIC0zMDcsNyArMzMxLDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVy
JiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsK
ICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIo
KSkgewpAQCAtMzIyLDcgKzM0NSw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZp
bHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vs
c2UKLSAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNl
Jik7CiAjZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJh
d1Jlc291cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJl
c291cmNlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAt
NjcsMTAgKzY2LDkgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0
aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQo
Y29uc3QgVVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAgICAgYm9vbCBjb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIGJvb2wgY29udGlu
dWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0jZW5kaWYKIAogICAgIHN0
YXRpYyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1l
bnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29s
IHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKSBj
b25zdDsKQEAgLTExMiw5ICsxMTAsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVj
dG9yPFJlc291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwog
ICAgIGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIg
eyBudWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAg
UmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
MTAgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0g
ICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFy
ZWRCdWZmZXImLCBzaXplX3QpIHsgfQogI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
c3RhdGljIGJvb2wmIHNob3VsZEZpbHRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVyOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmlsdGVyOwor
fQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRlck1h
cCYgbG9hZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihsb2Fk
ZXJzLnZhbHVlcygpKSkKQEAgLTQxOSw3ICs0MjgsNyBAQCBib29sIERvY3VtZW50TG9hZGVyOjpp
c0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVy
ICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNvdXJj
ZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxOSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5zZXRV
UkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
ICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFt
X2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcgKzkxMSw3IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2VydGlm
aWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRp
b25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmICht
X2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3BvbnNl
UmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIsNyAr
MTMzMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGlu
dWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAg
LTE0NjMsNyArMTQ3Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSgp
CiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVz
b3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVu
dEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDI1LDEw
ICsyMDM0LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgbV9j
b250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZpbHRl
cjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQorICAgIHNob3VsZEZpbHRlcigpID0gdHJ1ZTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIC8vIEFsd2F5cyBmaWx0ZXIgaW4gV0sxCisg
ICAgc2hvdWxkRmlsdGVyKCkgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1l
LT52aWV3KCktPnBsYXRmb3JtV2lkZ2V0KCk7CiAjZW5kaWYKLQorICAgIGlmIChzaG91bGRGaWx0
ZXIoKSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxp
ZCgpID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjZW5kaWYKKyAg
ICAKKyAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgcmUtYXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8g
dGhlIERvY3VtZW50J3MgUmVzb3VyY2VSZXF1ZXN0IHVwb24gcmVsb2FkIGluIGNhc2UgdGhlIGVt
YmVkZGluZwogICAgIC8vIGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0
aGUgcHJldmlvdXMgdXNlciBhZ2VudCB2YWx1ZSBoZXJlIGFuZCBhcHBseWluZyB0aGUgbmV3IHZh
bHVlIGluIENhY2hlZFJlc291cmNlTG9hZGVyLgogICAgIG1fcmVxdWVzdC5jbGVhckhUVFBVc2Vy
QWdlbnQoKTsKQEAgLTIyMzAsNyArMjI0Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFy
TWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21h
aW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAg
bV9tYWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNl
KCk7CiAjZW5kaWYKQEAgLTIzNTcsNyArMjM3Myw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291
cmNlQ2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAj
ZW5kaWYKQEAgLTI0MTQsNyArMjQzMCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVT
ZWN1cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKQEAgLTI0MzQsNyArMjQ1
MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KIHsKICAgICBm
cmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdl
VVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQotI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCkBAIC0yNDY0LDIwICsyNDgw
LDIzIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXIKIAogYm9vbCBE
b2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShl
cnJvcikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChzaG91bGRGaWx0ZXIoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBt
X2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2Nr
ZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1f
Y29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250
ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShlcnJvcik7CisgICAgaWYgKHNob3VsZEZpbHRlcigpKQorICAgICAgICByZXR1cm47
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShtX2Jsb2NrZWRQYWdl
VVJMLCBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3VtZW50TG9hZGVyCiAgICAgOiBwdWJsaWMg
UmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAsIHB1YmxpYyBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQKLSNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAs
IHB1YmxpYyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5kaWYKICAgICAsIHByaXZhdGUgQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgewpAQCAtNDAyLDEzICs0MDIsMTYgQEAgcHVibGljOgogICAgIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRv
UHJvcGFnYXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CisgICAgdm9p
ZCBzZXRCbG9ja2VkUGFnZVVSTChjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tl
ZFBhZ2VVUkwgPSBibG9ja2VkUGFnZVVSTDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFG
cm9tQ29udGVudEZpbHRlcihTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRl
bnRGaWx0ZXIpIHsgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShz
dWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciog
Y29udGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQog
ICAgIHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6
cmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3Vt
ZW50TG9hZGVyPjo6ZGVyZWYoKTsgfQotI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZUVycm9yIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJl
KGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5k
aWYKIAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVy
Q2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKQEAgLTY2
NCwxMyArNjY3LDE0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1
cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZp
bHRlcjsKLSNlbHNlCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNlIH07CiAg
ICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisgICAgVVJM
IG1fYmxvY2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YUZy
b21Db250ZW50RmlsdGVyOworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+IG1fcHJl
dmlld0NvbnZlcnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IGxv
YWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJv
b2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIgPSBtX2Zy
YW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBzaG91bGRD
b250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkocmV2
aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOworT0JKQ19DTEFT
UyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNTIFdlYkZp
bHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAgICAg
dm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVybCkgeyBtX3VucmVhY2hhYmxlVVJM
ID0gdXJsOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tlZEFmdGVyUmVx
dWVzdChib29sKTsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91bmJsb2NrVVJMSG9zdDsKICAg
ICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc0LDkgQEAgcHJpdmF0ZToKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFJldGFpblB0
cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVhdG9yOwogI2VuZGlmCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBOU051
bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwgfTsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxvY2tVUkxIb3N0S2V5IHsg
QCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVucmVhY2hhYmxl
VVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVu
YmxvY2tlZEFmdGVyUmVxdWVzdEtleSB7IEAidW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IiB9OwogCiAj
aWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKIHN0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAid2ViRmlsdGVyRXZhbHVh
dG9yIiB9OwpAQCAtMTAxLDYgKzEwMiwxMCBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVyRXZhbHVhdG9yLmdldCgp
IGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBbY29kZXIgZW5jb2RlT2Jq
ZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RL
ZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTEx
Myw2ICsxMTgsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlCiAj
aWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICB1bmJs
b2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNs
YXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRv
cktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0g
W2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXSBmb3JLZXk6dW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjAsNyArMTI4LDcg
QEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsK
KyAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlciAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qp
IHsKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAg
ICAgICBpZiAoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTUwLDkgKzE1OCwxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
cmVxdWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLQotICAgIGlmIChtX3VuYmxv
Y2tSZXF1ZXN0ZXIpIHsKLSAgICAgICAgbV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRs
ZXJdKGJvb2wgdW5ibG9ja2VkKSB7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJs
b2NrUmVxdWVzdGVyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0KSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJs
b2NrZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6
OkRlY2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlv
bih1bmJsb2NrZWQpOworICAgICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2Nr
UmVxdWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0o
Ym9vbCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9u
SGFuZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVu
YmxvY2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MCw2ICsxNzUsMTEgQEAgdm9pZCBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAordm9pZCBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxv
Y2tlZCkKK3sKKyAgICBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDp1bmJsb2NrZWRdOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7
Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRDbGllbnQoUmVmUHRyPE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9
IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlT
ZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGlu
Z3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+bW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0dGluZ3MpOworfQorCit9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0
aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9u
IDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb250
ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgiCiAj
aW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ0IEBAIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
IE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQoKQog
ewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygpOworICAgIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2Vk
KHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBNb2NrQ29udGVudEZpbHRlcjo6ZW5zdXJlSW5z
dGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7
Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyhj
b25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpCit7CisgICAgbV9ibG9ja2VkU3RyaW5nID0gYmxv
Y2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5v
dGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9p
bnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsKKyAgICBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5n
bGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNp
b24oRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOworICAg
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFu
Z2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24p
Cit7CisgICAgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lv
bjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRp
bmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0
VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOwor
ICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3ND
aGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkocmV2aXNpb24g
MjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldCgpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgpIHsgcmV0dXJuICJtb2NrLXVuYmxvY2siOyB9CiAK
ICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIGludG8gdGhpbmtpbmcgd2UncmUg
UmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9URVNU
U1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogCiAgICAgY29uc3QgU3RyaW5n
JiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAg
dm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmluZykgeyBtX2Js
b2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9F
WFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgRGVjaXNp
b25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9
Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkg
eyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OyB9CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQpOwogCiAgICAg
RGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uOyB9Ci0gICAgdm9p
ZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikgeyBtX2RlY2lzaW9uID0gZGVjaXNpb247
IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERlY2lzaW9uKERlY2lz
aW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJl
dHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KLSAgICB2b2lkIHNldFVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikgeyBtX3VuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9CisgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9u
KTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKyAgICBX
RUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJM
KCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOyB9Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJl
cXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpIHsgbV9tb2RpZmllZFJl
cXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmKTsKKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYpOwogCi1wcml2YXRlOgogICAgIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRlZmF1bHQ7Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWxldGU7CisgICAg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIG9wZXJhdG9yPShj
b25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OworcHJpdmF0ZToKIAog
ICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNp
b25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UgfTsKQEAgLTg3LDQgKzkwLDUz
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOwogfTsKIAordGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7
CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBvaW50KCk7CisgICAgZW5jb2RlciA8PCBkZWNpc2lv
bigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpOworICAgIGVuY29k
ZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAgIGVuY29kZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJM
KCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAg
ZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9p
bnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lvblBvaW50OworICAgIGlmICghZGVjaXNpb25Qb2lu
dCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiBkZWNpc2lvbjsKKyAgICBk
ZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlmICghZGVjaXNpb24pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBkZWNvZGVy
ID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdERlY2lz
aW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRlY29kZXIgPj4gYmxvY2tlZFN0cmluZzsKKyAgICBp
ZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBkZWNvZGVyID4+IG1v
ZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAoIW1vZGlmaWVkUmVxdWVzdFVSTCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0
dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlZCgqZW5hYmxlZCk7CisgICAgc2V0dGluZ3Mu
c2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Qb2ludCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNp
b24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5ncy5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAgICBzZXR0aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdU
Rk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAgICBzZXR0aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RV
UkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0VVJMKSk7CisKKyAgICByZXR1cm4gc2V0dGluZ3M7
Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CisKK2NsYXNzIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9
IDA7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjItMDIt
MjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0
ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdv
cmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9j
a0NvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29u
dGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c3RhcnRPYnNlcnZpbmcpOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6V2ViUmVzb3VyY2VMb2FkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBzdXJlIHRoZXJlIGlzIGEgZGVmYXVsdCBO
ZXR3b3JraW5nIHByb2Nlc3MgdG8gcHJvdmlkZSB0aGUgTGF1bmNoIFNlcnZpY2VzIGRhdGFiYXNl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzcsNiArMTQzNywxMyBAQCBSZWZQdHI8TmV0d29y
a1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNl
TG9hZGVycy50YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iRGF0YUZpbGVSZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdp
c3RyeUltcGw7CitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vz
c1Njb3BlIDogYm9vbDsKQEAgLTE5OCw2ICsxOTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgYnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIHZvaWQgaW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsK
IApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCAr
MTEzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlm
CiAgICAgU2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1v
ZGUpCiAgICAgUHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVySWRlbnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRG
aWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRp
ZgogfQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODcsMTYgKzE4NywxNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQo
KQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9H
KCJzdGFydDogaGFzTmV0d29ya0xvYWRDaGVja2VyPSVkIiwgISFtX25ldHdvcmtMb2FkQ2hlY2tl
cik7CiAKKyAgICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJl
cXVlc3QoKSB9OworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgaWYgKCFzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCkpCisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9j
b25uZWN0aW9uLT5zdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWQoKSk7CiAKICAgICBB
U1NFUlQoIW1fd2FzU3RhcnRlZCk7CiAgICAgbV93YXNTdGFydGVkID0gdHJ1ZTsKIAotICAgIGF1
dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07Ci0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBz
dGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCk7Ci0jZW5kaWYKLQogICAgIGlmIChtX25l
dHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2so
UmVzb3VyY2VSZXF1ZXN0IHsgbmV3UmVxdWVzdCB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCkBAIC0yMzYsMTQgKzIzNywxNSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnQoKQogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJp
bmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAg
aWYgKCFpc01haW5SZXNvdXJjZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3Qo
cmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShyZXF1ZXN0LnVybCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCkBAIC05
MzMsMTEgKzkzNSwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
CiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQogICAgICAgICBpZiAobV9jb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVx
dWVzdC51cmwoKSk7CisgICAgICAgICAgICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJp
bmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJlc291cmNlTG9hZChuZXR3b3JrTG9h
ZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTEwMjgsNyArMTAzMCw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICAgICAgbV9maXJzdFJlc3BvbnNlVVJMID0g
cmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+
Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApAQCAtMTc3MywzMiArMTc3NSwzNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkCiAKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2so
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxl
ciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAgICBpZiAoIXVuYmxvY2tIYW5kbGVy
Lm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxv
Y2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9j
a2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVs
b2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJF
cnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBtX3VuYmxvY2tIYW5kbGVyID0gdW5i
bG9ja0hhbmRsZXI7CisgICAgbV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCA9IHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0OworICAgIAorICAgIGlmICh1bmJsb2NrSGFuZGxlci5uZWVkc1VJ
UHJvY2VzcygpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoZXJyb3IpOworICAgIGVsc2UgeworICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1
ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBlcnJvciwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlz
IH1dKGJvb2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRs
ZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8fCB1
bmJsb2NrZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1ZXN0
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6
OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAgICAgICAg
IH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJy
b3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCiB7Ci0gICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICAgICAg
YXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpOwotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQobV91bmJsb2NrSGFuZGxlciwg
bV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJy
b3IoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2
YXRlUmVsYXllZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTIzOSw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZp
bHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpAQCAtMjg5LDYg
KzI5MCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50Rmls
dGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisgICAgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIG1fdW5ibG9ja0hhbmRsZXI7CisgICAgU3RyaW5nIG1fdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQ7CiAjZW5kaWYKIAogICAgIFByaXZhdGVSZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQg
eyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiAr
OTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCkBAIC04NTUsNiAr
ODU5LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UmUKICAgICA+
OwogfTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
blBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0
ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAgID47Cit9OworI2VuZGlmCisKIHRlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4gewogICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNiArMTk5MCw4IEBACiAJCUUzODY2
QjBBMjM5OUEyRDkwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJRTM4NjZCMEIyMzk5QTJERDAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDYyMzk5OTc5
QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlFMzhBMUZDMDIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVy
ZmFjZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLzsg
fTsKKwkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJG
RTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9Owor
CQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU4
MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9Owog
CQlFMzk2MjhERDIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXIuaCAqLzsgfTsKIAkJRTM5NjI4REUyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovOyB9OwogCQlFM0NBQUE0NDI0MTMyNzk5MDBD
RUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0FBQTQzMjQxMzI3OEEwMENFRDJFMiAvKiBBY2Nl
c3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OwpAQCAtNjQ2Myw2ICs2NDY1LDggQEAKIAkJRTMw
Q0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzEzNjY0RDI2NUVFNUFG
MDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYy
RSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGli
V2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5
bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAw
N0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0
NzUsNiArNjQ3OSw4IEBACiAJCUUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUUzOEExRkJFMjNBNTUxMTQwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjI4RTQyMzk3MUYzNDAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTk0NTcsNiArOTQ2Myw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTQxMzA3NTlFMURFODVFNjUwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCisJCQkJRTM5NTJG
RTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJ
CQkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
ICovLAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZCMDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtOTk3Niw2ICs5OTg0LDgg
QEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQw
OTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJG
NDI3OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZG
MTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUw
MDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKQEAgLTEzMzEyLDYg
KzEzMzIyLDcgQEAKIAkJCQk1MTdCNUY3QzI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgwMjc1RTk3QjYwMDJEQzIy
RCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFRENC
MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBN
b2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRD
MDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2
NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1Njg0LDYgKzE1Njk1LDcgQEAKIAkJCQk5QjQ3OTA5MTI1MzE1NjMyMDBFQzExQUIgLyogTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg0
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0
cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCQThEM0I2MjdB
NUUzM0YwMENCNzkwMCAvKiBNb2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzFDMUIzMEYyNTQwRjUwRDAwRDkxMDBCIC8qIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1h
bmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGlu
Z3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgv
UmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50
NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6
fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzEsNiArNDcxLDcgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbQogICAgIGlmIChsb2FkUGFy
YW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CiAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMg
YmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIs
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2
YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUp
LCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJPUigic2No
ZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNj
aGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBj
cmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTEsMTEgKzM1MSwxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzb3VyCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3Jl
OjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1
bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRG
aWx0ZXIoV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBX
VEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3Jl
OjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYpOwogICAgIHZvaWQg
Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkK
KyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBVUkwgYmxvY2tlZFBhZ2VVUkwsIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQogICAgIENhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAg
ICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9j
a2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDUyNSkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmls
dGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5kIHVzZSB0aGUgbW9kZXJuIEhh
c2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGlu
ZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW06CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbToKKwogMjAyMi0wMy0w
MSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13
ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwgc2V0dXAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtODYs
OSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9TX1NJTkNFXzE1ID0gLWZyYW1ldwogV0tf
VUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU18kKFdL
X1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfbWFjY2F0YWx5c3Qg
PSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdL
X1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFH
U19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9u
ZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNo
b3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRv
ciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoaW5oZXJp
dGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVt
LmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVk
KSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0
QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNv
cmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tf
QVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29y
ayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERG
S0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERG
TEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9S
TV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rl
c3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAt
ZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RT
dXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJW
RVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdv
cmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERG
TEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAk
KFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChXS19XRUJDT1JFX0xERkxBR1MpICQoT1RIRVJf
TERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRG
T1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUg
YW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0lu
LnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRBUEk7CiBQUk9EVUNUX0JVTkRM
RV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVy
KTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsKIFdSQVBQRVJfRVhURU5TSU9OID0gd2ti
dW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlw
dENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQ7CitXS19XRUJDT1JF
X0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKK1dL
X1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09S
RV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09S
RV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFH
U193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCitPVEhFUl9MREZMQUdTID0g
JChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQg
LWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJDT1JFX0xERkxBR1MpOwogTERfUlVOUEFUSF9T
RUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBsb2FkZXJfcGF0aC8uLi8uLi8uLiI7CiBMRF9S
VU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRkZWQqXSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVl
cy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5o
IgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBA
IC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZv
cgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHAiXTsKICAg
ICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vdGVzdCJdXV07CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSNpZiBQTEFURk9STShNQUMp
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xz
TG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29u
dHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0NDUsMTEgQEAgVEVTVChDb250ZW50RmlsdGVy
aW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0
aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtbY29udHJvbGxlciB3ZWJWaWV3XSBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
aHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOwor
I2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZ
RVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgdW5yZWdpc3Rlcl07CiAjZW5kaWYK
ICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCShyZXZpc2lvbiAyOTA1
MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNp
bXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1Bs
dWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0
ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29u
dGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxW
YWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQg
IlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1ByaXZhdGUuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454705</attachid>
            <date>2022-03-15 07:25:52 -0700</date>
            <delta_ts>2022-03-15 08:53:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220315072551.patch</filename>
            <type>text/plain</type>
            <size>89159</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMi0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxl
UmVxdWVzdCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmll
ZFJlcXVlc3RVUkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRC
bG9ja2VkU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorCiAyMDIyLTAyLTI1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmUtYWRkIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudCwgcmVtb3ZlZCBpbiByMjg1MjUyCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUEx
QURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVE
RTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3
MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZG
NkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZG
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1
OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0Uw
N0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBN
b2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICov
OyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8q
IEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0Qg
LyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50
RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07
Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2
QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBN
b2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyog
UHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2
NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAv
KiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIg
LyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMx
QjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVt
cHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4
N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJG
RTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2
RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50Rmls
dGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYy
OEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAw
QjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNj
cmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3
QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIz
OTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21l
bnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1
bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIx
MTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tD
RE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2Nr
Q29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZF
MDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIy
OUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJ
CQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5p
ZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9j
a0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFBy
b3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMzNDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1
REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RN
LmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3
RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEw
IEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0
b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdD
MjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUy
MUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYgQEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAy
Njc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0
ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQy
IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEw
NThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5
IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5
OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFD
MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFk
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpj
X2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNiBA
QCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpkaXNwYXRjaExvYWRFdmVuCiB7CiAgICAgQVNTRVJU
KCFoYXZlRmlyZWRMb2FkRXZlbnQoKSk7CiAgICAgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KHRydWUp
OwotCiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZl
bnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0Rmls
dGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAg
ICAgbV9tYWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29u
dGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2Um
IHJlc291cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMz
LDcgKzEzNCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAg
ICBBU1NFUlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJj
ZTsKIH0KLSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlclJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0j
ZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xp
ZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBA
QCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVh
Y2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBj
b250ZW50RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7
CiAgICAgICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVy
UmVzb3VyY2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAm
ZGF0YSB9LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNl
bmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkZpbHRlcmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0
ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBk
YXRhLnNpemUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZv
ckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRv
JiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0
YSk7CisgICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkg
ewogICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAo
YXV0byogYnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAg
ICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwog
ICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3
LDE4ICsyMDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYg
cmVzb3VyY2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVm
PENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NF
UlRfVU5VU0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7
Ci0jZWxzZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVy
aW5nIG1haW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAg
IGNvbnRlbnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRl
ID0gU3RhdGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRh
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAh
PSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAg
UmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsK
ICAgICBpZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsK
ICAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNo
IGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBT
dGF0ZTo6QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
ICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAg
aWYgKGF1dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAg
ZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAg
ICAgfQotI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
U3RvcHBlZCkKQEAgLTI3OSwyMSArMzAzLDE2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVj
aWRlKFN0YXRlIHN0YXQKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewog
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY2xpZW50LmRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fY2xpZW50LmRh
dGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZlcik7Ci0jZW5kaWYKIH0KIAogVVJM
IENvbnRlbnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJlc291cmNlKQorICAgICAg
ICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlVVJM
OwogI2Vsc2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBtX21haW5S
ZXNvdXJjZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlmCiB9CkBAIC0zMDcsNyAr
MzI2LDYgQEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBi
bG9ja2VkUGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3Rp
dHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0
IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50
RmlsdGVyID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMzIyLDcgKzM0MCw2
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVy
biB0cnVlOwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0Rmls
dGVyaW5nTWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAgICB2b2lkIHN0YXJ0Rmls
dGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAjZW5kaWYKKyAgICB2b2lk
IHN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTYgKzY2LDE2IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBT
aGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VV
UkwpOwotI2Vsc2UKKyNlbmRpZgogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFm
dGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2Fk
ZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvY2tlZEVycm9yOyB9CisgICAgdm9pZCBzZXRCbG9ja2VkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIHsgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsgfQogICAgIGJv
b2wgaXNBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZDsg
fQogICAgIGJvb2wgcmVzcG9uc2VSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VS
ZWNlaXZlZDsgfQogICAgIApAQCAtMTEyLDkgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAg
ICAKICAgICBWZWN0b3I8UmVzb3VyY2VEYXRhSXRlbT4gbV9idWZmZXJzOwotI2Vsc2UKLSAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CiAj
ZW5kaWYKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWlu
UmVzb3VyY2U7CiAgICAgY29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29u
dGVudEZpbHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3Bw
ZWQgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShyZXZpc2lvbiAyOTA1MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MiwxMSArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXIm
LCBzaXplX3QpID0gMDsKLSNlbHNlCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKLSNlbmRpZgogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgU3Vic3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
c3RhdGljIGJvb2wmIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkKK3sKKyAgICBzdGF0
aWMgYm9vbCBmaWx0ZXI7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IHJldHVybiBmaWx0ZXI7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgY2FuY2VsQWxsKGNvbnN0
IFJlc291cmNlTG9hZGVyTWFwJiBsb2FkZXJzKQogewogICAgIGZvciAoYXV0byYgbG9hZGVyIDog
Y29weVRvVmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQpAQCAtNDE5LDcgKzQyOCw3IEBAIGJvb2wg
RG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlm
eUZpbmlzaGVkKHJlc291cmNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC03MTAsNyAr
NzE5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAg
ICBuZXdSZXF1ZXN0LnNldFVSTChXVEZNb3ZlKHVybCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVx
dWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogI2VuZGlmCkBAIC05MDIsNyArOTEx
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VS
VChyZXNwb25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxs
aW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250
aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgpAQCAtMTMyMiw3ICsxMzMxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgpAQCAtMTQ2Myw3ICsxNDcyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
ZGV0YWNoRnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNv
dXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWlu
UmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikK
ICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAj
ZW5kaWYKQEAgLTIwMjUsMTAgKzIwMzQsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRM
b2FkaW5nTWFpblJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKLSAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSA9
IHRydWU7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICAvLyBBbHdheXMgZmlsdGVyIGluIFdLMQorICAgIGNvbnRlbnRGaWx0ZXJJbkRvY3Vt
ZW50TG9hZGVyKCkgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT52aWV3
KCktPnBsYXRmb3JtV2lkZ2V0KCk7CiAjZW5kaWYKLQorICAgIGlmIChjb250ZW50RmlsdGVySW5E
b2N1bWVudExvYWRlcigpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRl
RGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsK
KyNlbmRpZgorICAgIAorICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSByZS1hcHBseSB0aGUgdXNl
ciBhZ2VudCB0byB0aGUgRG9jdW1lbnQncyBSZXNvdXJjZVJlcXVlc3QgdXBvbiByZWxvYWQgaW4g
Y2FzZSB0aGUgZW1iZWRkaW5nCiAgICAgLy8gYXBwbGljYXRpb24gaGFzIGNoYW5nZWQgaXQsIGJ5
IGNsZWFyaW5nIHRoZSBwcmV2aW91cyB1c2VyIGFnZW50IHZhbHVlIGhlcmUgYW5kIGFwcGx5aW5n
IHRoZSBuZXcgdmFsdWUgaW4gQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCiAgICAgbV9yZXF1ZXN0LmNs
ZWFySFRUUFVzZXJBZ2VudCgpOwpAQCAtMjIzMCw3ICsyMjQ2LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6Y2xlYXJNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMp
KQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAo
bV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdN
YWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjM1Nyw3ICsyMzczLDcgQEAgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBEb2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNv
bWVNYWluUmVzb3VyY2VDbGllbnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJl
c291cmNlKTsKICNlbmRpZgpAQCAtMjQxNCw4ICsyNDMwLDggQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6ZW5xdWV1ZVNlY3VyaXR5UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVT
ZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
VGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCkK
IHsKICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KQEAgLTI0MzQsNyArMjQ1MCw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KIHsKICAgICBmcmFtZUxvYWRl
cigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJz
dGl0dXRlRGF0YSkpOwogfQotI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYg
Ly8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRp
ZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5n
JiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCkBAIC0yNDY0LDIwICsyNDgwLDIzIEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXIKIAogYm9vbCBEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgbV9j
b250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRl
cigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250ZW50Rmls
dGVyICYmIG1fYmxvY2tlZEVycm9yLmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29kZSgpICYm
IG1fYmxvY2tlZEVycm9yLmRvbWFpbigpID09IGVycm9yLmRvbWFpbigpOwotI2Vsc2UKLSAgICBy
ZXR1cm4gbV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNlCiAgICAgaWYg
KG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRM
b2FkZXIoKSkKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUobV9ibG9ja2VkUGFnZVVSTCwgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50
RmlsdGVyKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuaAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1
bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAg
LCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNl
Y3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2Vu
ZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQwMiwxMyAr
NDAyLDE2IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVy
UHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYpOworICAgIHZvaWQgc2V0QmxvY2tlZFBhZ2VVUkwoY29uc3QgVVJMJiBi
bG9ja2VkUGFnZVVSTCkgeyBtX2Jsb2NrZWRQYWdlVVJMID0gYmxvY2tlZFBhZ2VVUkw7IH0KKyAg
ICB2b2lkIHNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoU3Vic3RpdHV0ZURhdGEm
JiBzdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKSB7IG1fc3Vic3RpdHV0ZURhdGFGcm9t
Q29udGVudEZpbHRlciA9IFdURk1vdmUoc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcik7
IH0KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVm
Q291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0
IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KLSNlbmRpZgor
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlk
QmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50Rmls
dGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25z
dCBTdWJzdGl0dXRlRGF0YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmco
KTsKQEAgLTUxMiw5ICs1MTUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmlu
YWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CkBAIC02NjQsMTMgKzY2
NywxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7Ci0j
ZWxzZQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OwogICAgIFJlc291
cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7Ci0jZW5kaWYKLSNlbmRpZgorICAgIFVSTCBtX2Jsb2Nr
ZWRQYWdlVVJMOworICAgIFN1YnN0aXR1dGVEYXRhIG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVu
dEZpbHRlcjsKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2lmIFVT
RShRVUlDS19MT09LKQogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX3ByZXZpZXdDb252
ZXJ0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xp
Y3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBsb2FkZXItPnN1
YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhc3Vi
c3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBib29sIHNob3Vs
ZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0gbV9mcmFtZS5sb2Fk
ZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUg
PSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KCpsb2Fk
ZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5
MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1i
ZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFs
dWF0b3I7CkBAIC02NCw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hh
YmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0
VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsg
fQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9v
bCk7CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1f
dW5yZWFjaGFibGVVUkw7CkBAIC03MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJF
TlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmls
dGVyRXZhbHVhdG9yPiBtX3dlYkZpbHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1f
dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBA
QAogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9j
a1VSTEhvc3QiIH07CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7
IEAidW5yZWFjaGFibGVVUkwiIH07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRB
ZnRlclJlcXVlc3RLZXkgeyBAInVuYmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCB3ZWJGaWx0ZXJFdmFsdWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsK
QEAgLTEwMSw2ICsxMDIsMTAgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVu
Y29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAg
ICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6
d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNl
bmRpZgorCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4
LDkgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUo
UEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRs
ZXIubV93ZWJGaWx0ZXJFdmFsdWF0b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRX
ZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwog
I2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyAgICB1bmJsb2NrSGFuZGxlci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOltOU051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVy
UmVxdWVzdEtleV07CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCw3IEBAIGJvb2wg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKIAogYm9vbCBDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgaWYg
KCFtX3VuYmxvY2tSZXF1ZXN0ZXIgJiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYg
SEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYg
KCFtX3dlYkZpbHRlckV2YWx1YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1
MCw5ICsxNTgsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0KLSAgICBpZiAobV91bmJsb2NrUmVxdWVz
dGVyKSB7Ci0gICAgICAgIG1fdW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29s
IHVuYmxvY2tlZCkgeworICAgIGF1dG8gdW5ibG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVl
c3RlcjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIGlmICghdW5ibG9ja1JlcXVlc3RlciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkg
eworICAgICAgICB1bmJsb2NrUmVxdWVzdGVyID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0
ZXJSZXF1ZXN0LmJvb2xWYWx1ZV0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lv
bkhhbmRsZXJGdW5jdGlvbiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9j
a2VkKTsKKyAgICAgICAgfTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3Rl
cikgeworICAgICAgICB1bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5i
bG9ja2VkKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIs
IHVuYmxvY2tlZF0gewogICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQp
OwogICAgICAgICAgICAgfSk7CkBAIC0xNjAsNiArMTc1LDExIEBAIHZvaWQgQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICB9CiB9CiAKK3ZvaWQgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7
CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
dW5ibG9ja2VkXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2
b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7
Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3ND
aGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25z
dAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90
aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0Ns
aWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRl
ci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUg
Ik1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ0LDEyICs0NSw0NCBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29u
dGVudEZpCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBz
aW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChi
b29sIGVuYWJsZWQpCiB7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgp
OwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2
b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBibG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJp
bmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0
aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQorewor
ICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lz
aW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5n
bGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9j
a1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAg
IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5n
ZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNl
dE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sK
KyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChz
aW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VC
Q09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mm
IHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNU
U1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8g
VHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50
ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tl
ZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0
QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3Ry
aW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZv
aWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQg
ZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZv
aWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNp
c2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9u
IGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVj
aXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAK
ICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91
bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lz
aW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERl
Y2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAg
ICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0
OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVy
biBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJM
KGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJM
ID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQg
dm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mo
Y29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVm
YXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29s
IG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQg
eyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1MyBAQCBwcml2
YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVu
Y29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAg
ICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJs
b2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIg
Pj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAg
IGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+
PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJs
b2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxv
Y2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9j
a2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJl
cXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOwor
ICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lz
aW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNp
c2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1Jl
cXVlc3REZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpi
bG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1v
dmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsK
KworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAyLTI1ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWls
dXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIx
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50
RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNp
b25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0
ZXJVbmJsb2NrTmF2aWdhdGlvbik6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpz
aW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0
YXJ0T2JzZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Ojptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OldlYlJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXpl
V2ViUHJvY2Vzcyk6CisKIDIwMjItMDItMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGRlZmF1bHQgTmV0d29ya2lu
ZyBwcm9jZXNzIHRvIHByb3ZpZGUgdGhlIExhdW5jaCBTZXJ2aWNlcyBkYXRhYmFzZQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDM3LDYgKzE0MzcsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcj4gTmV0d29ya0NvbgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMu
dGFrZShyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYmIHNldHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNpbmdsZXRvbigpID0gV1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBs
OworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6
IGJvb2w7CkBAIC0xOTgsNiArMTk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENv
bnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFr
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIp
OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICB2b2lkIGluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzJiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNl
dFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAg
IFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3
LDE2ICsxODcsMTcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnQ6
IGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCIsICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisg
ICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkg
fTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIGlmICghc3RhcnRDb250ZW50RmlsdGVyaW5nKG5ld1JlcXVlc3QpKQorICAgICAgICByZXR1
cm47CisjZW5kaWYKKwogICAgIG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlciA9IG1fY29ubmVjdGlv
bi0+c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluRnJhbWVMb2FkKCkpOwogCiAgICAgQVNTRVJUKCFt
X3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3RhcnRlZCA9IHRydWU7CiAKLSAgICBhdXRvIG5ld1Jl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OwotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgc3RhcnRDb250
ZW50RmlsdGVyaW5nKG5ld1JlcXVlc3QpOwotI2VuZGlmCi0KICAgICBpZiAobV9uZXR3b3JrTG9h
ZENoZWNrZXIpIHsKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNl
UmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpA
QCAtMjM2LDE0ICsyMzcsMTcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkK
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENv
bnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghaXNN
YWluUmVzb3VyY2UoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlm
ICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3Qs
IFJlc291cmNlUmVzcG9uc2UoKSkpCi0gICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworICAgIGlmICgh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UoKSkpIHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVy
aW5nTWFpblJlc291cmNlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAtOTMzLDExICs5MzcsMTEgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29udGVu
dEZpbHRlcikgewotICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90
aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgaWYg
KCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRl
cnMucmVxdWVzdC51cmwoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
bV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0K
ICNlbmRpZgotCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRG
aW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDI4
LDcgKzEwMzIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAg
ICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxT
ZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb250ZW50
RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3Qo
cmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAKQEAgLTE3NzMsMzIgKzE3NzcsMzggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAg
IHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJs
b2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9u
LT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRl
cihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2Vi
S2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOwor
CisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVuYmxvY2tIYW5kbGVyOworICAgIG1fdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKKyAgICAKKyAg
ICBpZiAodW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkKKyAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tl
ZCk7CisKKyAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAg
aWYgKG1fd2FzU3RhcnRlZCB8fCB1bmJsb2NrZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9
IG1fcGFyYW1ldGVycy5yZXF1ZXN0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAg
IGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0
KTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+c2V0QmxvY2tlZEVycm9yKGVycm9yKTsK
KyAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2Vk
QnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBl
cnJvcjsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJj
ZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0gICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQo
KSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3Rp
dHV0ZURhdGEpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50
RmlsdGVyKTsKLSAgICAgICAgYXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRF
cnJvcigpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
bV91bmJsb2NrSGFuZGxlciwgbV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgbV9jb250ZW50
RmlsdGVyLT5ibG9ja2VkRXJyb3IoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7
CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJQcml2YXRlUmVsYXllZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVu
dEZpbHRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTIzOSw3ICsyNDAsNyBA
QCBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2
b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAg
ICBib29sIHN0YXJ0Q29udGVudEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICNlbmRpZgogCiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwpAQCAtMjg5LDYgKzI5MCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisgICAgV2ViQ29yZTo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIG1fdW5ibG9ja0hhbmRsZXI7CisgICAgU3RyaW5nIG1f
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQ7CiAjZW5kaWYKIAogICAgIFByaXZhdGVSZWxheWVk
IG1fcHJpdmF0ZVJlbGF5ZWQgeyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNiArOTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIu
aD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4K
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnND
Ri5oIgogCkBAIC04NTUsNiArODU5LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6UmUKICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0
ZXJSZWRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZp
bmlzaGVkQWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
bj4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAgID47Cit9Owor
I2VuZGlmCisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlF
dmVudD4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6
OkF1dG9wbGF5RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNiAr
MTk5MCw4IEBACiAJCUUzODY2QjBBMjM5OUEyRDkwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJRTM4NjZCMEIyMzk5
QTJERDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4NjZCMDYyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQlFMzhBMUZDMDIzQTU1MUJGMDBE
MjM3NEYgLyogVXNlckludGVyZmFjZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRl
cmZhY2VJZGlvbS5tbSAqLzsgfTsKKwkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oICovOyB9OworCQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwICovOyB9OwogCQlFMzk2MjhERDIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLzsgfTsKIAkJRTM5NjI4REUyMzk2MENDNjAwNjU4
RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REMyMzk2MENDNjAwNjU4
RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovOyB9OwogCQlF
M0NBQUE0NDI0MTMyNzk5MDBDRUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0FBQTQzMjQxMzI3
OEEwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OwpAQCAtNjQ2Myw2
ICs2NDY1LDggQEAKIAkJRTMwQ0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2I7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQlFMzEzNjY0RDI2NUVFNUFGMDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAw
MTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIx
MTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
RTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3
MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY0NzUsNiArNjQ3OSw4IEBACiAJCUUzODY2QjA3MjM5OTk3OUQwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCUUzOEExRkJFMjNBNTUxMTQwMEQyMzc0RiAvKiBVc2VySW50ZXJm
YWNlSWRpb20uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50
ZXJmYWNlSWRpb20ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU4
MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzk2MjhEQzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM5NjI4RTQyMzk3MUYzNDAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NTcsNiArOTQ2Myw4IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxMzA3NTlFMURFODVFNjUwMDM5RUM2OSAvKiB3ZWJy
dGMgKi8sCisJCQkJRTM5NTJGRTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5jcHAgKi8sCisJCQkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oICovLAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYyRjdBN0EwMEUy
NzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZCMDkwMjE2M0Ez
QjFDMDBFQzMyNEEgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApA
QCAtOTk3Niw2ICs5OTg0LDggQEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1l
d29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUz
NEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJ
CQkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
YiAqLywKIAkJCQlEREU5OTJGNDI3OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25z
LmEgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJ
CTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29y
ayAqLywKQEAgLTEzMzEyLDYgKzEzMzIyLDcgQEAKIAkJCQk1MTdCNUY3QzI3NUU5N0I2MDAyREMy
MkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1
RjgwMjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3RENFRENCMjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0
RjE4MzAwMDE2Qjg0NyAvKiBNb2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1N0RDRURDMzIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdCODI2NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE1Njg0LDYgKzE1Njk1LDcgQEAKIAkJCQk5QjQ3OTA5MTI1MzE1
NjMyMDBFQzExQUIgLyogTWVzc2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0I1Rjg0Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVz
dGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJEQzIyRCAvKiBN
b2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFOTI3QzZC
ODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUVCQThEM0I2MjdBNUUzM0YwMENCNzkwMCAvKiBNb2NrUHVzaFNlcnZpY2VDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5l
YXJGaWVsZFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFDMUIzMEYyNTQwRjUwRDAw
RDkxMDBCIC8qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50
RmlsdGVyTWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFn
ZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAo
YXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0Nv
bnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIm
IHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8v
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNp
bmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVM
RUFTRV9MT0cKICNkZWZpbmUgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBt
X3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAg
LTM0MSw2ICszNDUsMTAgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAg
IEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYK
IH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVt
b3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxl
bWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlm
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9J
RApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NzEsNiArNDcxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bQogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAg
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhj
aGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0
ZDo6bnVsbG9wdCk7CiAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxl
TG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVz
dW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOworCiAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxl
UmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxF
QVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ug
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4o
cmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJv
YmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkw
NTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTEgKzM1MSwxNCBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8
ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQ
YWdlVVJMKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1
dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Cisg
ICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2Fk
KGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw3
ICsxMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
IGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdh
Y3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBVUkwg
YmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQog
ICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vi
c3RpdHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4g
IDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVu
YWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKToKKwogMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KCkgYW5k
IHVzZSB0aGUgbW9kZXJuIEhhc2hlciBpbnN0ZWFkCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA2NjEpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0wMSAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFp
bHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcy
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVn
SW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmlu
Zy5tbToKKwogMjAyMi0wMy0wMSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2dpdC13ZWJraXRdIEdhdGUgaW5mb3JtYXRpb24gVVJMIG9uIGluaXRpYWwg
c2V0dXAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktp
dEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkod29y
a2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9TX1NJTkNF
XzE1ID0gLWZyYW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlLSVRNQUNI
RUxQRVJfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVMUEVSX0xE
RkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitXS19XRUJD
T1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsK
K1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VC
Q09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VC
Q09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERG
TEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhFUl9DUExVU1BM
VVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RIRVJfTERG
TEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3
b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFtZXdv
cmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhLSVRf
TERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BFTkdM
X0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQoV0tf
VUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQoT1RI
RVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZMQUdTID0g
JChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xp
YlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2Vi
S2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1
cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdT
KSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFH
UykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1B
Q0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChXS19XRUJDT1JF
X0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBP
VEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJi
b247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFk
IHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4u
eGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRlc3RXZWJLaXRB
UEk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJPRFVDVF9OQU1F
OnJmYzEwMzRpZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsKIFdSQVBQ
RVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1m
cmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1
cHBvcnQ7CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BM
QVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsg
V2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsg
V2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUK
K1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
CitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUg
LWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJDT1JFX0xERkxB
R1MpOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBsb2FkZXJfcGF0
aC8uLi8uLi8uLiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRkZWQqXSA9ICJA
bG9hZGVyX3BhdGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9ydCAiRGVw
cmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5oIgotI2lt
cG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CkBAIC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5n
LCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNj
aGVtZTpAImh0dHAiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
Oi8vdGVzdCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJvbGxlciBleHBl
Y3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtjb250cm9sbGVy
IGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0NDUsMTEgQEAg
VEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFBy
b3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtbY29udHJvbGxl
ciB3ZWJWaWV3XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29u
dHJvbHNMb2FkZWQ6Tk9dOworI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50
YWxDb250cm9sc0xvYWRlZDpZRVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgdW5y
ZWdpc3Rlcl07CiAjZW5kaWYKICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0lu
Lm1tCShyZXZpc2lvbiAyOTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcg
KzI4LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQgIkNvbnRl
bnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkwNTI1KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQg
IkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJv
dG9jb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVycm9yc1By
aXZhdGUuaD4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454712</attachid>
            <date>2022-03-15 08:53:55 -0700</date>
            <delta_ts>2022-03-16 09:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220315085354.patch</filename>
            <type>text/plain</type>
            <size>87625</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIyLTAyLTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJs
aW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaDoKKwogMjAyMi0wMi0yNSAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1hDQnVpbGRdIEFkZCBtaXNzaW5nIGhlYWRlciBidWlsZCBydWxlIGZvciBT
Y3JpcHRzL1ByZWZlcmVuY2VzLyoKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
Q29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29h
LmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlQ29j
b2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxMCBAQAogI2RlZmluZSBFTkFCTEVf
Q09OVEVOVF9GSUxURVJJTkcgMQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9DT05URU5U
X0ZJTFRFUklORykgJiYgRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HCisjZGVmaW5lIEVOQUJMRV9D
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfQ09OVEVYVF9NRU5VUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgRU5BQkxFX0NPTlRFWFRfTUVOVVMgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyOTEyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw3MiBAQAorMjAyMi0wMy0xNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGNvdmVyZWQgYnkgZXhp
c3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjp1cmwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCk6Cisg
ICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OnNldEJsb2NrZWRFcnJvcik6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6ZGV0YWNoRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dGFydExvYWRpbmdNYWluUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmNsZWFyTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
OjpiZWNvbWVNYWluUmVzb3VyY2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRCbG9ja2Vk
UGFnZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0U3Vic3RpdHV0
ZURhdGFGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNr
TmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXN0VW5ibG9ja0FzeW5jIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6c2V0VW5i
bG9ja2VkQWZ0ZXJSZXF1ZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQgY29uc3QpOgorICAgICAgICAqIHRlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1v
ZGlmaWVkUmVxdWVzdFVSTCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldEJsb2NrZWRTdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2Nr
UmVxdWVzdERlY2lzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTCk6IERlbGV0ZWQuCisgICAgICAg
ICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudDo6fk1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQpOgorCiAyMDIyLTAzLTE1ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDU1NDb25kaXRpb25SdWxlLmNvbmRpdGlvblRl
eHQgc2hvdWxkIGJlIHJlYWRvbmx5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTM0MDYsOCArMzQwNiw2IEBACiAJCUExQURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2
aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVy
UHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9y
LmggKi87IH07CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAq
LzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3Bw
ICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5
QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAv
KiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9y
Q29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVs
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
QkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0Uw
N0QgLyogTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQxNSw4ICszNDEzLDYgQEAKIAkJ
QTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYy
MTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9Owog
CQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIz
ODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIx
NTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyog
SlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlB
MUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJD
OThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1l
bnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9Owog
CQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAw
QTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAgLTUyOTYsNiArNTI5MiwxMyBA
QAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2
RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0
RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5v
ZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJE
MDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUy
RkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYx
MzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5
NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRG
aWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3
RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1
NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUw
MDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAw
NjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25N
YW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURD
ODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzcwLDYgKzE3MzczLDkgQEAKIAkJRTM4
ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2Ny
aXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFG
OEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdD
NkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdl
ckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2Vy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkw
MDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTc0LDkgKzIxMTgwLDEyIEBACiAJCQkJQ0RGNEI3
MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4
MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2
QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAor
CQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1
OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4
MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2Nzky
NTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDExLDggKzMz
NDIwLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUg
LyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThD
Q0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4
MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAot
CQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xp
YldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVD
QjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3
RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTM2MzkxLDYgKzM2Mzk4LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAz
QkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdD
NkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBh
ZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEg
LyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzM0LDggKzM4NzQ1LDYg
QEAKIAkJCQlDREMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5
U2V0dXBGZWF0dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUy
MzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFB
QTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAv
KiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUz
QUI2NzkwMEFDOUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zODgyMyw2ICszODgzMiw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEw
RUVGIC8qIE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4
QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUy
N0M2REYxNDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkg
LyogTmF2aWdhdG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2Mjcw
MEZBNUMyRSAvKiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5
RDEzMEQ3RTJCODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMiw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5n
TWFpblJlCiAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9t
YWluUmVzb3VyY2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZp
bHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291
cmNlKQogewogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEz
NCw2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQoIW1fbWFpblJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0K
LSNlbmRpZgogCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2Uo
KQogewpAQCAtMTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
clJlc3BvbnMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQot
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250
ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50
RmlsdGVyKSB7CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAg
ICAgIH0pOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBtX2J1ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9
LCBlbmNvZGVkRGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgor
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0
ZWRDbGllbnQgeyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRl
cmluZykgeworICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVj
ZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNp
emUoKSwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hD
b250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250
ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7Cisg
ICAgICAgIH0pOwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byog
YnVmZmVyID0gbV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAg
ICAgZGVsaXZlclJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAg
ICB9Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsy
MDgsMzUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpCi0jZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxz
ZQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1h
aW4gcmVzb3VyY2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRl
bnRGaWx0ZXIuZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlm
IChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3Rh
dGU6OkFsbG93ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENv
bnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNT
RVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBp
ZiAobV9tYWluUmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0jZW5kaWYKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAg
ICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRl
cmluZyBtYWluIHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6
QmxvY2tlZCkgewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAg
ICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0g
RGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQot
I2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBl
ZCkKQEAgLTI3OSwyMSArMzAzLDE2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0
YXRlIHN0YXQKIHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fY2xpZW50LmRhdGFSZWNl
aXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGJ1ZmZlcik7Ci0jZW5kaWYKIH0KIAogVVJMIENvbnRl
bnRGaWx0ZXI6OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJlc291cmNlKQorICAgICAgICByZXR1
cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlVVJMOwogI2Vs
c2UKLSAgICBpZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBtX21haW5SZXNvdXJj
ZS0+dXJsKCk7CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlmCiB9CkBAIC0zMDcsNyArMzI2LDYg
QEAgc3RhdGljIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBibG9ja2Vk
UGFnZVVSTDsKIH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURh
dGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVy
ID0gYWN0aXZlTG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMzIyLDcgKzM0MCw2IEBAIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVybiB0cnVl
OwogfQotI2VuZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDkgKzU3LDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAgICB2b2lkIHN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAjZW5kaWYKKyAgICB2b2lkIHN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTYgKzY2LDE2IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRC
dWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOwot
I2Vsc2UKKyNlbmRpZgogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vi
c3RpdHV0ZURhdGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2tlZEVycm9yOyB9CisgICAgdm9pZCBzZXRCbG9ja2VkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpIHsgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsgfQogICAgIGJvb2wgaXNB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZDsgfQogICAg
IGJvb2wgcmVzcG9uc2VSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VSZWNlaXZl
ZDsgfQogICAgIApAQCAtMTEyLDkgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAg
ICBWZWN0b3I8UmVzb3VyY2VEYXRhSXRlbT4gbV9idWZmZXJzOwotI2Vsc2UKLSAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CiAjZW5kaWYK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3Vy
Y2U7CiAgICAgY29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZp
bHRlciB7IG51bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsK
ICAgICBSZXNvdXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MiwxMSArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXpl
X3QpID0gMDsKLSNlbHNlCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKLSNlbmRpZgogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBS
ZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vi
c3RpdHV0ZURhdGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorc3RhdGlj
IGJvb2wmIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBmaWx0ZXI7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVy
biBmaWx0ZXI7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgY2FuY2VsQWxsKGNvbnN0IFJlc291
cmNlTG9hZGVyTWFwJiBsb2FkZXJzKQogewogICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRv
VmVjdG9yKGxvYWRlcnMudmFsdWVzKCkpKQpAQCAtNDE5LDcgKzQyOCw3IEBAIGJvb2wgRG9jdW1l
bnRMb2FkZXI6OmlzTG9hZGluZygpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbWV0cmljcykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKHJlc291cmNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC03MTAsNyArNzE5LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdS
ZXF1ZXN0LnNldFVSTChXVEZNb3ZlKHVybCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChu
ZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogI2VuZGlmCkBAIC05MDIsNyArOTExLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNw
b25zZS5jZXJ0aWZpY2F0ZUluZm8oKSk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2Nv
cGUgY29tcGxldGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyUmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpA
QCAtMTMyMiw3ICsxMzMxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgpAQCAtMTQ2Myw3ICsxNDcyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNo
RnJvbUZyYW1lKCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAm
JiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3Vy
Y2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYK
QEAgLTIwMjUsMTAgKzIwMzQsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5n
TWFpblJlcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKLSAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBD
b250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSA9IHRydWU7
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICAvLyBBbHdheXMgZmlsdGVyIGluIFdLMQorICAgIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9h
ZGVyKCkgPSBtX2ZyYW1lICYmIG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT52aWV3KCktPnBs
YXRmb3JtV2lkZ2V0KCk7CiAjZW5kaWYKLQorICAgIGlmIChjb250ZW50RmlsdGVySW5Eb2N1bWVu
dExvYWRlcigpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkgPyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKKyNlbmRp
ZgorICAgIAorICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSByZS1hcHBseSB0aGUgdXNlciBhZ2Vu
dCB0byB0aGUgRG9jdW1lbnQncyBSZXNvdXJjZVJlcXVlc3QgdXBvbiByZWxvYWQgaW4gY2FzZSB0
aGUgZW1iZWRkaW5nCiAgICAgLy8gYXBwbGljYXRpb24gaGFzIGNoYW5nZWQgaXQsIGJ5IGNsZWFy
aW5nIHRoZSBwcmV2aW91cyB1c2VyIGFnZW50IHZhbHVlIGhlcmUgYW5kIGFwcGx5aW5nIHRoZSBu
ZXcgdmFsdWUgaW4gQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCiAgICAgbV9yZXF1ZXN0LmNsZWFySFRU
UFVzZXJBZ2VudCgpOwpAQCAtMjIzMCw3ICsyMjQ2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y2xlYXJNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAg
ICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250
ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoKTsKICNlbmRpZgpAQCAtMjM1Nyw3ICsyMzczLDcgQEAgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBEb2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVNYWlu
UmVzb3VyY2VDbGllbnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1f
Y29udGVudEZpbHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJlc291cmNl
KTsKICNlbmRpZgpAQCAtMjQxNCw4ICsyNDMwLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5x
dWV1ZVNlY3VyaXR5UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCkKIHsKICAg
ICBkYXRhUmVjZWl2ZWQoYnVmZmVyKTsKIH0KQEAgLTI0MzQsNyArMjQ1MCw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KIHsKICAgICBmcmFtZUxvYWRlcigpLT5s
b2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRl
RGF0YSkpOwogfQotI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
UmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5i
bG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCkBAIC0yNDY0LDIwICsyNDgwLDIzIEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXIKIAogYm9vbCBEb2N1bWVudExvYWRlcjo6
Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogeworICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgbV9jb250ZW50
RmlsdGVyLT53aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcikpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIGlmIChjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICByZXR1cm4gbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyICYm
IG1fYmxvY2tlZEVycm9yLmVycm9yQ29kZSgpID09IGVycm9yLmVycm9yQ29kZSgpICYmIG1fYmxv
Y2tlZEVycm9yLmRvbWFpbigpID09IGVycm9yLmRvbWFpbigpOwotI2Vsc2UKLSAgICByZXR1cm4g
bV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoZXJyb3IpOwogI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKLSNlbHNlCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIo
KSkKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisgICAgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUobV9ibG9ja2VkUGFnZVVSTCwgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVy
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1bWVudExv
YWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJs
aWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5
UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCiAgICAgLCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAg
ICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQwMiwxMyArNDAyLDE2
IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYpOworICAgIHZvaWQgc2V0QmxvY2tlZFBhZ2VVUkwoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCkgeyBtX2Jsb2NrZWRQYWdlVVJMID0gYmxvY2tlZFBhZ2VVUkw7IH0KKyAgICB2b2lk
IHNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoU3Vic3RpdHV0ZURhdGEmJiBzdWJz
dGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKSB7IG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVu
dEZpbHRlciA9IFdURk1vdmUoc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcik7IH0KKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
ICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRl
ZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFs
IHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OmRlcmVmKCk7IH0KLSNlbmRpZgorCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKQEAg
LTUxMiw5ICs1MTUsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0j
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAg
ICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJl
Y2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJl
c291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7CkBAIC02NjQsMTMgKzY2NywxNCBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1f
Y29udGVudFNlY3VyaXR5UG9saWN5OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQot
I2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7Ci0jZWxzZQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
Ym9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIgeyBmYWxzZSB9OwogICAgIFJlc291cmNlRXJy
b3IgbV9ibG9ja2VkRXJyb3I7Ci0jZW5kaWYKLSNlbmRpZgorICAgIFVSTCBtX2Jsb2NrZWRQYWdl
VVJMOworICAgIFN1YnN0aXR1dGVEYXRhIG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRl
cjsKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2lmIFVTRShRVUlD
S19MT09LKQogICAgIFJlZlB0cjxQcmV2aWV3Q29udmVydGVyPiBtX3ByZXZpZXdDb252ZXJ0ZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVj
a2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1
dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSAmJiAhc3Vic3RpdHV0
ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkgewogICAgICAgICBib29sIHNob3VsZENvbnRp
bnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICAgICAgaWYgKGF1dG8gbG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KCpsb2FkZXIsIHN1
YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHJldmlzaW9uIDI5MDUyNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNDb2RlcjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7
CkBAIC02NCw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFj
aGFibGVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCk7CisK
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFj
aGFibGVVUkw7CkBAIC03MSw2ICs3NCw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9D
T05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZh
bHVhdG9yPiBtX3dlYkZpbHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogCiBz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhv
c3QiIH07CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5y
ZWFjaGFibGVVUkwiIH07CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJl
cXVlc3RLZXkgeyBAInVuYmxvY2tlZEFmdGVyUmVxdWVzdCIgfTsKIAogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCB3ZWJGaWx0ZXJFdmFsdWF0b3JLZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEw
MSw2ICsxMDIsMTAgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQog
I2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2Nv
ZGVyIGVuY29kZU9iamVjdDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmls
dGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tl
ZEFmdGVyUmVxdWVzdCBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgor
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTE4LDkgQEAg
Ym9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5U
QUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93
ZWJGaWx0ZXJFdmFsdWF0b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0
ZXJFdmFsdWF0b3JDbGFzcygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlm
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAg
ICB1bmJsb2NrSGFuZGxlci5tX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVP
YmplY3RPZkNsYXNzOltOU051bWJlciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVz
dEtleV07CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTIwLDcgKzEyOCw3IEBAIGJvb2wgQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
KSBjb25zdAogewotICAgIGlmICghbV91bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgaWYgKCFtX3Vu
YmxvY2tSZXF1ZXN0ZXIgJiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CiAjaWYgSEFWRShQ
QVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFtX3dl
YkZpbHRlckV2YWx1YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MCw5ICsx
NTgsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0KLSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVyKSB7
Ci0gICAgICAgIG1fdW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxv
Y2tlZCkgeworICAgIGF1dG8gdW5ibG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3RlcjsK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IGlmICghdW5ibG9ja1JlcXVlc3RlciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgeworICAg
ICAgICB1bmJsb2NrUmVxdWVzdGVyID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJSZXF1
ZXN0LmJvb2xWYWx1ZV0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhhbmRs
ZXJGdW5jdGlvbiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2VkKTsK
KyAgICAgICAgfTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3Rlcikgewor
ICAgICAgICB1bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2Vk
KSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxv
Y2tlZF0gewogICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwogICAg
ICAgICAgICAgfSk7CkBAIC0xNjAsNiArMTc1LDExIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOjpyZXF1ZXMKICAgICB9CiB9CiAKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAg
bV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9j
a2VkXTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9Cisg
ICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2Vk
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4g
bV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tD
b250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ0LDEyICs0NSw0NCBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZp
CiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0
b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7
CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVu
YWJsZWQpCiB7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAg
IG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBi
bG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7Cisg
ICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0No
YW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1f
ZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRl
Y2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24o
KSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5i
bG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBt
X21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmds
ZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5i
bG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sg
dGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBA
IC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tl
ZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0g
YmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0
QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNp
b25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0
RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBv
aW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZv
aWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24o
RGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBE
ZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2Nr
UmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9u
ID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25z
dCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21v
ZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9k
aWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBz
ZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3Qg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsK
ICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5h
YmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNp
c2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1MyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIg
PDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNv
ZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRT
dHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciAp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5h
YmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29k
ZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNp
c2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0
cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3Ry
aW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RV
Ukw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNl
dHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9p
bnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7
CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2Vk
U3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1v
ZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTEyODcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAzLTE1ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3
aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVy
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVu
dEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24pOgorICAgICAgICAoV2ViS2l0OjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2Jz
ZXJ2aW5nKToKKyAgICAgICAgKFdlYktpdDo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwOgorCiAyMDIyLTAzLTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gVG9vbHRpcCBubyBsb25nZXIgZGlzYXBwZWFy
cyBhZnRlciBsZWF2aW5nIGhvdmVyZWQgZWxlbWVudApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDM3LDYgKzE0MzcsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0Nv
bgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxs
TW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmIHNl
dHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpID0g
V1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwog
Y2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0xOTgsNiAr
MTk5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6
TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxv
YWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVu
dGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDE2ICsxODcsMTcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnQ6IGhhc05ldHdvcmtMb2FkQ2hl
Y2tlcj0lZCIsICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisgICAgYXV0byBuZXdSZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghc3RhcnRDb250
ZW50RmlsdGVyaW5nKG5ld1JlcXVlc3QpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAg
IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlciA9IG1fY29ubmVjdGlvbi0+c3RhcnRUcmFja2luZ1Jl
c291cmNlTG9hZChtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluRnJhbWVMb2FkKCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAg
IG1fd2FzU3RhcnRlZCA9IHRydWU7CiAKLSAgICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgc3RhcnRDb250ZW50RmlsdGVyaW5nKG5ld1Jl
cXVlc3QpOwotI2VuZGlmCi0KICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVl
c3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjM2LDE0ICsyMzcsMTcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlmICghbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSkpCi0gICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkp
IHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5k
aWYKIApAQCAtOTMzLDExICs5MzcsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDI4LDcgKzEwMzIsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgICAgIG1fZmlyc3RSZXNw
b25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKQEAgLTE3NzMsMzIg
KzE3NzcsMzggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5i
bG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJs
b2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJl
cXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShi
b29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2Vi
UGFnZVByb3h5SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFu
ZGxlciA9IHVuYmxvY2tIYW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQg
PSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBpZiAodW5ibG9ja0hhbmRs
ZXIubmVlZHNVSVByb2Nlc3MoKSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5ibG9ja0hh
bmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hh
bmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8
fCB1bmJsb2NrZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1
ZXN0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJL
aXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1f
Y29udGVudEZpbHRlci0+c2V0QmxvY2tlZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAgICAgICAg
IH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJy
b3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCiB7Ci0gICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICAgICAg
YXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpOwotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQobV91bmJsb2NrSGFuZGxlciwg
bV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJy
b3IoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2
YXRlUmVsYXllZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTIzOSw3ICsyNDAsNyBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZp
bHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgY29u
c3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwpAQCAtMjg5LDYg
KzI5MCw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50Rmls
dGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisgICAgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIG1fdW5ibG9ja0hhbmRsZXI7CisgICAgU3RyaW5nIG1fdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQ7CiAjZW5kaWYKIAogICAgIFByaXZhdGVSZWxheWVkIG1fcHJpdmF0ZVJlbGF5ZWQg
eyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiAr
OTUsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KICNlbmRpZgogCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgogCkBAIC04NTUsNiAr
ODU5LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UmUKICAgICA+
OwogfTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
blBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNp
c2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRpcmVjdCwKKyAgICAg
ICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0
ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAgID47Cit9OworI2VuZGlmCisKIHRlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4gewogICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5OTAsNiArMTk5MCw4IEBACiAJCUUzODY2
QjBBMjM5OUEyRDkwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJRTM4NjZCMEIyMzk5QTJERDAwRjg4RkU5IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDYyMzk5OTc5
QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQlFMzhBMUZDMDIzQTU1MUJGMDBEMjM3NEYgLyogVXNlckludGVy
ZmFjZUlkaW9tLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4QTFGQkYyM0E1NTFCRjAwRDIzNzRGIC8qIFVzZXJJbnRlcmZhY2VJZGlvbS5tbSAqLzsg
fTsKKwkJRTM5NTJGRTcyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJG
RTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9Owor
CQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU4
MjdDNkI4NDkwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9Owog
CQlFMzk2MjhERDIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXIuaCAqLzsgfTsKIAkJRTM5NjI4REUyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5NjI4REMyMzk2MENDNjAwNjU4RUNEIC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuY3BwICovOyB9OwogCQlFM0NBQUE0NDI0MTMyNzk5MDBD
RUQyRTIgLyogQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0FBQTQzMjQxMzI3OEEwMENFRDJFMiAvKiBBY2Nl
c3NpYmlsaXR5U3VwcG9ydFNQSS5oICovOyB9OwpAQCAtNjQ2Myw2ICs2NDY1LDggQEAKIAkJRTMw
Q0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzEzNjY0RDI2NUVFNUFG
MDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYy
RSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGli
V2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5
bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM2MTJGRjAyNkY5MDg2MjAw
N0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFj
aG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0
NzUsNiArNjQ3OSw4IEBACiAJCUUzODY2QjA3MjM5OTk3OUQwMEY4OEZFOSAvKiBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlck1lc3NhZ2VzLmg7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CUUzOEExRkJFMjNBNTUxMTQwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOEExRkJGMjNBNTUxQkYwMEQyMzc0RiAvKiBVc2VySW50ZXJmYWNlSWRpb20ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb20ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzOTUyRkU2MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkU4MjdDNkI4NDkwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjI4REIyMzk2MENDNTAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhE
QzIzOTYwQ0M2MDA2NThFQ0QgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NjI4RTQyMzk3MUYzNDAwNjU4RUNEIC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTk0NTcsNiArOTQ2Myw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAogCQkJCTQxMzA3NTlFMURFODVFNjUwMDM5RUM2OSAvKiB3ZWJydGMgKi8sCisJCQkJRTM5NTJG
RTgyN0M2Qjg0OTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8sCisJ
CQkJRTM5NTJGRTYyN0M2QjY4MTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
ICovLAogCQkJCTUxMDVCMEQ0MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwICovLAogCQkJCTUxMDVCMEQ1MTYyRjdBN0EwMEUyNzcwOSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJCQk1MUZCMDkwMjE2M0EzQjFDMDBFQzMyNEEgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovLApAQCAtOTk3Niw2ICs5OTg0LDgg
QEAKIAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQw
OTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJG
NDI3OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZG
MTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUw
MDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKQEAgLTEzMzEyLDYg
KzEzMzIyLDcgQEAKIAkJCQk1MTdCNUY3QzI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxN0I1RjgwMjc1RTk3QjYwMDJEQzIy
RCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFRENC
MjE0RjRFNDIwMDE2Qjg0NyAvKiBNb2NrQXV0aGVudGljYXRvck1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzOTUyRkU3MjdDNkI2ODEwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3RENFREM3MjE0RjE4MzAwMDE2Qjg0NyAvKiBN
b2NrTG9jYWxDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0RDRURDMzIxNEYxMTRD
MDAxNkI4NDcgLyogTW9ja0xvY2FsU2VydmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdCODI2
NEMyMzA2MDNDMTAwQjcyRUIwIC8qIE1vY2tOZmNTZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1Njg0LDYgKzE1Njk1LDcgQEAKIAkJCQk5QjQ3OTA5MTI1MzE1NjMyMDBFQzExQUIgLyogTWVz
c2FnZUFyZ3VtZW50RGVzY3JpcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1Rjg0
Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0
cnkubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFOTI3QzZCODQ5MDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUVCQThEM0I2MjdB
NUUzM0YwMENCNzkwMCAvKiBNb2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTdCODI2NDUyMzA0RjE0MDAwQjcyRUIwIC8qIE5lYXJGaWVsZFNvZnRMaW5rLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzFDMUIzMEYyNTQwRjUwRDAwRDkxMDBCIC8qIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIgorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKworI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1h
bmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9i
c2VydmluZygpCit7CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDbGllbnQodGhpcyk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KSkKKyAgICAgICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGlu
Z3MpLCAwKTsKKworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDog
cHVibGljIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgdm9pZCBzdGFydE9ic2VydmluZygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZp
c2lvbiAyOTA1MjUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgv
UmVhbFRpbWVUaHJlYWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgiCisjZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50
NjQoKSA6IDApCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWRE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLnN0YXJ0T2JzZXJ2aW5nKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6
fldlYlByb2Nlc3MoKQpAQCAtMjIyOSw3ICsyMjM3LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25m
aWd1cmF0aW9uRmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAkocmV2aXNpb24gMjkwNTI1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsMTEgKzM1MSwxNCBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkws
ICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIGlmICgh
bV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAg
IHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldEJsb2NrZWRQ
YWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoV1RGTW92ZShzdWJzdGl0dXRl
RGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVu
dEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxN
YWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MDUyNSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBj
b250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciYsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYg
YmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTA1MjUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNv
dXJjZUxvYWRlciBMZWdhY3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9h
ZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0
cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxl
ciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yLCBVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1
YnN0aXR1dGVEYXRhKQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgSGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDY2MSkKKysrIFRv
b2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAzLTAx
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVz
dCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3Jr
IHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Z1BsdWdJbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50Rmls
dGVyaW5nLm1tOgorCiAyMDIyLTAzLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdF0gR2F0ZSBpbmZvcm1hdGlvbiBVUkwgb24gaW5p
dGlhbCBzZXR1cApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkwNTI1KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmln
CSh3b3JraW5nIGNvcHkpCkBAIC04Niw5ICs4NiwxNSBAQCBXS19TWVNURU1fTERGTEFHU19JT1Nf
U0lOQ0VfMTUgPSAtZnJhbWV3CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTID0gJChXS19VSUtJ
VE1BQ0hFTFBFUl9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfVUlLSVRNQUNIRUxQ
RVJfTERGTEFHU19tYWNjYXRhbHlzdCA9IC1mcmFtZXdvcmsgVUlLaXRNYWNIZWxwZXI7CiAKK1dL
X1dFQkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFN
RSkpOworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitX
S19XRUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitX
S19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09S
RV9MREZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQ
TFVTUExVU0ZMQUdTID0gJChpbmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhF
Ul9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9E
VUNUU19ESVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1m
cmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZy
YW1ld29yayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVU
SEtJVF9MREZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19P
UEVOR0xfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykg
JChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykg
JChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxB
R1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29y
ayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3Jr
IElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xE
RkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9M
REZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJ
S0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dF
QkNPUkVfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gp
KTsKIE9USEVSX0xERkxBR1NfUExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3Jr
IENhcmJvbjsKIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIElu
c3RlYWQgd2Ugc2hvdWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlv
bi4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1Bs
dWdJbi54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MDUyNSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdl
YktpdEFQSTsKIFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNU
X05BTUU6cmZjMTAzNGlkZW50aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwog
V1JBUFBFUl9FWFRFTlNJT04gPSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRl
ZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVU
ZXN0U3VwcG9ydDsKK1dLX1dFQkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQo
V0tfUExBVEZPUk1fTkFNRSkpOworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1l
d29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1l
d29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2Vi
Q29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJD
b3JlCisKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0
Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX1dFQkNPUkVf
TERGTEFHUyk7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRl
cl9wYXRoLy4uLy4uLy4uIjsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1lbWJlZGRlZCpd
ID0gIkBsb2FkZXJfcGF0aC8uLiI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAy
OTA1MjUpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0
ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgi
Ci0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZp
ZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTQzMyw3ICs0MzMsNyBAQCBURVNUKENvbnRlbnRGaWx0
ZXJpbmcsIExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJX
aXRoU2NoZW1lOkAiaHR0cCJdOwogICAgICAgICBbW2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIFtjb250cm9sbGVy
IGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOwogI2Vsc2UKICAgICAgICAgW2NvbnRy
b2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOwpAQCAtNDQ1LDcgKzQ0NSwx
MSBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcsIExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtU
ZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKICAgICAgICAgW1tjb250
cm9sbGVyIHdlYlZpZXddIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50
YWxDb250cm9sc0xvYWRlZDpOT107CisjZWxzZQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQ
YXJlbnRhbENvbnRyb2xzTG9hZGVkOllFU107CisjZW5kaWYKICAgICAgICAgW1Rlc3RQcm90b2Nv
bCB1bnJlZ2lzdGVyXTsKICNlbmRpZgogICAgIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQ
bHVnSW4ubW0JKHJldmlzaW9uIDI5MDUyNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjgsNyArMjgsNyBAQAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAi
Q29udGVudEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
IgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTA1MjUp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2lt
cG9ydCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRl
c3RQcm90b2NvbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJy
b3JzUHJpdmF0ZS5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454847</attachid>
            <date>2022-03-16 09:37:37 -0700</date>
            <delta_ts>2022-03-16 10:14:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220316093736.patch</filename>
            <type>text/plain</type>
            <size>89118</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDIyLTAzLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcmVzc2VzIHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmlu
ZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLgorICAgICAgICBXaGVuIGNvbnRlbnQgZmlsdGVyaW5n
IGlzIHJ1bm5pbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byBzZW5kIHRoZSBt
b2NrIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyIGFuZCBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHN1cHBvcnQgdGVzdGluZy4gVGhlIG1vY2sgY29udGVudCBmaWx0ZXIgaXMKKyAg
ICAgICAgbW92ZWQgZnJvbSB0aGUgV2ViQ29yZSB0ZXN0IHN1cHBvcnQgbGlicmFyeSB0YXJnZXQg
dG8gdGhlIFdlYkNvcmUgZnJhbWV3b3JrLCBzaW5jZSBXZWJLaXQKKyAgICAgICAgbm93IGFsc28g
d2lsbCByZWZlcmVuY2UgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIgd2hlbiBzZW5kaW5nIGl0IHRv
IHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFByZXZpb3VzbHkgYSBjb21waWxlIHRpbWUg
Z3VhcmQgd2FzIHVzZWQgdG8gZGlzYWJsZSB0aGUgY29udGVudCBmaWx0ZXJpbmcgY29kZSBpbiB0
aGUKKyAgICAgICAgZG9jdW1lbnQgbG9hZGVyLiBIb3dldmVyLCB3ZSBzdGlsbCBuZWVkIHRvIHN1
cHBvcnQgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlciBm
b3IgV0sxLCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgdGhhdCB0byB1c2UgYSBydW50aW1lIGNoZWNr
IGluc3RlYWQuIFRoZSByZXN0IG9mCisgICAgICAgIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRlc3Qg
ZmFpbHVyZXMgc2VlbiB3aGVuIHJ1bm5pbmcgdGhlIGxheW91dCBhbmQgQVBJIHRlc3RzLgorICAg
ICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzZXRC
bG9ja2VkRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5S
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJl
c291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0QmxvY2tlZFBhZ2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3luYyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVx
dWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5
U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RV
UkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ6On5Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50KToKKwogMjAyMi0wMy0xNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25dIE1vdmUgZmlyc3RTZWxlY3RlZEJveC9sYXN0
U2VsZWN0ZWRCb3ggb3V0IG9mIElubGluZUl0ZXJhdG9yOjpMaW5lCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
OTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDcsOCArMzQwNyw2IEBACiAJCUExQURBRjdFMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAv
KiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAw
ODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5
MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3
RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJC
ODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQx
Niw4ICszNDE0LDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlF
cnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRh
Y3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICov
OyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIx
NTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2Qjgy
MUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRB
OEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZp
bHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZl
cnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFD
MTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAy
OERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50
QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAg
LTUyOTQsNiArNTI5MCwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFE
QzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNE
T01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5
NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRB
OEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsg
fTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAw
MDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzQ4LDYg
KzE3MzUxLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1
bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1
NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThF
Q0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50
RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTQ5LDkgKzIxMTU1
LDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5Lmlk
bCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRl
ci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFB
QUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJ
RTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3Bw
ICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAog
CQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAq
LywKQEAgLTMzMzk0LDggKzMzNDAzLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIg
LyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIx
RDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdG
MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2Mzc2LDYgKzM2MzgzLDEwIEBACiAJCQkJQ0RG
MkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3
Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMg
LyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlB
NTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0
QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM3OTIyLDYgKzM3OTMzLDcgQEAKIAkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0UgLyogVmlk
ZW9GcmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkExQTAw
Q0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVG
QjAyNzE5QjI5MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNjA0OTMzMjc0M0IwRTgwMEE4NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyog
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGQkM0
QUY0MTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzIxQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkzMiw3ICszNzk0NCw2IEBA
CiAJCQkJQ0RFODNEQjIxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzUwMzNBODI1MkJEMzY4MDBGNzBDRTMgLyogVmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzU3QjEzRTIxNEFFNzk5
MDA3OTRCMEQgLyogVmlkZW9QcmVzZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjA0OTMzMjc0
M0IwRTgwMEE4NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREM5MzlBODFFOUJERkIxMDBCQjc2OEQgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDFGOUIxODI3MDIzQTJBMDA2MTdFQjYgLyogVmlkZW9U
cmFja0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODcxNiw4ICszODcyNyw2IEBACiAJCQkJ
Q0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFFMDg2NjMyNDg5RDM0RTAwRTQ5NkQ5IC8qIE1vY2tBcHBsZVBheVNldHVwRmVh
dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3MDBFMjM1QTIgLyog
TW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCRjZCODIxQUE5NkM3RDAw
QUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQjVC
MjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxMDU4QURCMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dh
bWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3RUJGQTFFM0FCNjc5MDBB
QzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzg4MDYsNiArMzg4MTUsOSBAQAogCQkJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBN
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0
ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkVFMjdDNkRGMTQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QkY3NDIxREJGREMyNzAwN0E3RDk5IC8qIE5hdmln
YXRvckVNRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUg
LyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxMzBEN0Uy
QjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsNyArMTIyLDggQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQog
ICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOwogICAgIG1fbWFpblJlc291
cmNlVVJMID0gdXJsOwogfQotI2Vsc2UKKyNlbmRpZgorCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0
YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsK
ICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEzMyw3ICsxMzQsNiBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKCFtX21h
aW5SZXNvdXJjZSk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSAmcmVzb3VyY2U7CiB9Ci0jZW5kaWYK
IAogdm9pZCBDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCkKIHsKQEAg
LTE2NCw5ICsxNjQsNiBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25z
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQotI2Vsc2UKLWJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCi0jZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVk
Q2xpZW50IHsgbV9jbGllbnQgfTsKIApAQCAtMTc2LDE5ICsxNzMsMzMgQEAgYm9vbCBDb250ZW50
RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRl
clVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikg
ewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAgICAgICAgICAgZGVsaXZl
clN0b3JlZFJlc291cmNlRGF0YSgpOwogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShk
YXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9i
dWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVmUHRyIHsgJmRhdGEgfSwgZW5jb2Rl
ZERhdGFMZW5ndGggfSk7Ci0jZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7Cit9CisjZW5kaWYKKworYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3sKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50
IHsgbV9jbGllbnQgfTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsK
KyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6
dSBieXRlcyBvZiBkYXRhIGZyb20gPCV7c2Vuc2l0aXZlfXM+LlxuIiwgZGF0YS5zaXplKCksIHVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICBmb3JFYWNoQ29udGVudEZp
bHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRl
cikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOworICAgICAgICB9
KTsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9
IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICAgICAgICAgIGRlbGl2
ZXJSZXNvdXJjZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5NywxOCArMjA4LDM1IEBA
IGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQot
I2Vsc2UKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOwotI2Vsc2UKKworICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291
cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1D
b250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVy
LmZpbmlzaGVkQWRkaW5nRGF0YSgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxv
d2VkOworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7Cit9CisjZW5kaWYKKworYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIFJlZjxDb250ZW50Rmls
dGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFp
blJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CiAgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFp
biByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CkBAIC0yMTgsMTQgKzI0NiwxMCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJOb3RpZnlGCiAKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQp
IHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgICAgICAgICAgZGVsaXZl
clN0b3JlZFJlc291cmNlRGF0YSgpOwotI2Vsc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0KLSNlbmRpZgog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0y
NzksMjEgKzMwMywxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0
CiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihidWZmZXIpOwotI2VuZGlmCiB9CiAKIFVSTCBDb250ZW50RmlsdGVy
Ojp1cmwoKQogeworICAgIGlmIChtX21haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFp
blJlc291cmNlLT51cmwoKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIHJldHVybiBtX21haW5SZXNvdXJjZVVSTDsKICNlbHNlCi0gICAg
aWYgKG1fbWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgp
OwogICAgIHJldHVybiBVUkwoKTsKICNlbmRpZgogfQpAQCAtMzA3LDcgKzMyNiw2IEBAIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7
CiB9CiAKLSNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2
ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAgLTMyMiw3ICszNDAsNiBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNl
bmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw4
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShjb25zdCBVUkwmKTsKLSNlbHNlCi0gICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwogI2VuZGlmCisgICAgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTY3LDE2ICs2NiwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsKLSNlbHNlCisj
ZW5kaWYKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmKTsKLSNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVE
YXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBj
b25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
ZWRFcnJvcjsgfQorICAgIHZvaWQgc2V0QmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSB7IG1fYmxvY2tlZEVycm9yID0gZXJyb3I7IH0KICAgICBib29sIGlzQWxsb3dlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQ7IH0KICAgICBib29sIHJl
c3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KICAg
ICAKQEAgLTExMiw5ICsxMTEsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9y
PFJlc291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAg
IGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBu
dWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVz
b3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEg
KzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7
Ci0jZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVE
YXRhJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKK3N0YXRpYyBib29sJiBj
b250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVy
OworICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmlsdGVy
OworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRl
ck1hcCYgbG9hZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihs
b2FkZXJzLnZhbHVlcygpKSkKQEAgLTQxOSw3ICs0MjgsNyBAQCBib29sIERvY3VtZW50TG9hZGVy
Ojppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNv
dXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxOSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYm
ICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcgKzkxMSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2Vy
dGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIs
NyArMTMzMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
QEAgLTE0NjMsNyArMTQ3Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFt
ZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWlu
UmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1v
dmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDI1
LDEwICsyMDM0LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
bV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorICAgIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkgPSB0cnVlOworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQWx3
YXlzIGZpbHRlciBpbiBXSzEKKyAgICBjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpID0g
bV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+dmlldygpLT5wbGF0Zm9ybVdp
ZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIo
KSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjZW5kaWYKKyAgICAK
KyAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgcmUtYXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhl
IERvY3VtZW50J3MgUmVzb3VyY2VSZXF1ZXN0IHVwb24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVk
ZGluZwogICAgIC8vIGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUg
cHJldmlvdXMgdXNlciBhZ2VudCB2YWx1ZSBoZXJlIGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVl
IGluIENhY2hlZFJlc291cmNlTG9hZGVyLgogICAgIG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdl
bnQoKTsKQEAgLTIyMzAsNyArMjI0Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFp
blJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
cikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTIzNTcsNyArMjM3Myw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNl
Q2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRG
aWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5k
aWYKQEAgLTI0MTQsOCArMjQzMCw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1
cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QpCiB7CiAgICAgZGF0YVJl
Y2VpdmVkKGJ1ZmZlcik7CiB9CkBAIC0yNDM0LDcgKzI0NTAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiB7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFt
ZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIFJlc291cmNl
RXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KQpAQCAtMjQ2NCwyMCArMjQ4MCwyMyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyCiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2Nr
ZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJv
ci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVu
dEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50Rmls
dGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkpCisgICAg
ICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKG1f
YmxvY2tlZFBhZ2VVUkwsIG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcik7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRpZgogICAgICwgcHJp
dmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC00MDIsMTMgKzQwMiwxNiBAQCBwdWJs
aWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKLSNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
KTsKKyAgICB2b2lkIHNldEJsb2NrZWRQYWdlVVJMKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwp
IHsgbV9ibG9ja2VkUGFnZVVSTCA9IGJsb2NrZWRQYWdlVVJMOyB9CisgICAgdm9pZCBzZXRTdWJz
dGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKFN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURh
dGFGcm9tQ29udGVudEZpbHRlcikgeyBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIg
PSBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOyB9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250
ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVy
LmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1l
bnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNv
dW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9Ci0jZW5kaWYKKwogICAgIFdFQkNPUkVf
RVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CkBAIC01MTIsOSAr
NTE1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIC8vIENv
bnRlbnRGaWx0ZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVy
cm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwpAQCAtNjY0LDEzICs2NjcsMTQgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSNpZiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwotI2Vsc2UKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGJvb2wgbV9i
bG9ja2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2UgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxv
Y2tlZEVycm9yOwotI2VuZGlmCi0jZW5kaWYKKyAgICBVUkwgbV9ibG9ja2VkUGFnZVVSTDsKKyAg
ICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXI7CisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9wcmV2aWV3Q29udmVydGVyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjkxMzUwKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgp
OwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRhLmZh
aWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRy
dWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0dXRl
RGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQs
NiArNjUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFVSTCYgdXJsKSB7IG1fdW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworCiBwcml2YXRl
OgogICAgIFN0cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJM
OwpAQCAtNzEsNiArNzQsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNf
V0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4g
bV93ZWJGaWx0ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVy
UmVxdWVzdCB7IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkxMzUwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIAogc3RhdGljIE5T
U3RyaW5nICogY29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owog
c3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxl
VVJMIiB9Oworc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5
IHsgQCJ1bmJsb2NrZWRBZnRlclJlcXVlc3QiIH07CiAKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRS
T0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29uc3Qgd2ViRmls
dGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0xMDEsNiArMTAy
LDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUKICNpZiBIQVZF
KFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtjb2RlciBlbmNv
ZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1
YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2NrZWRBZnRlclJl
cXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKKwogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzExOCw5IEBAIGJvb2wgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRS
T0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVy
RXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVh
dG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRpZgorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdW5ibG9j
a0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOwor
I2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMjgsNyBAQCBib29sIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIGlmICghbV91bmJsb2NrUmVx
dWVzdGVyICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewogI2lmIEhBVkUoUEFSRU5UQUxf
Q09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJF
dmFsdWF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAsOSArMTU4LDE2IEBA
IHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgotCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAg
ICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
KyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVu
YmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5i
bG9ja1JlcXVlc3RlciA9IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29s
VmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rp
b24gZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAg
IH07CisgICAgfQorI2VuZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAg
dW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAg
ICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsK
ICAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAg
IH0pOwpAQCAtMTYwLDYgKzE3NSwxMSBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6cmVxdWVzCiAgICAgfQogfQogCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4g
bWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorICAgIAordm9p
ZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29uc3QKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgeworcHVibGljOgor
ICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlck1h
bmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9p
ZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+KTsKKyAg
ICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5vdGlmeVNldHRpbmdzQ2hh
bmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IG1fY2xpZW50
OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRl
ICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRlICJNb2NrQ29udGVudEZp
bHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCwxMiAr
NDUsNDQgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0NvbnRlbnRGaQogdm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAgc2luZ2xldG9uKCkgPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwogfQogCiB2
b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogICAgIE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKTsKICAgICBtX2VuYWJs
ZWQgPSBlbmFibGVkOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0
cmluZykKK3sKKyAgICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOworICAgIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNp
bmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNp
c2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sKKyAgICBtX2RlY2lzaW9u
UG9pbnQgPSBkZWNpc2lvblBvaW50OworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikK
K3sKKyAgICBtX2RlY2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAgICBtX3VuYmxvY2tSZXF1
ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigp
KTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVl
c3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7CisgICAgbV9tb2RpZmll
ZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOwog
fQogCiBjb25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnVuYmxvY2tSZXF1
ZXN0VVJMKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzaW5nbGV0b24oKTsK
LSAgICBzdGF0aWMgdm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVuYmxvY2tVUkxI
b3N0KCkgeyByZXR1cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8vIFRyaWNrIHRoZSBnZW5l
cmF0ZWQgYmluZGluZ3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3VudGVkLgpAQCAtNTgsMjYg
KzU4LDI5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNl
dEVuYWJsZWQoYm9vbCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNldEJsb2NrZWRTdHJpbmco
Y29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRT
dHJpbmc7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldEJsb2NrZWRT
dHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQo
KSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2b2lkIHNldERlY2lzaW9u
UG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVjaXNpb25Qb2ludCA9IGRl
Y2lzaW9uUG9pbnQ7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldERl
Y2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9u
IGRlY2lzaW9uKSB7IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwogCiAgICAgRGVjaXNpb24g
dW5ibG9ja1JlcXVlc3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lk
IHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0gICAgY29uc3QgU3RyaW5n
JiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JUIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKIAogICAgIGNvbnN0
IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmllZFJl
cXVlc3RVUkw7IH0KLSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcm
IG1vZGlmaWVkUmVxdWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVx
dWVzdFVSTDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0TW9kaWZp
ZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IGRlY29k
ZShEZWNvZGVyJik7CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncygp
ID0gZGVmYXVsdDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7CiAgICAgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmKSA9IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9vbCBtX2VuYWJsZWQgeyBm
YWxzZSB9OwogICAgIERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50IHsgRGVjaXNpb25Qb2lu
dDo6QWZ0ZXJSZXNwb25zZSB9OwpAQCAtODcsNCArOTAsNTMgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9tb2RpZmllZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgor
dm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGRlY2lz
aW9uUG9pbnQoKTsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCBibG9ja2VkU3RyaW5nKCk7
CisgICAgZW5jb2RlciA8PCBtb2RpZmllZFJlcXVlc3RVUkwoKTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz4gTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIgKQoreworICAg
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7Cisg
ICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6
b3B0aW9uYWw8RGVjaXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAgICBkZWNvZGVyID4+IGRl
Y2lzaW9uUG9pbnQ7CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIgPj4gZGVjaXNpb247Cisg
ICAgaWYgKCFkZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB1
bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5ibG9ja1JlcXVlc3REZWNp
c2lvbjsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJsb2NrZWRTdHJpbmc7Cisg
ICAgZGVjb2RlciA+PiBibG9ja2VkU3RyaW5nOworICAgIGlmICghYmxvY2tlZFN0cmluZykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbW9k
aWZpZWRSZXF1ZXN0VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAg
IGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5z
ZXRFbmFibGVkKCplbmFibGVkKTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvblBvaW50KCpkZWNp
c2lvblBvaW50KTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvbigqZGVjaXNpb24pOworICAgIHNl
dHRpbmdzLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tSZXF1ZXN0RGVjaXNpb24p
OworICAgIHNldHRpbmdzLnNldEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgqYmxvY2tlZFN0cmluZykp
OworICAgIHNldHRpbmdzLnNldE1vZGlmaWVkUmVxdWVzdFVSTChXVEZNb3ZlKCptb2RpZmllZFJl
cXVlc3RVUkwpKTsKKworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0No
YW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307CisKK307CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjkxMzUzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAyMi0wMy0xNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFi
bGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2hpY2ggd2lsbCBiZSBu
b3RpZmllZAorICAgICAgICB3aGVuIG1vY2sgY29udGVudCBmaWx0ZXIgc2V0dGluZ3MgYXJlIGNo
YW5nZWQgZnJvbSBKYXZhU2NyaXB0LCBhbmQgdGhlbiBzZW5kIHRoZSBuZXcKKyAgICAgICAgc2V0
dGluZ3MgdG8gdGhlIE5ldHdvcmsgcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGUgbW9jayBjb250ZW50
IGZpbHRlci4gVGhlIG90aGVyCisgICAgICAgIGNoYW5nZXMgYXJlIGFkZHJlc3NpbmcgbGF5b3V0
IGFuZCBBUEkgdGVzdCBmYWlsdXJlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcik6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcik6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6c3RhcnRPYnNlcnZpbmdTZXR0aW5ncyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorCiAyMDIy
LTAzLTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bmNvcnJlY3QgaGVhZGVyIG5hbWUgdXNlZCBpbiBfX2hhc19pbmNsdWRlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MzIsNiArMTQzMiwxMyBAQCBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVy
PiBOZXR3b3JrQ29uCiAgICAgcmV0dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJl
c291cmNlTG9hZElkZW50aWZpZXIpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiYgc2V0dGluZ3MpCit7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2lu
Z2xldG9uKCkgPSBXVEZNb3ZlKHNldHRpbmdzKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U7CiBjbGFzcyBCbG9iUGFydDsKIGNsYXNzIEJsb2JSZWdpc3RyeUltcGw7CitjbGFz
cyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1Njb3BlIDogYm9vbDsK
QEAgLTIwMCw2ICsyMDEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZv
aWQgaW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTEzNTApCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogI2VuZGlmCiAgICAgU2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCiAgICAgUHJpb3Jp
dGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
cj4gbG9hZElkZW50aWZpZXJzKQorCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5ncykKKyNlbmRpZgogfQpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTYgKzE4
NywxNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJzdGFydDogaGFzTmV0
d29ya0xvYWRDaGVja2VyPSVkIiwgISFtX25ldHdvcmtMb2FkQ2hlY2tlcik7CiAKKyAgICBhdXRv
IG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KCFzdGFydENvbnRlbnRGaWx0ZXJpbmcobmV3UmVxdWVzdCkpCisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VyID0gbV9jb25uZWN0aW9uLT5zdGFy
dFRyYWNraW5nUmVzb3VyY2VMb2FkKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5GcmFtZUxvYWQoKSk7CiAKICAgICBBU1NFUlQoIW1fd2FzU3Rh
cnRlZCk7CiAgICAgbV93YXNTdGFydGVkID0gdHJ1ZTsKIAotICAgIGF1dG8gbmV3UmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07Ci0jaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBzdGFydENvbnRlbnRGaWx0
ZXJpbmcobmV3UmVxdWVzdCk7Ci0jZW5kaWYKLQogICAgIGlmIChtX25ldHdvcmtMb2FkQ2hlY2tl
cikgewogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0
IHsgbmV3UmVxdWVzdCB9LCB0aGlzLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fV0gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBAIC0yMzYs
MTQgKzIzNywxNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogfQogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZp
bHRlcmluZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFpc01haW5SZXNv
dXJjZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIG1fY29u
dGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgaWYgKCFtX2Nv
bnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3Vy
Y2VSZXNwb25zZSgpKSkKLSAgICAgICAgcmV0dXJuOwogICAgIG1fY29udGVudEZpbHRlci0+c3Rh
cnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UocmVxdWVzdC51cmwoKSk7CisgICAgaWYgKCFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSgpKSkgeworICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWlu
UmVzb3VyY2UoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1
ZTsKIH0KICNlbmRpZgogCkBAIC05NDYsMTEgKzk1MCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAobV9jb250ZW50RmlsdGVy
KSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5p
c2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSk7CisgICAgICAgICAgICBpZiAoIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1
ZXN0LnVybCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NvbnRl
bnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICAgICAgICAgfQogI2VuZGlm
Ci0KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZEZpbmlzaFJl
c291cmNlTG9hZChuZXR3b3JrTG9hZE1ldHJpY3MpKTsKICAgICB9CiAKQEAgLTEwNTEsNyArMTA1
NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGkKICAgICAgICAg
bV9maXJzdFJlc3BvbnNlVVJMID0gcmVkaXJlY3RSZXNwb25zZS51cmwoKTsKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgaWYgKG1fY29u
dGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1
ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQorICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZWRpcmVj
dFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApA
QCAtMTc5OCwzMiArMTgwMiwzOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkCiAKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpj
b250ZW50RmlsdGVyRGlkQmxvY2soV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
IHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJs
b2NrTG9hZCh1bmJsb2NrSGFuZGxlciwgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpKTsKLSAg
ICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpIHsKLSAgICAgICAgdW5ibG9j
a0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoIXVuYmxvY2tlZCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdv
cmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6UmVsb2FkQWZ0ZXJVbmJsb2NrZWRDb250ZW50RmlsdGVyKG1fcGFy
YW1ldGVycy53ZWJQYWdlUHJveHlJRCksIDApOworICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJs
b2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisKKyAgICBt
X3VuYmxvY2tIYW5kbGVyID0gdW5ibG9ja0hhbmRsZXI7CisgICAgbV91bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCA9IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0OworICAgIAorICAgIGlmICh1
bmJsb2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIGVsc2UgeworICAgICAg
ICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIG11dGFibGUgeworICAgICAgICAgICAg
bV91bmJsb2NrSGFuZGxlci5zZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QodW5ibG9ja2VkKTsKKwor
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7CisgICAgICAgICAgICBpZiAobV93
YXNTdGFydGVkIHx8IHVuYmxvY2tlZCkKKyAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbV9wYXJh
bWV0ZXJzLnJlcXVlc3Q7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdChhYm91dEJsYW5rVVJMKCkpOworICAgICAgICAgICAgYXV0byBl
cnJvciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKHJlcXVlc3QpOworICAg
ICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zZXRCbG9ja2VkRXJyb3IoZXJyb3IpOworICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9y
KTsKICAgICAgICAgfSk7CiAgICAgfQotICAgIHJldHVybiBXZWJLaXQ6OmJsb2NrZWRCeUNvbnRl
bnRGaWx0ZXJFcnJvcihtX3BhcmFtZXRlcnMucmVxdWVzdCk7CisgICAgcmV0dXJuIGVycm9yOwog
fQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAg
ICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOwogfQogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6SGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0
YSkpOwotICAgIGVsc2UgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIp
OwotICAgICAgICBhdXRvJiBlcnJvciA9IG1fY29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCk7
Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDYW5jZWxNYWluUmVz
b3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihlcnJvcikpOwotICAgIH0KKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZChtX3VuYmxv
Y2tIYW5kbGVyLCBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBtX2NvbnRlbnRGaWx0ZXIt
PmJsb2NrZWRFcnJvcigpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVSZWxheWVkLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVy
Q2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgpAQCAtMjQxLDcgKzI0Miw3IEBAIHByaXZh
dGU6CiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgc3Rh
cnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIGJvb2wg
c3RhcnRDb250ZW50RmlsdGVyaW5nKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogI2VuZGlm
CiAKICAgICBlbnVtIGNsYXNzIElzRnJvbVNlcnZpY2VXb3JrZXIgOiBib29sIHsgTm8sIFllcyB9
OwpAQCAtMjk1LDYgKzI5Niw4IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpDb250ZW50RmlsdGVyPiBtX2NvbnRlbnRGaWx0ZXI7CisgICAgV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyIG1fdW5ibG9ja0hhbmRsZXI7CisgICAgU3RyaW5nIG1fdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQ7CiAjZW5kaWYKIAogICAgIFByaXZhdGVSZWxheWVkIG1fcHJp
dmF0ZVJlbGF5ZWQgeyBQcml2YXRlUmVsYXllZDo6Tm8gfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNiArOTQsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtWFIuaD4KICNl
bmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgog
CkBAIC04NTIsNiArODU2LDI4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29y
ZTo6UmUKICAgICA+OwogfTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlcldpbGxTZW5kUmVxdWVzdCwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZWRp
cmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNp
b25Qb2ludDo6QWZ0ZXJSZXNwb25zZSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJBZGREYXRhLAorICAgICAgICBXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVk
QWRkaW5nRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
RGVjaXNpb25Qb2ludDo6TmV2ZXIKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjo6QWxsb3csCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jaworICAgID47Cit9OworI2VuZGlm
CisKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6QXV0b3BsYXlFdmVudD4g
ewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkF1dG9w
bGF5RXZlbnQsCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5OTIsNiArMTk5Miw4
IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRD
MTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1
MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMzE2
QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9
OwogCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9y
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmggKi87IH07CisJCUUzODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgKi87IH07CisJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLzsgfTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi87IH07CiAJCUUzODY2QUU3
MjM5NzQwNTMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2
QUU2MjM5NzQwNTMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkuaCAqLzsgfTsKIAkJRTM4NjZCMDgyMzk5QTJEMTAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkIwNTIzOTk5NzlDMDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
QEAgLTY0ODYsOSArNjQ4OCwxMyBAQAogCQlFMzBDRkI5RDI2NjA2NjNDMDA5NEQ5QzAgLyogY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IGNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9j
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUUzMTM2NjREMjY1RUU1QUYwMDUxMDg0RiAvKiBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzQzOUI2
MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxp
YiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYy
RSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0g
bGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNh
bmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1
MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJB
dHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2Vi
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3Jr
L1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTYy
Mzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkuaDsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZB
RUQyMzk4NDcxQTAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQ
cm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHBhdGggPSBpb3MvV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTUwNSw2ICs5NTExLDggQEAKIAkJCQlFMzQzOUI2MzIzNDU0NjNB
MDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovLAogCQkJCTUxQUJG
NjU2MTYzOTJGMTUwMDEzMkE3QSAvKiBXZWJMb2FkZXJTdHJhdGVneS5jcHAgKi8sCiAJCQkJNTFB
QkY2NTcxNjM5MkYxNTAwMTMyQTdBIC8qIFdlYkxvYWRlclN0cmF0ZWd5LmggKi8sCisJCQkJRTM4
MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAg
Ki8sCisJCQkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oICovLAogCQkJCUE1ODYwRTZGMjMwRjY3REUwMDQ2MUFBRSAvKiBXZWJSZXNvdXJj
ZUludGVyY2VwdENvbnRyb2xsZXIuY3BwICovLAogCQkJCUE1ODYwRTcwMjMwRjY3REUwMDQ2MUFB
RSAvKiBXZWJSZXNvdXJjZUludGVyY2VwdENvbnRyb2xsZXIuaCAqLywKIAkJCQk1MTBBRkZCNzE2
NTQyMDQ4MDAxQkEwNUUgLyogV2ViUmVzb3VyY2VMb2FkZXIuY3BwICovLApAQCAtMTAwMTcsNiAr
MTAwMjUsOCBAQAogCQk1NzUwRjMyOTIwMzJENEUzMDAzODkzNDcgLyogRnJhbWV3b3JrcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM0QjExMEMyN0M0
NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLywKKwkJCQlFMzRCMTEw
RjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJ
CURERTk5MkY0Mjc4RDA2RDkwMEY2MEQyNiAvKiBsaWJXZWJLaXRBZGRpdGlvbnMuYSAqLywKIAkJ
CQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyogbGliV1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEy
MDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVudGljYXRpb24uZnJhbWV3b3JrICovLApAQCAt
MTM4MDUsNiArMTM4MTUsNyBAQAogCQkJCTJEM0VGNDQzMTkxNzY0NjMwMDAzNDE4NCAvKiBXZWJN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkwOTg1NEVEMTJCQzRF
MTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNG
RkI5MTIwMTQ1OUM2MDAyNTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjY5RjlBMTE3NkNFRDYw
MDQ3MUE1MiAvKiBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Q0NDQzhGQjFBNUY1MEZEMDA4RkIwREEgLyogV2ViTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMUEyRUM0OTE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE2MTg3LDYgKzE2MTk4LDcgQEAKIAkJCQlBMTgxQTc5ODIxQUND
NzRCMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RG
MUI5MUIyNjcwMjU1NTAwMDdFQzEwIC8qIFdlYktpdFN3aWZ0U29mdExpbmsubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4MkYgLyogV2ViTUROU1JlZ2lzdGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzODE2QjNEMjdFMjQ2M0EwMDVF
QUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRGNkZFNTIyMTJFMTEwOTAwNDY5
MDMwIC8qIFdlYlBhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzBDRTcyQTAxMjQ3RTcxRDAw
QkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTEzNTAp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMiw2ICsyMzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvbGludXgvUmVhbFRpbWVUaHJl
YWRzLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaW5jbHVkZSAiV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisj
ZW5kaWYKKwogI3VuZGVmIFdFQlBST0NFU1NfUkVMRUFTRV9MT0cKICNkZWZpbmUgUkVMRUFTRV9M
T0dfU0VTU0lPTl9JRCAobV9zZXNzaW9uSUQgPyBtX3Nlc3Npb25JRC0+dG9VSW50NjQoKSA6IDAp
CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTM0MSw2ICszNDUsMTAgQEAgV2ViUHJvY2Vz
czo6V2ViUHJvY2VzcygpCiAjZW5kaWYKIAogICAgIEdpZ2FjYWdlOjpmb3JiaWREaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZSgpOworCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmds
ZXRvbigpLnN0YXJ0T2JzZXJ2aW5nU2V0dGluZ3MoKTsKKyNlbmRpZgogfQogCiBXZWJQcm9jZXNz
Ojp+V2ViUHJvY2VzcygpCkBAIC0yMjMwLDcgKzIyMzgsNiBAQCBSZW1vdGVNZWRpYUVuZ2luZUNv
bmZpZ3VyYXRpb25GYWN0b3J5JiBXCiAgICAgcmV0dXJuICpzdXBwbGVtZW50PFJlbW90ZU1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3Rvcnk+KCk7CiB9CiAjZW5kaWYKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19TRVNTSU9OX0lECkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorCisjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKworI2luY2x1ZGUgIk5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7
Cit9CisKK3ZvaWQgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZ1Nl
dHRpbmdzKCkKK3sKKyAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmds
ZXRvbigpLnNldENsaWVudCh0aGlzKTsKK30KKwordm9pZCBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKQoreworICAgIGlmIChhdXRvIGNvbm5lY3Rpb24g
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlzdGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpKQorICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Okluc3RhbGxNb2NrQ29udGVudEZpbHRlcihzZXR0
aW5ncyksIDApOworfQorCit9OworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIDogcHVibGljIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBzdGFydE9ic2Vy
dmluZ1NldHRpbmdzKCk7CisgICAgCisgICAgLy8gV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NsaWVudAorICAgIHZvaWQgbW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGZpbmFsOworfTsKKworfTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU0
LDExICszNTQsMTQgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChj
b25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVy
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmJiBzdWJzdGl0dXRlRGF0YSkK
IHsKICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICByZXR1cm47CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zZXRCbG9ja2VkUGFnZVVSTChibG9ja2VkUGFnZVVSTCk7CisgICAgbV9jb3JlTG9hZGVyLT5k
b2N1bWVudExvYWRlcigpLT5zZXRTdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKFdURk1v
dmUoc3Vic3RpdHV0ZURhdGEpKTsKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayh1bmJsb2NrSGFuZGxlciwgV1RGTW92ZSh1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJvcik7CiB9CiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTEz
NTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAg
ICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
OworICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVSTCYgYmxvY2tlZFBh
Z2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmKTsKICAgICB2b2lkIGNhbmNlbE1haW5S
ZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0
YSYpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjkxMzUwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUmVzb3VyY2VMb2FkZXIgTGVnYWN5UmVjZQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIENvbnRlbnRGaWx0
ZXJEaWRCbG9ja0xvYWQoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxv
Y2tIYW5kbGVyLCBTdHJpbmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJz
dGl0dXRlRGF0YSBzdWJzdGl0dXRlRGF0YSkKICAgICBDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIEhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihVUkwgYmxvY2tlZFBhZ2VVUkws
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQogI2VuZGlmCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
OTEzNTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAyMi0wMy0xNiAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgRml4IHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBp
biB0aGUgTmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzcyMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0V2ViS2l0QVBJIG5lZWRzIHRvIGxpbmsgd2l0aCBXZWJDb3JlIG5v
dyB0aGF0IHRoZSBtb2NrIGNvbnRlbnQgZmlsdGVyIGlzIGNvbXBpbGVkIGludG8gV2ViQ29yZS4K
KyAgICAgICAgQWRqdXN0IHRlc3QgZXhwZWN0YXRpb25zLCBzaW5jZSB0aGUgY29udGVudCBmaWx0
ZXJzIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgbG9hZGVkIGluIHRoZSBXZWJDb250ZW50CisgICAg
ICAgIHByb2Nlc3MgYW55bW9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWc6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAo
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nUGx1Z0luLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Nv
bnRlbnRGaWx0ZXJpbmcubW06CisKIDIwMjItMDMtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQ
YXRoIHRha2UgYSBTdHJpbmdWaWV3CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAy
OTEzNTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEkueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDE1IEBAIFdLX1NZU1RFTV9M
REZMQUdTX0lPU19TSU5DRV8xNSA9IC1mcmFtZXcKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1Mg
PSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19V
SUtJVE1BQ0hFTFBFUl9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBVSUtpdE1hY0hl
bHBlcjsKIAorV0tfV0VCQ09SRV9MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxBR1NfJChXS19Q
TEFURk9STV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBXZWJDb3Jl
CitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUK
KwogT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09U
KS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRl
cnM7CiAKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNj
cmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29y
ayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFH
UykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZM
QUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RF
TV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09S
RV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOwor
T1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29y
ZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFs
IC1mcmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdL
X0FVVEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQo
V0tfT1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxB
R1MpICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxB
R1MpICQoV0tfV0VCQ09SRV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19D
T0NPQV9UT1VDSCkpOwogT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29h
IC1mcmFtZXdvcmsgQ2FyYm9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0
IG9uIGlPUy4gSW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJ
IGFwcGxpY2F0aW9uLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9X
ZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkocmV2aXNpb24gMjkx
MzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1
Z0luLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMiBAQCBQUk9EVUNUX05B
TUUgPSBUZXN0V2ViS2l0QVBJOwogUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9IGNvbS5hcHBs
ZS4kKFBST0RVQ1RfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CiBFWEVDVVRBQkxFX1NVRkZJWCA9
IC5idW5kbGU7CiBXUkFQUEVSX0VYVEVOU0lPTiA9IHdrYnVuZGxlOwotT1RIRVJfTERGTEFHUyA9
ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0
IC1sV2ViQ29yZVRlc3RTdXBwb3J0OworV0tfV0VCQ09SRV9MREZMQUdTID0gJChXS19XRUJDT1JF
X0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25l
b3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0
b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZy
YW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJh
bWV3b3JrIFdlYkNvcmUKKworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3Jr
IEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0ICQo
V0tfV0VCQ09SRV9MREZMQUdTKTsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1tYWNvc3gq
XSA9ICJAbG9hZGVyX3BhdGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2Rr
PWVtYmVkZGVkKl0gPSAiQGxvYWRlcl9wYXRoLy4uIjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0J
KHJldmlzaW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBA
CiAKICNpbXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRG
aWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtNDMzLDcgKzQzMyw3IEBAIFRFU1Qo
Q29udGVudEZpbHRlcmluZywgTGF6aWx5TG9hZFBsYXRmb3IKICAgICAgICAgW1Rlc3RQcm90b2Nv
bCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAgICAgICAgIFtbY29udHJvbGxlciB3ZWJW
aWV3XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cDovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAg
W2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpOT107CiAjZWxzZQogICAg
ICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOllFU107CkBAIC00
NDUsNyArNDQ1LDExIEBAIFRFU1QoQ29udGVudEZpbHRlcmluZywgTGF6aWx5TG9hZFBsYXRmb3IK
ICAgICAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogICAg
ICAgICBbW2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdCJdXV07CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBbY29udHJvbGxlciBl
eHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKKyNlbHNlCiAgICAgICAgIFtjb250cm9s
bGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKKyNlbmRpZgogICAgICAgICBb
VGVzdFByb3RvY29sIHVucmVnaXN0ZXJdOwogI2VuZGlmCiAgICAgfQpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dEZpbHRlcmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkxMzUwKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
CiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlz
aW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0
ZXJpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZp
Zy5oIgogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktp
dC9XZWJLaXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>
<flag name="commit-queue"
          id="482629"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454851</attachid>
            <date>2022-03-16 10:14:41 -0700</date>
            <delta_ts>2022-03-17 07:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220316101440.patch</filename>
            <type>text/plain</type>
            <size>89383</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDIyLTAzLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcmVzc2VzIHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmlu
ZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLgorICAgICAgICBXaGVuIGNvbnRlbnQgZmlsdGVyaW5n
IGlzIHJ1bm5pbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byBzZW5kIHRoZSBt
b2NrIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyIGFuZCBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHN1cHBvcnQgdGVzdGluZy4gVGhlIG1vY2sgY29udGVudCBmaWx0ZXIgaXMKKyAg
ICAgICAgbW92ZWQgZnJvbSB0aGUgV2ViQ29yZSB0ZXN0IHN1cHBvcnQgbGlicmFyeSB0YXJnZXQg
dG8gdGhlIFdlYkNvcmUgZnJhbWV3b3JrLCBzaW5jZSBXZWJLaXQKKyAgICAgICAgbm93IGFsc28g
d2lsbCByZWZlcmVuY2UgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIgd2hlbiBzZW5kaW5nIGl0IHRv
IHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFByZXZpb3VzbHkgYSBjb21waWxlIHRpbWUg
Z3VhcmQgd2FzIHVzZWQgdG8gZGlzYWJsZSB0aGUgY29udGVudCBmaWx0ZXJpbmcgY29kZSBpbiB0
aGUKKyAgICAgICAgZG9jdW1lbnQgbG9hZGVyLiBIb3dldmVyLCB3ZSBzdGlsbCBuZWVkIHRvIHN1
cHBvcnQgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlciBm
b3IgV0sxLCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgdGhhdCB0byB1c2UgYSBydW50aW1lIGNoZWNr
IGluc3RlYWQuIFRoZSByZXN0IG9mCisgICAgICAgIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRlc3Qg
ZmFpbHVyZXMgc2VlbiB3aGVuIHJ1bm5pbmcgdGhlIGxheW91dCBhbmQgQVBJIHRlc3RzLgorICAg
ICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRl
ci9Db250ZW50RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzZXRC
bG9ja2VkRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpy
ZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5S
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJl
c291cmNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6Y29udGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0QmxvY2tlZFBhZ2VVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRl
bnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3kpOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpjYW5IYW5kbGVSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3luYyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVx
dWVzdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5
U2V0dGluZ3NDaGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
czo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXRCbG9ja2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RV
UkwpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnNldERlY2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ6On5Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50KToKKwogMjAyMi0wMy0xNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0lGQ11bSW50ZWdyYXRpb25dIE1vdmUgZmlyc3RTZWxlY3RlZEJveC9sYXN0
U2VsZWN0ZWRCb3ggb3V0IG9mIElubGluZUl0ZXJhdG9yOjpMaW5lCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
OTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MDcsOCArMzQwNyw2IEBACiAJCUExQURBRjdFMjM2MEZE
M0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAv
KiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAw
ODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVu
dENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5
MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3
RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQ
YXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVy
cm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJC
ODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQx
Niw4ICszNDE0LDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlF
cnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRh
Y3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICov
OyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIx
NTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2Qjgy
MUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEg
LyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRB
OEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZp
bHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZl
cnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFD
MTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAy
OERFN0MgLyogTW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVu
dE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50
QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAg
LTUyOTQsNiArNTI5MCwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlB
dHRhY2htZW50RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFE
QzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNE
T01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVE
OSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5
NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRB
OEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRl
bnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsg
fTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAw
MDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERP
TUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzQ4LDYg
KzE3MzUxLDkgQEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxv
YWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1
bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQx
NDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1
RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1
NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThF
Q0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50
RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTQ5LDkgKzIxMTU1
LDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5Lmlk
bCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRl
ci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyog
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAw
OEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFB
QUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJ
RTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3Bw
ICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAog
CQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAq
LywKQEAgLTMzMzk0LDggKzMzNDAzLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIg
LyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIx
RDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdG
MDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2Mzc2LDYgKzM2MzgzLDEwIEBACiAJCQkJQ0RG
MkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZp
bHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3
Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMg
LyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlB
NTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0
QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM3OTIyLDYgKzM3OTMzLDcgQEAKIAkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0UgLyogVmlk
ZW9GcmFtZUxpYldlYlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkExQTAw
Q0I4RDc0IC8qIFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVG
QjAyNzE5QjI5MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQxNjA0OTMzMjc0M0IwRTgwMEE4NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyog
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGQkM0
QUY0MTg5ODgxNTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzIxQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkzMiw3ICszNzk0NCw2IEBA
CiAJCQkJQ0RFODNEQjIxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzUwMzNBODI1MkJEMzY4MDBGNzBDRTMgLyogVmlkZW9QbGF5
YmFja1F1YWxpdHlNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzU3QjEzRTIxNEFFNzk5
MDA3OTRCMEQgLyogVmlkZW9QcmVzZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjA0OTMzMjc0
M0IwRTgwMEE4NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDREM5MzlBODFFOUJERkIxMDBCQjc2OEQgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBp
biBIZWFkZXJzICovLAogCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDFGOUIxODI3MDIzQTJBMDA2MTdFQjYgLyogVmlkZW9U
cmFja0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODcxNiw4ICszODcyNyw2IEBACiAJCQkJ
Q0RDMjZCNDAxNjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTFFMDg2NjMyNDg5RDM0RTAwRTQ5NkQ5IC8qIE1vY2tBcHBsZVBheVNldHVwRmVh
dHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3MDBFMjM1QTIgLyog
TW9ja0NETUZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCRjZCODIxQUE5NkM3RDAw
QUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQjVC
MjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxMDU4QURCMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dh
bWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3RUJGQTFFM0FCNjc5MDBB
QzlGRTkgLyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzg4MDYsNiArMzg4MTUsOSBAQAogCQkJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBN
ZWRpYVNlc3Npb25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0
ODcyMDBFMTVBMUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzNDQjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29j
b2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkVFMjdDNkRGMTQw
MDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTM5NTJGRjAyN0M3Q0RBQzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5QkY3NDIxREJGREMyNzAwN0E3RDk5IC8qIE5hdmln
YXRvckVNRS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUg
LyogTmF2aWdhdG9yR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxMzBEN0Uy
QjgyMDA3QzM5ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjIsNyArMTIyLDggQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQog
ICAgIEFTU0VSVChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOwogICAgIG1fbWFpblJlc291
cmNlVVJMID0gdXJsOwogfQotI2Vsc2UKKyNlbmRpZgorCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0
YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsK
ICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEzMyw3ICsxMzQsNiBAQCB2
b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKCFtX21h
aW5SZXNvdXJjZSk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSAmcmVzb3VyY2U7CiB9Ci0jZW5kaWYK
IAogdm9pZCBDb250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCkKIHsKQEAg
LTE2NCw5ICsxNjQsNiBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25z
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQog
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQotI2Vsc2UKLWJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCi0jZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVk
Q2xpZW50IHsgbV9jbGllbnQgfTsKIApAQCAtMTc2LDE5ICsxNzMsMzMgQEAgYm9vbCBDb250ZW50
RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRl
clVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikg
ewogICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAgICAgICAgICAgZGVsaXZl
clN0b3JlZFJlc291cmNlRGF0YSgpOwogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShk
YXRhLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9i
dWZmZXJzLmFwcGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVmUHRyIHsgJmRhdGEgfSwgZW5jb2Rl
ZERhdGFMZW5ndGggfSk7Ci0jZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7Cit9CisjZW5kaWYKKworYm9vbCBD
b250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKK3sKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50
IHsgbV9jbGllbnQgfTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsK
KyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6
dSBieXRlcyBvZiBkYXRhIGZyb20gPCV7c2Vuc2l0aXZlfXM+LlxuIiwgZGF0YS5zaXplKCksIHVy
bCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICBmb3JFYWNoQ29udGVudEZp
bHRlclVudGlsQmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRl
cikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOworICAgICAgICB9
KTsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsKICAgICAgICAgICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9
IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICAgICAgICAgIGRlbGl2
ZXJSZXNvdXJjZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgfQotI2Vu
ZGlmCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5NywxOCArMjA4LDM1IEBA
IGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQot
I2Vsc2UKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVy
Q2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwotI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQVNTRVJUX1VOVVNFRChyZXNv
dXJjZVVSTCwgcmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOwotI2Vsc2UKKworICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291
cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKKyAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1D
b250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVy
LmZpbmlzaGVkQWRkaW5nRGF0YSgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAobV9zdGF0
ZSAhPSBTdGF0ZTo6QmxvY2tlZCkgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxv
d2VkOworICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7Cit9CisjZW5kaWYKKworYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIFJlZjxDb250ZW50Rmls
dGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogICAgIEFTU0VSVF9VTlVT
RUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFp
blJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlm
CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CiAgICAgICAgIExPRyhD
b250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFp
biByZXNvdXJjZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CkBAIC0yMTgsMTQgKzI0NiwxMCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJOb3RpZnlGCiAKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQp
IHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgICAgICAgICAgZGVsaXZl
clN0b3JlZFJlc291cmNlRGF0YSgpOwotI2Vsc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZm
ZXIgPSBtX21haW5SZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChtX21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0KLSNlbmRpZgog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0y
NzksMjEgKzMwMywxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0
CiB2b2lkIENvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9z
dGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKLSNlbHNlCi0gICAgVU5VU0VE
X1BBUkFNKGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihidWZmZXIpOwotI2VuZGlmCiB9CiAKIFVSTCBDb250ZW50RmlsdGVy
Ojp1cmwoKQogeworICAgIGlmIChtX21haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFp
blJlc291cmNlLT51cmwoKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09S
S0lOR19QUk9DRVNTKQogICAgIHJldHVybiBtX21haW5SZXNvdXJjZVVSTDsKICNlbHNlCi0gICAg
aWYgKG1fbWFpblJlc291cmNlKQotICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgp
OwogICAgIHJldHVybiBVUkwoKTsKICNlbmRpZgogfQpAQCAtMzA3LDcgKzMyNiw2IEBAIHN0YXRp
YyBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7
CiB9CiAKLSNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2
ZUxvYWRlci5jb250ZW50RmlsdGVyKCkpIHsKQEAgLTMyMiw3ICszNDAsNiBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNl
bmRpZgogCiBib29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw4
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShjb25zdCBVUkwmKTsKLSNlbHNlCi0gICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwogI2VuZGlmCisgICAgdm9pZCBzdGFydEZpbHRlcmlu
Z01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKTsKQEAgLTY3LDE2ICs2NiwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwg
c2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsKLSNlbHNlCisj
ZW5kaWYKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmKTsKLSNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVE
YXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFu
ZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBj
b25zdCBSZXNvdXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
ZWRFcnJvcjsgfQorICAgIHZvaWQgc2V0QmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSB7IG1fYmxvY2tlZEVycm9yID0gZXJyb3I7IH0KICAgICBib29sIGlzQWxsb3dlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQ7IH0KICAgICBib29sIHJl
c3BvbnNlUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KICAg
ICAKQEAgLTExMiw5ICsxMTEsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9y
PFJlc291cmNlRGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAg
IGNvbnN0IFBsYXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBu
dWxscHRyIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVz
b3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEg
KzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7
Ci0jZWxzZQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwg
U3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVE
YXRhJikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDE1IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKK3N0YXRpYyBib29sJiBj
b250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVy
OworICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gZmlsdGVy
OworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRl
ck1hcCYgbG9hZGVycykKIHsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IGNvcHlUb1ZlY3Rvcihs
b2FkZXJzLnZhbHVlcygpKSkKQEAgLTQxOSw3ICs0MjgsNyBAQCBib29sIERvY3VtZW50TG9hZGVy
Ojppc0xvYWRpbmcoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJp
Y3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChyZXNv
dXJjZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtNzEwLDcgKzcxOSw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXMKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRVUkwoV1RGTW92ZSh1cmwpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYm
ICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QobmV3UmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG5ld1JlcXVlc3QpKTsKICNlbmRpZgpAQCAtOTAyLDcgKzkxMSw3IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY28KICAgICBBU1NFUlQocmVzcG9uc2UuY2Vy
dGlmaWNhdGVJbmZvKCkpOwogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBs
ZXRpb25IYW5kbGVyQ2FsbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAotI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlclJlc3Bv
bnNlUmVjZWl2ZWQocmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTEzMjIs
NyArMTMzMSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWQKIAog
dm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
QEAgLTE0NjMsNyArMTQ3Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFt
ZSgpCiAgICAgc3RvcExvYWRpbmcoKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9tYWlu
UmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291cmNlLT5yZW1v
dmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlmCkBAIC0yMDI1
LDEwICsyMDM0LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
bV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpID8gQ29udGVudEZp
bHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQorICAgIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkgPSB0cnVlOworI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgLy8gQWx3
YXlzIGZpbHRlciBpbiBXSzEKKyAgICBjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpID0g
bV9mcmFtZSAmJiBtX2ZyYW1lLT52aWV3KCkgJiYgbV9mcmFtZS0+dmlldygpLT5wbGF0Zm9ybVdp
ZGdldCgpOwogI2VuZGlmCi0KKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIo
KSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyID0gIW1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ID8gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKSA6IG51bGxwdHI7CisjZW5kaWYKKyAgICAK
KyAgICAKICAgICAvLyBNYWtlIHN1cmUgd2UgcmUtYXBwbHkgdGhlIHVzZXIgYWdlbnQgdG8gdGhl
IERvY3VtZW50J3MgUmVzb3VyY2VSZXF1ZXN0IHVwb24gcmVsb2FkIGluIGNhc2UgdGhlIGVtYmVk
ZGluZwogICAgIC8vIGFwcGxpY2F0aW9uIGhhcyBjaGFuZ2VkIGl0LCBieSBjbGVhcmluZyB0aGUg
cHJldmlvdXMgdXNlciBhZ2VudCB2YWx1ZSBoZXJlIGFuZCBhcHBseWluZyB0aGUgbmV3IHZhbHVl
IGluIENhY2hlZFJlc291cmNlTG9hZGVyLgogICAgIG1fcmVxdWVzdC5jbGVhckhUVFBVc2VyQWdl
bnQoKTsKQEAgLTIyMzAsNyArMjI0Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNsZWFyTWFp
blJlc291cmNlKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChtX21haW5S
ZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9t
YWluUmVzb3VyY2UtPnJlbW92ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRl
cikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CiAjZW5kaWYKQEAgLTIzNTcsNyArMjM3Myw3IEBAIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgRG9jdW1lbnRMb2EKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNl
Q2xpZW50KCkKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRG
aWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291cmNlKCptX21haW5SZXNvdXJjZSk7CiAjZW5k
aWYKQEAgLTI0MTQsOCArMjQzMCw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1
cml0eVBvbGkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudChXVEZNb3ZlKGV2ZW50SW5pdCkpOwogfQogCi0jaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50
RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QpCiB7CiAgICAgZGF0YVJl
Y2VpdmVkKGJ1ZmZlcik7CiB9CkBAIC0yNDM0LDcgKzI0NTAsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpoYW5kbGVQcm92aXNpb25hbExvCiB7CiAgICAgZnJhbWVMb2FkZXIoKS0+bG9hZChGcmFt
ZUxvYWRSZXF1ZXN0KCpmcmFtZSgpLCBibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsK
IH0KLSNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIFJlc291cmNl
RXJyb3IgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0KQpAQCAtMjQ2NCwyMCArMjQ4MCwyMyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyCiAKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRG
aWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVudEZpbHRlci0+
d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAmJiBtX2Jsb2Nr
ZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJv
ci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJuIG1fY29udGVu
dEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250ZW50Rmls
dGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVy
ZShlcnJvcik7CisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkpCisgICAg
ICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorICAgIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKG1f
YmxvY2tlZFBhZ2VVUkwsIG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcik7CiAjZW5k
aWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNyArMTU5LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgICwgcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNs
aWVudAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogICAgICwgcHVibGljIENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRpZgogICAgICwgcHJp
dmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCB7CkBAIC00MDIsMTMgKzQwMiwxNiBAQCBwdWJs
aWM6CiAgICAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5VG9Qcm9wYWdhdGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKLSNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEm
KTsKKyAgICB2b2lkIHNldEJsb2NrZWRQYWdlVVJMKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwp
IHsgbV9ibG9ja2VkUGFnZVVSTCA9IGJsb2NrZWRQYWdlVVJMOyB9CisgICAgdm9pZCBzZXRTdWJz
dGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKFN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURh
dGFGcm9tQ29udGVudEZpbHRlcikgeyBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIg
PSBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOyB9CisjZW5kaWYgLy8g
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBDb250
ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RmlsdGVy
LmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50ZWQ8RG9jdW1l
bnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNv
dW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9Ci0jZW5kaWYKKwogICAgIFdFQkNPUkVf
RVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFs
TG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CkBAIC01MTIsOSAr
NTE1LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIC8vIENv
bnRlbnRGaWx0ZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgU2hh
cmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVy
cm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0
cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdl
VVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwpAQCAtNjY0LDEzICs2NjcsMTQgQEAgcHJpdmF0
ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRT
ZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSNpZiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwotI2Vsc2UKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGJvb2wgbV9i
bG9ja2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2UgfTsKICAgICBSZXNvdXJjZUVycm9yIG1fYmxv
Y2tlZEVycm9yOwotI2VuZGlmCi0jZW5kaWYKKyAgICBVUkwgbV9ibG9ja2VkUGFnZVVSTDsKKyAg
ICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXI7CisjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNl
bmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9wcmV2aWV3Q29udmVydGVyOwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24gMjkxMzUwKQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgp
OwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1dGVEYXRhLmZh
aWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250aW51ZSA9IHRy
dWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBzdWJzdGl0dXRl
RGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9yOwpAQCAtNjQs
NiArNjUsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25z
dCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVS
TChjb25zdCBVUkwmIHVybCkgeyBtX3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1fdW5yZWFjaGFi
bGVVUkw7CkBAIC03MSw2ICs3Niw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJFTlRBTF9DT05U
Uk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVh
dG9yPiBtX3dlYkZpbHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1fdW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZpc2lvbiAyOTEz
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBAQAogCiBzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9ja1VSTEhvc3Qi
IH07CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7IEAidW5yZWFj
aGFibGVVUkwiIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxvY2tlZEFmdGVyUmVxdWVzdEtl
eSB7IEAidW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IiB9OworI2VuZGlmCiAKICNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3RyaW5nICogY29u
c3Qgd2ViRmlsdGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3IiIH07CkBAIC0x
MDEsNiArMTA0LDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUK
ICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIFtj
b2RlciBlbmNvZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZp
bHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV91bmJsb2Nr
ZWRBZnRlclJlcXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYK
KwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYgKzEyMCw5IEBA
IGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tIYW5kbGVyLm1f
d2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmls
dGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNlbmRp
ZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29kZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVl
c3RLZXldOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMzAsMTEgQEAgYm9vbCBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICBpZiAoIW1f
dW5ibG9ja1JlcXVlc3RlcgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisgICAgICAgICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdAorI2VuZGlm
CisgICAgICAgICkgewogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hB
TkRMRVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNTAsOSArMTY0LDE2IEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotCi0gICAg
aWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1ZXN0ZXIoW2Rl
Y2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICBhdXRvIHVuYmxvY2tSZXF1ZXN0
ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0ZXIgJiYgbV91bmJs
b2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RlciA9IFt1bmJsb2Nr
ZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29sVmFsdWVdKENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24pIHsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAgIH07CisgICAgfQorI2VuZGlmCisgICAg
aWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RlcihbZGVjaXNp
b25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKICAgICAgICAgICAgICAgICBkZWNpc2lv
bkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTYwLDYgKzE4MSwxMyBA
QCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAgfQogfQogCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3ZvaWQg
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QoYm9v
bCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50RmlsdGVyTWFuYWdlciYg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7CisgICAgcmV0dXJu
IG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzZXRD
bGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IGNsaWVudCkKK3sK
KyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0dGluZ3MpOworfQor
Cit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsK
KworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xpZW50KFJlZlB0cjxN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAgV0VCQ09SRV9URVNU
U1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZlB0cjxNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisKK307CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKKyNpbmNsdWRlICJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ0IEBAIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncygpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5
U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBNb2NrQ29udGVudEZp
bHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0gZW5hYmxlZDsKKyAgICBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0
QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpCit7CisgICAgbV9ibG9j
a2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBv
aW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2lu
dDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRp
bmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgbV9kZWNpc2lvbiA9
IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90
aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uID0gdW5ibG9j
a1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRv
bigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYg
bW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9kaWZp
ZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCku
bm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogY29uc3QgU3RyaW5nJiBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVi
bGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGljIHZvaWQgcmVz
ZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgdm9pZCByZXNldCgp
OwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgpIHsgcmV0dXJuICJtb2Nr
LXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIGludG8g
dGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2Vk
U3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgYmxvY2tl
ZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOyB9CisgICAgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9k
ZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQg
ZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OyB9CisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lzaW9u
UG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX2RlY2lz
aW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikgeyBtX2RlY2lz
aW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNl
dERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNp
b24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KLSAgICB2b2lk
IHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lv
bikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9
CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERl
Y2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwo
KSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBjb25zdCBTdHJpbmcmIHVu
YmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVx
dWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOyB9Ci0gICAgdm9p
ZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwp
IHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7IH0KKyAgICBXRUJD
T1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBT
dHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYpOwogCi1wcml2
YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRlZmF1bHQ7Ci0gICAgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikg
PSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0
OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAgICBEZWNpc2lv
blBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9uc2UgfTsK
QEAgLTg3LDQgKzkwLDUzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbW9kaWZpZWRSZXF1ZXN0
VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBvaW50KCk7CisgICAgZW5j
b2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVlc3REZWNpc2lv
bigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAgIGVuY29kZXIgPDwgbW9k
aWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9w
dGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+
IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlmICghZW5hYmxlZCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERlY2lzaW9uUG9p
bnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lvblBvaW50OworICAgIGlm
ICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiBk
ZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlmICghZGVjaXNpb24pCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9ja1JlcXVlc3REZWNpc2lv
bjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgaWYgKCF1bmJs
b2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRlY29kZXIgPj4gYmxvY2tl
ZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAg
ICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAoIW1vZGlmaWVkUmVxdWVz
dFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlZCgqZW5hYmxlZCk7
CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Qb2ludCk7CisgICAgc2V0
dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5ncy5zZXRVbmJsb2NrUmVx
dWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAgICBzZXR0aW5ncy5zZXRC
bG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAgICBzZXR0aW5ncy5zZXRN
b2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0VVJMKSk7CisKKyAgICBy
ZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1
MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMjItMDMtMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJp
bmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIGEgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIGluIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgYmUgbm90aWZpZWQKKyAgICAgICAgd2hl
biBtb2NrIGNvbnRlbnQgZmlsdGVyIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGZyb20gSmF2YVNjcmlw
dCwgYW5kIHRoZW4gc2VuZCB0aGUgbmV3CisgICAgICAgIHNldHRpbmdzIHRvIHRoZSBOZXR3b3Jr
IHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIuIFRoZSBvdGhlcgor
ICAgICAgICBjaGFuZ2VzIGFyZSBhZGRyZXNzaW5nIGxheW91dCBhbmQgQVBJIHRlc3QgZmFpbHVy
ZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0SW50ZXJu
YWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0
ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2Fu
Y2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5n
U2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKwogMjAyMi0wMy0xNiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IGhlYWRlciBuYW1l
IHVzZWQgaW4gX19oYXNfaW5jbHVkZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMyLDYgKzE0
MzIsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0NvbgogICAgIHJl
dHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJZGVudGlmaWVy
KTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRl
bnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmIHNldHRpbmdzKQor
eworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpID0gV1RGTW92ZShz
ZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwogY2xhc3MgQmxv
YlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBl
bnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0yMDAsNiArMjAxLDEwIEBA
IHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZVNv
dXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgUmVm
UHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGluc3RhbGxNb2NrQ29udGVu
dEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nl
c3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2Rl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6
OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykK
KworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI5
MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDE2ICsxODcsMTcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnQ6IGhhc05ldHdvcmtMb2FkQ2hlY2tlcj0lZCIs
ICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisgICAgYXV0byBuZXdSZXF1ZXN0ID0gUmVzb3Vy
Y2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghc3RhcnRDb250ZW50RmlsdGVy
aW5nKG5ld1JlcXVlc3QpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAgIG1fbmV0d29y
a0FjdGl2aXR5VHJhY2tlciA9IG1fY29ubmVjdGlvbi0+c3RhcnRUcmFja2luZ1Jlc291cmNlTG9h
ZChtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWlu
RnJhbWVMb2FkKCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAgIG1fd2FzU3Rh
cnRlZCA9IHRydWU7CiAKLSAgICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyBv
cmlnaW5hbFJlcXVlc3QoKSB9OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi0gICAgc3RhcnRDb250ZW50RmlsdGVyaW5nKG5ld1JlcXVlc3QpOwot
I2VuZGlmCi0KICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgbV9uZXR3
b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVlc3QgfSwgdGhp
cywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYgcmVzdWx0KSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjM2LDE0ICsyMzcsMTcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK2Jvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50
RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51
ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpCi0gICAg
ICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKHJlcXVlc3QudXJsKCkpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFm
dGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkpIHsKKyAgICAg
ICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKIApAQCAt
OTQ2LDExICs5NTAsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YQogICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJl
cXVlc3QudXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVl
QWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVy
aW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQobmV0d29ya0xv
YWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDUxLDcgKzEwNTUsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgICAgIG1fZmlyc3RSZXNwb25zZVVSTCA9
IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKQEAgLTE3OTgsMzIgKzE4MDIsMzgg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2Nr
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5ibG9ja0hhbmRs
ZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJsb2NrSGFuZGxl
ci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJs
b2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxv
Y2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJl
bG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVy
RXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFuZGxlciA9IHVu
YmxvY2tIYW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQgPSB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBpZiAodW5ibG9ja0hhbmRsZXIubmVlZHNV
SVByb2Nlc3MoKSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5ibG9ja0hhbmRsZXIucmVx
dWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGJv
b2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hhbmRsZXIuc2V0
VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8fCB1bmJsb2Nr
ZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1ZXN0OworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qo
YWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmJsb2Nr
ZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c2V0QmxvY2tlZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIG1fY29udGVudEZpbHRl
ci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAgICAgICAgIH0pOwogICAg
IH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IobV9wYXJh
bWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRs
ZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2Nr
ZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiB7Ci0g
ICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVu
dEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICAgICAgYXV0byYgZXJy
b3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpOwotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2Fk
ZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQobV91bmJsb2NrSGFuZGxlciwgbV91bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCwgbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKSwgYmxv
Y2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIApJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCShyZXZp
c2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2YXRlUmVsYXll
ZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuaD4KQEAgLTI0MSw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlTG9h
ZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZpbHRlcmluZyhX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVudEZpbHRlcmlu
ZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBJ
c0Zyb21TZXJ2aWNlV29ya2VyIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI5NSw2ICsyOTYsOCBA
QCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZpbHRlcj4gbV9j
b250ZW50RmlsdGVyOworICAgIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBt
X3VuYmxvY2tIYW5kbGVyOworICAgIFN0cmluZyBtX3VuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
OwogI2VuZGlmCiAKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVkIHsgUHJpdmF0
ZVJlbGF5ZWQ6Ok5vIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CiAjZW5kaWYKIAorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVkZSA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENP
Q09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIApAQCAtODUyLDYgKzg1NiwyOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlCiAgICAgPjsKIH07CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAg
ICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludCwK
KyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2lu
dDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QsCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVzcG9u
c2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9u
UG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEsCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6Ok5ldmVy
CisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpE
ZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb246OkFsbG93LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+OworfTsKKyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2luZyB2YWx1ZXMg
PSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJbmRleDogU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5OTIsOCBAQAogCQlFMUQyNkE1MzE3NTk2
NEQ5MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyog
V2ViQ29udGVudFByb2Nlc3MueGliICovOyB9OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMg
LyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZD
MDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NC
RUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9OworCQlFMzgxNkIz
RDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNCMjdFMjQ2
MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OworCQlF
MzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQzI3
RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CiAJ
CUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lm1tICovOyB9OwogCQlFMzg2NkFFNzIzOTc0MDUzMDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkFFNjIzOTc0MDUzMDBGODhGRTkg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmggKi87IH07CiAJCUUz
ODY2QjA4MjM5OUEyRDEwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM4NjZCMDUyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CkBAIC02NDg2LDkgKzY0ODgsMTMg
QEAKIAkJRTMwQ0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudC5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuc2I7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzEzNjY0
RDI2NUVFNUFGMDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIxMTBDMjdDNDZC
QzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBw
YXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
dXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM2MTJGRjAy
NkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgxNkIzQzI3RTI0
NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBwYXRo
ID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsg
cGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5NzQwNTMwMEY4OEZFOSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5
Lmg7IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVEMjM5ODQ3MUEwMEY4OEZFOSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk1
MDUsNiArOTUxMSw4IEBACiAJCQkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLywKIAkJCQk1MUFCRjY1NjE2MzkyRjE1MDAxMzJBN0Eg
LyogV2ViTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxQUJGNjU3MTYzOTJGMTUwMDEzMkE3
QSAvKiBXZWJMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZD
MCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzODE2QjNDMjdF
MjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJCQlB
NTg2MEU2RjIzMEY2N0RFMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRDb250cm9sbGVy
LmNwcCAqLywKIAkJCQlBNTg2MEU3MDIzMEY2N0RFMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRl
cmNlcHRDb250cm9sbGVyLmggKi8sCiAJCQkJNTEwQUZGQjcxNjU0MjA0ODAwMUJBMDVFIC8qIFdl
YlJlc291cmNlTG9hZGVyLmNwcCAqLywKQEAgLTEwMDE3LDYgKzEwMDI1LDggQEAKIAkJNTc1MEYz
MjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJX
ZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJFIC8q
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJGNDI3OEQwNkQ5MDBG
NjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAw
NkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBM
b2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKQEAgLTEzODA1LDYgKzEzODE1LDcgQEAK
IAkJCQkyRDNFRjQ0MzE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1cmVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2ViTWVt
b3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzRkZCOTEyMDE0NTlDNjAwMjU5NkVB
IC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2OUY5QTExNzZDRUQ2MDA0NzFBNTIgLyogV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDQ0M4RkIxQTVGNTBGRDAwOEZC
MERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNDkx
NDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NjE4Nyw2ICsxNjE5OCw3IEBACiAJCQkJQTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdlYktp
dEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMx
MCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTEx
NjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMzgxNkIzRDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQkE5MjREMTQ4ODMxMjYw
MDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJERjZGRTUyMjEyRTExMDkwMDQ2OTAzMCAvKiBXZWJQYWdlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMwQ0U3MkEwMTI0N0U3MUQwMEJDMEVDNCAvKiBXZWJQYWdlTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDEw
IEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2VuZGlmCiAKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2luY2x1
ZGUgIldlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisKICN1bmRlZiBXRUJQ
Uk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQgKG1fc2Vz
c2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVBU0VfTE9HX0RJ
U0FCTEVECkBAIC0zNDEsNiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2Vu
ZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2UoKTsK
KworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisg
ICAgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydE9ic2Vydmlu
Z1NldHRpbmdzKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAt
MjIzMCw3ICsyMjM4LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeSYg
VwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25G
YWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
UkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXImIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
PiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpCit7CisgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhp
cyk7Cit9CisKK3ZvaWQgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBz
ZXR0aW5ncykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVj
dGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsKK30KKworfTsK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
JiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpOworICAg
IAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQKKyAgICB2
b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCwxMSArMzU0LDE0IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1Jl
cXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYgKCFtX2NvcmVM
b2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgcmV0dXJu
OworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0QmxvY2tlZFBhZ2VVUkwo
YmxvY2tlZFBhZ2VVUkwpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0
U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhKSk7
CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVy
RGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3REZW5pZWRTY3Jp
cHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBjb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKKyAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCAgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmJik7CiAgICAgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVu
dEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2Vk
UGFnZVVSTCwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlJlc291cmNlTG9h
ZGVyIExlZ2FjeVJlY2UKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQorICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJy
b3IsIFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEpCiAgICAgQ2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKICAgICBIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSBzdWJzdGl0dXRlRGF0YSkKICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxMzUzKQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMTYgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdFdl
YktpdEFQSSBuZWVkcyB0byBsaW5rIHdpdGggV2ViQ29yZSBub3cgdGhhdCB0aGUgbW9jayBjb250
ZW50IGZpbHRlciBpcyBjb21waWxlZCBpbnRvIFdlYkNvcmUuCisgICAgICAgIEFkanVzdCB0ZXN0
IGV4cGVjdGF0aW9ucywgc2luY2UgdGhlIGNvbnRlbnQgZmlsdGVycyBhcmUgbm90IGV4cGVjdGVk
IHRvIGJlIGxvYWRlZCBpbiB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGFueW1vcmUu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEku
eGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9j
ZXNzUGx1Z0luLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tOgor
CiAyMDIyLTAzLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYWtlIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aCB0YWtlIGEgU3RyaW5nVmll
dwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkxMzUwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw5ICs4NiwxNSBAQCBXS19TWVNURU1fTERGTEFHU19JT1NfU0lOQ0VfMTUg
PSAtZnJhbWV3CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTID0gJChXS19VSUtJVE1BQ0hFTFBF
Ul9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFH
U19tYWNjYXRhbHlzdCA9IC1mcmFtZXdvcmsgVUlLaXRNYWNIZWxwZXI7CiAKK1dLX1dFQkNPUkVf
TERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tf
V0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JF
X0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JF
X0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdT
X3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQTFVTUExVU0ZM
QUdTID0gJChpbmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdT
ID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIp
L2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsg
V2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJ
T1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZM
QUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERG
TEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJ
VE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9M
REZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGlu
aGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVz
dFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQg
LWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFj
ZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1m
cmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAk
KFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVM
UEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dFQkNPUkVfTERG
TEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVS
X0xERkxBR1NfUExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsK
IAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ug
c2hvdWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dl
YlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsK
IFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNUX05BTUU6cmZj
MTAzNGlkZW50aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBFUl9F
WFRFTlNJT04gPSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1l
d29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9y
dDsKK1dLX1dFQkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZP
Uk1fTkFNRSkpOworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJD
b3JlCitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJD
b3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tf
V0VCQ09SRV9MREZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKK09U
SEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJh
bWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX1dFQkNPUkVfTERGTEFHUyk7
CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRlcl9wYXRoLy4u
Ly4uLy4uIjsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1lbWJlZGRlZCpdID0gIkBsb2Fk
ZXJfcGF0aC8uLiI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTEzNTApCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNh
dGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0
ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1
cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KQEAgLTQzMyw3ICs0MzMsNyBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcsIExh
emlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1l
OkAiaHR0cCJdOwogICAgICAgICBbW2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6W05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly90
ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBh
cmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOwogI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhw
ZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOwpAQCAtNDQ1LDcgKzQ0NSwxMSBAQCBURVNU
KENvbnRlbnRGaWx0ZXJpbmcsIExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9j
b2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdl
YlZpZXddIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9s
c0xvYWRlZDpOT107CisjZWxzZQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRhbENv
bnRyb2xzTG9hZGVkOllFU107CisjZW5kaWYKICAgICAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lz
dGVyXTsKICNlbmRpZgogICAgIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0J
KHJldmlzaW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZp
bHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Jl
bW90ZU9iamVjdEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTEzNTApCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVw
cmVjYXRlZEdsb2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2Nv
bC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0
ZS5oPgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454970</attachid>
            <date>2022-03-17 07:24:40 -0700</date>
            <delta_ts>2022-03-17 07:52:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220317072439.patch</filename>
            <type>text/plain</type>
            <size>90229</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcmVzc2VzIHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmlu
ZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLgorICAgICAgICBXaGVuIGNvbnRlbnQgZmlsdGVyaW5n
IGlzIHJ1bm5pbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byBzZW5kIHRoZSBt
b2NrIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyIGFuZCBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHN1cHBvcnQgdGVzdGluZy4gVGhlIG1vY2sgY29udGVudCBmaWx0ZXIgaXMKKyAg
ICAgICAgbW92ZWQgZnJvbSB0aGUgV2ViQ29yZSB0ZXN0IHN1cHBvcnQgbGlicmFyeSB0YXJnZXQg
dG8gdGhlIFdlYkNvcmUgZnJhbWV3b3JrLCBzaW5jZSBXZWJLaXQKKyAgICAgICAgbm93IGFsc28g
d2lsbCByZWZlcmVuY2UgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIgd2hlbiBzZW5kaW5nIGl0IHRv
IHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFByZXZpb3VzbHkgYSBjb21waWxlIHRpbWUg
Z3VhcmQgd2FzIHVzZWQgdG8gZGlzYWJsZSB0aGUgY29udGVudCBmaWx0ZXJpbmcgY29kZSBpbiB0
aGUKKyAgICAgICAgZG9jdW1lbnQgbG9hZGVyLiBIb3dldmVyLCB3ZSBzdGlsbCBuZWVkIHRvIHN1
cHBvcnQgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlciBm
b3IgV0sxLCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgdGhhdCB0byB1c2UgYSBydW50aW1lIGNoZWNr
IGluc3RlYWQuIFRoZSByZXN0IG9mCisgICAgICAgIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRlc3Qg
ZmFpbHVyZXMgc2VlbiB3aGVuIHJ1bm5pbmcgdGhlIGxheW91dCBhbmQgQVBJIHRlc3RzLiBUaGlz
IHBhdGNoCisgICAgICAgIGRvZXMgbm90IGVuYWJsZSB0aGUgZmVhdHVyZS4KKyAgICAgICAgCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdGFy
dEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6c2V0QmxvY2tlZEVy
cm9yKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50Rmls
dGVySW5Eb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEJsb2NrZWRQYWdlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRTdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVy
KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFu
ZGxlUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdz
Q2hhbmdlZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0Qmxv
Y2tlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRE
ZWNpc2lvblBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9k
aWZpZWRSZXF1ZXN0VVJMKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50Ojp+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dCk6CisKIDIwMjItMDMtMTYgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtJRkNdW0ludGVncmF0aW9uXSBNb3ZlIGZpcnN0U2VsZWN0ZWRCb3gvbGFzdFNlbGVjdGVk
Qm94IG91dCBvZiBJbmxpbmVJdGVyYXRvcjo6TGluZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkxMzUwKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNDA3LDggKzM0MDcsNiBAQAogCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3
NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRD
b29yZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGlu
YXRvci5jcHAgKi87IH07Ci0JCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUYxQUFBODQ2RjAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTFCQjg1OUMyMTU5QUVBMTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODU5OTIxNTlBRUEx
MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVBMzIxNTlBRjU3MDA2N0UwN0QgLyogQXBw
bGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCQjg1QTAyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JD
b250YWN0RmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBMUJCODVBOTIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QTYyMTU5
QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKQEAgLTM0MTYsOCArMzQx
NCw2IEBACiAJCUExQkI4NUIzMjE1OUIxQTEwMDY3RTA3RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250
YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQkI4NUFGMjE1OUIxQTAwMDY3RTA3RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aCAqLzsgfTsKIAkJQTFCQjg1QjgyMTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJC
ODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAqLzsgfTsKIAkJ
QTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QjUyMTU5QjM4QTAw
NjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwotCQlBMUJGNkI4MjFBQTk2QzdE
MDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tD
b250ZW50RmlsdGVyLmNwcCAqLzsgfTsKLQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAq
LzsgfTsKIAkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUz
RjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFDQkVGNjQxRjlGMTEyOTAwMjhERTdDIC8q
IE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2Qu
aCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY1
MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNzLmggKi87IH07CkBAIC01Mjk0LDYg
KzUyOTAsMTMgQEAKIAkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcx
OEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJvbWlz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3Qzg2
NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9
OworCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1
QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi87
IH07CisJCUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1
QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYyMjdD
N0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2
QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUUz
OTYyOEJGMjM5NTcyOEYwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhC
RDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYyOEMx
MjM5NTc0MzEwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0Qg
LyogTW90aW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzM0OCw2ICsxNzM1MSw5
IEBACiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM4RDA2MDkxRjhFODExOTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEJEMjM5NTcyOEUwMDY1
OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1v
dGlvbk1hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW90
aW9uTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk3NUI3
NjFFQzlBRjM5MDA4NDc3MTcgLyogSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudERPTUpJVC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE0OSw5ICsyMTE1NSwxMiBAQAog
CQkJCUNERjRCNzFGMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgKi8sCiAJ
CQkJQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLywK
IAkJCQlBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLywK
KwkJCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLywKKwkJCQlFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi8sCiAJCQkJQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovLAogCQkJCUExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJQTE5QUVBMUMxQUFBN0M0OTAw
QjUyQjI1IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsICovLAorCQkJCUUzOTUyRkU0
MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi8s
CiAJCQkJNTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJ
CQk1MTA1OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1
OEFEOTFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0z
MzM5NCw4ICszMzQwMyw2IEBACiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2Vy
dmljZVdvcmtlckludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2
QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMy
NkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5
IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2
RjNFOTExQzFFQ0IyRjAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ5N0YwNDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNjM3Niw2ICszNjM4MywxMCBAQAogCQkJCUNERjJCMDExMTgy
MDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyNDFF
MDNCRjgxMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYxMjdDN0NEQjUwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyog
TW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQ0NENEEyMERFMDM0
RjAwNjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkyMiw2
ICszNzkzMyw3IEBACiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJhbWVM
aWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIy
OTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkJDNEFGNDE4OTg4
MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5MzIsNyArMzc5NDQsNiBAQAogCQkJCUNE
RTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcwQ0UzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1N0IxM0UyMTRBRTc5OTAwNzk0QjBE
IC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYwNDkzMzI3NDNCMEU4MDBB
ODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
OTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTgyNzAyM0EyQTAwNjE3RUI2IC8qIFZpZGVvVHJhY2tDbGll
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzg3MTYsOCArMzg3MjcsNiBAQAogCQkJCUNEQzI2QjQw
MTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExRTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1G
YWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4
NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8q
IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODA2
LDYgKzM4ODE1LDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNz
aW9uSGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1
QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMz
Q0I4QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmln
YXRvckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0Mz
OTgzIC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw4IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKICAgICBtX21haW5SZXNvdXJjZVVSTCA9
IHVybDsKIH0KLSNlbHNlCisjZW5kaWYKKwogdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRl
cmluZ01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0xMzMsNyArMTM0LDYgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3Vy
Y2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQotI2VuZGlmCiAKIHZvaWQg
Q29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CkBAIC0xNjQsOSAr
MTY0LDYgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKLSNlbHNlCi1ib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQot
I2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7
IG1fY2xpZW50IH07CiAKQEAgLTE3NiwxOSArMTczLDMzIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6
Y29udGludWVBZnRlckRhdGFSZWMKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJs
b2NrZWQoW2RhdGEgPSBSZWYgeyBkYXRhIH1dKGF1dG8mIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAg
ICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAgICAgICAgfSk7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRS
ZXNvdXJjZURhdGEoKTsKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoZGF0YSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVycy5h
cHBlbmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZkYXRhIH0sIGVuY29kZWREYXRhTGVu
Z3RoIH0pOwotI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOworfQorI2VuZGlmCisKK2Jvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
Cit7CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xp
ZW50IH07CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMg
b2YgZGF0YSBmcm9tIDwle3NlbnNpdGl2ZX1zPi5cbiIsIGRhdGEuc2l6ZSgpLCB1cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRp
bEJsb2NrZWQoW2RhdGEgPSBSZWYgeyBkYXRhIH1dKGF1dG8mIGNvbnRlbnRGaWx0ZXIpIHsKKyAg
ICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKKyAgICAgICAgfSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9tYWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX21haW5S
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIH0KLSNlbmRpZgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTcsMTggKzIwOCwzNSBAQCBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKLSNlbHNlCi1i
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCi0jZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4g
cHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkws
IHJlc291cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKLSNlbHNlCisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8
JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZp
bHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5maW5pc2hl
ZEFkZGluZ0RhdGEoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3Rh
dGU6OkJsb2NrZWQpIHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKKyAg
ICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOworfQor
I2VuZGlmCisKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewogICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3Vy
Y2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwpAQCAtMjE4LDE0ICsyNDYsMTAgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
Tm90aWZ5RgogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAgICAg
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRS
ZXNvdXJjZURhdGEoKTsKLSNlbHNlCiAgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9t
YWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9tYWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjc5LDIxICsz
MDMsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OkFsbG93ZWQpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIoYnVmZmVyKTsKLSNlbmRpZgogfQogCiBVUkwgQ29udGVudEZpbHRlcjo6dXJsKCkK
IHsKKyAgICBpZiAobV9tYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBtX21haW5SZXNvdXJj
ZS0+dXJsKCk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VVUkw7CiAjZWxzZQotICAgIGlmIChtX21h
aW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT51cmwoKTsKICAgICBy
ZXR1cm4gVVJMKCk7CiAjZW5kaWYKIH0KQEAgLTMwNyw3ICszMjYsNiBAQCBzdGF0aWMgY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCi0j
aWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3Qg
RG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIu
Y29udGVudEZpbHRlcigpKSB7CkBAIC0zMjIsNyArMzQwLDYgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYKIAog
Ym9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOCBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29u
c3QgVVJMJik7Ci0jZWxzZQotICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2Fj
aGVkUmF3UmVzb3VyY2UmKTsKICNlbmRpZgorICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGlu
dWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkBAIC02NywxNiArNjYsMTYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
ICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0j
ZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7
IH0KKyAgICB2b2lkIHNldEJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
eyBtX2Jsb2NrZWRFcnJvciA9IGVycm9yOyB9CiAgICAgYm9vbCBpc0FsbG93ZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CiAgICAgYm9vbCByZXNwb25zZVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVkOyB9CiAgICAgCkBAIC0x
MTIsOSArMTExLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIFZlY3RvcjxSZXNvdXJj
ZURhdGFJdGVtPiBtX2J1ZmZlcnM7Ci0jZWxzZQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKICNlbmRpZgorICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKICAgICBjb25zdCBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9
OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJy
b3IgbV9ibG9ja2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UK
LSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOwotI2VuZGlmCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNp
b24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCitzdGF0aWMgYm9vbCYgY29udGVudEZp
bHRlckluRG9jdW1lbnRMb2FkZXIoKQoreworICAgIHN0YXRpYyBib29sIGZpbHRlcjsKKyAgICBS
RUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKyNl
bmRpZgorCiBzdGF0aWMgdm9pZCBjYW5jZWxBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxv
YWRlcnMpCiB7CiAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobG9hZGVycy52
YWx1ZXMoKSkpCkBAIC00MTksNyArNDI4LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2Fk
aW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3VyY2UpKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTksNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdU
Rk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShu
ZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTEsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRpZmljYXRl
SW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIyLDcgKzEzMzEs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xNDYz
LDcgKzE0NzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAg
IHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNl
LT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50
KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAyNSwxMCArMjAz
NCwxNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIG1fY29udGVu
dEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNy
ZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAg
ICBjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpID0gdHJ1ZTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIC8vIEFsd2F5cyBmaWx0
ZXIgaW4gV0sxCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSA9IG1fZnJhbWUg
JiYgbV9mcmFtZS0+dmlldygpICYmIG1fZnJhbWUtPnZpZXcoKS0+cGxhdGZvcm1XaWRnZXQoKTsK
ICNlbmRpZgotCisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkpCisgICAg
ICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2VuZGlmCisgICAgCisgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIHJlLWFwcGx5IHRoZSB1c2VyIGFnZW50IHRvIHRoZSBEb2N1bWVu
dCdzIFJlc291cmNlUmVxdWVzdCB1cG9uIHJlbG9hZCBpbiBjYXNlIHRoZSBlbWJlZGRpbmcKICAg
ICAvLyBhcHBsaWNhdGlvbiBoYXMgY2hhbmdlZCBpdCwgYnkgY2xlYXJpbmcgdGhlIHByZXZpb3Vz
IHVzZXIgYWdlbnQgdmFsdWUgaGVyZSBhbmQgYXBwbHlpbmcgdGhlIG5ldyB2YWx1ZSBpbiBDYWNo
ZWRSZXNvdXJjZUxvYWRlci4KICAgICBtX3JlcXVlc3QuY2xlYXJIVFRQVXNlckFnZW50KCk7CkBA
IC0yMjMwLDcgKzIyNDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJj
ZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2Ug
JiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291
cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlm
CkBAIC0yMzU3LDcgKzIzNzMsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3Vt
ZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgp
CiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0y
NDE0LDggKzI0MzAsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xp
CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90KQogewogICAgIGRhdGFSZWNlaXZlZChi
dWZmZXIpOwogfQpAQCAtMjQzNCw3ICsyNDUwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkKQEAgLTI0NTcsMjcgKzI0NzMsMjUgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6aGFuZGxlQ29udAogICAgIHJldHVybiBlcnJvcjsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQot
ewotICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxv
Y2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7Ci19Ci0KIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVu
dEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAm
JiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Js
b2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKLSNlbHNlCi0gICAgcmV0dXJu
IG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKTsKICNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQotICAgIFVOVVNFRF9QQVJBTShlcnJvcik7Ci0jZWxzZQogICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZShlcnJvcik7CisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVy
KCkpCisgICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihtX2Jsb2NrZWRQYWdlVVJMLCBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRG
aWx0ZXIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIGNsYXNzIERvY3Vt
ZW50TG9hZGVyCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj4KICAgICAs
IHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICAsIHB1YmxpYyBDb250ZW50U2Vj
dXJpdHlQb2xpY3lDbGllbnQKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICAsIHB1YmxpYyBDb250ZW50RmlsdGVyQ2xpZW50CiAjZW5k
aWYKICAgICAsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgewpAQCAtNDAyLDEzICs0
MDIsMTUgQEAgcHVibGljOgogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyAgICB2b2lkIHNldEJsb2NrZWRQYWdlVVJMKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwpIHsgbV9ibG9ja2VkUGFnZVVSTCA9IGJsb2NrZWRQYWdlVVJMOyB9CisgICAgdm9p
ZCBzZXRTdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKFN1YnN0aXR1dGVEYXRhJiYgc3Vi
c3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcikgeyBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRl
bnRGaWx0ZXIgPSBXVEZNb3ZlKHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpOyB9Cisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
ICAgICBDb250ZW50RmlsdGVyKiBjb250ZW50RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50RmlsdGVyLmdldCgpOyB9CiAgICAgdm9pZCByZWYoKSBjb25zdCBmaW5hbCB7IFJlZkNvdW50
ZWQ8RG9jdW1lbnRMb2FkZXI+OjpyZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSBjb25zdCBmaW5h
bCB7IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+OjpkZXJlZigpOyB9Ci0jZW5kaWYKKwogICAg
IFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2Nr
KENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5p
ZWRTY3JpcHQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlQ29udGVudEZpbHRlclBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7CkBA
IC01MTIsOSArNTE0LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQog
ICAgIC8vIENvbnRlbnRGaWx0ZXJDbGllbnQKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVy
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwpAQCAtNjY0LDEzICs2NjYsMTQg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBt
X2NvbnRlbnRTZWN1cml0eVBvbGljeTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
LSNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudEZpbHRlcj4gbV9jb250ZW50RmlsdGVyOwotI2Vsc2UK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAg
IGJvb2wgbV9ibG9ja2VkQnlDb250ZW50RmlsdGVyIHsgZmFsc2UgfTsKICAgICBSZXNvdXJjZUVy
cm9yIG1fYmxvY2tlZEVycm9yOwotI2VuZGlmCi0jZW5kaWYKKyAgICBVUkwgbV9ibG9ja2VkUGFn
ZVVSTDsKKyAgICBTdWJzdGl0dXRlRGF0YSBtX3N1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0
ZXI7CisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICBSZWZQdHI8UHJldmlld0NvbnZlcnRlcj4gbV9wcmV2aWV3Q29udmVydGVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkocmV2aXNpb24g
MjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYQogICAgIGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbG9hZGVyLT5zdWJzdGl0
dXRlRGF0YSgpOwogICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgIXN1YnN0aXR1
dGVEYXRhLmZhaWxpbmdVUkwoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgYm9vbCBzaG91bGRDb250
aW51ZSA9IHRydWU7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCiAgICAgICAgIGlmIChhdXRvIGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCku
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdCgqbG9hZGVyLCBz
dWJzdGl0dXRlRGF0YSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCShyZXZpc2lvbiAyOTEzNTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBPQkpDX0NMQVNTIE5TQ29kZXI7CitPQkpDX0NMQVNTIE5TTnVtYmVyOwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgV2ViRmlsdGVyRXZhbHVhdG9y
OwpAQCAtNjQsNiArNjUsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVV
UkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVhY2hhYmxlVVJMOyB9CiAgICAgdm9pZCBzZXRVbnJl
YWNoYWJsZVVSTChjb25zdCBVUkwmIHVybCkgeyBtX3VucmVhY2hhYmxlVVJMID0gdXJsOyB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wpOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CiAgICAgVVJMIG1f
dW5yZWFjaGFibGVVUkw7CkBAIC03MSw2ICs3Niw5IEBAIHByaXZhdGU6CiAjaWYgSEFWRShQQVJF
TlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBSZXRhaW5QdHI8V2ViRmls
dGVyRXZhbHVhdG9yPiBtX3dlYkZpbHRlckV2YWx1YXRvcjsKICNlbmRpZgorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgTlNOdW1iZXIqIG1f
dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IHsgbmlsIH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCShyZXZp
c2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOSBA
QAogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrVVJMSG9zdEtleSB7IEAidW5ibG9j
a1VSTEhvc3QiIH07CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB1bnJlYWNoYWJsZVVSTEtleSB7
IEAidW5yZWFjaGFibGVVUkwiIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVuYmxvY2tlZEFmdGVy
UmVxdWVzdEtleSB7IEAidW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IiB9OworI2VuZGlmCiAKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogc3RhdGljIE5TU3Ry
aW5nICogY29uc3Qgd2ViRmlsdGVyRXZhbHVhdG9yS2V5IHsgQCJ3ZWJGaWx0ZXJFdmFsdWF0b3Ii
IH07CkBAIC0xMDEsNiArMTA0LDEwIEBAIHZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjplbmNvZGUKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVS
KQogICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9y
S2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFtjb2RlciBlbmNvZGVPYmplY3Q6
bV91bmJsb2NrZWRBZnRlclJlcXVlc3QgZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07
CisjZW5kaWYKKwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIApAQCAtMTEzLDYg
KzEyMCw5IEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUKICNpZiBI
QVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgIHVuYmxvY2tI
YW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
Z2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5
XTsKICNlbmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBbY29k
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdIGZvcktleTp1bmJsb2NrZWRB
ZnRlclJlcXVlc3RLZXldOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMCw3ICsxMzAsMTEgQEAg
Ym9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmRlY29kZQogCiBib29sIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAg
ICBpZiAoIW1fdW5ibG9ja1JlcXVlc3RlcgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgICYmICFtX3VuYmxvY2tlZEFmdGVyUmVxdWVz
dAorI2VuZGlmCisgICAgICAgICkgewogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9V
TkJMT0NLX0hBTkRMRVIpCiAgICAgICAgIGlmICghbV93ZWJGaWx0ZXJFdmFsdWF0b3IpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTAsOSArMTY0LDE2IEBAIHZvaWQgQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRp
ZgotCi0gICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgewotICAgICAgICBtX3VuYmxvY2tSZXF1
ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICBhdXRvIHVuYmxv
Y2tSZXF1ZXN0ZXIgPSBtX3VuYmxvY2tSZXF1ZXN0ZXI7CisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0ZXIg
JiYgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QpIHsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3RlciA9
IFt1bmJsb2NrZWQgPSBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdC5ib29sVmFsdWVdKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rpb24gZnVuY3Rpb24pIHsK
KyAgICAgICAgICAgIGZ1bmN0aW9uKHVuYmxvY2tlZCk7CisgICAgICAgIH07CisgICAgfQorI2Vu
ZGlmCisgICAgaWYgKHVuYmxvY2tSZXF1ZXN0ZXIpIHsKKyAgICAgICAgdW5ibG9ja1JlcXVlc3Rl
cihbZGVjaXNpb25IYW5kbGVyXShib29sIHVuYmxvY2tlZCkgewogICAgICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJsb2NrZWRdIHsKICAgICAgICAgICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKICAgICAgICAgICAgIH0pOwpAQCAtMTYwLDYg
KzE4MSwxMyBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAg
fQogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VT
UykKK3ZvaWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJl
cXVlc3QoYm9vbCB1bmJsb2NrZWQpCit7CisgICAgbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgPSBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dW5ibG9ja2VkXTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vY2tDb250ZW50RmlsdGVy
TWFuYWdlciYgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxNb2NrQ29udGVudEZpbHRlck1hbmFnZXI+IG1hbmFnZXI7Cisg
ICAgcmV0dXJuIG1hbmFnZXIuZ2V0KCk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ+IGNs
aWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKyAgICAKK3ZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjpub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoc2V0dGlu
Z3MpOworfQorCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBzaW5n
bGV0b24oKTsKKworICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0Q2xpZW50
KFJlZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Pik7CisgICAgCisgICAgV0VC
Q09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBub3RpZnlTZXR0aW5nc0NoYW5nZWQoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJl
ZlB0cjxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBtX2NsaWVudDsKK307CisKK307
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDcgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXIuaCIKKyNp
bmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDQsMTIgKzQ1LDQ0IEBAIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIE1vY2tDb250ZW50RmkKIHZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6cmVzZXQoKQogewogICAgIHNpbmdsZXRvbigpID0gTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncygpOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9u
KCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogdm9pZCBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBNb2Nr
Q29udGVudEZpbHRlcjo6ZW5zdXJlSW5zdGFsbGVkKCk7CiAgICAgbV9lbmFibGVkID0gZW5hYmxl
ZDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRp
bmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6c2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpCit7Cisg
ICAgbV9ibG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsKKyAgICBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7
Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb25Qb2ludChE
ZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpCit7CisgICAgbV9kZWNpc2lvblBvaW50ID0gZGVj
aXNpb25Qb2ludDsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5v
dGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pCit7CisgICAgbV9k
ZWNpc2lvbiA9IGRlY2lzaW9uOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERlY2lzaW9u
IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCit7CisgICAgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9u
ID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6
OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKQoreworICAgIG1fbW9kaWZpZWRSZXF1ZXN0VVJM
ID0gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKIH0KIAogY29uc3Qg
U3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1bmJsb2NrUmVxdWVzdFVSTCgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBz
dGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2luZ2xldG9uKCk7Ci0gICAgc3RhdGlj
IHZvaWQgcmVzZXQoKTsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBzdGF0aWMgdm9p
ZCByZXNldCgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMSG9zdCgpIHsgcmV0
dXJuICJtb2NrLXVuYmxvY2siOyB9CiAKICAgICAvLyBUcmljayB0aGUgZ2VuZXJhdGVkIGJpbmRp
bmdzIGludG8gdGhpbmtpbmcgd2UncmUgUmVmQ291bnRlZC4KQEAgLTU4LDI2ICs1OCwyOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJv
b2wpOwogCiAgICAgY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9ibG9ja2VkU3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgYmxvY2tlZFN0cmluZykgeyBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3RyaW5nOyB9Cisg
ICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRCbG9ja2VkU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNpc2lvblBvaW50OyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvblBvaW50KERlY2lz
aW9uUG9pbnQgZGVjaXNpb25Qb2ludCkgeyBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvblBvaW50
KERlY2lzaW9uUG9pbnQpOwogCiAgICAgRGVjaXNpb24gZGVjaXNpb24oKSBjb25zdCB7IHJldHVy
biBtX2RlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbiBkZWNpc2lvbikg
eyBtX2RlY2lzaW9uID0gZGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9S
VCB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uKTsKIAogICAgIERlY2lzaW9uIHVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0K
LSAgICB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbikgeyBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERl
Y2lzaW9uOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXRVbmJsb2Nr
UmVxdWVzdERlY2lzaW9uKERlY2lzaW9uKTsKIAotICAgIGNvbnN0IFN0cmluZyYgdW5ibG9ja1Jl
cXVlc3RVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBjb25zdCBT
dHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIG1v
ZGlmaWVkUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZWRSZXF1ZXN0VVJMOyB9
Ci0gICAgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJl
cXVlc3RVUkwpIHsgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7IH0K
KyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVS
TChjb25zdCBTdHJpbmcmKTsKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYp
OwogCi1wcml2YXRlOgogICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKSA9IGRlZmF1bHQ7
Ci0gICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJikgPSBkZWxldGU7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyhjb25zdCBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSBkZWZhdWx0OwogICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MmIG9wZXJhdG9yPShjb25zdCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikg
PSBkZWZhdWx0OworcHJpdmF0ZToKIAogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsKICAg
ICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFmdGVyUmVz
cG9uc2UgfTsKQEAgLTg3LDQgKzkwLDUzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbW9kaWZp
ZWRSZXF1ZXN0VVJMOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCBtX2VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCBkZWNpc2lvblBvaW50KCk7
CisgICAgZW5jb2RlciA8PCBkZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgdW5ibG9ja1JlcXVl
c3REZWNpc2lvbigpOworICAgIGVuY29kZXIgPDwgYmxvY2tlZFN0cmluZygpOworICAgIGVuY29k
ZXIgPDwgbW9kaWZpZWRSZXF1ZXN0VVJMKCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M+IE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyICkKK3sKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlmICghZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPERl
Y2lzaW9uUG9pbnQ+IGRlY2lzaW9uUG9pbnQ7CisgICAgZGVjb2RlciA+PiBkZWNpc2lvblBvaW50
OworICAgIGlmICghZGVjaXNpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRl
Y2lzaW9uPiBkZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IGRlY2lzaW9uOworICAgIGlmICghZGVj
aXNpb24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gdW5ibG9ja1JlcXVl
c3REZWNpc2lvbjsKKyAgICBkZWNvZGVyID4+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAg
aWYgKCF1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBibG9ja2VkU3RyaW5nOworICAgIGRlY29kZXIg
Pj4gYmxvY2tlZFN0cmluZzsKKyAgICBpZiAoIWJsb2NrZWRTdHJpbmcpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IG1vZGlmaWVkUmVxdWVz
dFVSTDsKKyAgICBkZWNvZGVyID4+IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBpZiAoIW1vZGlm
aWVkUmVxdWVzdFVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgc2V0dGluZ3Muc2V0RW5hYmxlZCgq
ZW5hYmxlZCk7CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb25Qb2ludCgqZGVjaXNpb25Qb2ludCk7
CisgICAgc2V0dGluZ3Muc2V0RGVjaXNpb24oKmRlY2lzaW9uKTsKKyAgICBzZXR0aW5ncy5zZXRV
bmJsb2NrUmVxdWVzdERlY2lzaW9uKCp1bmJsb2NrUmVxdWVzdERlY2lzaW9uKTsKKyAgICBzZXR0
aW5ncy5zZXRCbG9ja2VkU3RyaW5nKFdURk1vdmUoKmJsb2NrZWRTdHJpbmcpKTsKKyAgICBzZXR0
aW5ncy5zZXRNb2RpZmllZFJlcXVlc3RVUkwoV1RGTW92ZSgqbW9kaWZpZWRSZXF1ZXN0VVJMKSk7
CisKKyAgICByZXR1cm4gc2V0dGluZ3M7Cit9CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQgOiBw
dWJsaWMgUmVmQ291bnRlZDxNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiB7CitwdWJs
aWM6CisgICAgdmlydHVhbCB+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IDA7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI5MTM1MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMjItMDMtMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVu
dCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgYmUgbm90aWZpZWQKKyAg
ICAgICAgd2hlbiBtb2NrIGNvbnRlbnQgZmlsdGVyIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGZyb20g
SmF2YVNjcmlwdCwgYW5kIHRoZW4gc2VuZCB0aGUgbmV3CisgICAgICAgIHNldHRpbmdzIHRvIHRo
ZSBOZXR3b3JrIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIuIFRo
ZSBvdGhlcgorICAgICAgICBjaGFuZ2VzIGFyZSBhZGRyZXNzaW5nIGxheW91dCBhbmQgQVBJIHRl
c3QgZmFpbHVyZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjppbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0SW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmVGcm9tQ29udGVudEZpbHRlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0
T2JzZXJ2aW5nU2V0dGluZ3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6Om1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKwogMjAyMi0wMy0xNiAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IGhl
YWRlciBuYW1lIHVzZWQgaW4gX19oYXNfaW5jbHVkZQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDMyLDYgKzE0MzIsMTMgQEAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya0Nv
bgogICAgIHJldHVybiBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyKTsKIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxs
TW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYmIHNl
dHRpbmdzKQoreworICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpID0g
V1RGTW92ZShzZXR0aW5ncyk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOwog
Y2xhc3MgQmxvYlBhcnQ7CiBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2w7CkBAIC0yMDAsNiAr
MjAxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6
TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7
CiAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZU5ldHdvcmtSZXNvdXJjZUxv
YWRlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwogCisjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB2b2lkIGluc3RhbGxN
b2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiYpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0
d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMyw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXMKICNlbmRpZgogICAgIFNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgZW51bTp1aW50OF90
IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQogICAgIFByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IGxvYWRJZGVu
dGlmaWVycykKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgSW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3Mgc2V0dGluZ3MpCisjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDE2ICsxODcsMTcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIExPQURFUl9SRUxFQVNFX0xPRygic3RhcnQ6IGhhc05ldHdvcmtMb2FkQ2hl
Y2tlcj0lZCIsICEhbV9uZXR3b3JrTG9hZENoZWNrZXIpOwogCisgICAgYXV0byBuZXdSZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIGlmICghc3RhcnRDb250
ZW50RmlsdGVyaW5nKG5ld1JlcXVlc3QpKQorICAgICAgICByZXR1cm47CisjZW5kaWYKKwogICAg
IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlciA9IG1fY29ubmVjdGlvbi0+c3RhcnRUcmFja2luZ1Jl
c291cmNlTG9hZChtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluRnJhbWVMb2FkKCkpOwogCiAgICAgQVNTRVJUKCFtX3dhc1N0YXJ0ZWQpOwogICAg
IG1fd2FzU3RhcnRlZCA9IHRydWU7CiAKLSAgICBhdXRvIG5ld1JlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgc3RhcnRDb250ZW50RmlsdGVyaW5nKG5ld1Jl
cXVlc3QpOwotI2VuZGlmCi0KICAgICBpZiAobV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG5ld1JlcXVl
c3QgfSwgdGhpcywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChhdXRvJiYg
cmVzdWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtMjM2LDE0ICsyMzcsMTcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIH0KIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK2Jvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydENvbnRlbnRGaWx0ZXJpbmcoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGlmICghaXNNYWluUmVzb3VyY2UoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBtX2NvbnRlbnRGaWx0ZXIg
PSBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpOwotICAgIGlmICghbV9jb250ZW50RmlsdGVy
LT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSkpCi0gICAgICAgIHJldHVybjsKICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKHJlcXVlc3QudXJsKCkpOworICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSkp
IHsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5k
aWYKIApAQCAtOTQ2LDExICs5NTAsMTEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYQogICAgICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYgKG1fY29udGVudEZpbHRlcikgewotICAgICAg
ICAgICAgbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJh
bWV0ZXJzLnJlcXVlc3QudXJsKCkpOworICAgICAgICAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXIt
PmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQo
bmV0d29ya0xvYWRNZXRyaWNzKSk7CiAgICAgfQogCkBAIC0xMDUxLDcgKzEwNTUsNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZWRpCiAgICAgICAgIG1fZmlyc3RSZXNw
b25zZVVSTCA9IHJlZGlyZWN0UmVzcG9uc2UudXJsKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIg
JiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRl
bnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LCBy
ZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKQEAgLTE3OTgsMzIg
KzE4MDIsMzggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZAogCiBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRl
ckRpZEJsb2NrKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQodW5i
bG9ja0hhbmRsZXIsIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7Ci0gICAgaWYgKCF1bmJs
b2NrSGFuZGxlci5uZWVkc1VJUHJvY2VzcygpKSB7Ci0gICAgICAgIHVuYmxvY2tIYW5kbGVyLnJl
cXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShi
b29sIHVuYmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKCF1bmJsb2NrZWQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlJlbG9hZEFmdGVyVW5ibG9ja2VkQ29udGVudEZpbHRlcihtX3BhcmFtZXRlcnMud2Vi
UGFnZVByb3h5SUQpLCAwKTsKKyAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworCisgICAgbV91bmJsb2NrSGFu
ZGxlciA9IHVuYmxvY2tIYW5kbGVyOworICAgIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQg
PSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKKyAgICAKKyAgICBpZiAodW5ibG9ja0hhbmRs
ZXIubmVlZHNVSVByb2Nlc3MoKSkKKyAgICAgICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdW5ibG9ja0hh
bmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH1dKGJvb2wgdW5ibG9ja2VkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fdW5ibG9ja0hh
bmRsZXIuc2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KHVuYmxvY2tlZCk7CisKKyAgICAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgICAgICAgICAgaWYgKG1fd2FzU3RhcnRlZCB8
fCB1bmJsb2NrZWQpCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG1fcGFyYW1ldGVycy5yZXF1
ZXN0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJj
ZVJlcXVlc3QoYWJvdXRCbGFua1VSTCgpKTsKKyAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJL
aXQ6OmJsb2NrZWRCeUNvbnRlbnRGaWx0ZXJFcnJvcihyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1f
Y29udGVudEZpbHRlci0+c2V0QmxvY2tlZEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIG1fY29u
dGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiAgICAgICAg
IH0pOwogICAgIH0KLSAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJy
b3IobV9wYXJhbWV0ZXJzLnJlcXVlc3QpOworICAgIHJldHVybiBlcnJvcjsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fY29udGVudEZpbHRlcik7Ci0gICAgbV9jb250ZW50RmlsdGVyLT5oYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURh
dGEpCiB7Ci0gICAgaWYgKHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKLSAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVG
cm9tQ29udGVudEZpbHRlcihibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpKTsKLSAgICBl
bHNlIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9jb250ZW50RmlsdGVyKTsKLSAgICAgICAg
YXV0byYgZXJyb3IgPSBtX2NvbnRlbnRGaWx0ZXItPmJsb2NrZWRFcnJvcigpOwotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6Q2FuY2VsTWFpblJlc291cmNlTG9hZEZv
ckNvbnRlbnRGaWx0ZXIoZXJyb3IpKTsKLSAgICB9CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQobV91bmJsb2NrSGFuZGxlciwg
bV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJy
b3IoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQcml2
YXRlUmVsYXllZC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3lDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuaD4KQEAgLTI0MSw3ICsyNDIsNyBAQCBwcml2YXRlOgogICAgIFJl
c291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIHN0YXJ0Q29udGVudEZp
bHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICBib29sIHN0YXJ0Q29udGVu
dEZpbHRlcmluZyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiAgICAgZW51
bSBjbGFzcyBJc0Zyb21TZXJ2aWNlV29ya2VyIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI5NSw2
ICsyOTYsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudEZp
bHRlcj4gbV9jb250ZW50RmlsdGVyOworICAgIFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciBtX3VuYmxvY2tIYW5kbGVyOworICAgIFN0cmluZyBtX3VuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0OwogI2VuZGlmCiAKICAgICBQcml2YXRlUmVsYXllZCBtX3ByaXZhdGVSZWxheWVk
IHsgUHJpdmF0ZVJlbGF5ZWQ6Ok5vIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYg
Kzk0LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVhSLmg+CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKIApAQCAtODUyLDYg
Kzg1NiwyOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlJlCiAgICAg
PjsKIH07CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZh
bHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNp
b25Qb2ludCwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb25Qb2ludDo6QWZ0ZXJXaWxsU2VuZFJlcXVlc3QsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyUmVkaXJlY3QsCisgICAg
ICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFm
dGVyUmVzcG9uc2UsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEs
CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9p
bnQ6Ok5ldmVyCisgICAgPjsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IHsKKyAgICB1c2luZyB2
YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvbiwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6RGVjaXNpb246OkFsbG93LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvbjo6QmxvY2sKKyAgICA+OworfTsKKyNlbmRpZgorCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQ+IHsKICAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpBdXRvcGxheUV2ZW50LApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTkyLDYgKzE5OTIsOCBAQAogCQlFMUQy
NkE1MzE3NTk2NEQ5MDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5
NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliICovOyB9OwogCQlFMUU1NTJDNTE2QUUwNjVG
MDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVE
NjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUz
RTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4
Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9Owor
CQlFMzgxNkIzRDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2
QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICov
OyB9OworCQlFMzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
Ki87IH07CiAJCUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovOyB9OwogCQlFMzg2NkFFNzIzOTc0MDUzMDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg2NkFFNjIzOTc0MDUz
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5LmggKi87
IH07CiAJCUUzODY2QjA4MjM5OUEyRDEwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4NjZCMDUyMzk5OTc5QzAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eU1lc3NhZ2VzLmggKi87IH07CkBAIC02NDg2LDkg
KzY0ODgsMTMgQEAKIAkJRTMwQ0ZCOUQyNjYwNjYzQzAwOTREOUMwIC8qIGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2I7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQlFMzEzNjY0RDI2NUVFNUFGMDA1MTA4NEYgLyogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVu
dC5zYi5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0MzlCNjMyMzQ1NDYzQTAw
MTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNEIx
MTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2Vi
Q29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVU
ZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
RTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3
MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzgx
NkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQ
cm94eS5tbTsgcGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU2MjM5NzQwNTMwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5Lmg7IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUVEMjM5ODQ3MUEw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2Fn
ZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1lc3NhZ2VzLmluOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTk1MDUsNiArOTUxMSw4IEBACiAJCQkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLywKIAkJCQk1MUFCRjY1NjE2MzkyRjE1
MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRlZ3kuY3BwICovLAogCQkJCTUxQUJGNjU3MTYzOTJG
MTUwMDEzMkE3QSAvKiBXZWJMb2FkZXJTdHJhdGVneS5oICovLAorCQkJCUUzODE2QjNCMjdFMjQ2
MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUz
ODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAq
LywKIAkJCQlBNTg2MEU2RjIzMEY2N0RFMDA0NjFBQUUgLyogV2ViUmVzb3VyY2VJbnRlcmNlcHRD
b250cm9sbGVyLmNwcCAqLywKIAkJCQlBNTg2MEU3MDIzMEY2N0RFMDA0NjFBQUUgLyogV2ViUmVz
b3VyY2VJbnRlcmNlcHRDb250cm9sbGVyLmggKi8sCiAJCQkJNTEwQUZGQjcxNjU0MjA0ODAwMUJB
MDVFIC8qIFdlYlJlc291cmNlTG9hZGVyLmNwcCAqLywKQEAgLTEwMDE3LDYgKzEwMDI1LDggQEAK
IAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYy
RSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCisJCQkJRTM0QjExMEYyN0M0NkQwOTAw
NkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQlEREU5OTJGNDI3
OEQwNkQ5MDBGNjBEMjYgLyogbGliV2ViS2l0QWRkaXRpb25zLmEgKi8sCiAJCQkJNTdBOUZGMTUy
NTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4
OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9uLmZyYW1ld29yayAqLywKQEAgLTEzODA1LDYgKzEz
ODE1LDcgQEAKIAkJCQkyRDNFRjQ0MzE5MTc2NDYzMDAwMzQxODQgLyogV2ViTWVtb3J5UHJlc3N1
cmVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAg
LyogV2ViTWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEzRkZCOTEyMDE0NTlD
NjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2OUY5QTExNzZDRUQ2MDA0NzFBNTIgLyog
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDQ0M4RkIxQTVG
NTBGRDAwOEZCMERBIC8qIFdlYk5hdmlnYXRpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzFBMkVDNDkxNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNjE4Nyw2ICsxNjE5OCw3IEBACiAJCQkJQTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2
IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNERjFCOTFCMjY3MDI1
NTUwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFGMDYwRTExNjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdpc3Rlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzgxNkIzRDI3RTI0NjNBMDA1RUFGQzAgLyogV2Vi
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQkE5MjRE
MTQ4ODMxMjYwMDYyRURCNSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJERjZGRTUyMjEyRTExMDkwMDQ2OTAzMCAvKiBXZWJQ
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwQ0U3MkEwMTI0N0U3MUQwMEJDMEVDNCAvKiBX
ZWJQYWdlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
NiArMjMyLDEwIEBACiAjaW5jbHVkZSA8d3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2luY2x1ZGUgIldlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIgorI2VuZGlmCisKICN1
bmRlZiBXRUJQUk9DRVNTX1JFTEVBU0VfTE9HCiAjZGVmaW5lIFJFTEVBU0VfTE9HX1NFU1NJT05f
SUQgKG1fc2Vzc2lvbklEID8gbV9zZXNzaW9uSUQtPnRvVUludDY0KCkgOiAwKQogI2lmIFJFTEVB
U0VfTE9HX0RJU0FCTEVECkBAIC0zNDEsNiArMzQ1LDEwIEBAIFdlYlByb2Nlc3M6OldlYlByb2Nl
c3MoKQogI2VuZGlmCiAKICAgICBHaWdhY2FnZTo6Zm9yYmlkRGlzYWJsaW5nUHJpbWl0aXZlR2ln
YWNhZ2UoKTsKKworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFy
dE9ic2VydmluZ1NldHRpbmdzKCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nl
c3MoKQpAQCAtMjIzMCw3ICsyMjM4LDYgQEAgUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeSYgVwogICAgIHJldHVybiAqc3VwcGxlbWVudDxSZW1vdGVNZWRpYUVuZ2luZUNvbmZp
Z3VyYXRpb25GYWN0b3J5PigpOwogfQogI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjdW5kZWYgUkVMRUFTRV9MT0dfU0VTU0lPTl9JRApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CisjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXImIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lk
IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpCit7
CisgICAgV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRD
bGllbnQodGhpcyk7Cit9CisKK3ZvaWQgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzJiBzZXR0aW5ncykKK3sKKyAgICBpZiAoYXV0byBjb25uZWN0aW9uID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZXhpc3RpbmdOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKSkKKyAgICAg
ICAgY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpJbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoc2V0dGluZ3MpLCAwKTsK
K30KKworfTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDbGllbnQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciA6IHB1YmxpYyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdTZXR0aW5n
cygpOworICAgIAorICAgIC8vIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGll
bnQKKyAgICB2b2lkIG1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBmaW5hbDsKK307CisKK307CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NCwxMSArMzU0LDE0
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXIKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29y
ZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciYgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVS
TCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYgc3Vic3RpdHV0ZURhdGEpCiB7CiAgICAgaWYg
KCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgcmV0dXJuOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c2V0QmxvY2tl
ZFBhZ2VVUkwoYmxvY2tlZFBhZ2VVUkwpOworICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+c2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihXVEZNb3ZlKHN1YnN0aXR1
dGVEYXRhKSk7CiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250
ZW50RmlsdGVyRGlkQmxvY2sodW5ibG9ja0hhbmRsZXIsIFdURk1vdmUodW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpKTsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmNhbmNl
bE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpj
YW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKQEAgLTM2NywxMyArMzcwLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6Y2FuY2VsTWFpblJlc291cgogICAgICAgICByZXR1cm47CiAgICAgbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KLQot
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKLXsKLSAgICBpZiAoIW1fY29yZUxvYWRlciB8
fCAhbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpIHx8ICFzdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGJsb2NrZWRQYWdl
VVJMLCBzdWJzdGl0dXRlRGF0YSk7Ci19CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw5ICsxMDIs
OCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQotICAgIHZvaWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChj
b25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCk7CisgICAgdm9pZCBjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYp
OwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKICAgICAKICAgICBSZWZQdHI8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMzksOSArMzksOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNl
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERl
bmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1
ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBVUkwgYmxvY2tl
ZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQogICAgIENh
bmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3IpCi0gICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0
ZURhdGEpCiAjZW5kaWYKIAogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxMzUzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMTYgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4g
ZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdFdlYktpdEFQSSBu
ZWVkcyB0byBsaW5rIHdpdGggV2ViQ29yZSBub3cgdGhhdCB0aGUgbW9jayBjb250ZW50IGZpbHRl
ciBpcyBjb21waWxlZCBpbnRvIFdlYkNvcmUuCisgICAgICAgIEFkanVzdCB0ZXN0IGV4cGVjdGF0
aW9ucywgc2luY2UgdGhlIGNvbnRlbnQgZmlsdGVycyBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGxv
YWRlZCBpbiB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGFueW1vcmUuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWc6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0lu
LnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tOgorCiAyMDIyLTAz
LTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE1J
TUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aCB0YWtlIGEgU3RyaW5nVmlldwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmln
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdl
YktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkxMzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw5ICs4NiwxNSBAQCBXS19TWVNURU1fTERGTEFHU19JT1NfU0lOQ0VfMTUgPSAtZnJhbWV3
CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTID0gJChXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdT
XyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHU19tYWNjYXRh
bHlzdCA9IC1mcmFtZXdvcmsgVUlLaXRNYWNIZWxwZXI7CiAKK1dLX1dFQkNPUkVfTERGTEFHUyA9
ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOworV0tfV0VCQ09SRV9M
REZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nf
aXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nf
d2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNoc2lt
dWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQTFVTUExVU0ZMQUdTID0gJChp
bmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9T
eXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZMQUdTID0gJChpbmhl
cml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYlRlc3RX
ZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1s
V2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29yayBJT1N1cmZhY2Ug
JChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9MREZMQUdTKSAtZnJh
bWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFHUykgJChX
S19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19VSUtJVE1BQ0hFTFBF
Ul9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BM
QVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkg
LWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQ
SS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3Jl
VGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQ
UFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsg
TmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJ
VF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxB
R1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dFQkNPUkVfTERGTEFHUykgJChP
VEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9USEVSX0xERkxBR1Nf
UExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJvbjsKIAogLy8gRklY
TUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQgd2Ugc2hvdWxkIGNy
ZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQ
bHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQSTsKIFBST0RVQ1Rf
QlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNUX05BTUU6cmZjMTAzNGlkZW50
aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBFUl9FWFRFTlNJT04g
PSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZh
U2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydDsKK1dLX1dF
QkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkp
OworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19X
RUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19X
RUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9M
REZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKK09USEVSX0xERkxB
R1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdl
YktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX1dFQkNPUkVfTERGTEFHUyk7CiBMRF9SVU5Q
QVRIX1NFQVJDSF9QQVRIU1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRlcl9wYXRoLy4uLy4uLy4uIjsK
IExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1lbWJlZGRlZCpdID0gIkBsb2FkZXJfcGF0aC8u
LiI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRG
aWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTEzNTApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFs
VmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNp
bXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aD4KQEAgLTQzMyw3ICs0MzMsNyBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcsIExhemlseUxvYWRQ
bGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cCJd
OwogICAgICAgICBbW2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Il1dXTsK
ICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotI2lmIFBMQVRGT1JN
KE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29u
dHJvbHNMb2FkZWQ6Tk9dOwogI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50
YWxDb250cm9sc0xvYWRlZDpZRVNdOwpAQCAtNDQ1LDcgKzQ0NSwxMSBAQCBURVNUKENvbnRlbnRG
aWx0ZXJpbmcsIExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0
ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwczovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpO
T107CisjZWxzZQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9h
ZGVkOllFU107CisjZW5kaWYKICAgICAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKICNl
bmRpZgogICAgIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHJldmlzaW9u
IDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVu
dEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5o
IgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2ltcG9ydCA8V2ViQ29y
ZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVj
dEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVu
dEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTEzNTApCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGVwcmVjYXRlZEds
b2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oPgogCg==
</data>
<flag name="commit-queue"
          id="482798"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454972</attachid>
            <date>2022-03-17 07:34:27 -0700</date>
            <delta_ts>2022-03-18 00:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220317073426.patch</filename>
            <type>text/plain</type>
            <size>90248</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcmVzc2VzIHRlc3QgZmFpbHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmlu
ZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLgorICAgICAgICBXaGVuIGNvbnRlbnQgZmlsdGVyaW5n
IGlzIHJ1bm5pbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byBzZW5kIHRoZSBt
b2NrIGNvbnRlbnQKKyAgICAgICAgZmlsdGVyIGFuZCBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBw
cm9jZXNzIHRvIHN1cHBvcnQgdGVzdGluZy4gVGhlIG1vY2sgY29udGVudCBmaWx0ZXIgaXMKKyAg
ICAgICAgbW92ZWQgZnJvbSB0aGUgV2ViQ29yZSB0ZXN0IHN1cHBvcnQgbGlicmFyeSB0YXJnZXQg
dG8gdGhlIFdlYkNvcmUgZnJhbWV3b3JrLCBzaW5jZSBXZWJLaXQKKyAgICAgICAgbm93IGFsc28g
d2lsbCByZWZlcmVuY2UgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIgd2hlbiBzZW5kaW5nIGl0IHRv
IHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFByZXZpb3VzbHkgYSBjb21waWxlIHRpbWUg
Z3VhcmQgd2FzIHVzZWQgdG8gZGlzYWJsZSB0aGUgY29udGVudCBmaWx0ZXJpbmcgY29kZSBpbiB0
aGUKKyAgICAgICAgZG9jdW1lbnQgbG9hZGVyLiBIb3dldmVyLCB3ZSBzdGlsbCBuZWVkIHRvIHN1
cHBvcnQgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIGRvY3VtZW50CisgICAgICAgIGxvYWRlciBm
b3IgV0sxLCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgdGhhdCB0byB1c2UgYSBydW50aW1lIGNoZWNr
IGluc3RlYWQuIFRoZSByZXN0IG9mCisgICAgICAgIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRlc3Qg
ZmFpbHVyZXMgc2VlbiB3aGVuIHJ1bm5pbmcgdGhlIGxheW91dCBhbmQgQVBJIHRlc3RzLiBUaGlz
IHBhdGNoCisgICAgICAgIGRvZXMgbm90IGVuYWJsZSB0aGUgZmVhdHVyZS4KKyAgICAgICAgCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIv
Q29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzdGFy
dEZpbHRlcmluZ01haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVu
dEZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6c2V0QmxvY2tlZEVy
cm9yKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oOgorICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50Rmls
dGVySW5Eb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWluUmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhy
b3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEJsb2NrZWRQYWdlVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRTdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVy
KToKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFu
ZGxlUmVxdWVzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpzZXRVbmJsb2NrZWRBZnRlclJlcXVlc3QpOgor
ICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdz
Q2hhbmdlZCBjb25zdCk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaDogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0Qmxv
Y2tlZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpzZXREZWNpc2lvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnNldERlY2lzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9kaWZpZWRSZXF1ZXN0VVJMKToKKyAg
ICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0QmxvY2tlZFN0cmluZyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRE
ZWNpc2lvblBvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0TW9k
aWZpZWRSZXF1ZXN0VVJMKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3NDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzQ2xpZW50Ojp+TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dCk6CisKIDIwMjItMDMtMTYgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtJRkNdW0ludGVncmF0aW9uXSBNb3ZlIGZpcnN0U2VsZWN0ZWRCb3gvbGFzdFNlbGVjdGVk
Qm94IG91dCBvZiBJbmxpbmVJdGVyYXRvcjo6TGluZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkxMzUwKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNDA3LDggKzM0MDcsNiBAQAogCQlBMUFEQUY3RTIzNjBGRDNFMDA5Q0I3
NzYgLyogUHJldmlld0NvbnZlcnRlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUFEQUY3QzIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmll
d0NvbnZlcnRlclByb3ZpZGVyLmggKi87IH07CiAJCUExQUZFREU2MUY4QkZGNkQwMDg3MDEzRiAv
KiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMUFGRURFNDFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRD
b29yZGluYXRvci5oICovOyB9OwogCQlBMUFGRURFNzFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1Bh
eW1lbnRDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUFGRURFNTFGOEJGRjZEMDA4NzAxM0YgLyogTW9ja1BheW1lbnRDb29yZGlu
YXRvci5jcHAgKi87IH07Ci0JCUExQjVCMjlFMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUYxQUFBODQ2RjAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQTFCQjg1OUMyMTU5QUVBMTAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JDb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODU5OTIxNTlBRUEx
MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODVBMzIxNTlBRjU3MDA2N0UwN0QgLyogQXBw
bGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFCQjg1QTAyMTU5QUY1NzAwNjdFMDdEIC8qIEFwcGxlUGF5RXJyb3JD
b250YWN0RmllbGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBMUJCODVBOTIxNTlCMDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QTYyMTU5
QjAyQzAwNjdFMDdEIC8qIE1vY2tQYXltZW50RXJyb3IuaCAqLzsgfTsKQEAgLTM0MTYsOCArMzQx
NCw2IEBACiAJCUExQkI4NUIzMjE1OUIxQTEwMDY3RTA3RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250
YWN0RmllbGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExQkI4NUFGMjE1OUIxQTAwMDY3RTA3RCAvKiBKU0FwcGxlUGF5RXJyb3JDb250YWN0RmllbGQu
aCAqLzsgfTsKIAkJQTFCQjg1QjgyMTU5QjNBNDAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJC
ODVCNDIxNTlCMzg5MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCAqLzsgfTsKIAkJ
QTFCQjg1QjkyMTU5QjNBRTAwNjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QjUyMTU5QjM4QTAw
NjdFMDdEIC8qIEpTTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwotCQlBMUJGNkI4MjFBQTk2QzdE
MDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tD
b250ZW50RmlsdGVyLmNwcCAqLzsgfTsKLQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAq
LzsgfTsKIAkJQTFDMTUwN0ExRTNGMkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQzE1MDc4MUUz
RjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFDQkVGNjQxRjlGMTEyOTAwMjhERTdDIC8q
IE1vY2tQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUNCRUY2MzFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2Qu
aCAqLzsgfTsKIAkJQTFDQzU2NjcxRjQ2MTQ3QTAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0M1NjY1
MUY0NjE0NjgwMEE0NTU1QiAvKiBKU1BheW1lbnRBZGRyZXNzLmggKi87IH07CkBAIC01Mjk0LDYg
KzUyOTAsMTMgQEAKIAkJRTM2RDcwMjAyN0I3MjAxMzAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkQ3MDFFMjdCNzFGMDQwMDY1MzFCNyAvKiBFbXB0eUF0dGFjaG1lbnRFbGVtZW50
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM3N0ZFNEQxREFERTE2NTAwQ0REMDI1IC8qIE5vZGVDb25zdGFudHMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDA0OTkzMURBREMwNDUwMDcx
OEYzQyAvKiBOb2RlQ29uc3RhbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM3Qzg2NTAxRUI2M0UzRjAwODdDNkNBIC8qIEpTRE9NUHJvbWlz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3Qzg2
NEYxRUI2M0UyRDAwODdDNkNBIC8qIEpTRE9NUHJvbWlzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9
OworCQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1
QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi87
IH07CisJCUUzOTUyRkYxMjdDN0NEQjUwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUI1
QjI5RDFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkYyMjdD
N0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODExQUE5NkM3RDAwQUY0QThBIC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2
QjgwMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgKi87IH07CiAJCUUz
OTYyOEJGMjM5NTcyOEYwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhC
RDIzOTU3MjhFMDA2NThFQ0QgLyogRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYyOEMx
MjM5NTc0MzEwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0Qg
LyogTW90aW9uTWFuYWdlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzQTc3NjY3MURDODVEMjgwMEI2OTBEOCAvKiBET01KSVRJRExD
b252ZXJ0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0E3NzY2NTFEQzg1RDIyMDBCNjkwRDggLyogRE9NSklUSURMQ29udmVydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNzM0OCw2ICsxNzM1MSw5
IEBACiAJCUUzODgzODk0MUJBRDE0NUYwMEQ2MkVFMyAvKiBTY3JpcHRNb2R1bGVMb2FkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0TW9kdWxlTG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODM4OTUxQkFEMTQ1RjAwRDYy
RUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM4RDA2MDkxRjhFODExOTAwNjQ5Q0YyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYyOEJEMjM5NTcyOEUwMDY1
OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QzAyMzk1NzQzMDAwNjU4RUNEIC8qIE1v
dGlvbk1hbmFnZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW90
aW9uTWFuYWdlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk3NUI3
NjFFQzlBRjM5MDA4NDc3MTcgLyogSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRG9jdW1lbnRGcmFnbWVudERPTUpJVC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE0OSw5ICsyMTE1NSwxMiBAQAog
CQkJCUNERjRCNzFGMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgKi8sCiAJ
CQkJQTFCRjZCODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLywK
IAkJCQlBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAqLywK
KwkJCQlFMzk1MkZFRDI3QzZERjEzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLywKKwkJCQlFMzk1MkZFQTI3QzZEQ0NFMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmggKi8sCiAJCQkJQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovLAogCQkJCUExQjVCMjlEMUFBQTg0NkUwMDhCNjA0MiAv
KiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi8sCiAJCQkJQTE5QUVBMUMxQUFBN0M0OTAw
QjUyQjI1IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsICovLAorCQkJCUUzOTUyRkU0
MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi8s
CiAJCQkJNTEwNThBRDcxRDY3OTI1NzAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNwcCAqLywKIAkJ
CQk1MTA1OEFEODFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCAqLywKIAkJCQk1MTA1
OEFEOTFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92aWRlci5jcHAgKi8sCkBAIC0z
MzM5NCw4ICszMzQwMyw2IEBACiAJCQkJNDI3REE3MUUxMzczNURGQTAwN0M1N0ZCIC8qIEpTU2Vy
dmljZVdvcmtlckludGVybmFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRUJGNTEyMUQxNjk2NDk2
QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREMy
NkI0MTE2MEE4Q0NFMDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQTFCRjZCODMxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1N0VCRkIxRTNBQjY3RjAwQUM5RkU5
IC8qIE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2
RjNFOTExQzFFQ0IyRjAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ5N0YwNDgxOURENDE0MDAwMUVFOUMzIC8qIE1vY2tQYWdlT3ZlcmxheUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNjM3Niw2ICszNjM4MywxMCBAQAogCQkJCUNERjJCMDExMTgy
MDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlDREY0QjcyNDFF
MDNCRjgxMDBFMjM1QTIgLyogTW9ja0NETUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
RjRCNzIwMUUwM0JGNkYwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5pZGwgaW4gSGVhZGVycyAq
LywKKwkJCQlFMzk1MkZGMjI3QzdDRkQzMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzOTUyRkVCMjdDNkRDQ0YwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYxMjdDN0NEQjUwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
Mzk1MkZFNTI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNThBRTAxRDY3QzIyOTAwOUE1MzhDIC8qIE1vY2tH
YW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMjFENjdDMjI5MDA5QTUzOEMgLyog
TW9ja0dhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDEzQ0NENEEyMERFMDM0
RjAwNjVBMjFBIC8qIE1vY2tNZWRpYURldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkyMiw2
ICszNzkzMyw3IEBACiAJCQkJNDFFQjc5N0UyN0MzRTQ1RTAwMUMzRTNFIC8qIFZpZGVvRnJhbWVM
aWJXZWJSVEMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkI2MjcxOUJBMUEwMENCOEQ3NCAv
KiBWaWRlb0ZyYW1lTWV0YWRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxREVFRkIwMjcxOUIy
OTAwMENCOEQ3NCAvKiBWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0MTYwNDkzMzI3NDNCMEU4MDBBODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRkJDNEFGNDE4OTg4
MTU2MDA0NkVFMzggLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMzc5MzIsNyArMzc5NDQsNiBAQAogCQkJCUNE
RTgzREIyMTgzQzQ0MDYwMDMxRUFBMyAvKiBWaWRlb1BsYXliYWNrUXVhbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDc1MDMzQTgyNTJCRDM2ODAwRjcwQ0UzIC8qIFZpZGVvUGxheWJhY2tRdWFs
aXR5TWV0cmljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc1N0IxM0UyMTRBRTc5OTAwNzk0QjBE
IC8qIFZpZGVvUHJlc2V0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTYwNDkzMzI3NDNCMEU4MDBB
ODZGQTAgLyogVmlkZW9GcmFtZVRpbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
OTM5QTgxRTlCREZCMTAwQkI3NjhEIC8qIFZpZGVvVG9vbGJveFNvZnRMaW5rLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCRTg4RTBERjE3MTVEMkEyMDA2NThEOTggLyogVmlkZW9UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0QxRjlCMTgyNzAyM0EyQTAwNjE3RUI2IC8qIFZpZGVvVHJhY2tDbGll
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzg3MTYsOCArMzg3MjcsNiBAQAogCQkJCUNEQzI2QjQw
MTYwQThDQzYwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUExRTA4NjYzMjQ4OUQzNEUwMEU0OTZEOSAvKiBNb2NrQXBwbGVQYXlTZXR1cEZlYXR1cmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNEI3MzExRTAzRDAwNzAwRTIzNUEyIC8qIE1vY2tDRE1G
YWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAv
KiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUI1QjI5RTFBQUE4
NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MTA1OEFEQjFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNThBREQxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkUHJv
dmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0VCRkExRTNBQjY3OTAwQUM5RkU5IC8q
IE1vY2tMaWJXZWJSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM4ODA2
LDYgKzM4ODE1LDkgQEAKIAkJCQlDREE5NTkzNTI0MTIzQ0I4MDA5MTBFRUYgLyogTWVkaWFTZXNz
aW9uSGVscGVySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2MzhBOUExODg0NDg3MjAwRTE1
QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTMz
Q0I4QjIwRjgwRTk5MDBFODlCMTEgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUNvY29hLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzOTUyRkYzMjdDN0NGREQwMDg2RjVEOSAvKiBNb2NrQ29udGVu
dEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZFRTI3QzZERjE0MDA4NkY1RDkg
LyogTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUy
RkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJEOUJGNzQyMURCRkRDMjcwMDdBN0Q5OSAvKiBOYXZpZ2F0b3JFTUUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBNEJCMTAxOTU0RDYyNzAwRkE1QzJFIC8qIE5hdmln
YXRvckdhbWVwYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlEMTMwRDdFMkI4MjAwN0Mz
OTgzIC8qIG9iamNfY2xhc3MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw4IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NF
UlQobV9tYWluUmVzb3VyY2VVUkwuaXNFbXB0eSgpKTsKICAgICBtX21haW5SZXNvdXJjZVVSTCA9
IHVybDsKIH0KLSNlbHNlCisjZW5kaWYKKwogdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRl
cmluZ01haW5SZXNvdXJjZShDYWNoZWRSYXdSZXNvdXJjZSYgcmVzb3VyY2UpCiB7CiAgICAgaWYg
KG1fc3RhdGUgIT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0xMzMsNyArMTM0LDYgQEAgdm9pZCBDb250
ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VSVCghbV9tYWluUmVzb3Vy
Y2UpOwogICAgIG1fbWFpblJlc291cmNlID0gJnJlc291cmNlOwogfQotI2VuZGlmCiAKIHZvaWQg
Q29udGVudEZpbHRlcjo6c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpCiB7CkBAIC0xNjQsOSAr
MTY0LDYgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyUmVzcG9ucwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKLSNlbHNlCi1ib29sIENvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQot
I2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7
IG1fY2xpZW50IH07CiAKQEAgLTE3NiwxOSArMTczLDMzIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6
Y29udGludWVBZnRlckRhdGFSZWMKICAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJs
b2NrZWQoW2RhdGEgPSBSZWYgeyBkYXRhIH1dKGF1dG8mIGNvbnRlbnRGaWx0ZXIpIHsKICAgICAg
ICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAgICAgICAgfSk7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRS
ZXNvdXJjZURhdGEoKTsKICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoZGF0YSwgZW5j
b2RlZERhdGFMZW5ndGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYnVmZmVycy5h
cHBlbmQoUmVzb3VyY2VEYXRhSXRlbSB7IFJlZlB0ciB7ICZkYXRhIH0sIGVuY29kZWREYXRhTGVu
Z3RoIH0pOwotI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOworfQorI2VuZGlmCisKK2Jvb2wgQ29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
Cit7CisgICAgUmVmPENvbnRlbnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xp
ZW50IH07CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAg
IExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMg
b2YgZGF0YSBmcm9tIDwle3NlbnNpdGl2ZX1zPi5cbiIsIGRhdGEuc2l6ZSgpLCB1cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisKKyAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRp
bEJsb2NrZWQoW2RhdGEgPSBSZWYgeyBkYXRhIH1dKGF1dG8mIGNvbnRlbnRGaWx0ZXIpIHsKKyAg
ICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKKyAgICAgICAgfSk7CiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9tYWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX21haW5S
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3Vy
Y2VEYXRhKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgIH0KLSNlbmRpZgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xOTcsMTggKzIwOCwzNSBAQCBib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKLSNlbHNlCi1i
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UpCi0jZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4g
cHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2VVUkws
IHJlc291cmNlVVJMID09IG1fbWFpblJlc291cmNlVVJMKTsKLSNlbHNlCisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5n
LCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJjZSBhdCA8
JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtdKFBsYXRmb3JtQ29udGVudEZp
bHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAgICAgY29udGVudEZpbHRlci5maW5pc2hl
ZEFkZGluZ0RhdGEoKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3Rh
dGU6OkJsb2NrZWQpIHsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKKyAg
ICAgICAgICAgIGRlbGl2ZXJTdG9yZWRSZXNvdXJjZURhdGEoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOworfQor
I2VuZGlmCisKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKK3sKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVu
dD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwogICAgIGlmIChtX21haW5SZXNvdXJj
ZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgogCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewogICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3Vy
Y2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwpAQCAtMjE4LDE0ICsyNDYsMTAgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
Tm90aWZ5RgogCiAgICAgICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkKSB7CiAgICAg
ICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93ZWQ7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICAgICAgICAgIGRlbGl2ZXJTdG9yZWRS
ZXNvdXJjZURhdGEoKTsKLSNlbHNlCiAgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9t
YWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
bV9tYWluUmVzb3VyY2UtPmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpCdWZmZXJEYXRhKTsKICAgICAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkKQpAQCAtMjc5LDIxICsz
MDMsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkaWREZWNpZGUoU3RhdGUgc3RhdAogdm9pZCBD
b250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
U3RhdGU6OkFsbG93ZWQpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9jbGllbnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRl
bnRGaWx0ZXIoYnVmZmVyKTsKLSNlbmRpZgogfQogCiBVUkwgQ29udGVudEZpbHRlcjo6dXJsKCkK
IHsKKyAgICBpZiAobV9tYWluUmVzb3VyY2UpCisgICAgICAgIHJldHVybiBtX21haW5SZXNvdXJj
ZS0+dXJsKCk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2VVUkw7CiAjZWxzZQotICAgIGlmIChtX21h
aW5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlLT51cmwoKTsKICAgICBy
ZXR1cm4gVVJMKCk7CiAjZW5kaWYKIH0KQEAgLTMwNyw3ICszMjYsNiBAQCBzdGF0aWMgY29uc3Qg
VVJMJiBibG9ja2VkUGFnZVVSTCgpCiAgICAgcmV0dXJuIGJsb2NrZWRQYWdlVVJMOwogfQogCi0j
aWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29s
IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3Qg
RG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIGlmIChhdXRvIGNvbnRlbnRGaWx0ZXIgPSBhY3RpdmVMb2FkZXIu
Y29udGVudEZpbHRlcigpKSB7CkBAIC0zMjIsNyArMzQwLDYgQEAgYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyU3Vic3RpdAogCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0jZW5kaWYKIAog
Ym9vbCBDb250ZW50RmlsdGVyOjp3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikgY29uc3QKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOCBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoY29u
c3QgVVJMJik7Ci0jZWxzZQotICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2Fj
aGVkUmF3UmVzb3VyY2UmKTsKICNlbmRpZgorICAgIHZvaWQgc3RhcnRGaWx0ZXJpbmdNYWluUmVz
b3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BG
aWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGlu
dWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJik7CkBAIC02NywxNiArNjYsMTYgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51ZUFmdGVy
Tm90aWZ5RmluaXNoZWQoY29uc3QgVVJMJiByZXNvdXJjZVVSTCk7Ci0jZWxzZQorI2VuZGlmCiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
ICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7Ci0j
ZW5kaWYKIAogICAgIHN0YXRpYyBib29sIGNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVl
c3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFjdGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURh
dGEmKTsKICAgICBib29sIHdpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgYmxvY2tlZEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja2VkRXJyb3I7
IH0KKyAgICB2b2lkIHNldEJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
eyBtX2Jsb2NrZWRFcnJvciA9IGVycm9yOyB9CiAgICAgYm9vbCBpc0FsbG93ZWQoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkOyB9CiAgICAgYm9vbCByZXNwb25zZVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVJlY2VpdmVkOyB9CiAgICAgCkBAIC0x
MTIsOSArMTExLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIFZlY3RvcjxSZXNvdXJj
ZURhdGFJdGVtPiBtX2J1ZmZlcnM7Ci0jZWxzZQotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKICNlbmRpZgorICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX21haW5SZXNvdXJjZTsKICAgICBjb25zdCBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIG1fYmxvY2tpbmdDb250ZW50RmlsdGVyIHsgbnVsbHB0ciB9
OwogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3RvcHBlZCB9OwogICAgIFJlc291cmNlRXJy
b3IgbV9ibG9ja2VkRXJyb3I7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db250ZW50RmlsdGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgPSAwOwotI2Vsc2UK
LSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJikgPSAwOwotI2VuZGlmCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29u
dGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNp
b24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCitzdGF0aWMgYm9vbCYgY29udGVudEZp
bHRlckluRG9jdW1lbnRMb2FkZXIoKQoreworICAgIHN0YXRpYyBib29sIGZpbHRlcjsKKyAgICBS
RUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIGZpbHRlcjsKK30KKyNl
bmRpZgorCiBzdGF0aWMgdm9pZCBjYW5jZWxBbGwoY29uc3QgUmVzb3VyY2VMb2FkZXJNYXAmIGxv
YWRlcnMpCiB7CiAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9WZWN0b3IobG9hZGVycy52
YWx1ZXMoKSkpCkBAIC00MTksNyArNDI4LDcgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2Fk
aW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAh
bV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQocmVzb3VyY2UpKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTksNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFdU
Rk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAh
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShu
ZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTEsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3BvbnNlLmNlcnRpZmljYXRl
SW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFu
ZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2Vp
dmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xMzIyLDcgKzEzMzEs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkCiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC0xNDYz
LDcgKzE0NzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAg
IHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYmIG1fbWFpblJlc291cmNl
LT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50
KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0
ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpAQCAtMjAyNSwxMCArMjAz
NCwxNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIG1fY29udGVu
dEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNy
ZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAg
ICBjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpID0gdHJ1ZTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIC8vIEFsd2F5cyBmaWx0
ZXIgaW4gV0sxCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSA9IG1fZnJhbWUg
JiYgbV9mcmFtZS0+dmlldygpICYmIG1fZnJhbWUtPnZpZXcoKS0+cGxhdGZvcm1XaWRnZXQoKTsK
ICNlbmRpZgotCisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkpCisgICAg
ICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENvbnRl
bnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2VuZGlmCisgICAgCisgICAgCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIHJlLWFwcGx5IHRoZSB1c2VyIGFnZW50IHRvIHRoZSBEb2N1bWVu
dCdzIFJlc291cmNlUmVxdWVzdCB1cG9uIHJlbG9hZCBpbiBjYXNlIHRoZSBlbWJlZGRpbmcKICAg
ICAvLyBhcHBsaWNhdGlvbiBoYXMgY2hhbmdlZCBpdCwgYnkgY2xlYXJpbmcgdGhlIHByZXZpb3Vz
IHVzZXIgYWdlbnQgdmFsdWUgaGVyZSBhbmQgYXBwbHlpbmcgdGhlIG5ldyB2YWx1ZSBpbiBDYWNo
ZWRSZXNvdXJjZUxvYWRlci4KICAgICBtX3JlcXVlc3QuY2xlYXJIVFRQVXNlckFnZW50KCk7CkBA
IC0yMjMwLDcgKzIyNDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJj
ZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAobV9tYWluUmVzb3VyY2Ug
JiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAgICAgIG1fbWFpblJlc291
cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykg
JiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAg
ICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogI2VuZGlm
CkBAIC0yMzU3LDcgKzIzNzMsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IERvY3Vt
ZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5SZXNvdXJjZUNsaWVudCgp
CiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50RmlsdGVyLT5z
dGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2UpOwogI2VuZGlmCkBAIC0y
NDE0LDggKzI0MzAsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xp
CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9u
RXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90KQogewogICAgIGRhdGFSZWNlaXZlZChi
dWZmZXIpOwogfQpAQCAtMjQzNCw3ICsyNDUwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFu
ZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVx
dWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7CiB9Ci0jZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkKQEAgLTI0NTcsMjcgKzI0NzMsMjcgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExv
YWRlcjo6aGFuZGxlQ29udAogICAgIHJldHVybiBlcnJvcjsKIH0KIAotdm9pZCBEb2N1bWVudExv
YWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgVVJM
JiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQot
ewotICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxv
Y2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7Ci19Ci0KIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmIG1fY29udGVu
dEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciAm
JiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJvckNvZGUoKSAmJiBtX2Js
b2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKICNlbHNlCi0gICAgcmV0dXJu
IG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIAogdm9p
ZCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBVTlVTRURfUEFSQU0oZXJyb3IpOwot
I2Vsc2UKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXIt
PmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAgIGlmIChjb250ZW50Rmls
dGVySW5Eb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBoYW5kbGVQcm92aXNpb25h
bExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkUGFnZVVSTCwgbV9zdWJzdGl0
dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsx
NTksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8RG9j
dW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyCiAgICAg
LCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLCBwdWJsaWMgQ29udGVu
dEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50IHsKQEAgLTQwMiwxMyArNDAyLDE1IEBAIHB1YmxpYzoKICAgICBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpIGNv
bnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotI2lmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBzZXRCbG9ja2VkUGFnZVVS
TChjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBhZ2VVUkwgPSBibG9ja2Vk
UGFnZVVSTDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcihT
dWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIpIHsgbV9zdWJz
dGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJzdGl0dXRlRGF0YUZyb21D
b250ZW50RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29udGVudEZpbHRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAgIHZvaWQgcmVmKCkgY29u
c3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVmKCk7IH0KICAgICB2b2lk
IGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6ZGVyZWYo
KTsgfQotI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGhhbmRsZUNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYm
IHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhh
bmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFVSTCYgYmxvY2tl
ZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKIAogICAgIHZvaWQgc3Rh
cnRJY29uTG9hZGluZygpOwpAQCAtNTEyLDkgKzUxNCw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZFRo
cm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNpemVfdCkgZmluYWw7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNj
cmlwdCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRG
aWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURhdGEmKSBmaW5hbDsK
QEAgLTY2NCwxMyArNjY2LDE0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IG1fY29u
dGVudEZpbHRlcjsKLSNlbHNlCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKICAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVudEZpbHRlciB7IGZhbHNl
IH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKLSNlbmRpZgotI2VuZGlmCisg
ICAgVVJMIG1fYmxvY2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRl
RGF0YUZyb21Db250ZW50RmlsdGVyOworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFByZXZpZXdDb252ZXJ0ZXI+
IG1fcHJldmlld0NvbnZlcnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRvJiBzdWJzdGl0dXRlRGF0
YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNW
YWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICAgICBpZiAoYXV0byBsb2FkZXIg
PSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgICAgICBz
aG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0
YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIu
aAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFTUyBOU0NvZGVyOworT0JK
Q19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiBPQkpDX0NMQVNT
IFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDEwIEBAIHB1YmxpYzoKICAgICBjb25z
dCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJsZVVSTDsg
fQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJiB1cmwpIHsgbV91bnJlYWNo
YWJsZVVSTCA9IHVybDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tlZEFmdGVy
UmVxdWVzdChib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX3VuYmxvY2tV
UkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpAQCAtNzEsNiArNzYsOSBAQCBwcml2
YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAg
ICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93ZWJGaWx0ZXJFdmFsdWF0b3I7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCB7IG5pbCB9OworI2VuZGlm
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDkgQEAKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgdW5ibG9ja1VS
TEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3RhdGljIE5TU3RyaW5nICogY29uc3Qg
dW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJMIiB9OworI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVuYmxvY2tlZEFmdGVyUmVxdWVzdCIg
fTsKKyNlbmRpZgogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAi
d2ViRmlsdGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwNCwxMCBAQCB2b2lkIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fd2ViRmlsdGVy
RXZhbHVhdG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBb
Y29kZXIgZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0IGZvcktleTp1bmJsb2Nr
ZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TCiB9CiAKQEAgLTExMyw2ICsxMjAsOSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlcjo6ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFO
RExFUikKICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1YXRvciA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgZm9yS2V5Ondl
YkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5kbGVyLm1fdW5ibG9ja2Vk
QWZ0ZXJSZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XSBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMjAsNyArMTMwLDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNv
ZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewotICAgIGlmICghbV91bmJs
b2NrUmVxdWVzdGVyKSB7CisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0ZXIKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICAmJiAhbV91
bmJsb2NrZWRBZnRlclJlcXVlc3QKKyNlbmRpZgorICAgICAgICApIHsKICNpZiBIQVZFKFBBUkVO
VEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAgICBpZiAoIW1fd2ViRmls
dGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTUwLDkgKzE2NCwx
NiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVxdWVzCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLQotICAgIGlmIChtX3VuYmxvY2tSZXF1ZXN0ZXIpIHsKLSAg
ICAgICAgbV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9ja2Vk
KSB7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2NrUmVxdWVzdGVyOworI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaWYg
KCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KSB7CisgICAgICAg
IHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2NrZWRBZnRlclJlcXVlc3Qu
Ym9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRlY2lzaW9uSGFuZGxlckZ1
bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1bmJsb2NrZWQpOworICAg
ICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVxdWVzdGVyKSB7CisgICAg
ICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsK
ICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFuZGxlciwgdW5ibG9ja2Vk
XSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxvY2tlZCk7CiAgICAgICAg
ICAgICB9KTsKQEAgLTE2MCw2ICsxODEsMTMgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6
c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQoreworICAgIG1fdW5ibG9j
a2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnVuYmxvY2tlZF07Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9Cisg
ICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3NDaGFuZ2Vk
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgbm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4g
bV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29udGVudEZpbHRlci5oIgog
I2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tD
b250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ0LDEyICs0NSw0NCBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBNb2NrQ29udGVudEZp
CiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkKIHsKICAgICBzaW5nbGV0
b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24oKSk7
CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxlZChib29sIGVu
YWJsZWQpCiB7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpOwogICAg
IG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5n
bGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBi
bG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJsb2NrZWRTdHJpbmc7Cisg
ICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0No
YW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KQoreworICAgIG1f
ZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQor
Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKERlY2lzaW9uIGRl
Y2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBNb2NrQ29udGVudEZp
bHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0b24o
KSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVl
c3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKQoreworICAgIG1fdW5i
bG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldE1vZGlm
aWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkKK3sKKyAgICBt
X21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsKKyAgICBNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdlZChzaW5nbGV0
b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5i
bG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNpbmds
ZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdW5i
bG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQogCiAgICAgLy8gVHJpY2sg
dGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3JlIFJlZkNvdW50ZWQuCkBA
IC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmxvY2tlZFN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAgIHZvaWQgc2V0QmxvY2tl
ZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9ibG9ja2VkU3RyaW5nID0g
YmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0
QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lzaW9uUG9pbnQgZGVjaXNp
b25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsgfQotICAgIHZvaWQgc2V0
RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQpIHsgbV9kZWNpc2lvblBv
aW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZv
aWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAgIERlY2lzaW9uIGRlY2lz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0RGVjaXNpb24o
RGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9uOyB9CisgICAgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNpc2lvbik7CiAKICAgICBE
ZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmJsb2Nr
UmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKERl
Y2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2NrUmVxdWVzdERlY2lzaW9u
ID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQ
T1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbik7CiAKLSAgICBjb25z
dCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25zdCB7IHJldHVybiBtX21v
ZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0
IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRSZXF1ZXN0VVJMID0gbW9k
aWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBz
ZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3Qg
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsK
ICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAKICAgICBib29sIG1fZW5h
YmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lzaW9uUG9pbnQgeyBEZWNp
c2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1MyBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVkOworICAgIGVuY29kZXIg
PDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNpb24oKTsKKyAgICBlbmNv
ZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNvZGVyIDw8IGJsb2NrZWRT
dHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVSTCgpOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciAp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5h
YmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBvaW50OworICAgIGRlY29k
ZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9pbnQpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAgZGVjb2RlciA+PiBkZWNp
c2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2RlciA+PiB1bmJsb2NrUmVx
dWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYmxvY2tlZFN0
cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAgaWYgKCFibG9ja2VkU3Ry
aW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBtb2RpZmllZFJlcXVlc3RV
Ukw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzOworICAgIHNl
dHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uUG9p
bnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lzaW9uKCpkZWNpc2lvbik7
CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigqdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhXVEZNb3ZlKCpibG9ja2Vk
U3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKFdURk1vdmUoKm1v
ZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgcmV0dXJuIHNldHRpbmdzOworfQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3NDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgPSAwOworfTsKKworfTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTEzNTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAzLTE2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJlcyB3
aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCB3
aWxsIGJlIG5vdGlmaWVkCisgICAgICAgIHdoZW4gbW9jayBjb250ZW50IGZpbHRlciBzZXR0aW5n
cyBhcmUgY2hhbmdlZCBmcm9tIEphdmFTY3JpcHQsIGFuZCB0aGVuIHNlbmQgdGhlIG5ldworICAg
ICAgICBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBwcm9jZXNzIGFuZCBpbnN0YWxsIHRoZSBtb2Nr
IGNvbnRlbnQgZmlsdGVyLiBUaGUgb3RoZXIKKyAgICAgICAgY2hhbmdlcyBhcmUgYWRkcmVzc2lu
ZyBsYXlvdXQgYW5kIEFQSSB0ZXN0IGZhaWx1cmVzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZp
bHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50
RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQ
cm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZ1NldHRpbmdzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hh
bmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVu
dEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisKIDIwMjItMDMtMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEluY29ycmVjdCBoZWFkZXIgbmFtZSB1c2VkIGluIF9faGFzX2luY2x1ZGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQzMiw2ICsxNDMyLDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzOjpzaW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1w
bDsKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUg
OiBib29sOwpAQCAtMjAwLDYgKzIwMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RD
b25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRh
a2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgdm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5
MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBT
ZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAg
ICBQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
NywxNiArMTg3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0
OiBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAor
ICAgIGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgp
IH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
KyAgICBpZiAoIXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rp
b24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCgh
bV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdS
ZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29u
dGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xv
YWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJj
ZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
QEAgLTIzNiwxNCArMjM3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgp
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRD
b250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIWlz
TWFpblJlc291cmNlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBp
ZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0
LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQotICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZW50Rmls
dGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKKyAgICBpZiAo
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlKCkpKSB7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRl
cmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOwogfQogI2VuZGlmCiAKQEAgLTk0NiwxMSArOTUwLDExIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5v
dGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlm
ICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0
ZXJzLnJlcXVlc3QudXJsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9
CiAjZW5kaWYKLQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlk
RmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTA1
MSw3ICsxMDU1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQog
ICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBp
ZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgaWYgKG1fY29udGVu
dEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0
KHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNl
bmRpZgogCkBAIC0xNzk4LDMyICsxODAyLDM4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlw
dCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAg
ICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5i
bG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlv
bi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0
ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdl
YktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsK
KworICAgIG1fdW5ibG9ja0hhbmRsZXIgPSB1bmJsb2NrSGFuZGxlcjsKKyAgICBtX3VuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQ7CisgICAgCisg
ICAgaWYgKHVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpCisgICAgICAgIG1fY29udGVu
dEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgZWxzZSB7
CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBtX3VuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdCh1bmJsb2Nr
ZWQpOworCisgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgICAg
IGlmIChtX3dhc1N0YXJ0ZWQgfHwgdW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIHJlcXVlc3Qg
PSBtX3BhcmFtZXRlcnMucmVxdWVzdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGFib3V0QmxhbmtVUkwoKSk7CisgICAgICAgICAg
ICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVz
dCk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnNldEJsb2NrZWRFcnJvcihlcnJvcik7
CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoZXJyb3IpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tl
ZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4g
ZXJyb3I7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVu
dEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNv
bnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlk
KCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92
aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0
aXR1dGVEYXRhKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVu
dEZpbHRlcik7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2Vk
RXJyb3IoKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNl
bE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7Ci0gICAgfQorICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2Fk
KG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIG1fY29udGVu
dEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRl
bnRGaWx0ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC0yNDEsNyArMjQyLDcg
QEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAg
dm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgYm9vbCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNGcm9tU2VydmljZVdvcmtlciA6IGJvb2wgeyBO
bywgWWVzIH07CkBAIC0yOTUsNiArMjk2LDggQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyAgICBXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV91bmJsb2NrSGFuZGxlcjsKKyAgICBTdHJpbmcg
bV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKICNlbmRpZgogCiAgICAgUHJpdmF0ZVJlbGF5
ZWQgbV9wcml2YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVkOjpObyB9OwpJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5MTM1
MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Y
Ui5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lO
R19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
PgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENvZGVy
c0NGLmgiCiAKQEAgLTg1Miw2ICs4NTYsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0
czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
X0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAorICAg
ICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpB
ZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
OjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAgICAg
IFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVy
RmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lz
aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6Ok1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsKK307
CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBdXRvcGxh
eUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29y
ZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5Miw2
ICsxOTkyLDggQEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9j
ZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsK
IAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
RTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0
b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKIAkJ
RTM4NjZBRTcyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJv
dmlkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5oICovOyB9OwogCQlFMzg2NkIwODIzOTlBMkQxMDBGODhGRTkgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA1MjM5OTk3OUMwMEY4
OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5o
ICovOyB9OwpAQCAtNjQ4Niw5ICs2NDg4LDEzIEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlD
MCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9
IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
aGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQw
OTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBw
YXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3
MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZD
MCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9
IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQw
MDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzg2NkFFNjIzOTc0MDUzMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg2NkFFRDIzOTg0NzFBMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9X
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTA1LDYgKzk1MTEsOCBAQAogCQkJCUUzNDM5QjYz
MjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8sCiAJ
CQkJNTFBQkY2NTYxNjM5MkYxNTAwMTMyQTdBIC8qIFdlYkxvYWRlclN0cmF0ZWd5LmNwcCAqLywK
IAkJCQk1MUFCRjY1NzE2MzkyRjE1MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRlZ3kuaCAqLywK
KwkJCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLywKKwkJCQlFMzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJQTU4NjBFNkYyMzBGNjdERTAwNDYxQUFFIC8qIFdl
YlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQTU4NjBFNzAyMzBGNjdE
RTAwNDYxQUFFIC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5oICovLAogCQkJCTUx
MEFGRkI3MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgKi8sCkBAIC0x
MDAxNyw2ICsxMDAyNSw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzRC
MTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovLAorCQkJ
CUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIg
Ki8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5h
ICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1
NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsg
Ki8sCkBAIC0xMzgwNSw2ICsxMzgxNSw3IEBACiAJCQkJMkQzRUY0NDMxOTE3NjQ2MzAwMDM0MTg0
IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTA5ODU0
RUQxMkJDNEUxODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxM0ZGQjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlGOUEx
MTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDQ0NDOEZCMUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxQTJFQzQ5MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmlj
YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTYxODcsNiArMTYxOTgsNyBAQAogCQkJCUExODFB
Nzk4MjFBQ0M3NEIwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREYxQjkxQjI2NzAyNTU1MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJNRE5TUmVn
aXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4MTZCM0QyN0Uy
NDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREY2RkU1MjIxMkUx
MTA5MDA0NjkwMzAgLyogV2ViUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzJBMDEy
NDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9saW51eC9SZWFs
VGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRlICJXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCIKKyNlbmRpZgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBS
RUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2
NCgpIDogMCkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0NSwxMCBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERp
c2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkuc3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpOworI2VuZGlmCiB9CiAKIFdl
YlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMzAsNyArMjIzOCw2IEBAIFJlbW90ZU1lZGlh
RW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8UmVt
b3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5j
bHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdl
ci5nZXQoKTsKK30KKwordm9pZCBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2Jz
ZXJ2aW5nU2V0dGluZ3MoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lkIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgaWYgKGF1dG8gY29u
bmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50Rmls
dGVyKHNldHRpbmdzKSwgMCk7Cit9CisKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0
YXJ0T2JzZXJ2aW5nU2V0dGluZ3MoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdz
Q2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9Owor
Cit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTQsMTEgKzM1NCwxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzb3VyCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9j
a0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0
IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1
dGVEYXRhKQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50
TG9hZGVyKCktPnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBtX2NvcmVM
b2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0
ZXIoV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZN
b3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zNjcsMTMgKzM3MCw2IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXIKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNl
TG9hZChlcnJvcik7CiB9Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCi17Ci0gICAg
aWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAh
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOwotfQogI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDIsOSArMTAyLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIGNvbnRlbnRG
aWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY29u
dGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YSYmKTsKICAgICB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGhh
bmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJs
b2NrZWRQYWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogI2VuZGlmCiAg
ICAgCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjkxMzUwKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDggQEAgbWVzc2FnZXMgLT4gV2ViUmVzb3Vy
Y2VMb2FkZXIgTGVnYWN5UmVjZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIENvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQo
V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJp
bmcgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpCisgICAgQ29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgVVJMIGJsb2NrZWRQYWdlVVJMLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YSkKICAgICBDYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQotICAgIEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKQogI2VuZGlmCiAKIH0KSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MykKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAz
LTE2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
dGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3
b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RXZWJLaXRBUEkgbmVlZHMgdG8gbGluayB3aXRoIFdlYkNvcmUgbm93IHRoYXQgdGhl
IG1vY2sgY29udGVudCBmaWx0ZXIgaXMgY29tcGlsZWQgaW50byBXZWJDb3JlLgorICAgICAgICBB
ZGp1c3QgdGVzdCBleHBlY3RhdGlvbnMsIHNpbmNlIHRoZSBjb250ZW50IGZpbHRlcnMgYXJlIG5v
dCBleHBlY3RlZCB0byBiZSBsb2FkZWQgaW4gdGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2Vz
cyBhbnltb3JlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0
V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQ
bHVnSW4ubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRl
cmluZy5tbToKKwogMjAyMi0wMy0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgTWFrZSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGggdGFrZSBh
IFN0cmluZ1ZpZXcKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNjb25maWcJKHJldmlzaW9uIDI5MTM1MCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZp
Zwkod29ya2luZyBjb3B5KQpAQCAtODYsOSArODYsMTUgQEAgV0tfU1lTVEVNX0xERkxBR1NfSU9T
X1NJTkNFXzE1ID0gLWZyYW1ldwogV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUyA9ICQoV0tfVUlL
SVRNQUNIRUxQRVJfTERGTEFHU18kKFdLX1BMQVRGT1JNX05BTUUpKTsKIFdLX1VJS0lUTUFDSEVM
UEVSX0xERkxBR1NfbWFjY2F0YWx5c3QgPSAtZnJhbWV3b3JrIFVJS2l0TWFjSGVscGVyOwogCitX
S19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18kKFdLX1BMQVRGT1JNX05B
TUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNP
UkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2ViQ29yZQorCiBPVEhFUl9D
UExVU1BMVVNGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaXN5c3RlbSAkKFNES1JPT1QpL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtLmZyYW1ld29yay9Qcml2YXRlSGVhZGVyczsKIAotT1RI
RVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAt
ZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1m
cmFtZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FV
VEhLSVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tf
T1BFTkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1Mp
ICQoV0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1Mp
ICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CitPVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19E
SVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdv
cmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29y
ayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9M
REZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xf
TERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19V
SUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChXS19X
RUJDT1JFX0xERkxBR1MpICQoT1RIRVJfTERGTEFHU19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNI
KSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29y
ayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJ
bnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVzZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRp
b24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQ
bHVnSW4ueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhjY29uZmlnCShyZXZpc2lvbiAyOTEzNTApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25m
aWcJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBAIFBST0RVQ1RfTkFNRSA9IFRlc3RX
ZWJLaXRBUEk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFwcGxlLiQoUFJPRFVD
VF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTsKIEVYRUNVVEFCTEVfU1VGRklYID0gLmJ1bmRsZTsK
IFdSQVBQRVJfRVhURU5TSU9OID0gd2tidW5kbGU7Ci1PVEhFUl9MREZMQUdTID0gJChpbmhlcml0
ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3Jl
VGVzdFN1cHBvcnQ7CitXS19XRUJDT1JFX0xERkxBR1MgPSAkKFdLX1dFQkNPUkVfTERGTEFHU18k
KFdLX1BMQVRGT1JNX05BTUUpKTsKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVvcyA9IC1mcmFt
ZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZXNpbXVsYXRvciA9IC1mcmFt
ZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZMQUdTX3dhdGNob3MgPSAtZnJhbWV3b3JrIFdl
YkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaHNpbXVsYXRvciA9IC1mcmFtZXdvcmsgV2Vi
Q29yZQorCitPVEhFUl9MREZMQUdTID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgSmF2YVNjcmlw
dENvcmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgJChXS19XRUJDT1JF
X0xERkxBR1MpOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPW1hY29zeCpdID0gIkBsb2Fk
ZXJfcGF0aC8uLi8uLi8uLiI7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9ZW1iZWRkZWQq
XSA9ICJAbG9hZGVyX3BhdGgvLi4iOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24g
MjkxMzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTAgQEAKIAogI2ltcG9y
dCAiRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgogI2ltcG9ydCAiQ29udGVudEZpbHRlcmluZy5o
IgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclJlZi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg+CkBAIC00MzMsNyArNDMzLDcgQEAgVEVTVChDb250ZW50Rmls
dGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBbVGVzdFByb3RvY29sIHJlZ2lzdGVy
V2l0aFNjaGVtZTpAImh0dHAiXTsKICAgICAgICAgW1tjb250cm9sbGVyIHdlYlZpZXddIGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vdGVzdCJdXV07CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBbY29udHJvbGxl
ciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKICNlbHNlCiAgICAgICAgIFtjb250
cm9sbGVyIGV4cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKQEAgLTQ0NSw3ICs0NDUs
MTEgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBMYXppbHlMb2FkUGxhdGZvcgogICAgICAgICBb
VGVzdFByb3RvY29sIHJlZ2lzdGVyV2l0aFNjaGVtZTpAImh0dHBzIl07CiAgICAgICAgIFtbY29u
dHJvbGxlciB3ZWJWaWV3XSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgICAgIFtjb250cm9sbGVyIGV4cGVjdFBhcmVu
dGFsQ29udHJvbHNMb2FkZWQ6Tk9dOworI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0
UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOworI2VuZGlmCiAgICAgICAgIFtUZXN0UHJvdG9j
b2wgdW5yZWdpc3Rlcl07CiAjZW5kaWYKICAgICB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5n
UGx1Z0luLm1tCShyZXZpc2lvbiAyOTEzNTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpbXBvcnQg
IkNvbnRlbnRGaWx0ZXJpbmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQkocmV2aXNpb24gMjkxMzUw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNp
bXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0UHJvdG9jb2wuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdEVy
cm9yc1ByaXZhdGUuaD4KIAo=
</data>
<flag name="review"
          id="482799"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="482933"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454992</attachid>
            <date>2022-03-17 10:46:02 -0700</date>
            <delta_ts>2022-03-18 10:05:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220317104601.patch</filename>
            <type>text/plain</type>
            <size>90252</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTE1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRyZXNzZXMgdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5n
IGluIHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFdoZW4gY29udGVudCBmaWx0ZXJpbmcg
aXMgcnVubmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLCB3ZSBuZWVkIHRvIHNlbmQgdGhlIG1v
Y2sgY29udGVudAorICAgICAgICBmaWx0ZXIgYW5kIHNldHRpbmdzIHRvIHRoZSBOZXR3b3JrIHBy
b2Nlc3MgdG8gc3VwcG9ydCB0ZXN0aW5nLiBUaGUgbW9jayBjb250ZW50IGZpbHRlciBpcworICAg
ICAgICBtb3ZlZCBmcm9tIHRoZSBXZWJDb3JlIHRlc3Qgc3VwcG9ydCBsaWJyYXJ5IHRhcmdldCB0
byB0aGUgV2ViQ29yZSBmcmFtZXdvcmssIHNpbmNlIFdlYktpdAorICAgICAgICBub3cgYWxzbyB3
aWxsIHJlZmVyZW5jZSB0aGUgbW9jayBjb250ZW50IGZpbHRlciB3aGVuIHNlbmRpbmcgaXQgdG8g
dGhlIE5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgUHJldmlvdXNseSBhIGNvbXBpbGUgdGltZSBn
dWFyZCB3YXMgdXNlZCB0byBkaXNhYmxlIHRoZSBjb250ZW50IGZpbHRlcmluZyBjb2RlIGluIHRo
ZQorICAgICAgICBkb2N1bWVudCBsb2FkZXIuIEhvd2V2ZXIsIHdlIHN0aWxsIG5lZWQgdG8gc3Vw
cG9ydCBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgZG9jdW1lbnQKKyAgICAgICAgbG9hZGVyIGZv
ciBXSzEsIHNvIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGF0IHRvIHVzZSBhIHJ1bnRpbWUgY2hlY2sg
aW5zdGVhZC4gVGhlIHJlc3Qgb2YKKyAgICAgICAgdGhpcyBwYXRjaCBhZGRyZXNzZXMgdGVzdCBm
YWlsdXJlcyBzZWVuIHdoZW4gcnVubmluZyB0aGUgbGF5b3V0IGFuZCBBUEkgdGVzdHMuIFRoaXMg
cGF0Y2gKKyAgICAgICAgZG9lcyBub3QgZW5hYmxlIHRoZSBmZWF0dXJlLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzZXRCbG9ja2VkRXJy
b3IpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRGaWx0
ZXJJbkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29u
dGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0QmxvY2tlZFBhZ2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgorICAg
ICAgICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5k
bGVSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3luYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdCk6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3ND
aGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9j
a2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2Rp
ZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ6On5Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
KToKKwogMjAyMi0wMy0xNiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0lGQ11bSW50ZWdyYXRpb25dIE1vdmUgZmlyc3RTZWxlY3RlZEJveC9sYXN0U2VsZWN0ZWRC
b3ggb3V0IG9mIElubGluZUl0ZXJhdG9yOjpMaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTEzNTApCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTM0MDcsOCArMzQwNyw2IEBACiAJCUExQURBRjdFMjM2MEZEM0UwMDlDQjc3
NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3
Q29udmVydGVyUHJvdmlkZXIuaCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8q
IE1vY2tQYXltZW50Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExQUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENv
b3JkaW5hdG9yLmggKi87IH07CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5
bWVudENvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQUZFREU1MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcCAqLzsgfTsKLQkJQTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCNUIyOUMxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwICovOyB9OwotCQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBMUJCODU5QzIxNTlBRUExMDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5MjE1OUFFQTEw
MDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBs
ZVBheUVycm9yQ29udGFjdEZpZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMUJCODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNv
bnRhY3RGaWVsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExQkI4NUE5MjE1OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBNjIxNTlC
MDJDMDA2N0UwN0QgLyogTW9ja1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQxNiw4ICszNDE0
LDYgQEAKIAkJQTFCQjg1QjMyMTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRh
Y3RGaWVsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFCQjg1QUYyMTU5QjFBMDAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5o
ICovOyB9OwogCQlBMUJCODVCODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4
NUI0MjE1OUIzODkwMDY3RTA3RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICovOyB9OwogCQlB
MUJCODVCOTIxNTlCM0FFMDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2
N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2QjgyMUFBOTZDN0Qw
MEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwICovOyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9j
a0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICov
OyB9OwogCQlBMUMxNTA3QTFFM0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNG
MkIzRTAwMzJDOThDIC8qIFByZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyog
TW9ja1BheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExQ0JFRjYzMUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5o
ICovOyB9OwogCQlBMUNDNTY2NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUx
RjQ2MTQ2ODAwQTQ1NTVCIC8qIEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAgLTUyOTQsNiAr
NTI5MCwxMyBAQAogCQlFMzZENzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50
RWxlbWVudENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2RDcwMUUyN0I3MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzc3RkU0RDFEQURFMTY1MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4
RjNDIC8qIE5vZGVDb25zdGFudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0
RjFFQjYzRTJEMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM5NTJGRUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJG
RUQyN0M2REYxMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07
CisJCUUzOTUyRkYwMjdDN0NEQUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVC
MjlDMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsg
fTsKKwkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVC
MjlEMUFBQTg0NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3
Q0ZEMzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9j
a0NvbnRlbnRGaWx0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZC
ODAxQUE5NkM3RDAwQUY0QThBIC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5
NjI4QkYyMzk1NzI4RjAwNjU4RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJE
MjM5NTcyOEUwMDY1OEVDRCAvKiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEy
Mzk1NzQzMTAwNjU4RUNEIC8qIE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAv
KiBNb3Rpb25NYW5hZ2VyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENv
bnZlcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
QTc3NjY1MURDODVEMjIwMEI2OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzQ4LDYgKzE3MzUxLDkg
QEAKIAkJRTM4ODM4OTQxQkFEMTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJF
RTMgLyogU2NyaXB0TW9kdWxlTG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdE1vZHVsZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzhEMDYwOTFGOEU4MTE5MDA2NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
OTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90
aW9uTWFuYWdlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rp
b25NYW5hZ2VyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2
MUVDOUFGMzkwMDg0NzcxNyAvKiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTQ5LDkgKzIxMTU1LDEyIEBACiAJ
CQkJQ0RGNEI3MUYxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJ
CQlBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAog
CQkJCUExQkY2QjgxMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAor
CQkJCUUzOTUyRkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwICovLAorCQkJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCAqLywKIAkJCQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5jcHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBC
NTJCMjUgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQy
N0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywK
IAkJCQk1MTA1OEFENzFENjc5MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJ
CTUxMDU4QUQ4MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4
QUQ5MUQ2NzkyNTcwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMz
Mzk0LDggKzMzNDAzLDYgQEAKIAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZD
MDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2
QjQxMTYwQThDQ0UwMDI2NzU3QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJ
CQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUExQjVCMjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkg
LyogTW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZG
M0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTM2Mzc2LDYgKzM2MzgzLDEwIEBACiAJCQkJQ0RGMkIwMTExODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUw
M0JGODEwMEUyMzVBMiAvKiBNb2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RG
NEI3MjAxRTAzQkY2RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICov
LAorCQkJCUUzOTUyRkYyMjdDN0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZG
NUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OTUyRkU1MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBN
b2NrR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRG
MDA2NUEyMUEgLyogTW9ja01lZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM3OTIyLDYg
KzM3OTMzLDcgQEAKIAkJCQk0MUVCNzk3RTI3QzNFNDVFMDAxQzNFM0UgLyogVmlkZW9GcmFtZUxp
YldlYlJUQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjYyNzE5QkExQTAwQ0I4RDc0IC8q
IFZpZGVvRnJhbWVNZXRhZGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFERUVGQjAyNzE5QjI5
MDAwQ0I4RDc0IC8qIFZpZGVvRnJhbWVSZXF1ZXN0Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAor
CQkJCTQxNjA0OTMzMjc0M0IwRTgwMEE4NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGQkM0QUY0MTg5ODgx
NTYwMDQ2RUUzOCAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTJCMEQ0QzIxQzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzkzMiw3ICszNzk0NCw2IEBACiAJCQkJQ0RF
ODNEQjIxODNDNDQwNjAwMzFFQUEzIC8qIFZpZGVvUGxheWJhY2tRdWFsaXR5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzUwMzNBODI1MkJEMzY4MDBGNzBDRTMgLyogVmlkZW9QbGF5YmFja1F1YWxp
dHlNZXRyaWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzU3QjEzRTIxNEFFNzk5MDA3OTRCMEQg
LyogVmlkZW9QcmVzZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNjA0OTMzMjc0M0IwRTgwMEE4
NkZBMCAvKiBWaWRlb0ZyYW1lVGltZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREM5
MzlBODFFOUJERkIxMDBCQjc2OEQgLyogVmlkZW9Ub29sYm94U29mdExpbmsuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJFODhFMERGMTcxNUQyQTIwMDY1OEQ5OCAvKiBWaWRlb1RyYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRDFGOUIxODI3MDIzQTJBMDA2MTdFQjYgLyogVmlkZW9UcmFja0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODcxNiw4ICszODcyNyw2IEBACiAJCQkJQ0RDMjZCNDAx
NjBBOENDNjAwMjY3NTdCIC8qIExlZ2FjeU1vY2tDRE0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTFFMDg2NjMyNDg5RDM0RTAwRTQ5NkQ5IC8qIE1vY2tBcHBsZVBheVNldHVwRmVhdHVyZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREY0QjczMTFFMDNEMDA3MDBFMjM1QTIgLyogTW9ja0NETUZh
Y3RvcnkuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCRjZCODIxQUE5NkM3RDAwQUY0QThBIC8q
IE1vY2tDb250ZW50RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUExQjVCMjlFMUFBQTg0
NkUwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxMDU4QURCMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTA1OEFERDFENjc5MkMxMDA5QTUzOEMgLyogTW9ja0dhbWVwYWRQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3RUJGQTFFM0FCNjc5MDBBQzlGRTkgLyog
TW9ja0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzg4MDYs
NiArMzg4MTUsOSBAQAogCQkJCUNEQTk1OTM1MjQxMjNDQjgwMDkxMEVFRiAvKiBNZWRpYVNlc3Np
b25IZWxwZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzYzOEE5QTE4ODQ0ODcyMDBFMTVB
MUIgLyogTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxMzND
QjhCMjBGODBFOTkwMEU4OUIxMSAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRjMyN0M3Q0ZERDAwODZGNUQ5IC8qIE1vY2tDb250ZW50
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzOTUyRkVFMjdDNkRGMTQwMDg2RjVEOSAv
KiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJG
RjAyN0M3Q0RBQzAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ5QkY3NDIxREJGREMyNzAwN0E3RDk5IC8qIE5hdmlnYXRvckVNRS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIxMDE5NTRENjI3MDBGQTVDMkUgLyogTmF2aWdh
dG9yR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQxMzBEN0UyQjgyMDA3QzM5
ODMgLyogb2JqY19jbGFzcy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDggQEAgdm9pZCBDb250ZW50RmlsdGVyOjpzdGFydEZpbHRlcmluZ01haW5SZQogICAgIEFTU0VS
VChtX21haW5SZXNvdXJjZVVSTC5pc0VtcHR5KCkpOwogICAgIG1fbWFpblJlc291cmNlVVJMID0g
dXJsOwogfQotI2Vsc2UKKyNlbmRpZgorCiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVy
aW5nTWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTEzMyw3ICsxMzQsNiBAQCB2b2lkIENvbnRl
bnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlCiAgICAgQVNTRVJUKCFtX21haW5SZXNvdXJj
ZSk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSAmcmVzb3VyY2U7CiB9Ci0jZW5kaWYKIAogdm9pZCBD
b250ZW50RmlsdGVyOjpzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCkKIHsKQEAgLTE2NCw5ICsx
NjQsNiBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zCiAKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQotI2Vsc2UKLWJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCi0j
ZW5kaWYKIHsKICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsg
bV9jbGllbnQgfTsKIApAQCAtMTc2LDE5ICsxNzMsMzMgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlYwogICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxv
Y2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikgewogICAgICAg
ICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsKLSNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJl
c291cmNlRGF0YSgpOwogICAgICAgICAgICAgZGVsaXZlclJlc291cmNlRGF0YShkYXRhLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9idWZmZXJzLmFw
cGVuZChSZXNvdXJjZURhdGFJdGVtIHsgUmVmUHRyIHsgJmRhdGEgfSwgZW5jb2RlZERhdGFMZW5n
dGggfSk7Ci0jZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7Cit9CisjZW5kaWYKKworYm9vbCBDb250ZW50Rmls
dGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K3sKKyAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGll
bnQgfTsKKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyAgICAgICAg
TE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBv
ZiBkYXRhIGZyb20gPCV7c2Vuc2l0aXZlfXM+LlxuIiwgZGF0YS5zaXplKCksIHVybCgpLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGls
QmxvY2tlZChbZGF0YSA9IFJlZiB7IGRhdGEgfV0oYXV0byYgY29udGVudEZpbHRlcikgeworICAg
ICAgICAgICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOworICAgICAgICB9KTsKICAgICAg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpIHsKICAgICAgICAgICAgIEFTU0VSVCht
X21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fbWFpblJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQogICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJj
ZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgfQotI2VuZGlmCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5NywxOCArMjA4LDM1IEBAIGJvb2wgQ29u
dGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWMKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKQotI2Vsc2UKLWJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBw
cm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
R19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZVVSTCwg
cmVzb3VyY2VVUkwgPT0gbV9tYWluUmVzb3VyY2VVUkwpOwotI2Vsc2UKKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKKyAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcs
ICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWluIHJlc291cmNlIGF0IDwl
e3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW10oUGxhdGZvcm1Db250ZW50Rmls
dGVyJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmZpbmlzaGVk
QWRkaW5nRGF0YSgpOworICAgICAgICB9KTsKKworICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0
ZTo6QmxvY2tlZCkgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOworICAg
ICAgICAgICAgZGVsaXZlclN0b3JlZFJlc291cmNlRGF0YSgpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7Cit9Cisj
ZW5kaWYKKworYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50
PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX21haW5SZXNvdXJjZSk7CiAgICAgaWYgKG1fbWFpblJlc291cmNl
LT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCiAKICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7CiAgICAgICAgIExPRyhDb250ZW50Rmls
dGVyaW5nLCAiQ29udGVudEZpbHRlciB3aWxsIGZpbmlzaCBmaWx0ZXJpbmcgbWFpbiByZXNvdXJj
ZSBhdCA8JXtzZW5zaXRpdmV9cz4uXG4iLCB1cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CkBAIC0yMTgsMTQgKzI0NiwxMCBAQCBib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJO
b3RpZnlGCiAKICAgICAgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQpIHsKICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6QWxsb3dlZDsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgICAgICAgICAgZGVsaXZlclN0b3JlZFJl
c291cmNlRGF0YSgpOwotI2Vsc2UKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX21h
aW5SZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVCht
X21haW5SZXNvdXJjZS0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xp
Y3k6OkJ1ZmZlckRhdGEpOwogICAgICAgICAgICAgICAgIGRlbGl2ZXJSZXNvdXJjZURhdGEoYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9
CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQpCkBAIC0yNzksMjEgKzMw
MywxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OmRpZERlY2lkZShTdGF0ZSBzdGF0CiB2b2lkIENv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBT
dGF0ZTo6QWxsb3dlZCk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRl
cihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVu
Y29kZWREYXRhTGVuZ3RoKTsKLSAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihidWZmZXIpOwotI2VuZGlmCiB9CiAKIFVSTCBDb250ZW50RmlsdGVyOjp1cmwoKQog
eworICAgIGlmIChtX21haW5SZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWFpblJlc291cmNl
LT51cmwoKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9D
RVNTKQogICAgIHJldHVybiBtX21haW5SZXNvdXJjZVVSTDsKICNlbHNlCi0gICAgaWYgKG1fbWFp
blJlc291cmNlKQotICAgICAgICByZXR1cm4gbV9tYWluUmVzb3VyY2UtPnVybCgpOwogICAgIHJl
dHVybiBVUkwoKTsKICNlbmRpZgogfQpAQCAtMzA3LDcgKzMyNiw2IEBAIHN0YXRpYyBjb25zdCBV
UkwmIGJsb2NrZWRQYWdlVVJMKCkKICAgICByZXR1cm4gYmxvY2tlZFBhZ2VVUkw7CiB9CiAKLSNp
ZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wg
Q29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBE
b2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3Rp
dHV0ZURhdGEpCiB7CiAgICAgaWYgKGF1dG8gY29udGVudEZpbHRlciA9IGFjdGl2ZUxvYWRlci5j
b250ZW50RmlsdGVyKCkpIHsKQEAgLTMyMiw3ICszNDAsNiBAQCBib29sIENvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJTdWJzdGl0CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSNlbmRpZgogCiBi
b29sIENvbnRlbnRGaWx0ZXI6OndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw4IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShjb25z
dCBVUkwmKTsKLSNlbHNlCi0gICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShDYWNo
ZWRSYXdSZXNvdXJjZSYpOwogI2VuZGlmCisgICAgdm9pZCBzdGFydEZpbHRlcmluZ01haW5SZXNv
dXJjZShDYWNoZWRSYXdSZXNvdXJjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEZp
bHRlcmluZ01haW5SZXNvdXJjZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250aW51
ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKQEAgLTY3LDE2ICs2NiwxNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVu
Y29kZWREYXRhTGVuZ3RoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRpbnVlQWZ0ZXJO
b3RpZnlGaW5pc2hlZChjb25zdCBVUkwmIHJlc291cmNlVVJMKTsKLSNlbHNlCisjZW5kaWYKICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgYm9vbCBjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKLSNl
bmRpZgogCiAgICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVz
dChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0
YSYpOwogICAgIGJvb2wgd2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVz
b3VyY2VFcnJvciYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBjb25zdCBSZXNv
dXJjZUVycm9yJiBibG9ja2VkRXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRFcnJvcjsg
fQorICAgIHZvaWQgc2V0QmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSB7
IG1fYmxvY2tlZEVycm9yID0gZXJyb3I7IH0KICAgICBib29sIGlzQWxsb3dlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQ7IH0KICAgICBib29sIHJlc3BvbnNlUmVj
ZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlUmVjZWl2ZWQ7IH0KICAgICAKQEAgLTEx
Miw5ICsxMTEsOCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgCiAgICAgVmVjdG9yPFJlc291cmNl
RGF0YUl0ZW0+IG1fYnVmZmVyczsKLSNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2Fj
aGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogI2VuZGlmCisgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwogICAgIGNvbnN0IFBs
YXRmb3JtQ29udGVudEZpbHRlciogbV9ibG9ja2luZ0NvbnRlbnRGaWx0ZXIgeyBudWxscHRyIH07
CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpTdG9wcGVkIH07CiAgICAgUmVzb3VyY2VFcnJv
ciBtX2Jsb2NrZWRFcnJvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRG
aWx0ZXJDbGllbnQuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTEgKzQyLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRlcmVmKCkgY29uc3QgPSAwOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKICAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3Vn
aENvbnRlbnRGaWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgc2l6ZV90KSA9IDA7Ci0jZWxzZQot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBT
aGFyZWRCdWZmZXImKSA9IDA7Ci0jZW5kaWYKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29u
dGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
TWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250
ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lv
biAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKK3N0YXRpYyBib29sJiBjb250ZW50Rmls
dGVySW5Eb2N1bWVudExvYWRlcigpCit7CisgICAgc3RhdGljIGJvb2wgZmlsdGVyID0gZmFsc2U7
CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBmaWx0ZXI7
Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgY2FuY2VsQWxsKGNvbnN0IFJlc291cmNlTG9hZGVy
TWFwJiBsb2FkZXJzKQogewogICAgIGZvciAoYXV0byYgbG9hZGVyIDogY29weVRvVmVjdG9yKGxv
YWRlcnMudmFsdWVzKCkpKQpAQCAtNDE5LDcgKzQyOCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6
OmlzTG9hZGluZygpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbWV0cmlj
cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0
ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKHJlc291
cmNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBAIC03MTAsNyArNzE5LDcgQEAgdm9pZCBE
b2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogICAgICAgICBuZXdSZXF1ZXN0LnNl
dFVSTChXVEZNb3ZlKHVybCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYg
IW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOwogI2VuZGlmCkBAIC05MDIsNyArOTExLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChjbwogICAgIEFTU0VSVChyZXNwb25zZS5jZXJ0
aWZpY2F0ZUluZm8oKSk7CiAgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxl
dGlvbkhhbmRsZXJDYWxsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYg
KG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyUmVzcG9u
c2VSZWNlaXZlZChyZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpAQCAtMTMyMiw3
ICsxMzMxLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZAogCiB2
b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250
aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgpA
QCAtMTQ2Myw3ICsxNDcyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1l
KCkKICAgICBzdG9wTG9hZGluZygpOwogICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX21haW5S
ZXNvdXJjZS0+aGFzQ2xpZW50KCp0aGlzKSkKICAgICAgICAgbV9tYWluUmVzb3VyY2UtPnJlbW92
ZUNsaWVudCgqdGhpcyk7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250
ZW50RmlsdGVyLT5zdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAjZW5kaWYKQEAgLTIwMjUs
MTAgKzIwMzQsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlcwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBt
X2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgPyBDb250ZW50Rmls
dGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkcpCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSA9IHRydWU7CisjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAvLyBBbHdh
eXMgZmlsdGVyIGluIFdLMQorICAgIGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkgPSBt
X2ZyYW1lICYmIG1fZnJhbWUtPnZpZXcoKSAmJiBtX2ZyYW1lLT52aWV3KCktPnBsYXRmb3JtV2lk
Z2V0KCk7CiAjZW5kaWYKLQorICAgIGlmIChjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigp
KQorICAgICAgICBtX2NvbnRlbnRGaWx0ZXIgPSAhbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkg
PyBDb250ZW50RmlsdGVyOjpjcmVhdGUoKnRoaXMpIDogbnVsbHB0cjsKKyNlbmRpZgorICAgIAor
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSByZS1hcHBseSB0aGUgdXNlciBhZ2VudCB0byB0aGUg
RG9jdW1lbnQncyBSZXNvdXJjZVJlcXVlc3QgdXBvbiByZWxvYWQgaW4gY2FzZSB0aGUgZW1iZWRk
aW5nCiAgICAgLy8gYXBwbGljYXRpb24gaGFzIGNoYW5nZWQgaXQsIGJ5IGNsZWFyaW5nIHRoZSBw
cmV2aW91cyB1c2VyIGFnZW50IHZhbHVlIGhlcmUgYW5kIGFwcGx5aW5nIHRoZSBuZXcgdmFsdWUg
aW4gQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCiAgICAgbV9yZXF1ZXN0LmNsZWFySFRUUFVzZXJBZ2Vu
dCgpOwpAQCAtMjIzMCw3ICsyMjQ2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2xlYXJNYWlu
UmVzb3VyY2UoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fbWFpblJl
c291cmNlICYmIG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21h
aW5SZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVy
KQogICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsK
ICNlbmRpZgpAQCAtMjM1Nyw3ICsyMzczLDcgQEAgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBEb2N1bWVudExvYQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpiZWNvbWVNYWluUmVzb3VyY2VD
bGllbnQoKQogewotI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZp
bHRlci0+c3RhcnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKm1fbWFpblJlc291cmNlKTsKICNlbmRp
ZgpAQCAtMjQxNCw4ICsyNDMwLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3Vy
aXR5UG9saQogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmVucXVldWVTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50KFdURk1vdmUoZXZlbnRJbml0KSk7CiB9CiAKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCkKIHsKICAgICBkYXRhUmVj
ZWl2ZWQoYnVmZmVyKTsKIH0KQEAgLTI0MzQsNyArMjQ1MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG8KIHsKICAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1l
TG9hZFJlcXVlc3QoKmZyYW1lKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwog
fQotI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVl
c3REZW5pZWRTY3JpcHQpCkBAIC0yNDU3LDI3ICsyNDczLDI3IEBAIFJlc291cmNlRXJyb3IgRG9j
dW1lbnRMb2FkZXI6OmhhbmRsZUNvbnQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLXZvaWQgRG9j
dW1lbnRMb2FkZXI6OmhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKLXsKLSAgICBmcmFtZUxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1l
KCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwotfQotCiBib29sIERvY3VtZW50
TG9hZGVyOjpjb250ZW50RmlsdGVyV2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiBt
X2NvbnRlbnRGaWx0ZXItPndpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9h
ZGVyKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHJldHVybiBtX2Jsb2NrZWRCeUNvbnRlbnRG
aWx0ZXIgJiYgbV9ibG9ja2VkRXJyb3IuZXJyb3JDb2RlKCkgPT0gZXJyb3IuZXJyb3JDb2RlKCkg
JiYgbV9ibG9ja2VkRXJyb3IuZG9tYWluKCkgPT0gZXJyb3IuZG9tYWluKCk7CiAjZWxzZQotICAg
IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIgJiYgbV9jb250ZW50RmlsdGVyLT53aWxsSGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiB9
CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgVU5VU0VEX1BBUkFNKGVy
cm9yKTsKLSNlbHNlCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9jb250ZW50
RmlsdGVyLT5oYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICBpZiAoY29u
dGVudEZpbHRlckluRG9jdW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgaGFuZGxlUHJv
dmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKG1fYmxvY2tlZFBhZ2VVUkwsIG1f
c3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcik7CiAjZW5kaWYKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTksNyArMTU5LDcgQEAgY2xhc3MgRG9jdW1lbnRMb2FkZXIKICAgICA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERvY3VtZW50TG9hZGVyPgogICAgICwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
cgogICAgICwgcHVibGljIENvbnRlbnRTZWN1cml0eVBvbGljeUNsaWVudAotI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICwgcHVibGlj
IENvbnRlbnRGaWx0ZXJDbGllbnQKICNlbmRpZgogICAgICwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCB7CkBAIC00MDIsMTMgKzQwMiwxNSBAQCBwdWJsaWM6CiAgICAgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9Qcm9wYWdh
dGUoKSBjb25zdDsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLSNpZiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHZvaWQgc2V0QmxvY2tl
ZFBhZ2VVUkwoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCkgeyBtX2Jsb2NrZWRQYWdlVVJMID0g
YmxvY2tlZFBhZ2VVUkw7IH0KKyAgICB2b2lkIHNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRG
aWx0ZXIoU3Vic3RpdHV0ZURhdGEmJiBzdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKSB7
IG1fc3Vic3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlciA9IFdURk1vdmUoc3Vic3RpdHV0ZURh
dGFGcm9tQ29udGVudEZpbHRlcik7IH0KKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIENvbnRlbnRGaWx0ZXIqIGNvbnRlbnRGaWx0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRGaWx0ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHJl
ZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46OnJlZigpOyB9CiAg
ICAgdm9pZCBkZXJlZigpIGNvbnN0IGZpbmFsIHsgUmVmQ291bnRlZDxEb2N1bWVudExvYWRlcj46
OmRlcmVmKCk7IH0KLSNlbmRpZgorCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBo
YW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBoYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwogI2VuZGlmCiAKICAgICB2
b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKQEAgLTUxMiw5ICs1MTQsOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAm
JiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpIGZp
bmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJs
b2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3RE
ZW5pZWRTY3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikg
ZmluYWw7CkBAIC02NjQsMTMgKzY2NiwxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVy
PiBtX2NvbnRlbnRGaWx0ZXI7Ci0jZWxzZQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgYm9vbCBtX2Jsb2NrZWRCeUNvbnRlbnRGaWx0ZXIg
eyBmYWxzZSB9OwogICAgIFJlc291cmNlRXJyb3IgbV9ibG9ja2VkRXJyb3I7Ci0jZW5kaWYKLSNl
bmRpZgorICAgIFVSTCBtX2Jsb2NrZWRQYWdlVVJMOworICAgIFN1YnN0aXR1dGVEYXRhIG1fc3Vi
c3RpdHV0ZURhdGFGcm9tQ29udGVudEZpbHRlcjsKKyNlbmRpZiAvLyBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIFJlZlB0cjxQcmV2aWV3Q29u
dmVydGVyPiBtX3ByZXZpZXdDb252ZXJ0ZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hCiAgICAgYXV0byYgc3Vic3Rp
dHV0ZURhdGEgPSBsb2FkZXItPnN1YnN0aXR1dGVEYXRhKCk7CiAgICAgaWYgKHN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSAmJiAhc3Vic3RpdHV0ZURhdGEuZmFpbGluZ1VSTCgpLmlzRW1wdHkoKSkg
ewogICAgICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAgICAgaWYgKGF1dG8g
bG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRlcigpKQogICAgICAg
ICAgICAgc2hvdWxkQ29udGludWUgPSBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3Rp
dHV0ZURhdGFSZXF1ZXN0KCpsb2FkZXIsIHN1YnN0aXR1dGVEYXRhKTsKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyLmgJKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIE9CSkNfQ0xBU1MgTlNDb2Rl
cjsKK09CSkNfQ0xBU1MgTlNOdW1iZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JK
Q19DTEFTUyBXZWJGaWx0ZXJFdmFsdWF0b3I7CkBAIC02NCw2ICs2NSwxMCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFi
bGVVUkw7IH0KICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdXJsKSB7IG1f
dW5yZWFjaGFibGVVUkwgPSB1cmw7IH0KIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19J
Tl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVbmJsb2Nr
ZWRBZnRlclJlcXVlc3QoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV91
bmJsb2NrVVJMSG9zdDsKICAgICBVUkwgbV91bnJlYWNoYWJsZVVSTDsKQEAgLTcxLDYgKzc2LDkg
QEAgcHJpdmF0ZToKICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5E
TEVSKQogICAgIFJldGFpblB0cjxXZWJGaWx0ZXJFdmFsdWF0b3I+IG1fd2ViRmlsdGVyRXZhbHVh
dG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBOU051bWJlciogbV91bmJsb2NrZWRBZnRlclJlcXVlc3QgeyBuaWwgfTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyQ29jb2EubW0JKHJldmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBACiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVu
YmxvY2tVUkxIb3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHVucmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5IHsgQCJ1bmJsb2NrZWRBZnRlclJl
cXVlc3QiIH07CisjZW5kaWYKIAogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJM
T0NLX0hBTkRMRVIpCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCB3ZWJGaWx0ZXJFdmFsdWF0b3JL
ZXkgeyBAIndlYkZpbHRlckV2YWx1YXRvciIgfTsKQEAgLTEwMSw2ICsxMDQsMTAgQEAgdm9pZCBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09O
VFJPTFNfV0lUSF9VTkJMT0NLX0hBTkRMRVIpCiAgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3dl
YkZpbHRlckV2YWx1YXRvci5nZXQoKSBmb3JLZXk6d2ViRmlsdGVyRXZhbHVhdG9yS2V5XTsKICNl
bmRpZgorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
CisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCBmb3JLZXk6
dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRpZgorCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogfQogCkBAIC0xMTMsNiArMTIwLDkgQEAgYm9vbCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI6OmRlY29kZQogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJM
T0NLX0hBTkRMRVIpCiAgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0ZXJFdmFsdWF0b3IgPSBb
Y29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGZv
cktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICB1bmJsb2NrSGFuZGxlci5tX3Vu
YmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU051bWJl
ciBjbGFzc10gZm9yS2V5OnVuYmxvY2tlZEFmdGVyUmVxdWVzdEtleV07CisjZW5kaWYKICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTIwLDcgKzEzMCwxMSBAQCBib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cjo6ZGVjb2RlCiAKIGJvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgIGlmICghbV91bmJsb2NrUmVxdWVzdGVyCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAg
JiYgIW1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0CisjZW5kaWYKKyAgICAgICAgKSB7CiAjaWYgSEFW
RShQQVJFTlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICAgICAgaWYgKCFt
X3dlYkZpbHRlckV2YWx1YXRvcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1MCw5
ICsxNjQsMTYgQEAgdm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0KLSAgICBpZiAobV91bmJsb2NrUmVxdWVzdGVy
KSB7Ci0gICAgICAgIG1fdW5ibG9ja1JlcXVlc3RlcihbZGVjaXNpb25IYW5kbGVyXShib29sIHVu
YmxvY2tlZCkgeworICAgIGF1dG8gdW5ibG9ja1JlcXVlc3RlciA9IG1fdW5ibG9ja1JlcXVlc3Rl
cjsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgIGlmICghdW5ibG9ja1JlcXVlc3RlciAmJiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCkgewor
ICAgICAgICB1bmJsb2NrUmVxdWVzdGVyID0gW3VuYmxvY2tlZCA9IG1fdW5ibG9ja2VkQWZ0ZXJS
ZXF1ZXN0LmJvb2xWYWx1ZV0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhh
bmRsZXJGdW5jdGlvbiBmdW5jdGlvbikgeworICAgICAgICAgICAgZnVuY3Rpb24odW5ibG9ja2Vk
KTsKKyAgICAgICAgfTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAodW5ibG9ja1JlcXVlc3Rlcikg
eworICAgICAgICB1bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJdKGJvb2wgdW5ibG9j
a2VkKSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVu
YmxvY2tlZF0gewogICAgICAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOwog
ICAgICAgICAgICAgfSk7CkBAIC0xNjAsNiArMTgxLDEzIEBAIHZvaWQgQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyOjpyZXF1ZXMKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sIHVuYmxvY2tlZCkKK3sKKyAgICBt
X3VuYmxvY2tlZEFmdGVyUmVxdWVzdCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDp1bmJsb2Nr
ZWRdOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1vY2tDb250ZW50
RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsKK30KKwor
dm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNldENsaWVudChSZWZQdHI8TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4gY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50
OworfQorICAgIAordm9pZCBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om5vdGlmeVNldHRpbmdz
Q2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBzZXR0aW5ncykgY29u
c3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5tb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2hhbmdlZChzZXR0aW5ncyk7Cit9CisKK307CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQgdm9pZCBzZXRDbGllbnQoUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDbGllbnQ+KTsKKyAgICAKKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIG5v
dGlmeVNldHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3ND
bGllbnQ+IG1fY2xpZW50OworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAkocmV2aXNpb24gMjkxMzUw
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0
ZXIuaCIKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNpbmNsdWRl
ICJNb2NrQ29udGVudEZpbHRlci5oIgorI2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC00NCwxMiArNDUsNDQgQEAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgTW9ja0Nv
bnRlbnRGaQogdm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpyZXNldCgpCiB7CiAgICAg
c2luZ2xldG9uKCkgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzKCk7CisgICAgTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xl
dG9uKCkpOwogfQogCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogewogICAgIE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQo
KTsKICAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
cjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwor
dm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKGNvbnN0IFN0
cmluZyYgYmxvY2tlZFN0cmluZykKK3sKKyAgICBtX2Jsb2NrZWRTdHJpbmcgPSBibG9ja2VkU3Ry
aW5nOworICAgIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0
dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpzZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKK3sK
KyAgICBtX2RlY2lzaW9uUG9pbnQgPSBkZWNpc2lvblBvaW50OworICAgIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFuZ2VkKHNpbmdsZXRvbigp
KTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbihEZWNp
c2lvbiBkZWNpc2lvbikKK3sKKyAgICBtX2RlY2lzaW9uID0gZGVjaXNpb247CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxv
Y2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbikKK3sKKyAg
ICBtX3VuYmxvY2tSZXF1ZXN0RGVjaXNpb24gPSB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAg
IE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKCkubm90aWZ5U2V0dGluZ3NDaGFu
Z2VkKHNpbmdsZXRvbigpKTsKK30KKwordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwpCit7
CisgICAgbV9tb2RpZmllZFJlcXVlc3RVUkwgPSBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQo
c2luZ2xldG9uKCkpOwogfQogCiBjb25zdCBTdHJpbmcmIE1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OnVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oCShyZXZpc2lvbiAyOTEzNTAp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIFdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHN0YXRpYyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiBzaW5nbGV0b24oKTsKLSAgICBzdGF0aWMgdm9pZCByZXNldCgpOworICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIHN0YXRpYyB2b2lkIHJlc2V0KCk7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHVuYmxvY2tVUkxIb3N0KCkgeyByZXR1cm4gIm1vY2stdW5ibG9jayI7IH0KIAogICAgIC8v
IFRyaWNrIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgaW50byB0aGlua2luZyB3ZSdyZSBSZWZDb3Vu
dGVkLgpAQCAtNTgsMjYgKzU4LDI5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX1RFU1RTVVBQT1JU
X0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGJsb2Nr
ZWRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrZWRTdHJpbmc7IH0KLSAgICB2b2lkIHNl
dEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKSB7IG1fYmxvY2tlZFN0
cmluZyA9IGJsb2NrZWRTdHJpbmc7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCB2
b2lkIHNldEJsb2NrZWRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKICAgICBEZWNpc2lvblBvaW50
IGRlY2lzaW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2RlY2lzaW9uUG9pbnQ7IH0KLSAgICB2
b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBvaW50KSB7IG1fZGVj
aXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQT1JUX0VY
UE9SVCB2b2lkIHNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCk7CiAKICAgICBEZWNpc2lv
biBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb247IH0KLSAgICB2b2lkIHNldERl
Y2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVjaXNpb24gPSBkZWNpc2lvbjsgfQorICAg
IFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb24oRGVjaXNpb24pOwog
CiAgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1f
dW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQotICAgIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNp
c2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7IG1fdW5ibG9ja1JlcXVlc3RE
ZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KKyAgICBXRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCB2b2lkIHNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oRGVjaXNpb24pOwogCi0g
ICAgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIGNvbnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25z
dDsKIAogICAgIGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1
cm4gbV9tb2RpZmllZFJlcXVlc3RVUkw7IH0KLSAgICB2b2lkIHNldE1vZGlmaWVkUmVxdWVzdFVS
TChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVzdFVSTCkgeyBtX21vZGlmaWVkUmVxdWVzdFVS
TCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgc2V0TW9kaWZpZWRSZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYpOworCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M+IGRlY29kZShEZWNvZGVyJik7CiAKLXByaXZhdGU6CiAgICAgTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncygpID0gZGVmYXVsdDsKLSAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
KGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlbGV0ZTsKKyAgICBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzKGNvbnN0IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRl
ZmF1bHQ7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgb3BlcmF0b3I9KGNvbnN0IE1v
Y2tDb250ZW50RmlsdGVyU2V0dGluZ3MmKSA9IGRlZmF1bHQ7Citwcml2YXRlOgogCiAgICAgYm9v
bCBtX2VuYWJsZWQgeyBmYWxzZSB9OwogICAgIERlY2lzaW9uUG9pbnQgbV9kZWNpc2lvblBvaW50
IHsgRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSB9OwpAQCAtODcsNCArOTAsNTMgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9tb2RpZmllZFJlcXVlc3RVUkw7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZW5hYmxlZDsKKyAgICBl
bmNvZGVyIDw8IGRlY2lzaW9uUG9pbnQoKTsKKyAgICBlbmNvZGVyIDw8IGRlY2lzaW9uKCk7Cisg
ICAgZW5jb2RlciA8PCB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCk7CisgICAgZW5jb2RlciA8PCBi
bG9ja2VkU3RyaW5nKCk7CisgICAgZW5jb2RlciA8PCBtb2RpZmllZFJlcXVlc3RVUkwoKTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5ncz4gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIgKQoreworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5hYmxlZDsKKyAgICBkZWNvZGVy
ID4+IGVuYWJsZWQ7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHN0ZDo6b3B0aW9uYWw8RGVjaXNpb25Qb2ludD4gZGVjaXNpb25Qb2ludDsKKyAg
ICBkZWNvZGVyID4+IGRlY2lzaW9uUG9pbnQ7CisgICAgaWYgKCFkZWNpc2lvblBvaW50KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24+IGRlY2lzaW9uOworICAgIGRlY29kZXIg
Pj4gZGVjaXNpb247CisgICAgaWYgKCFkZWNpc2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uPiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGRlY29kZXIgPj4gdW5i
bG9ja1JlcXVlc3REZWNpc2lvbjsKKyAgICBpZiAoIXVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGJs
b2NrZWRTdHJpbmc7CisgICAgZGVjb2RlciA+PiBibG9ja2VkU3RyaW5nOworICAgIGlmICghYmxv
Y2tlZFN0cmluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gbW9kaWZpZWRSZXF1ZXN0VVJMOworICAgIGRlY29kZXIgPj4gbW9kaWZpZWRS
ZXF1ZXN0VVJMOworICAgIGlmICghbW9kaWZpZWRSZXF1ZXN0VVJMKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyBzZXR0aW5nczsK
KyAgICBzZXR0aW5ncy5zZXRFbmFibGVkKCplbmFibGVkKTsKKyAgICBzZXR0aW5ncy5zZXREZWNp
c2lvblBvaW50KCpkZWNpc2lvblBvaW50KTsKKyAgICBzZXR0aW5ncy5zZXREZWNpc2lvbigqZGVj
aXNpb24pOworICAgIHNldHRpbmdzLnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKnVuYmxvY2tS
ZXF1ZXN0RGVjaXNpb24pOworICAgIHNldHRpbmdzLnNldEJsb2NrZWRTdHJpbmcoV1RGTW92ZSgq
YmxvY2tlZFN0cmluZykpOworICAgIHNldHRpbmdzLnNldE1vZGlmaWVkUmVxdWVzdFVSTChXVEZN
b3ZlKCptb2RpZmllZFJlcXVlc3RVUkwpKTsKKworICAgIHJldHVybiBzZXR0aW5nczsKK30KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudC5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKworY2xhc3MgTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nc0NsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2NrQ29udGVudEZp
bHRlclNldHRpbmdzQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NoYW5nZWQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gMDsKK307
CisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkxMzUzKQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAyMi0wMy0xNiAgUGVy
IEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRlc3QgZmFp
bHVyZXMgd2hlbiBlbmFibGluZyBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcy
MTcKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIEFkZCBh
IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3
aGljaCB3aWxsIGJlIG5vdGlmaWVkCisgICAgICAgIHdoZW4gbW9jayBjb250ZW50IGZpbHRlciBz
ZXR0aW5ncyBhcmUgY2hhbmdlZCBmcm9tIEphdmFTY3JpcHQsIGFuZCB0aGVuIHNlbmQgdGhlIG5l
dworICAgICAgICBzZXR0aW5ncyB0byB0aGUgTmV0d29yayBwcm9jZXNzIGFuZCBpbnN0YWxsIHRo
ZSBtb2NrIGNvbnRlbnQgZmlsdGVyLiBUaGUgb3RoZXIKKyAgICAgICAgY2hhbmdlcyBhcmUgYWRk
cmVzc2luZyBsYXlvdXQgYW5kIEFQSSB0ZXN0IGZhaWx1cmVzLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50Rmls
dGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29u
dGVudEZpbHRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2spOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JD
b250ZW50RmlsdGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzdGFydE9ic2VydmluZ1NldHRpbmdzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjptb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6
Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisKIDIwMjItMDMtMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEluY29ycmVjdCBoZWFkZXIgbmFtZSB1c2VkIGluIF9faGFzX2luY2x1ZGUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMiw2ICsxNDMyLDEzIEBAIFJlZlB0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VM
b2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpzaW5nbGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lz
dHJ5SW1wbDsKK2NsYXNzIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNz
U2NvcGUgOiBib29sOwpAQCAtMjAwLDYgKzIwMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKTsKIAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgdm9pZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsx
MTMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYK
ICAgICBTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciB3ZWJQYWdlSUQsIGVudW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9k
ZSkKICAgICBQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyPiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZp
bHRlcihXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlm
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyOTEzNTApCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4NywxNiArMTg3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgp
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0co
InN0YXJ0OiBoYXNOZXR3b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2Vy
KTsKIAorICAgIGF1dG8gbmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVx
dWVzdCgpIH07CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyAgICBpZiAoIXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAg
ICAgcmV0dXJuOworI2VuZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nv
bm5lY3Rpb24tPnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFT
U0VSVCghbV93YXNTdGFydGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0
byBuZXdSZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0
YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0
d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhS
ZXNvdXJjZVJlcXVlc3QgeyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKQEAgLTIzNiwxNCArMjM3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydCgpCiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19Q
Uk9DRVNTKQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmlu
ZyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnRDb250ZW50RmlsdGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBp
ZiAoIWlzTWFpblJlc291cmNlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgbV9jb250ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsK
LSAgICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChy
ZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpKQotICAgICAgICByZXR1cm47CiAgICAgbV9jb250
ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKKyAg
ICBpZiAoIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpKSB7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3Rv
cEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCiAKQEAgLTk0NiwxMSArOTUwLDExIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmICht
X2NvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVB
ZnRlck5vdGlmeUZpbmlzaGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAg
ICAgIGlmICghbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9w
YXJhbWV0ZXJzLnJlcXVlc3QudXJsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogICAg
ICAgICB9CiAjZW5kaWYKLQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRl
cjo6RGlkRmluaXNoUmVzb3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApA
QCAtMTA1MSw3ICsxMDU1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVkaQogICAgICAgICBtX2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgp
OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykK
LSAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgaWYgKG1f
Y29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRS
ZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVy
bjsKICNlbmRpZgogCkBAIC0xNzk4LDMyICsxODAyLDM4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkYXRhUmVjZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmll
ZFNjcmlwdCkpOwotICAgIGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewot
ICAgICAgICB1bmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlm
ICghdW5ibG9ja2VkKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29u
bmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRl
bnRGaWx0ZXIobV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJv
ciA9IFdlYktpdDo6YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1
ZXN0KTsKKworICAgIG1fdW5ibG9ja0hhbmRsZXIgPSB1bmJsb2NrSGFuZGxlcjsKKyAgICBtX3Vu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQ7Cisg
ICAgCisgICAgaWYgKHVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpCisgICAgICAgIG1f
Y29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAg
ZWxzZSB7CisgICAgICAgIHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBtX3VuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdCh1
bmJsb2NrZWQpOworCisgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICAg
ICAgICAgIGlmIChtX3dhc1N0YXJ0ZWQgfHwgdW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSBtX3BhcmFtZXRlcnMucmVxdWVzdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KGFib3V0QmxhbmtVUkwoKSk7CisgICAg
ICAgICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3Io
cmVxdWVzdCk7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnNldEJsb2NrZWRFcnJvcihl
cnJvcik7CisgICAgICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmUoZXJyb3IpOwogICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6
YmxvY2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1f
Y29udGVudEZpbHRlci0+aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewotICAgIGlmIChzdWJzdGl0dXRlRGF0YS5p
c1ZhbGlkKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkws
IHN1YnN0aXR1dGVEYXRhKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1f
Y29udGVudEZpbHRlcik7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5i
bG9ja2VkRXJyb3IoKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7Ci0gICAgfQor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKG1fdW5ibG9ja0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIG1f
Y29udGVudEZpbHRlci0+YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRl
RGF0YSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbnRlbnRGaWx0ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC0yNDEsNyAr
MjQyLDcgQEAgcHJpdmF0ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8o
KTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1Mp
Ci0gICAgdm9pZCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CisgICAgYm9vbCBzdGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNGcm9tU2VydmljZVdvcmtlciA6IGJv
b2wgeyBObywgWWVzIH07CkBAIC0yOTUsNiArMjk2LDggQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyAgICBXZWJD
b3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV91bmJsb2NrSGFuZGxlcjsKKyAgICBT
dHJpbmcgbV91bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdDsKICNlbmRpZgogCiAgICAgUHJpdmF0
ZVJlbGF5ZWQgbV9wcml2YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVkOjpObyB9OwpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9u
IDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1YUi5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oPgorI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVu
dENvZGVyc0NGLmgiCiAKQEAgLTg1Miw2ICs4NTYsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0
LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBv
aW50OjpBZnRlclJlZGlyZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisg
ICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6
OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZp
bHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OkRlY2lzaW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNv
cmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAg
PjsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpB
dXRvcGxheUV2ZW50PiB7CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAg
V2ViQ29yZTo6QXV0b3BsYXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTk5Miw2ICsxOTkyLDggQEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRl
bnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAq
LzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJh
bWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1
bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBh
Z2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKKwkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMw
IC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsg
fTsKIAkJRTM4NjZBRTcyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM4NjZBRTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5oICovOyB9OwogCQlFMzg2NkIwODIzOTlBMkQxMDBGODhGRTkg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA1MjM5OTk3
OUMwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNz
YWdlcy5oICovOyB9OwpAQCAtNjQ4Niw5ICs2NDg4LDEzIEBACiAJCUUzMENGQjlEMjY2MDY2M0Mw
MDk0RDlDMCAvKiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsg
cGF0aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29y
ZVRlc3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hp
bS5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYy
N0M0NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5k
eWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5k
Ym94ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9s
ZGVyOyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcw
MUEyN0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxl
bWVudENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODE2QjNCMjdFMjQ2Mzkw
MDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsg
cGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0
MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJv
eHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzg2NkFFNjIzOTc0MDUzMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBwYXRoID0gaW9zL1dlYkRldmlj
ZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzg2NkFFRDIzOTg0NzFBMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9
IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NTA1LDYgKzk1MTEsOCBAQAogCQkJCUUz
NDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmgg
Ki8sCiAJCQkJNTFBQkY2NTYxNjM5MkYxNTAwMTMyQTdBIC8qIFdlYkxvYWRlclN0cmF0ZWd5LmNw
cCAqLywKIAkJCQk1MUFCRjY1NzE2MzkyRjE1MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRlZ3ku
aCAqLywKKwkJCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLywKKwkJCQlFMzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8sCiAJCQkJQTU4NjBFNkYyMzBGNjdERTAwNDYxQUFF
IC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQTU4NjBFNzAy
MzBGNjdERTAwNDYxQUFFIC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5oICovLAog
CQkJCTUxMEFGRkI3MTY1NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgKi8s
CkBAIC0xMDAxNyw2ICsxMDAyNSw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICov
LAorCQkJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQu
ZHlsaWIgKi8sCiAJCQkJRERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0
aW9ucy5hICovLAogCQkJCTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywK
IAkJCQk1NzUwRjMyQTIwMzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFt
ZXdvcmsgKi8sCkBAIC0xMzgwNSw2ICsxMzgxNSw3IEBACiAJCQkJMkQzRUY0NDMxOTE3NjQ2MzAw
MDM0MTg0IC8qIFdlYk1lbW9yeVByZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTA5ODU0RUQxMkJDNEUxODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxM0ZGQjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMw
IC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNG
NjlGOUExMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDQ0NDOEZCMUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzQ5MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJO
b3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTYxODcsNiArMTYxOTgsNyBAQAogCQkJ
CUExODFBNzk4MjFBQ0M3NEIwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREYxQjkxQjI2NzAyNTU1MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGlu
ay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJN
RE5TUmVnaXN0ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4MTZC
M0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREY2RkU1
MjIxMkUxMTA5MDA0NjkwMzAgLyogV2ViUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENF
NzJBMDEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDI5MTM1MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9saW51
eC9SZWFsVGltZVRocmVhZHMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpbmNsdWRlICJXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaCIKKyNlbmRpZgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2Rl
ZmluZSBSRUxFQVNFX0xPR19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50
b1VJbnQ2NCgpIDogMCkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0NSwx
MCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgR2lnYWNhZ2U6OmZv
cmJpZERpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlKCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIFdlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpOworI2VuZGlmCiB9
CiAKIFdlYlByb2Nlc3M6On5XZWJQcm9jZXNzKCkKQEAgLTIyMzAsNyArMjIzOCw2IEBAIFJlbW90
ZU1lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1l
bnQ8UmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgi
CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
CisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4g
bWFuYWdlci5nZXQoKTsKK30KKwordm9pZCBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0
YXJ0T2JzZXJ2aW5nU2V0dGluZ3MoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVy
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lkIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgaWYgKGF1
dG8gY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250
ZW50RmlsdGVyKHNldHRpbmdzKSwgMCk7Cit9CisKK307CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgOiBwdWJsaWMg
V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2
b2lkIHN0YXJ0T2JzZXJ2aW5nU2V0dGluZ3MoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2hhbmdlZChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7
Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkxMzUwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTQsMTEgKzM1NCwxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzb3VyCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9O
RVRXT1JLSU5HX1BST0NFU1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVy
RGlkQmxvY2tMb2FkKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJD
b3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcm
JiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1
YnN0aXR1dGVEYXRhKQogewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBt
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRl
bnRGaWx0ZXIoV1RGTW92ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKS0+aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVy
LCBXVEZNb3ZlKHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAog
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRG
aWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zNjcsMTMgKzM3
MCw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXIKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJl
c291cmNlTG9hZChlcnJvcik7CiB9Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVBy
b3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQ
YWdlVVJMLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCi17
Ci0gICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIo
KSB8fCAhc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9u
YWxMb2FkRmFpbHVyZShibG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOwotfQogI2VuZGlm
IC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTEzNTApCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDIsOSArMTAyLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIGNv
bnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyJiwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZv
aWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXImLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdl
YkNvcmU6OlN1YnN0aXR1dGVEYXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9h
ZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZv
aWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVS
TCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5k
aWYKICAgICAKICAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRl
cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTEzNTApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOCBAQCBtZXNzYWdlcyAtPiBXZWJS
ZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2Nr
TG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFu
ZGxlciwgU3RyaW5nIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBVUkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
IHN1YnN0aXR1dGVEYXRhKQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgSGFuZGxlUHJvdmlzaW9uYWxM
b2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6
U3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKIAogfQpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxMzUz
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MjItMDMtMTYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAg
IEZpeCB0ZXN0IGZhaWx1cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhl
IE5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM3MjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKwor
ICAgICAgICBUZXN0V2ViS2l0QVBJIG5lZWRzIHRvIGxpbmsgd2l0aCBXZWJDb3JlIG5vdyB0aGF0
IHRoZSBtb2NrIGNvbnRlbnQgZmlsdGVyIGlzIGNvbXBpbGVkIGludG8gV2ViQ29yZS4KKyAgICAg
ICAgQWRqdXN0IHRlc3QgZXhwZWN0YXRpb25zLCBzaW5jZSB0aGUgY29udGVudCBmaWx0ZXJzIGFy
ZSBub3QgZXhwZWN0ZWQgdG8gYmUgbG9hZGVkIGluIHRoZSBXZWJDb250ZW50CisgICAgICAgIHBy
b2Nlc3MgYW55bW9yZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS54Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3Vy
YXRpb25zL1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVy
aW5nUGx1Z0luLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRG
aWx0ZXJpbmcubW06CisKIDIwMjItMDMtMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoIHRh
a2UgYSBTdHJpbmdWaWV3CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEkueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCShyZXZpc2lvbiAyOTEzNTAp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTg2LDkgKzg2LDE1IEBAIFdLX1NZU1RFTV9MREZMQUdT
X0lPU19TSU5DRV8xNSA9IC1mcmFtZXcKIFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MgPSAkKFdL
X1VJS0lUTUFDSEVMUEVSX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CiBXS19VSUtJVE1B
Q0hFTFBFUl9MREZMQUdTX21hY2NhdGFseXN0ID0gLWZyYW1ld29yayBVSUtpdE1hY0hlbHBlcjsK
IAorV0tfV0VCQ09SRV9MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxBR1NfJChXS19QTEFURk9S
TV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAtZnJhbWV3b3JrIFdlYkNv
cmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNv
cmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19X
RUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3JrIFdlYkNvcmUKKwogT1RI
RVJfQ1BMVVNQTFVTRkxBR1MgPSAkKGluaGVyaXRlZCkgLWlzeXN0ZW0gJChTREtST09UKS9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1N5c3RlbS5mcmFtZXdvcmsvUHJpdmF0ZUhlYWRlcnM7CiAK
LU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvbGliVGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENv
cmUgLWZyYW1ld29yayBXZWJLaXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRh
bCAtZnJhbWV3b3JrIElPU3VyZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChX
S19BVVRIS0lUX0xERkxBR1MpIC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAk
KFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZM
QUdTKSAkKFdLX1VJS0lUTUFDSEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZM
QUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9UT1VDSCkpOworT1RIRVJf
TERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJh
bWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAtZnJhbWV3b3JrIE1ldGFsIC1mcmFt
ZXdvcmsgSU9TdXJmYWNlICQoV0tfQVBQU0VSVkVSU1VQUE9SVF9MREZMQUdTKSAkKFdLX0FVVEhL
SVRfTERGTEFHUykgLWZyYW1ld29yayBOZXR3b3JrICQoV0tfSElEX0xERkxBR1MpICQoV0tfT1BF
TkdMX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU1lTVEVNX0xERkxBR1MpICQo
V0tfVUlLSVRNQUNIRUxQRVJfTERGTEFHUykgJChXS19WSVNJT05LSVRDT1JFX0xERkxBR1MpICQo
V0tfV0VCQ09SRV9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk1fJChXS19DT0NPQV9U
T1VDSCkpOwogT1RIRVJfTERGTEFHU19QTEFURk9STV8gPSAtZnJhbWV3b3JrIENvY29hIC1mcmFt
ZXdvcmsgQ2FyYm9uOwogCiAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGJ1aWx0IG9uIGlP
Uy4gSW5zdGVhZCB3ZSBzaG91bGQgY3JlYXRlIGFuZCB1c2UgYSBUZXN0V2ViS2l0QVBJIGFwcGxp
Y2F0aW9uLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9j
ZXNzUGx1Z0luLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkocmV2aXNpb24gMjkxMzUwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9XZWJQcm9jZXNzUGx1Z0luLnhj
Y29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwxMiBAQCBQUk9EVUNUX05BTUUgPSBU
ZXN0V2ViS2l0QVBJOwogUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9IGNvbS5hcHBsZS4kKFBS
T0RVQ1RfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CiBFWEVDVVRBQkxFX1NVRkZJWCA9IC5idW5k
bGU7CiBXUkFQUEVSX0VYVEVOU0lPTiA9IHdrYnVuZGxlOwotT1RIRVJfTERGTEFHUyA9ICQoaW5o
ZXJpdGVkKSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2Vi
Q29yZVRlc3RTdXBwb3J0OworV0tfV0VCQ09SRV9MREZMQUdTID0gJChXS19XRUJDT1JFX0xERkxB
R1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lb3MgPSAt
ZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU19pcGhvbmVzaW11bGF0b3IgPSAt
ZnJhbWV3b3JrIFdlYkNvcmUKK1dLX1dFQkNPUkVfTERGTEFHU193YXRjaG9zID0gLWZyYW1ld29y
ayBXZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hzaW11bGF0b3IgPSAtZnJhbWV3b3Jr
IFdlYkNvcmUKKworT1RIRVJfTERGTEFHUyA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIEphdmFT
Y3JpcHRDb3JlIC1mcmFtZXdvcmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0ICQoV0tfV0VC
Q09SRV9MREZMQUdTKTsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1tYWNvc3gqXSA9ICJA
bG9hZGVyX3BhdGgvLi4vLi4vLi4iOwogTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFNbc2RrPWVtYmVk
ZGVkKl0gPSAiQGxvYWRlcl9wYXRoLy4uIjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlz
aW9uIDI5MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDEwIEBACiAKICNp
bXBvcnQgIkRlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuaCIKICNpbXBvcnQgIkNvbnRlbnRGaWx0ZXJp
bmcuaCIKLSNpbXBvcnQgIk1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCIKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIldL
V2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JSZWYuaD4KICNpbXBv
cnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgpAQCAtNDMzLDcgKzQzMyw3IEBAIFRFU1QoQ29udGVu
dEZpbHRlcmluZywgTGF6aWx5TG9hZFBsYXRmb3IKICAgICAgICAgW1Rlc3RQcm90b2NvbCByZWdp
c3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAgICAgICAgIFtbY29udHJvbGxlciB3ZWJWaWV3XSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICAgICAgW2NvbnRy
b2xsZXIgZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpOT107CiAjZWxzZQogICAgICAgICBb
Y29udHJvbGxlciBleHBlY3RQYXJlbnRhbENvbnRyb2xzTG9hZGVkOllFU107CkBAIC00NDUsNyAr
NDQ1LDExIEBAIFRFU1QoQ29udGVudEZpbHRlcmluZywgTGF6aWx5TG9hZFBsYXRmb3IKICAgICAg
ICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOwogICAgICAgICBb
W2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vdGVzdCJdXV07CiAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgICAgICBbY29udHJvbGxlciBleHBlY3RQ
YXJlbnRhbENvbnRyb2xzTG9hZGVkOk5PXTsKKyNlbHNlCiAgICAgICAgIFtjb250cm9sbGVyIGV4
cGVjdFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6WUVTXTsKKyNlbmRpZgogICAgICAgICBbVGVzdFBy
b3RvY29sIHVucmVnaXN0ZXJdOwogI2VuZGlmCiAgICAgfQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRl
cmluZ1BsdWdJbi5tbQkocmV2aXNpb24gMjkxMzUwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogCiAjaW1w
b3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW0JKHJldmlzaW9uIDI5
MTM1MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
CiAjaW1wb3J0ICJEZXByZWNhdGVkR2xvYmFsVmFsdWVzLmgiCi0jaW1wb3J0ICJNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVGVzdFByb3RvY29sLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJL
aXRFcnJvcnNQcml2YXRlLmg+CiAK
</data>
<flag name="commit-queue"
          id="482948"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455105</attachid>
            <date>2022-03-18 10:04:35 -0700</date>
            <delta_ts>2022-03-18 15:13:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237217-20220318100434.patch</filename>
            <type>text/plain</type>
            <size>89386</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDIyLTAzLTE4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGVzdCBmYWlsdXJl
cyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3b3JrIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzIxNwor
CisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRj
aCBhZGRyZXNzZXMgdGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5n
IGluIHRoZSBOZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIFdoZW4gY29udGVudCBmaWx0ZXJpbmcg
aXMgcnVubmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzLCB3ZSBuZWVkIHRvIHNlbmQgdGhlIG1v
Y2sgY29udGVudAorICAgICAgICBmaWx0ZXIgYW5kIHNldHRpbmdzIHRvIHRoZSBOZXR3b3JrIHBy
b2Nlc3MgdG8gc3VwcG9ydCB0ZXN0aW5nLiBUaGUgbW9jayBjb250ZW50IGZpbHRlciBpcworICAg
ICAgICBtb3ZlZCBmcm9tIHRoZSBXZWJDb3JlIHRlc3Qgc3VwcG9ydCBsaWJyYXJ5IHRhcmdldCB0
byB0aGUgV2ViQ29yZSBmcmFtZXdvcmssIHNpbmNlIFdlYktpdAorICAgICAgICBub3cgYWxzbyB3
aWxsIHJlZmVyZW5jZSB0aGUgbW9jayBjb250ZW50IGZpbHRlciB3aGVuIHNlbmRpbmcgaXQgdG8g
dGhlIE5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgUHJldmlvdXNseSBhIGNvbXBpbGUgdGltZSBn
dWFyZCB3YXMgdXNlZCB0byBkaXNhYmxlIHRoZSBjb250ZW50IGZpbHRlcmluZyBjb2RlIGluIHRo
ZQorICAgICAgICBkb2N1bWVudCBsb2FkZXIuIEhvd2V2ZXIsIHdlIHN0aWxsIG5lZWQgdG8gc3Vw
cG9ydCBjb250ZW50IGZpbHRlcmluZyBpbiB0aGUgZG9jdW1lbnQKKyAgICAgICAgbG9hZGVyIGZv
ciBXSzEsIHNvIHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGF0IHRvIHVzZSBhIHJ1bnRpbWUgY2hlY2sg
aW5zdGVhZC4gVGhlIHJlc3Qgb2YKKyAgICAgICAgdGhpcyBwYXRjaCBhZGRyZXNzZXMgdGVzdCBm
YWlsdXJlcyBzZWVuIHdoZW4gcnVubmluZyB0aGUgbGF5b3V0IGFuZCBBUEkgdGVzdHMuIFRoaXMg
cGF0Y2gKKyAgICAgICAgZG9lcyBub3QgZW5hYmxlIHRoZSBmZWF0dXJlLgorICAgICAgICAKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9D
b250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OnN0YXJ0
RmlsdGVyaW5nTWFpblJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6
OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZp
bHRlcjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEZpbHRlcjo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNvbnRp
bnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyOjpzZXRCbG9ja2VkRXJy
b3IpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRlbnRGaWx0
ZXJJbkRvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpu
b3RpZnlGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJl
Y2VpdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFpblJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjbGVhck1haW5SZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6YmVjb21lTWFpblJlc291cmNlQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29u
dGVudEZpbHRlcldpbGxIYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250ZW50RmlsdGVySGFuZGxlUHJvdmlzaW9uYWxMb2Fk
RmFpbHVyZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0QmxvY2tlZFBhZ2VVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIp
OgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3kpOgorICAg
ICAgICAqIHBsYXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpkZWNvZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjYW5IYW5k
bGVSZXF1ZXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlcjo6cmVxdWVzdFVuYmxvY2tBc3luYyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdCk6Cisg
ICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xldG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5U2V0dGluZ3ND
aGFuZ2VkIGNvbnN0KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6cmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0RW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9j
a2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6
OnNldERlY2lzaW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6c2V0RGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2RpZmllZFJlcXVlc3RVUkwpOgorICAg
ICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmRlY29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRCbG9ja2VkU3RyaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERl
Y2lzaW9uUG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2V0RGVjaXNpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXRNb2Rp
ZmllZFJlcXVlc3RVUkwpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nc0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQ6On5Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50
KToKKwogMjAyMi0wMy0xOCAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEFkZCBzdG9wIHBvc2l0aW9uIHRvIHRoZSBy
YW5nZSByZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM0MTMs
OCArMzQxMyw2IEBACiAJCUExQURBRjdFMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVy
dGVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExQURBRjdDMjM2MEZEM0UwMDlDQjc3NiAvKiBQcmV2aWV3Q29udmVydGVyUHJvdmlkZXIu
aCAqLzsgfTsKIAkJQTFBRkVERTYxRjhCRkY2RDAwODcwMTNGIC8qIE1vY2tQYXltZW50Q29vcmRp
bmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QUZFREU0MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmggKi87IH07
CiAJCUExQUZFREU3MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQUZFREU1
MUY4QkZGNkQwMDg3MDEzRiAvKiBNb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLzsgfTsKLQkJ
QTFCNUIyOUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUMx
QUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwICovOyB9Owot
CQlBMUI1QjI5RjFBQUE4NDZGMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCNUIyOUQx
QUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUJCODU5QzIxNTlBRUEx
MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NTk5MjE1OUFFQTEwMDY3RTA3RCAvKiBBcHBsZVBh
eUVycm9yQ29kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUExQkI4NUEzMjE1OUFGNTcwMDY3RTA3RCAvKiBBcHBsZVBheUVycm9yQ29udGFjdEZp
ZWxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJC
ODVBMDIxNTlBRjU3MDA2N0UwN0QgLyogQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExQkI4NUE5MjE1
OUIwMkMwMDY3RTA3RCAvKiBNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVBNjIxNTlCMDJDMDA2N0UwN0QgLyogTW9j
a1BheW1lbnRFcnJvci5oICovOyB9OwpAQCAtMzQyMiw4ICszNDIwLDYgQEAKIAkJQTFCQjg1QjMy
MTU5QjFBMTAwNjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCQjg1QUYyMTU5QjFBMDAw
NjdFMDdEIC8qIEpTQXBwbGVQYXlFcnJvckNvbnRhY3RGaWVsZC5oICovOyB9OwogCQlBMUJCODVC
ODIxNTlCM0E0MDA2N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkI4NUI0MjE1OUIzODkwMDY3RTA3
RCAvKiBKU01vY2tQYXltZW50RXJyb3IuY3BwICovOyB9OwogCQlBMUJCODVCOTIxNTlCM0FFMDA2
N0UwN0QgLyogSlNNb2NrUGF5bWVudEVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUJCODVCNTIxNTlCMzhBMDA2N0UwN0QgLyogSlNNb2NrUGF5
bWVudEVycm9yLmggKi87IH07Ci0JCUExQkY2QjgyMUFBOTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29u
dGVudEZpbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMUJGNkI4MDFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICov
OyB9OwotCQlBMUJGNkI4MzFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQkY2QjgxMUFB
OTZDN0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMUMxNTA3QTFF
M0YyQjNFMDAzMkM5OEMgLyogUHJldmlld0NvbnZlcnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDMTUwNzgxRTNGMkIzRTAwMzJDOThDIC8qIFBy
ZXZpZXdDb252ZXJ0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMUNCRUY2NDFGOUYxMTI5MDAyOERFN0MgLyogTW9ja1BheW1lbnRNZXRob2Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQ0JFRjYz
MUY5RjExMjkwMDI4REU3QyAvKiBNb2NrUGF5bWVudE1ldGhvZC5oICovOyB9OwogCQlBMUNDNTY2
NzFGNDYxNDdBMDBBNDU1NUIgLyogSlNQYXltZW50QWRkcmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDQzU2NjUxRjQ2MTQ2ODAwQTQ1NTVCIC8q
IEpTUGF5bWVudEFkZHJlc3MuaCAqLzsgfTsKQEAgLTUzMDAsNiArNTI5NiwxMyBAQAogCQlFMzZE
NzAyMDI3QjcyMDEzMDA2NTMxQjcgLyogRW1wdHlBdHRhY2htZW50RWxlbWVudENsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RDcwMUUyN0I3
MUYwNDAwNjUzMUI3IC8qIEVtcHR5QXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc3RkU0RDFEQURFMTY1
MDBDREQwMjUgLyogTm9kZUNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMDQ5OTMxREFEQzA0NTAwNzE4RjNDIC8qIE5vZGVDb25zdGFu
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
MzdDODY1MDFFQjYzRTNGMDA4N0M2Q0EgLyogSlNET01Qcm9taXNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzdDODY0RjFFQjYzRTJEMDA4N0M2Q0Eg
LyogSlNET01Qcm9taXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTM5NTJGRTUyN0M2QUM3RjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3NDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOTUyRkU0MjdDNkFDN0YwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJG
RUEyN0M2RENDRTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzOTUyRkVFMjdDNkRG
MTQwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTJGRUQyN0M2REYxMzAwODZGNUQ5
IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CisJCUUzOTUyRkYwMjdDN0NE
QUMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlDMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcCAqLzsgfTsKKwkJRTM5NTJGRjEyN0M3
Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExQjVCMjlEMUFBQTg0NkUwMDhCNjA0
MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NTJGRjIyN0M3Q0ZEMzAwODZGNUQ5IC8qIE1v
Y2tDb250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUJGNkI4MTFBQTk2QzdEMDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk1MkZG
MzI3QzdDRkREMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFCRjZCODAxQUE5NkM3RDAwQUY0QThB
IC8qIE1vY2tDb250ZW50RmlsdGVyLmNwcCAqLzsgfTsKIAkJRTM5NjI4QkYyMzk1NzI4RjAwNjU4
RUNEIC8qIERldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYyOEJEMjM5NTcyOEUwMDY1OEVDRCAv
KiBEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjI4QzEyMzk1NzQzMTAwNjU4RUNEIC8q
IE1vdGlvbk1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYyOEMwMjM5NTc0MzAwMDY1OEVDRCAvKiBNb3Rpb25NYW5hZ2VyQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNBNzc2NjcxREM4NUQyODAwQjY5MEQ4IC8qIERPTUpJVElETENvbnZlcnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTc3NjY1MURDODVEMjIwMEI2
OTBEOCAvKiBET01KSVRJRExDb252ZXJ0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3MzYxLDYgKzE3MzY0LDkgQEAKIAkJRTM4ODM4OTQxQkFE
MTQ1RjAwRDYyRUUzIC8qIFNjcmlwdE1vZHVsZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRNb2R1bGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzg4Mzg5NTFCQUQxNDVGMDBENjJFRTMgLyogU2NyaXB0TW9kdWxl
TG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdE1vZHVsZUxv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwOTFGOEU4MTE5MDA2
NDlDRjIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vZHVsZUZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk1MkZFNDI3QzZBQzdGMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUyRkVBMjdDNkRDQ0UwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOTUy
RkVEMjdDNkRGMTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjI4QkQyMzk1NzI4RTAwNjU4RUNEIC8qIERldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2MjhDMDIzOTU3NDMwMDA2NThFQ0QgLyogTW90aW9uTWFuYWdlckNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3Rpb25NYW5hZ2VyQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTc1Qjc2MUVDOUFGMzkwMDg0NzcxNyAv
KiBKU0RvY3VtZW50RnJhZ21lbnRET01KSVQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNEb2N1bWVudEZyYWdtZW50RE9NSklULmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIxMTYyLDkgKzIxMTY4LDEyIEBACiAJCQkJQ0RGNEI3MUYxRTAzQkY2
RjAwRTIzNUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCAqLywKIAkJCQlBMUJGNkI4MDFBQTk2QzdE
MDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwICovLAogCQkJCUExQkY2QjgxMUFBOTZD
N0QwMEFGNEE4QSAvKiBNb2NrQ29udGVudEZpbHRlci5oICovLAorCQkJCUUzOTUyRkVEMjdDNkRG
MTMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovLAorCQkJCUUzOTUy
RkVBMjdDNkRDQ0UwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLywKIAkJ
CQlBMUI1QjI5QzFBQUE4NDZFMDA4QjYwNDIgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHAgKi8sCiAJCQkJQTFCNUIyOUQxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MuaCAqLywKIAkJCQlBMTlBRUExQzFBQUE3QzQ5MDBCNTJCMjUgLyogTW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncy5pZGwgKi8sCisJCQkJRTM5NTJGRTQyN0M2QUM3RjAwODZGNUQ5IC8q
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQuaCAqLywKIAkJCQk1MTA1OEFENzFENjc5
MjU3MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuY3BwICovLAogCQkJCTUxMDU4QUQ4MUQ2NzkyNTcw
MDlBNTM4QyAvKiBNb2NrR2FtZXBhZC5oICovLAogCQkJCTUxMDU4QUQ5MUQ2NzkyNTcwMDlBNTM4
QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVyLmNwcCAqLywKQEAgLTMzNDE0LDggKzMzNDIzLDYgQEAK
IAkJCQk0MjdEQTcxRTEzNzM1REZBMDA3QzU3RkIgLyogSlNTZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkY1MTIxRDE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBl
Q29udmVyc2lvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzI2QjQxMTYwQThDQ0UwMDI2NzU3
QiAvKiBMZWdhY3lNb2NrQ0RNLmggaW4gSGVhZGVycyAqLywKLQkJCQlBMUJGNkI4MzFBQTk2QzdE
MDBBRjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUExQjVC
MjlGMUFBQTg0NkYwMDhCNjA0MiAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0MTU3RUJGQjFFM0FCNjdGMDBBQzlGRTkgLyogTW9ja0xpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURC
RDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0
MTQwMDAxRUU5QzMgLyogTW9ja1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTM2NDAwLDYgKzM2NDA3LDEwIEBACiAJCQkJQ0RGMkIwMTExODIwNTQwNjAwRjJCNDI0IC8qIE1v
Y2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUNERjRCNzI0MUUwM0JGODEwMEUyMzVBMiAvKiBN
b2NrQ0RNRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RGNEI3MjAxRTAzQkY2RjAwRTIz
NUEyIC8qIE1vY2tDRE1GYWN0b3J5LmlkbCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkYyMjdD
N0NGRDMwMDg2RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTM5NTJGRUIyN0M2RENDRjAwODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM5NTJGRjEyN0M3Q0RCNTAwODZGNUQ5IC8qIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTUyRkU1MjdDNkFDN0YwMDg2
RjVEOSAvKiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTA1OEFFMDFENjdDMjI5MDA5QTUzOEMgLyogTW9ja0dhbWVwYWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUxMDU4QUUyMUQ2N0MyMjkwMDlBNTM4QyAvKiBNb2NrR2FtZXBhZFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTNDQ0Q0QTIwREUwMzRGMDA2NUEyMUEgLyogTW9ja01l
ZGlhRGV2aWNlLmggaW4gSGVhZGVycyAqLywKQEAgLTM4NzQxLDggKzM4NzUyLDYgQEAKIAkJCQlD
REMyNkI0MDE2MEE4Q0M2MDAyNjc1N0IgLyogTGVnYWN5TW9ja0NETS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBMUUwODY2MzI0ODlEMzRFMDBFNDk2RDkgLyogTW9ja0FwcGxlUGF5U2V0dXBGZWF0
dXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzMxMUUwM0QwMDcwMEUyMzVBMiAvKiBN
b2NrQ0RNRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBMUJGNkI4MjFBQTk2QzdEMDBB
RjRBOEEgLyogTW9ja0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTFCNUIy
OUUxQUFBODQ2RTAwOEI2MDQyIC8qIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwNThBREIxRDY3OTJDMTAwOUE1MzhDIC8qIE1vY2tHYW1lcGFkLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxMDU4QUREMUQ2NzkyQzEwMDlBNTM4QyAvKiBNb2NrR2Ft
ZXBhZFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNTdFQkZBMUUzQUI2NzkwMEFD
OUZFOSAvKiBNb2NrTGliV2ViUlRDUGVlckNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0zODgzMSw2ICszODg0MCw5IEBACiAJCQkJQ0RBOTU5MzUyNDEyM0NCODAwOTEwRUVGIC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA3NjM4QTlBMTg4NDQ4
NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDEzM0NCOEIyMEY4MEU5OTAwRTg5QjExIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzk1MkZGMzI3QzdDRkREMDA4NkY1RDkgLyogTW9j
a0NvbnRlbnRGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NTJGRUUyN0M2REYxNDAw
ODZGNUQ5IC8qIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlFMzk1MkZGMDI3QzdDREFDMDA4NkY1RDkgLyogTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlCRjc0MjFEQkZEQzI3MDA3QTdEOTkgLyogTmF2aWdh
dG9yRU1FLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQTRCQjEwMTk1NEQ2MjcwMEZBNUMyRSAv
KiBOYXZpZ2F0b3JHYW1lcGFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5RDEzMEQ3RTJC
ODIwMDdDMzk4MyAvKiBvYmpjX2NsYXNzLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw3ICsxMjIsOCBAQCB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0YXJ0RmlsdGVyaW5nTWFpblJlCiAg
ICAgQVNTRVJUKG1fbWFpblJlc291cmNlVVJMLmlzRW1wdHkoKSk7CiAgICAgbV9tYWluUmVzb3Vy
Y2VVUkwgPSB1cmw7CiB9Ci0jZWxzZQorI2VuZGlmCisKIHZvaWQgQ29udGVudEZpbHRlcjo6c3Rh
cnRGaWx0ZXJpbmdNYWluUmVzb3VyY2UoQ2FjaGVkUmF3UmVzb3VyY2UmIHJlc291cmNlKQogewog
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpTdG9wcGVkKQpAQCAtMTMzLDcgKzEzNCw2IEBAIHZv
aWQgQ29udGVudEZpbHRlcjo6c3RhcnRGaWx0ZXJpbmdNYWluUmUKICAgICBBU1NFUlQoIW1fbWFp
blJlc291cmNlKTsKICAgICBtX21haW5SZXNvdXJjZSA9ICZyZXNvdXJjZTsKIH0KLSNlbmRpZgog
CiB2b2lkIENvbnRlbnRGaWx0ZXI6OnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKQogewpAQCAt
MTY0LDkgKzE2NCw2IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnMK
IAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiBi
b29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVk
QnVmZmVyJiBkYXRhLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCi0jZWxzZQotYm9vbCBDb250
ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSkKLSNlbmRpZgogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRD
bGllbnQgeyBtX2NsaWVudCB9OwogCkBAIC0xNzYsMTkgKzE3MywzMyBAQCBib29sIENvbnRlbnRG
aWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjCiAgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVy
VW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50RmlsdGVyKSB7
CiAgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAgICAgIH0pOwot
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAg
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKSB7CiAgICAgICAgICAgICBkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCk7CiAgICAgICAgICAgICBkZWxpdmVyUmVzb3VyY2VEYXRhKGRh
dGEsIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2J1
ZmZlcnMuYXBwZW5kKFJlc291cmNlRGF0YUl0ZW0geyBSZWZQdHIgeyAmZGF0YSB9LCBlbmNvZGVk
RGF0YUxlbmd0aCB9KTsKLSNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKK30KKyNlbmRpZgorCitib29sIENv
bnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQoreworICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50PiBwcm90ZWN0ZWRDbGllbnQg
eyBtX2NsaWVudCB9OworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgewor
ICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1
IGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXtzZW5zaXRpdmV9cz4uXG4iLCBkYXRhLnNpemUoKSwgdXJs
KCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgIGZvckVhY2hDb250ZW50Rmls
dGVyVW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50RmlsdGVy
KSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CisgICAgICAgIH0p
OwogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkgewogICAgICAgICAgICAg
QVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0g
bV9tYWluUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICAgICAgZGVsaXZl
clJlc291cmNlRGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICB9Ci0jZW5k
aWYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTk3LDE4ICsyMDgsMzUgQEAg
Ym9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlYwogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKIGJvb2wgQ29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCi0j
ZWxzZQotYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlKQotI2VuZGlmCiB7CiAgICAgUmVmPENvbnRlbnRGaWx0ZXJD
bGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07Ci0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBBU1NFUlRfVU5VU0VEKHJlc291
cmNlVVJMLCByZXNvdXJjZVVSTCA9PSBtX21haW5SZXNvdXJjZVVSTCk7Ci0jZWxzZQorCisgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkZpbHRlcmluZykgeworICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgd2lsbCBmaW5pc2ggZmlsdGVyaW5nIG1haW4gcmVzb3Vy
Y2UgYXQgPCV7c2Vuc2l0aXZlfXM+LlxuIiwgdXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbXShQbGF0Zm9ybUNv
bnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIu
ZmluaXNoZWRBZGRpbmdEYXRhKCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpCbG9ja2VkKSB7CisgICAgICAgICAgICBtX3N0YXRlID0gU3RhdGU6OkFsbG93
ZWQ7CisgICAgICAgICAgICBkZWxpdmVyU3RvcmVkUmVzb3VyY2VEYXRhKCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tl
ZDsKK30KKyNlbmRpZgorCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJOb3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCit7CisgICAgUmVmPENvbnRlbnRGaWx0
ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKICAgICBpZiAobV9tYWlu
UmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYK
IAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKICAgICAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHdpbGwgZmluaXNoIGZpbHRlcmluZyBtYWlu
IHJlc291cmNlIGF0IDwle3NlbnNpdGl2ZX1zPi5cbiIsIHVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpKTsKQEAgLTIxOCwxNCArMjQ2LDEwIEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGlu
dWVBZnRlck5vdGlmeUYKIAogICAgICAgICBpZiAobV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZCkg
ewogICAgICAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBbGxvd2VkOwotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgICAgICAgICBkZWxpdmVy
U3RvcmVkUmVzb3VyY2VEYXRhKCk7Ci0jZWxzZQogICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZl
ciA9IG1fbWFpblJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fbWFpblJlc291cmNlLT5kYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZl
cmluZ1BvbGljeTo6QnVmZmVyRGF0YSk7CiAgICAgICAgICAgICAgICAgZGVsaXZlclJlc291cmNl
RGF0YShidWZmZXItPm1ha2VDb250aWd1b3VzKCkpOwogICAgICAgICAgICAgfQotI2VuZGlmCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCkKQEAgLTI3
OSwyMSArMzAzLDE2IEBAIHZvaWQgQ29udGVudEZpbHRlcjo6ZGlkRGVjaWRlKFN0YXRlIHN0YXQK
IHZvaWQgQ29udGVudEZpbHRlcjo6ZGVsaXZlclJlc291cmNlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5f
TkVUV09SS0lOR19QUk9DRVNTKQogICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250
ZW50RmlsdGVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgpOwotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZW5jb2RlZERhdGFMZW5ndGgpOwotICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91
Z2hDb250ZW50RmlsdGVyKGJ1ZmZlcik7Ci0jZW5kaWYKIH0KIAogVVJMIENvbnRlbnRGaWx0ZXI6
OnVybCgpCiB7CisgICAgaWYgKG1fbWFpblJlc291cmNlKQorICAgICAgICByZXR1cm4gbV9tYWlu
UmVzb3VyY2UtPnVybCgpOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JL
SU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fbWFpblJlc291cmNlVVJMOwogI2Vsc2UKLSAgICBp
ZiAobV9tYWluUmVzb3VyY2UpCi0gICAgICAgIHJldHVybiBtX21haW5SZXNvdXJjZS0+dXJsKCk7
CiAgICAgcmV0dXJuIFVSTCgpOwogI2VuZGlmCiB9CkBAIC0zMDcsNyArMzI2LDYgQEAgc3RhdGlj
IGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwoKQogICAgIHJldHVybiBibG9ja2VkUGFnZVVSTDsK
IH0KIAotI2lmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQogYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0
KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
JiBzdWJzdGl0dXRlRGF0YSkKIHsKICAgICBpZiAoYXV0byBjb250ZW50RmlsdGVyID0gYWN0aXZl
TG9hZGVyLmNvbnRlbnRGaWx0ZXIoKSkgewpAQCAtMzIyLDcgKzM0MCw2IEBAIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlclN1YnN0aXQKIAogICAgIHJldHVybiB0cnVlOwogfQotI2Vu
ZGlmCiAKIGJvb2wgQ29udGVudEZpbHRlcjo6d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHJldmlzaW9uIDI5MTQ4NykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDkgKzU3LDgg
QEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKGNvbnN0IFVSTCYpOwotI2Vsc2UKLSAgICB2b2lkIHN0YXJ0RmlsdGVyaW5nTWFpblJlc291
cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAjZW5kaWYKKyAgICB2b2lkIHN0YXJ0RmlsdGVyaW5n
TWFpblJlc291cmNlKENhY2hlZFJhd1Jlc291cmNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdG9wRmlsdGVyaW5nTWFpblJlc291cmNlKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpAQCAtNjcsMTYgKzY2LDE2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBz
aXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGlu
dWVBZnRlck5vdGlmeUZpbmlzaGVkKGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpOwotI2Vsc2UKKyNl
bmRpZgogICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZm
ZXImKTsKICAgICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSYpOwotI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURh
dGFSZXF1ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0
aXR1dGVEYXRhJik7CiAgICAgYm9vbCB3aWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShj
b25zdCBSZXNvdXJjZUVycm9yJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5k
bGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGNv
bnN0IFJlc291cmNlRXJyb3ImIGJsb2NrZWRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tl
ZEVycm9yOyB9CisgICAgdm9pZCBzZXRCbG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIHsgbV9ibG9ja2VkRXJyb3IgPSBlcnJvcjsgfQogICAgIGJvb2wgaXNBbGxvd2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZDsgfQogICAgIGJvb2wgcmVz
cG9uc2VSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VSZWNlaXZlZDsgfQogICAg
IApAQCAtMTEyLDkgKzExMSw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICAKICAgICBWZWN0b3I8
UmVzb3VyY2VEYXRhSXRlbT4gbV9idWZmZXJzOwotI2Vsc2UKLSAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CiAjZW5kaWYKKyAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9tYWluUmVzb3VyY2U7CiAgICAg
Y29uc3QgUGxhdGZvcm1Db250ZW50RmlsdGVyKiBtX2Jsb2NraW5nQ29udGVudEZpbHRlciB7IG51
bGxwdHIgfTsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlN0b3BwZWQgfTsKICAgICBSZXNv
dXJjZUVycm9yIG1fYmxvY2tlZEVycm9yOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMSAr
NDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImLCBzaXplX3QpID0gMDsK
LSNlbHNlCi0gICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVy
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKLSNlbmRpZgogICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBjb250ZW50RmlsdGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBT
dHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVy
cm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJl
RnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0ZURh
dGEmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHJldmlzaW9uIDI5MTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorc3RhdGljIGJvb2wmIGNv
bnRlbnRGaWx0ZXJJbkRvY3VtZW50TG9hZGVyKCkKK3sKKyAgICBzdGF0aWMgYm9vbCBmaWx0ZXIg
PSBmYWxzZTsKKyAgICBSRUxFQVNFX0FTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJu
IGZpbHRlcjsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZCBjYW5jZWxBbGwoY29uc3QgUmVzb3Vy
Y2VMb2FkZXJNYXAmIGxvYWRlcnMpCiB7CiAgICAgZm9yIChhdXRvJiBsb2FkZXIgOiBjb3B5VG9W
ZWN0b3IobG9hZGVycy52YWx1ZXMoKSkpCkBAIC00MTksNyArNDI4LDcgQEAgYm9vbCBEb2N1bWVu
dExvYWRlcjo6aXNMb2FkaW5nKCkgY29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBtZXRyaWNzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0jaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29u
dGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNo
ZWQocmVzb3VyY2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKQEAgLTcxMCw3ICs3MTksNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiAgICAgICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJP
Q0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KG5l
d1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShuZXdSZXF1ZXN0KSk7CiAjZW5kaWYKQEAgLTkwMiw3ICs5MTEsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvCiAgICAgQVNTRVJUKHJlc3Bv
bnNlLmNlcnRpZmljYXRlSW5mbygpKTsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29w
ZSBjb21wbGV0aW9uSGFuZGxlckNhbGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
LSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJ
TkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
ICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0
ZXJSZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCkBA
IC0xMzIyLDcgKzEzMzEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCkBAIC0xNDYzLDcgKzE0NzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hG
cm9tRnJhbWUoKQogICAgIHN0b3BMb2FkaW5nKCk7CiAgICAgaWYgKG1fbWFpblJlc291cmNlICYm
IG1fbWFpblJlc291cmNlLT5oYXNDbGllbnQoKnRoaXMpKQogICAgICAgICBtX21haW5SZXNvdXJj
ZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpICYm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAg
ICBtX2NvbnRlbnRGaWx0ZXItPnN0b3BGaWx0ZXJpbmdNYWluUmVzb3VyY2UoKTsKICNlbmRpZgpA
QCAtMjAyNSwxMCArMjAzNCwxNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdN
YWluUmVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQotICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSA/IENv
bnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKKyAgICBjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpID0gdHJ1ZTsK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAg
IC8vIEFsd2F5cyBmaWx0ZXIgaW4gV0sxCisgICAgY29udGVudEZpbHRlckluRG9jdW1lbnRMb2Fk
ZXIoKSA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+dmlldygpICYmIG1fZnJhbWUtPnZpZXcoKS0+cGxh
dGZvcm1XaWRnZXQoKTsKICNlbmRpZgotCisgICAgaWYgKGNvbnRlbnRGaWx0ZXJJbkRvY3VtZW50
TG9hZGVyKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlciA9ICFtX3N1YnN0aXR1dGVEYXRhLmlz
VmFsaWQoKSA/IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZSgqdGhpcykgOiBudWxscHRyOworI2VuZGlm
CisgICAgCisgICAgCiAgICAgLy8gTWFrZSBzdXJlIHdlIHJlLWFwcGx5IHRoZSB1c2VyIGFnZW50
IHRvIHRoZSBEb2N1bWVudCdzIFJlc291cmNlUmVxdWVzdCB1cG9uIHJlbG9hZCBpbiBjYXNlIHRo
ZSBlbWJlZGRpbmcKICAgICAvLyBhcHBsaWNhdGlvbiBoYXMgY2hhbmdlZCBpdCwgYnkgY2xlYXJp
bmcgdGhlIHByZXZpb3VzIHVzZXIgYWdlbnQgdmFsdWUgaGVyZSBhbmQgYXBwbHlpbmcgdGhlIG5l
dyB2YWx1ZSBpbiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KICAgICBtX3JlcXVlc3QuY2xlYXJIVFRQ
VXNlckFnZW50KCk7CkBAIC0yMjMwLDcgKzIyNDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
bGVhck1haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
bV9tYWluUmVzb3VyY2UgJiYgbV9tYWluUmVzb3VyY2UtPmhhc0NsaWVudCgqdGhpcykpCiAgICAg
ICAgIG1fbWFpblJlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChtX2NvbnRl
bnRGaWx0ZXIpCiAgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNv
dXJjZSgpOwogI2VuZGlmCkBAIC0yMzU3LDcgKzIzNzMsNyBAQCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IERvY3VtZW50TG9hCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmJlY29tZU1haW5S
ZXNvdXJjZUNsaWVudCgpCiB7Ci0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKG1fY29udGVudEZpbHRlcikKICAgICAgICAgbV9j
b250ZW50RmlsdGVyLT5zdGFydEZpbHRlcmluZ01haW5SZXNvdXJjZSgqbV9tYWluUmVzb3VyY2Up
OwogI2VuZGlmCkBAIC0yNDE0LDggKzI0MzAsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjplbnF1
ZXVlU2VjdXJpdHlQb2xpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZW5xdWV1ZVNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZShldmVudEluaXQpKTsKIH0KIAotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKKyNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJvdWdo
Q29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90KQogewogICAg
IGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQpAQCAtMjQzNCw3ICsyNDUwLDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6aGFuZGxlUHJvdmlzaW9uYWxMbwogewogICAgIGZyYW1lTG9hZGVyKCktPmxv
YWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVE
YXRhKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBS
ZXNvdXJjZUVycm9yIERvY3VtZW50TG9hZGVyOjpoYW5kbGVDb250ZW50RmlsdGVyRGlkQmxvY2so
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJs
b2NrUmVxdWVzdERlbmllZFNjcmlwdCkKQEAgLTI0NTcsMjcgKzI0NzMsMjcgQEAgUmVzb3VyY2VF
cnJvciBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udAogICAgIHJldHVybiBlcnJvcjsKIH0KIAot
dm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlQ29udGVudEZpbHRlclByb3Zpc2lvbmFsTG9hZEZh
aWx1cmUoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQotewotICAgIGZyYW1lTG9hZGVyKCktPmxvYWQoRnJhbWVMb2FkUmVxdWVz
dCgqZnJhbWUoKSwgYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRhKSk7Ci19Ci0KIGJvb2wg
RG9jdW1lbnRMb2FkZXI6OmNvbnRlbnRGaWx0ZXJXaWxsSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFp
bHVyZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBpZiAobV9jb250ZW50Rmls
dGVyICYmIG1fY29udGVudEZpbHRlci0+d2lsbEhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUo
ZXJyb3IpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoY29udGVudEZpbHRlckluRG9j
dW1lbnRMb2FkZXIoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgcmV0dXJuIG1fYmxvY2tlZEJ5
Q29udGVudEZpbHRlciAmJiBtX2Jsb2NrZWRFcnJvci5lcnJvckNvZGUoKSA9PSBlcnJvci5lcnJv
ckNvZGUoKSAmJiBtX2Jsb2NrZWRFcnJvci5kb21haW4oKSA9PSBlcnJvci5kb21haW4oKTsKICNl
bHNlCi0gICAgcmV0dXJuIG1fY29udGVudEZpbHRlciAmJiBtX2NvbnRlbnRGaWx0ZXItPndpbGxI
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlKGVycm9yKTsKKyAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGVudEZpbHRlckhhbmRsZVByb3Zp
c2lvbmFsTG9hZEZhaWx1cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0jaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBVTlVTRURf
UEFSQU0oZXJyb3IpOwotI2Vsc2UKICAgICBpZiAobV9jb250ZW50RmlsdGVyKQogICAgICAgICBt
X2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3IpOworICAg
IGlmIChjb250ZW50RmlsdGVySW5Eb2N1bWVudExvYWRlcigpKQorICAgICAgICByZXR1cm47Cisj
aWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBo
YW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIobV9ibG9ja2VkUGFn
ZVVSTCwgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsKICNlbmRpZgogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjkxNDg3
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1OSw3ICsxNTksNyBAQCBjbGFzcyBEb2N1bWVudExvYWRlcgogICAgIDogcHVibGlj
IFJlZkNvdW50ZWQ8RG9jdW1lbnRMb2FkZXI+CiAgICAgLCBwdWJsaWMgRnJhbWVEZXN0cnVjdGlv
bk9ic2VydmVyCiAgICAgLCBwdWJsaWMgQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Ci0jaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKSAmJiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lO
X05FVFdPUktJTkdfUFJPQ0VTUykKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
LCBwdWJsaWMgQ29udGVudEZpbHRlckNsaWVudAogI2VuZGlmCiAgICAgLCBwcml2YXRlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50IHsKQEAgLTQwMiwxMyArNDAyLDE1IEBAIHB1YmxpYzoKICAgICBT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotI2lm
ICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9pZCBz
ZXRCbG9ja2VkUGFnZVVSTChjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKSB7IG1fYmxvY2tlZFBh
Z2VVUkwgPSBibG9ja2VkUGFnZVVSTDsgfQorICAgIHZvaWQgc2V0U3Vic3RpdHV0ZURhdGFGcm9t
Q29udGVudEZpbHRlcihTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRG
aWx0ZXIpIHsgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyID0gV1RGTW92ZShzdWJz
dGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyKTsgfQorI2VuZGlmIC8vIEVOQUJMRShDT05URU5U
X0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgQ29udGVudEZpbHRlciogY29u
dGVudEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEZpbHRlci5nZXQoKTsgfQogICAg
IHZvaWQgcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPjo6cmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmKCkgY29uc3QgZmluYWwgeyBSZWZDb3VudGVkPERvY3VtZW50
TG9hZGVyPjo6ZGVyZWYoKTsgfQotI2VuZGlmCisKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJj
ZUVycm9yIGhhbmRsZUNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZUNvbnRlbnRGaWx0ZXJQcm92aXNpb25hbExvYWRGYWlsdXJlKGNv
bnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgc3RhcnRJY29uTG9hZGluZygpOwpAQCAtNTEyLDkgKzUxNCw5IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpICYmICFFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xp
ZW50Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZp
bHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIHNp
emVfdCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVzb3VyY2VFcnJvciBjb250ZW50Rmls
dGVyRGlkQmxvY2soQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJikg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVQcm92aXNpb25hbExvYWRGYWls
dXJlRnJvbUNvbnRlbnRGaWx0ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgU3Vic3RpdHV0
ZURhdGEmKSBmaW5hbDsKQEAgLTY2NCwxMyArNjY2LDE0IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0jaWYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKLSNlbHNlCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBib29sIG1fYmxvY2tlZEJ5Q29udGVu
dEZpbHRlciB7IGZhbHNlIH07CiAgICAgUmVzb3VyY2VFcnJvciBtX2Jsb2NrZWRFcnJvcjsKLSNl
bmRpZgotI2VuZGlmCisgICAgVVJMIG1fYmxvY2tlZFBhZ2VVUkw7CisgICAgU3Vic3RpdHV0ZURh
dGEgbV9zdWJzdGl0dXRlRGF0YUZyb21Db250ZW50RmlsdGVyOworI2VuZGlmIC8vIEVOQUJMRShD
T05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisjZW5kaWYgLy8gRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgUmVmUHRyPFBy
ZXZpZXdDb252ZXJ0ZXI+IG1fcHJldmlld0NvbnZlcnRlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDI5MTQ4NykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDcgKzE0
MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmEKICAgICBhdXRv
JiBzdWJzdGl0dXRlRGF0YSA9IGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKTsKICAgICBpZiAoc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmICFzdWJzdGl0dXRlRGF0YS5mYWlsaW5nVVJMKCkuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSB0cnVlOwotI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykgJiYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgICAgICBp
ZiAoYXV0byBsb2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkp
CiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0
ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoKmxvYWRlciwgc3Vic3RpdHV0ZURhdGEpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuaAkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogT0JKQ19DTEFT
UyBOU0NvZGVyOworT0JKQ19DTEFTUyBOU051bWJlcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKQEAgLTY0LDYgKzY1LDEwIEBAIHB1
YmxpYzoKICAgICBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91
bnJlYWNoYWJsZVVSTDsgfQogICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgVVJMJiB1
cmwpIHsgbV91bnJlYWNoYWJsZVVSTCA9IHVybDsgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFVuYmxvY2tlZEFmdGVyUmVxdWVzdChib29sKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3VuYmxvY2tVUkxIb3N0OwogICAgIFVSTCBtX3VucmVhY2hhYmxlVVJMOwpAQCAtNzEs
NiArNzYsOSBAQCBwcml2YXRlOgogI2lmIEhBVkUoUEFSRU5UQUxfQ09OVFJPTFNfV0lUSF9VTkJM
T0NLX0hBTkRMRVIpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93ZWJGaWx0
ZXJFdmFsdWF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIE5TTnVtYmVyKiBtX3VuYmxvY2tlZEFmdGVyUmVxdWVzdCB7
IG5pbCB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbQkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDkgQEAKIAogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgdW5ibG9ja1VSTEhvc3RLZXkgeyBAInVuYmxvY2tVUkxIb3N0IiB9Owogc3RhdGljIE5T
U3RyaW5nICogY29uc3QgdW5yZWFjaGFibGVVUkxLZXkgeyBAInVucmVhY2hhYmxlVVJMIiB9Owor
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCitzdGF0
aWMgTlNTdHJpbmcgKiBjb25zdCB1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXkgeyBAInVuYmxvY2tl
ZEFmdGVyUmVxdWVzdCIgfTsKKyNlbmRpZgogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2
YWx1YXRvcktleSB7IEAid2ViRmlsdGVyRXZhbHVhdG9yIiB9OwpAQCAtMTAxLDYgKzEwNCwxMCBA
QCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZW5jb2RlCiAjaWYgSEFWRShQQVJF
TlRBTF9DT05UUk9MU19XSVRIX1VOQkxPQ0tfSEFORExFUikKICAgICBbY29kZXIgZW5jb2RlT2Jq
ZWN0Om1fd2ViRmlsdGVyRXZhbHVhdG9yLmdldCgpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JL
ZXldOwogI2VuZGlmCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKKyAgICBbY29kZXIgZW5jb2RlT2JqZWN0Om1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0
IGZvcktleTp1bmJsb2NrZWRBZnRlclJlcXVlc3RLZXldOworI2VuZGlmCisKICAgICBFTkRfQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiB9CiAKQEAgLTExMyw2ICsxMjAsOSBAQCBib29sIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MU19X
SVRIX1VOQkxPQ0tfSEFORExFUikKICAgICB1bmJsb2NrSGFuZGxlci5tX3dlYkZpbHRlckV2YWx1
YXRvciA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOmdldFdlYkZpbHRlckV2YWx1YXRvckNs
YXNzKCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRvcktleV07CiAjZW5kaWYKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorICAgIHVuYmxvY2tIYW5k
bGVyLm1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXSBmb3JLZXk6dW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0S2V5XTsKKyNlbmRp
ZgogICAgIHJldHVybiB0cnVlOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMjAsNyArMTMwLDExIEBAIGJvb2wgQ29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyOjpkZWNvZGUKIAogYm9vbCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmNh
bkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewot
ICAgIGlmICghbV91bmJsb2NrUmVxdWVzdGVyKSB7CisgICAgaWYgKCFtX3VuYmxvY2tSZXF1ZXN0
ZXIKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQor
ICAgICAgICAmJiAhbV91bmJsb2NrZWRBZnRlclJlcXVlc3QKKyNlbmRpZgorICAgICAgICApIHsK
ICNpZiBIQVZFKFBBUkVOVEFMX0NPTlRST0xTX1dJVEhfVU5CTE9DS19IQU5ETEVSKQogICAgICAg
ICBpZiAoIW1fd2ViRmlsdGVyRXZhbHVhdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTUwLDkgKzE2NCwxNiBAQCB2b2lkIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6cmVx
dWVzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLQotICAgIGlmIChtX3VuYmxvY2tS
ZXF1ZXN0ZXIpIHsKLSAgICAgICAgbV91bmJsb2NrUmVxdWVzdGVyKFtkZWNpc2lvbkhhbmRsZXJd
KGJvb2wgdW5ibG9ja2VkKSB7CisgICAgYXV0byB1bmJsb2NrUmVxdWVzdGVyID0gbV91bmJsb2Nr
UmVxdWVzdGVyOworI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BS
T0NFU1MpCisgICAgaWYgKCF1bmJsb2NrUmVxdWVzdGVyICYmIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1
ZXN0KSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIgPSBbdW5ibG9ja2VkID0gbV91bmJsb2Nr
ZWRBZnRlclJlcXVlc3QuYm9vbFZhbHVlXShDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OkRl
Y2lzaW9uSGFuZGxlckZ1bmN0aW9uIGZ1bmN0aW9uKSB7CisgICAgICAgICAgICBmdW5jdGlvbih1
bmJsb2NrZWQpOworICAgICAgICB9OworICAgIH0KKyNlbmRpZgorICAgIGlmICh1bmJsb2NrUmVx
dWVzdGVyKSB7CisgICAgICAgIHVuYmxvY2tSZXF1ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9v
bCB1bmJsb2NrZWQpIHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY2lzaW9uSGFu
ZGxlciwgdW5ibG9ja2VkXSB7CiAgICAgICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHVuYmxv
Y2tlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTE2MCw2ICsxODEsMTMgQEAgdm9pZCBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI6OnJlcXVlcwogICAgIH0KIH0KIAorI2lmIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCit2b2lkIENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcjo6c2V0VW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0KGJvb2wgdW5ibG9ja2VkKQor
eworICAgIG1fdW5ibG9ja2VkQWZ0ZXJSZXF1ZXN0ID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OnVuYmxvY2tlZF07Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitNb2NrQ29udGVudEZpbHRlck1hbmFnZXImIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlcjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyPiBtYW5hZ2VyOworICAgIHJldHVybiBtYW5hZ2VyLmdldCgp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2V0Q2xpZW50KFJlZlB0cjxN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50PiBjbGllbnQpCit7CisgICAgbV9jbGllbnQg
PSBjbGllbnQ7Cit9CisgICAgCit2b2lkIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6bm90aWZ5
U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MmIHNldHRp
bmdzKSBjb25zdAoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDaGFuZ2VkKHNldHRpbmdzKTsKK30KKworfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
c0NsaWVudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tDb250ZW50Rmls
dGVyTWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3Rh
dGljIE1vY2tDb250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICBXRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCB2b2lkIHNldENsaWVudChSZWZQdHI8TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nc0NsaWVudD4pOworICAgIAorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JU
IHZvaWQgbm90aWZ5U2V0dGluZ3NDaGFuZ2VkKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8TW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nc0NsaWVudD4gbV9jbGllbnQ7Cit9OworCit9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCShyZXZpc2lv
biAyOTE0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29u
dGVudEZpbHRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgog
I2luY2x1ZGUgIk1vY2tDb250ZW50RmlsdGVyLmgiCisjaW5jbHVkZSAiTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ0LDEyICs0NSw0NCBAQCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdz
JiBNb2NrQ29udGVudEZpCiB2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnJlc2V0KCkK
IHsKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoKTsKKyAgICBN
b2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hhbmdl
ZChzaW5nbGV0b24oKSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2V0
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgTW9ja0NvbnRlbnRGaWx0ZXI6OmVuc3VyZUlu
c3RhbGxlZCgpOwogICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkp
OworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldEJsb2NrZWRTdHJpbmco
Y29uc3QgU3RyaW5nJiBibG9ja2VkU3RyaW5nKQoreworICAgIG1fYmxvY2tlZFN0cmluZyA9IGJs
b2NrZWRTdHJpbmc7CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5u
b3RpZnlTZXR0aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludCBkZWNpc2lvblBv
aW50KQoreworICAgIG1fZGVjaXNpb25Qb2ludCA9IGRlY2lzaW9uUG9pbnQ7CisgICAgTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0aW5nc0NoYW5nZWQoc2lu
Z2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lz
aW9uKERlY2lzaW9uIGRlY2lzaW9uKQoreworICAgIG1fZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAg
ICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdzQ2hh
bmdlZChzaW5nbGV0b24oKSk7Cit9CisKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9u
KQoreworICAgIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNp
b247CisgICAgTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24oKS5ub3RpZnlTZXR0
aW5nc0NoYW5nZWQoc2luZ2xldG9uKCkpOworfQorCit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldE1vZGlmaWVkUmVxdWVzdFVSTChjb25zdCBTdHJpbmcmIG1vZGlmaWVkUmVxdWVz
dFVSTCkKK3sKKyAgICBtX21vZGlmaWVkUmVxdWVzdFVSTCA9IG1vZGlmaWVkUmVxdWVzdFVSTDsK
KyAgICBNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnNpbmdsZXRvbigpLm5vdGlmeVNldHRpbmdz
Q2hhbmdlZChzaW5nbGV0b24oKSk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgJKHJldmlzaW9u
IDI5MTQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9Owog
CiAgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MmIHNpbmdsZXRvbigpOwotICAgIHN0YXRpYyB2b2lkIHJlc2V0KCk7CisgICAgV0VC
Q09SRV9URVNUU1VQUE9SVF9FWFBPUlQgc3RhdGljIHZvaWQgcmVzZXQoKTsKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQog
CiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3Jl
IFJlZkNvdW50ZWQuCkBAIC01OCwyNiArNTgsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfVEVT
VFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAogICAgIGNvbnN0IFN0cmlu
ZyYgYmxvY2tlZFN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tlZFN0cmluZzsgfQotICAg
IHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmIGJsb2NrZWRTdHJpbmcpIHsgbV9i
bG9ja2VkU3RyaW5nID0gYmxvY2tlZFN0cmluZzsgfQorICAgIFdFQkNPUkVfVEVTVFNVUFBPUlRf
RVhQT1JUIHZvaWQgc2V0QmxvY2tlZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIERlY2lz
aW9uUG9pbnQgZGVjaXNpb25Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb25Qb2ludDsg
fQotICAgIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50IGRlY2lzaW9uUG9pbnQp
IHsgbV9kZWNpc2lvblBvaW50ID0gZGVjaXNpb25Qb2ludDsgfQorICAgIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIHZvaWQgc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50KTsKIAogICAg
IERlY2lzaW9uIGRlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZWNpc2lvbjsgfQotICAgIHZv
aWQgc2V0RGVjaXNpb24oRGVjaXNpb24gZGVjaXNpb24pIHsgbV9kZWNpc2lvbiA9IGRlY2lzaW9u
OyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgdm9pZCBzZXREZWNpc2lvbihEZWNp
c2lvbik7CiAKICAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uOyB9Ci0gICAgdm9pZCBzZXRVbmJsb2NrUmVx
dWVzdERlY2lzaW9uKERlY2lzaW9uIHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pIHsgbV91bmJsb2Nr
UmVxdWVzdERlY2lzaW9uID0gdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIFdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JUIHZvaWQgc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbihEZWNpc2lv
bik7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVuYmxvY2tSZXF1ZXN0VVJMKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgY29uc3QgU3RyaW5nJiB1bmJsb2NrUmVxdWVzdFVS
TCgpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBtb2RpZmllZFJlcXVlc3RVUkwoKSBjb25z
dCB7IHJldHVybiBtX21vZGlmaWVkUmVxdWVzdFVSTDsgfQotICAgIHZvaWQgc2V0TW9kaWZpZWRS
ZXF1ZXN0VVJMKGNvbnN0IFN0cmluZyYgbW9kaWZpZWRSZXF1ZXN0VVJMKSB7IG1fbW9kaWZpZWRS
ZXF1ZXN0VVJMID0gbW9kaWZpZWRSZXF1ZXN0VVJMOyB9CisgICAgV0VCQ09SRV9URVNUU1VQUE9S
VF9FWFBPUlQgdm9pZCBzZXRNb2RpZmllZFJlcXVlc3RVUkwoY29uc3QgU3RyaW5nJik7CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncz4gZGVjb2RlKERlY29kZXImKTsKIAotcHJpdmF0ZToKICAgICBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0OwotICAgIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOworICAg
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cyYpID0gZGVmYXVsdDsKICAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJiBvcGVyYXRvcj0o
Y29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVmYXVsdDsKK3ByaXZhdGU6CiAK
ICAgICBib29sIG1fZW5hYmxlZCB7IGZhbHNlIH07CiAgICAgRGVjaXNpb25Qb2ludCBtX2RlY2lz
aW9uUG9pbnQgeyBEZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlIH07CkBAIC04Nyw0ICs5MCw1
MyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX21vZGlmaWVkUmVxdWVzdFVSTDsKIH07CiAKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9lbmFibGVk
OworICAgIGVuY29kZXIgPDwgZGVjaXNpb25Qb2ludCgpOworICAgIGVuY29kZXIgPDwgZGVjaXNp
b24oKTsKKyAgICBlbmNvZGVyIDw8IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb24oKTsKKyAgICBlbmNv
ZGVyIDw8IGJsb2NrZWRTdHJpbmcoKTsKKyAgICBlbmNvZGVyIDw8IG1vZGlmaWVkUmVxdWVzdFVS
TCgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzPiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciApCit7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVkOworICAg
IGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxEZWNpc2lvblBvaW50PiBkZWNpc2lvblBv
aW50OworICAgIGRlY29kZXIgPj4gZGVjaXNpb25Qb2ludDsKKyAgICBpZiAoIWRlY2lzaW9uUG9p
bnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbj4gZGVjaXNpb247CisgICAg
ZGVjb2RlciA+PiBkZWNpc2lvbjsKKyAgICBpZiAoIWRlY2lzaW9uKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6RGVjaXNpb24+IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247CisgICAgZGVjb2Rl
ciA+PiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworICAgIGlmICghdW5ibG9ja1JlcXVlc3REZWNp
c2lvbikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gYmxvY2tlZFN0cmluZzsKKyAgICBkZWNvZGVyID4+IGJsb2NrZWRTdHJpbmc7CisgICAg
aWYgKCFibG9ja2VkU3RyaW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBtb2RpZmllZFJlcXVlc3RVUkw7CisgICAgZGVjb2RlciA+PiBt
b2RpZmllZFJlcXVlc3RVUkw7CisgICAgaWYgKCFtb2RpZmllZFJlcXVlc3RVUkwpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNl
dHRpbmdzOworICAgIHNldHRpbmdzLnNldEVuYWJsZWQoKmVuYWJsZWQpOworICAgIHNldHRpbmdz
LnNldERlY2lzaW9uUG9pbnQoKmRlY2lzaW9uUG9pbnQpOworICAgIHNldHRpbmdzLnNldERlY2lz
aW9uKCpkZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0VW5ibG9ja1JlcXVlc3REZWNpc2lvbigq
dW5ibG9ja1JlcXVlc3REZWNpc2lvbik7CisgICAgc2V0dGluZ3Muc2V0QmxvY2tlZFN0cmluZyhX
VEZNb3ZlKCpibG9ja2VkU3RyaW5nKSk7CisgICAgc2V0dGluZ3Muc2V0TW9kaWZpZWRSZXF1ZXN0
VVJMKFdURk1vdmUoKm1vZGlmaWVkUmVxdWVzdFVSTCkpOworCisgICAgcmV0dXJuIHNldHRpbmdz
OworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50LmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlclNldHRp
bmdzQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOworCitjbGFzcyBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3NDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBtb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikg
PSAwOworfTsKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAz
LTE4ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
dGVzdCBmYWlsdXJlcyB3aGVuIGVuYWJsaW5nIGNvbnRlbnQgZmlsdGVyaW5nIGluIHRoZSBOZXR3
b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNzIxNworCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAg
ICAgQWRkIGEgV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyIGluIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MsIHdoaWNoIHdpbGwgYmUgbm90aWZpZWQKKyAgICAgICAgd2hlbiBtb2NrIGNvbnRlbnQg
ZmlsdGVyIHNldHRpbmdzIGFyZSBjaGFuZ2VkIGZyb20gSmF2YVNjcmlwdCwgYW5kIHRoZW4gc2Vu
ZCB0aGUgbmV3CisgICAgICAgIHNldHRpbmdzIHRvIHRoZSBOZXR3b3JrIHByb2Nlc3MgYW5kIGlu
c3RhbGwgdGhlIG1vY2sgY29udGVudCBmaWx0ZXIuIFRoZSBvdGhlcgorICAgICAgICBjaGFuZ2Vz
IGFyZSBhZGRyZXNzaW5nIGxheW91dCBhbmQgQVBJIHRlc3QgZmFpbHVyZXMuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjppbnN0YWxsTW9ja0Nv
bnRlbnRGaWx0ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnRDb250ZW50RmlsdGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0SW50ZXJuYWwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRlbnRGaWx0ZXJEaWRCbG9jayk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyOjpzaW5nbGV0b24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nU2V0dGluZ3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6Om1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3NDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6CisKIDIwMjItMDMtMTggIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWN5Y2xpbmcgYSB3ZWJnbCBjb250ZXh0IHdoZW4gaXQg
aGFzIGJlZW4gbG9zdCBhbmQgcmVzdG9yZWQgY2F1c2VzIGEgY3Jhc2gKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQzMiw2ICsxNDMyLDEzIEBAIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+
IE5ldHdvcmtDb24KICAgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdf
SU5fTkVUV09SS0lOR19QUk9DRVNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6aW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MmJiBzZXR0aW5ncykKK3sKKyAgICBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5n
bGV0b24oKSA9IFdURk1vdmUoc2V0dGluZ3MpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZTsKIGNsYXNzIEJsb2JQYXJ0OwogY2xhc3MgQmxvYlJlZ2lzdHJ5SW1wbDsKK2NsYXNz
IE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29sOwpA
QCAtMjAwLDYgKzIwMSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVz
c2FnZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwogICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKIAorI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCisgICAgdm9p
ZCBpbnN0YWxsTW9ja0NvbnRlbnRGaWx0ZXIoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI5MTQ4NykKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAjZW5kaWYKICAgICBTZXRSZXNvdXJj
ZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVu
dW06dWludDhfdCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKICAgICBQcmlvcml0
aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
PiBsb2FkSWRlbnRpZmllcnMpCisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIEluc3RhbGxNb2NrQ29udGVudEZpbHRlcihXZWJDb3JlOjpN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzIHNldHRpbmdzKQorI2VuZGlmCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxNiArMTg3
LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBMT0FERVJfUkVMRUFTRV9MT0coInN0YXJ0OiBoYXNOZXR3
b3JrTG9hZENoZWNrZXI9JWQiLCAhIW1fbmV0d29ya0xvYWRDaGVja2VyKTsKIAorICAgIGF1dG8g
bmV3UmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH07CisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKKyAgICBpZiAo
IXN0YXJ0Q29udGVudEZpbHRlcmluZyhuZXdSZXF1ZXN0KSkKKyAgICAgICAgcmV0dXJuOworI2Vu
ZGlmCisKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXIgPSBtX2Nvbm5lY3Rpb24tPnN0YXJ0
VHJhY2tpbmdSZXNvdXJjZUxvYWQobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpbkZyYW1lTG9hZCgpKTsKIAogICAgIEFTU0VSVCghbV93YXNTdGFy
dGVkKTsKICAgICBtX3dhc1N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgYXV0byBuZXdSZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfTsKLSNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotICAgIHN0YXJ0Q29udGVudEZpbHRl
cmluZyhuZXdSZXF1ZXN0KTsKLSNlbmRpZgotCiAgICAgaWYgKG1fbmV0d29ya0xvYWRDaGVja2Vy
KSB7CiAgICAgICAgIG1fbmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3Qg
eyBuZXdSZXF1ZXN0IH0sIHRoaXMsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
XSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKQEAgLTIzNiwx
NCArMjM3LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiB9CiAKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQotdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0Q29udGVudEZpbHRlcmluZyhSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRDb250ZW50Rmls
dGVyaW5nKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAgICBpZiAoIWlzTWFpblJlc291
cmNlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgbV9jb250
ZW50RmlsdGVyID0gQ29udGVudEZpbHRlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICBpZiAoIW1fY29u
dGVudEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCkpKQotICAgICAgICByZXR1cm47CiAgICAgbV9jb250ZW50RmlsdGVyLT5zdGFy
dEZpbHRlcmluZ01haW5SZXNvdXJjZShyZXF1ZXN0LnVybCgpKTsKKyAgICBpZiAoIW1fY29udGVu
dEZpbHRlci0+Y29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZVJl
c3BvbnNlKCkpKSB7CisgICAgICAgIG1fY29udGVudEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5S
ZXNvdXJjZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl
OwogfQogI2VuZGlmCiAKQEAgLTk0NiwxMSArOTUwLDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgfQogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIp
IHsKLSAgICAgICAgICAgIG1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlck5vdGlmeUZpbmlz
aGVkKG1fcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgICAgIGlmICghbV9jb250
ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyTm90aWZ5RmluaXNoZWQobV9wYXJhbWV0ZXJzLnJlcXVl
c3QudXJsKCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY29udGVu
dEZpbHRlci0+c3RvcEZpbHRlcmluZ01haW5SZXNvdXJjZSgpOwogICAgICAgICB9CiAjZW5kaWYK
LQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVz
b3VyY2VMb2FkKG5ldHdvcmtMb2FkTWV0cmljcykpOwogICAgIH0KIApAQCAtMTA1MSw3ICsxMDU1
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaQogICAgICAgICBt
X2ZpcnN0UmVzcG9uc2VVUkwgPSByZWRpcmVjdFJlc3BvbnNlLnVybCgpOwogCiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICBpZiAobV9jb250
ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVl
c3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAm
JiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KHJlZGlyZWN0
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkBA
IC0xNzk4LDMyICsxODAyLDM4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkYXRhUmVj
ZWl2ZWQKIAogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRlbnRGaWx0ZXJEaWRCbG9jayhXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIg
dW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxv
Y2tMb2FkKHVuYmxvY2tIYW5kbGVyLCB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCkpOwotICAg
IGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICB1bmJsb2Nr
SGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfV0oYm9vbCB1bmJsb2NrZWQpIHsKLSAgICAgICAgICAgIGlmICghdW5ibG9ja2VkKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29y
a1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpSZWxvYWRBZnRlclVuYmxvY2tlZENvbnRlbnRGaWx0ZXIobV9wYXJh
bWV0ZXJzLndlYlBhZ2VQcm94eUlEKSwgMCk7CisgICAgYXV0byBlcnJvciA9IFdlYktpdDo6Ymxv
Y2tlZEJ5Q29udGVudEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKworICAgIG1f
dW5ibG9ja0hhbmRsZXIgPSB1bmJsb2NrSGFuZGxlcjsKKyAgICBtX3VuYmxvY2tSZXF1ZXN0RGVu
aWVkU2NyaXB0ID0gdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQ7CisgICAgCisgICAgaWYgKHVu
YmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkpCisgICAgICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CisgICAgZWxzZSB7CisgICAgICAg
IHVuYmxvY2tIYW5kbGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBSZWYgeyAqdGhpcyB9XShib29sIHVuYmxvY2tlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBt
X3VuYmxvY2tIYW5kbGVyLnNldFVuYmxvY2tlZEFmdGVyUmVxdWVzdCh1bmJsb2NrZWQpOworCisg
ICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgICAgIGlmIChtX3dh
c1N0YXJ0ZWQgfHwgdW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtX3BhcmFt
ZXRlcnMucmVxdWVzdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KGFib3V0QmxhbmtVUkwoKSk7CisgICAgICAgICAgICBhdXRvIGVy
cm9yID0gV2ViS2l0OjpibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IocmVxdWVzdCk7CisgICAg
ICAgICAgICBtX2NvbnRlbnRGaWx0ZXItPnNldEJsb2NrZWRFcnJvcihlcnJvcik7CisgICAgICAg
ICAgICBtX2NvbnRlbnRGaWx0ZXItPmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmUoZXJyb3Ip
OwogICAgICAgICB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdlYktpdDo6YmxvY2tlZEJ5Q29udGVu
dEZpbHRlckVycm9yKG1fcGFyYW1ldGVycy5yZXF1ZXN0KTsKKyAgICByZXR1cm4gZXJyb3I7CiB9
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9y
Q29udGVudEZpbHRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVChtX2NvbnRlbnRGaWx0ZXIpOwotICAgIG1fY29udGVudEZpbHRlci0+
aGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShlcnJvcik7CiB9CiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpoYW5kbGVQcm92aXNpb25hbExvYWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0
ZXIoY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmIHN1
YnN0aXR1dGVEYXRhKQogewotICAgIGlmIChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkpCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpIYW5kbGVQcm92aXNpb25hbExv
YWRGYWlsdXJlRnJvbUNvbnRlbnRGaWx0ZXIoYmxvY2tlZFBhZ2VVUkwsIHN1YnN0aXR1dGVEYXRh
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fY29udGVudEZpbHRlcik7
Ci0gICAgICAgIGF1dG8mIGVycm9yID0gbV9jb250ZW50RmlsdGVyLT5ibG9ja2VkRXJyb3IoKTsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkNhbmNlbE1haW5SZXNv
dXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGVycm9yKSk7Ci0gICAgfQorICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKG1fdW5ibG9j
a0hhbmRsZXIsIG1fdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQsIG1fY29udGVudEZpbHRlci0+
YmxvY2tlZEVycm9yKCksIGJsb2NrZWRQYWdlVVJMLCBzdWJzdGl0dXRlRGF0YSkpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiUHJpdmF0ZVJlbGF5ZWQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Q2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmg+CkBAIC0yNDEsNyArMjQyLDcgQEAgcHJpdmF0
ZToKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsKIAogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCi0gICAgdm9pZCBzdGFy
dENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgYm9vbCBz
dGFydENvbnRlbnRGaWx0ZXJpbmcoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
IAogICAgIGVudW0gY2xhc3MgSXNGcm9tU2VydmljZVdvcmtlciA6IGJvb2wgeyBObywgWWVzIH07
CkBAIC0yOTUsNiArMjk2LDggQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNvbnRlbnRGaWx0ZXI+IG1fY29udGVudEZpbHRlcjsKKyAgICBXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgbV91bmJsb2NrSGFuZGxlcjsKKyAgICBTdHJpbmcgbV91bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdDsKICNlbmRpZgogCiAgICAgUHJpdmF0ZVJlbGF5ZWQgbV9wcml2
YXRlUmVsYXllZCB7IFByaXZhdGVSZWxheWVkOjpObyB9OwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI5MTQ4NykKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw2ICs5NCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1YUi5oPgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNT
KQorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oPgorI2VuZGlm
CisKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCiAK
QEAgLTg0Nyw2ICs4NTEsMjggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpSZQogICAgID47CiB9OwogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdP
UktJTkdfUFJPQ0VTUykKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludD4geworICAgIHVzaW5nIHZhbHVl
cyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3M6OkRlY2lzaW9uUG9pbnQsCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyV2lsbFNlbmRSZXF1ZXN0LAorICAgICAgICBXZWJD
b3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJlZGly
ZWN0LAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lv
blBvaW50OjpBZnRlclJlc3BvbnNlLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEsCisgICAgICAgIFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRB
ZGRpbmdEYXRhLAorICAgICAgICBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpE
ZWNpc2lvblBvaW50OjpOZXZlcgorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uPiB7Cisg
ICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb24sCisgICAgICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdywKKyAgICAgICAgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrCisgICAgPjsKK307CisjZW5kaWYK
KwogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpBdXRvcGxheUV2ZW50PiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6QXV0b3Bs
YXlFdmVudCwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTk5Nyw2ICsxOTk3LDgg
QEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMx
NzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUy
QzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZB
RTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07
CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
RUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aCAqLzsgfTsKKwkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLzsgfTsKKwkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKIAkJRTM4NjZBRTcy
Mzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZB
RTYyMzk3NDA1MzAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQ
cm94eS5oICovOyB9OwogCQlFMzg2NkIwODIzOTlBMkQxMDBGODhGRTkgLyogV2ViRGV2aWNlT3Jp
ZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QjA1MjM5OTk3OUMwMEY4OEZFOSAvKiBX
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHlNZXNzYWdlcy5oICovOyB9OwpA
QCAtNjQ5Niw5ICs2NDk4LDEzIEBACiAJCUUzMENGQjlEMjY2MDY2M0MwMDk0RDlDMCAvKiBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gY29tLmFw
cGxlLldlYktpdC5XZWJDb250ZW50LnNiOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJRTMxMzY2NEQyNjVFRTVBRjAwNTEwODRGIC8qIGNvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYi5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBjb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNDM5QjYz
MjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJF
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CiAJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2Fu
ZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsv
V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZF
OSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0
ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNjIz
OTc0MDUzMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5oOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFF
RDIzOTg0NzFBMDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tZXNzYWdlcy5pbjsgcGF0aCA9IGlvcy9XZWJEZXZpY2VP
cmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC05NTE1LDYgKzk1MjEsOCBAQAogCQkJCUUzNDM5QjYzMjM0NTQ2M0Ew
MDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8sCiAJCQkJNTFBQkY2
NTYxNjM5MkYxNTAwMTMyQTdBIC8qIFdlYkxvYWRlclN0cmF0ZWd5LmNwcCAqLywKIAkJCQk1MUFC
RjY1NzE2MzkyRjE1MDAxMzJBN0EgLyogV2ViTG9hZGVyU3RyYXRlZ3kuaCAqLywKKwkJCQlFMzgx
NkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAq
LywKKwkJCQlFMzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmggKi8sCiAJCQkJQTU4NjBFNkYyMzBGNjdERTAwNDYxQUFFIC8qIFdlYlJlc291cmNl
SW50ZXJjZXB0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQTU4NjBFNzAyMzBGNjdERTAwNDYxQUFF
IC8qIFdlYlJlc291cmNlSW50ZXJjZXB0Q29udHJvbGxlci5oICovLAogCQkJCTUxMEFGRkI3MTY1
NDIwNDgwMDFCQTA1RSAvKiBXZWJSZXNvdXJjZUxvYWRlci5jcHAgKi8sCkBAIC0xMDAzMiw2ICsx
MDA0MCw4IEBACiAJCTU3NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzRCMTEwQzI3QzQ2
QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGliICovLAorCQkJCUUzNEIxMTBG
MjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJ
RERFOTkyRjQyNzhEMDZEOTAwRjYwRDI2IC8qIGxpYldlYktpdEFkZGl0aW9ucy5hICovLAogCQkJ
CTU3QTlGRjE1MjUyQzZBRUYwMDZBMjA0MCAvKiBsaWJXVEYuYSAqLywKIAkJCQk1NzUwRjMyQTIw
MzJENEU1MDAzODkzNDcgLyogTG9jYWxBdXRoZW50aWNhdGlvbi5mcmFtZXdvcmsgKi8sCkBAIC0x
MzgyMyw2ICsxMzgzMyw3IEBACiAJCQkJMkQzRUY0NDMxOTE3NjQ2MzAwMDM0MTg0IC8qIFdlYk1l
bW9yeVByZXNzdXJlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTA5ODU0RUQxMkJDNEUx
ODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNhbXBsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxM0ZG
QjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlGOUExMTc2Q0VENjAw
NDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdD
Q0NDOEZCMUE1RjUwRkQwMDhGQjBEQSAvKiBXZWJOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxQTJFQzQ5MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmljYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMTYyMDcsNiArMTYyMTgsNyBAQAogCQkJCUExODFBNzk4MjFBQ0M3
NEIwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREYx
QjkxQjI2NzAyNTU1MDAwN0VDMTAgLyogV2ViS2l0U3dpZnRTb2Z0TGluay5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgyRiAvKiBXZWJNRE5TUmVnaXN0ZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM4MTZCM0QyN0UyNDYzQTAwNUVB
RkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMUJBOTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREY2RkU1MjIxMkUxMTA5MDA0Njkw
MzAgLyogV2ViUGFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzJBMDEyNDdFNzFEMDBC
QzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI5MTQ4NykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDYgKzIzMiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9saW51eC9SZWFsVGltZVRocmVh
ZHMuaD4KICNlbmRpZgogCisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJ
TkdfUFJPQ0VTUykKKyNpbmNsdWRlICJXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCIKKyNl
bmRpZgorCiAjdW5kZWYgV0VCUFJPQ0VTU19SRUxFQVNFX0xPRwogI2RlZmluZSBSRUxFQVNFX0xP
R19TRVNTSU9OX0lEIChtX3Nlc3Npb25JRCA/IG1fc2Vzc2lvbklELT50b1VJbnQ2NCgpIDogMCkK
ICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMzQxLDYgKzM0NSwxMCBAQCBXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKCkKICNlbmRpZgogCiAgICAgR2lnYWNhZ2U6OmZvcmJpZERpc2FibGluZ1By
aW1pdGl2ZUdpZ2FjYWdlKCk7CisKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkdfSU5fTkVU
V09SS0lOR19QUk9DRVNTKQorICAgIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkuc3RhcnRPYnNlcnZpbmdTZXR0aW5ncygpOworI2VuZGlmCiB9CiAKIFdlYlByb2Nlc3M6
On5XZWJQcm9jZXNzKCkKQEAgLTIyMjgsNyArMjIzNiw2IEBAIFJlbW90ZU1lZGlhRW5naW5lQ29u
ZmlndXJhdGlvbkZhY3RvcnkmIFcKICAgICByZXR1cm4gKnN1cHBsZW1lbnQ8UmVtb3RlTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeT4oKTsKIH0KICNlbmRpZgotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX1NFU1NJT05fSUQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQorCisjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5n
cy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyJiBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlcj4gbWFuYWdlcjsKKyAgICByZXR1cm4gbWFuYWdlci5nZXQoKTsK
K30KKwordm9pZCBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nU2V0
dGluZ3MoKQoreworICAgIFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyTWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2V0Q2xpZW50KHRoaXMpOworfQorCit2b2lkIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlcjo6bW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0NoYW5nZWQoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MpCit7CisgICAgaWYgKGF1dG8gY29ubmVjdGlvbiA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmV4aXN0aW5nTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6SW5zdGFsbE1vY2tDb250ZW50RmlsdGVyKHNldHRp
bmdzKSwgMCk7Cit9CisKK307CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIgOiBwdWJsaWMgV2ViQ29yZTo6TW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0NsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlciYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lkIHN0YXJ0T2JzZXJ2
aW5nU2V0dGluZ3MoKTsKKyAgICAKKyAgICAvLyBXZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzQ2xpZW50CisgICAgdm9pZCBtb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ2hhbmdlZChX
ZWJDb3JlOjpNb2NrQ29udGVudEZpbHRlclNldHRpbmdzJikgZmluYWw7Cit9OworCit9OwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjkxNDg3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQs
MTEgKzM1NCwxNCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NF
U1MpCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5ibG9ja0hhbmRsZXIs
IFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KQordm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVz
dERlbmllZFNjcmlwdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVSTCYgYmxv
Y2tlZFBhZ2VVUkwsICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYmIHN1YnN0aXR1dGVEYXRhKQog
ewogICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PnNldEJsb2NrZWRQYWdlVVJMKGJsb2NrZWRQYWdlVVJMKTsKKyAgICBtX2NvcmVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPnNldFN1YnN0aXR1dGVEYXRhRnJvbUNvbnRlbnRGaWx0ZXIoV1RGTW92
ZShzdWJzdGl0dXRlRGF0YSkpOwogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+
aGFuZGxlQ29udGVudEZpbHRlckRpZEJsb2NrKHVuYmxvY2tIYW5kbGVyLCBXVEZNb3ZlKHVuYmxv
Y2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSk7CisgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0zNjcsMTMgKzM3MCw2IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXIKICAgICAgICAgcmV0dXJuOwogICAgIG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChlcnJv
cik7CiB9Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmhhbmRsZVByb3Zpc2lvbmFsTG9hZEZh
aWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBjb25zdCBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCi17Ci0gICAgaWYgKCFtX2Nv
cmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSB8fCAhc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb3JlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5oYW5kbGVDb250ZW50RmlsdGVyUHJvdmlzaW9uYWxMb2FkRmFpbHVyZShi
bG9ja2VkUGFnZVVSTCwgc3Vic3RpdHV0ZURhdGEpOwotfQogI2VuZGlmIC8vIEVOQUJMRShDT05U
RU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsOSArMTAyLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKLSAgICB2b2lkIGNvbnRlbnRGaWx0ZXJEaWRC
bG9ja0xvYWQoY29uc3QgV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyJiwgU3Ry
aW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQpOworICAgIHZvaWQgY29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZChjb25zdCBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIm
LCBTdHJpbmcmJiB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhJiYpOwogICAgIHZvaWQgY2FuY2VsTWFpblJlc291cmNlTG9hZEZvckNvbnRlbnRGaWx0
ZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZvaWQgaGFuZGxlUHJvdmlz
aW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VV
UkwsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAjZW5kaWYKICAgICAKICAgICBS
ZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyOTE0ODcpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzksOSArMzksOCBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBM
ZWdhY3lSZWNlCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRX
T1JLSU5HX1BST0NFU1MpCi0gICAgQ29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIsIFN0cmluZyB1bmJsb2Nr
UmVxdWVzdERlbmllZFNjcmlwdCkKKyAgICBDb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNv
cmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlciwgU3RyaW5nIHVu
YmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBV
UkwgYmxvY2tlZFBhZ2VVUkwsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRh
KQogICAgIENhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgZXJyb3IpCi0gICAgSGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21D
b250ZW50RmlsdGVyKFVSTCBibG9ja2VkUGFnZVVSTCwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEg
c3Vic3RpdHV0ZURhdGEpCiAjZW5kaWYKIAogfQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjkxNDg3KQorKysgVG9vbHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDMtMTggIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCB0ZXN0IGZhaWx1
cmVzIHdoZW4gZW5hYmxpbmcgY29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjE3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBUZXN0V2Vi
S2l0QVBJIG5lZWRzIHRvIGxpbmsgd2l0aCBXZWJDb3JlIG5vdyB0aGF0IHRoZSBtb2NrIGNvbnRl
bnQgZmlsdGVyIGlzIGNvbXBpbGVkIGludG8gV2ViQ29yZS4KKyAgICAgICAgQWRqdXN0IHRlc3Qg
ZXhwZWN0YXRpb25zLCBzaW5jZSB0aGUgY29udGVudCBmaWx0ZXJzIGFyZSBub3QgZXhwZWN0ZWQg
dG8gYmUgbG9hZGVkIGluIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3MgYW55bW9yZS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS54
Y2NvbmZpZzoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1dlYlByb2Nl
c3NQbHVnSW4ueGNjb25maWc6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nUGx1Z0luLm1tOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NvbnRlbnRGaWx0ZXJpbmcubW06CisK
IDIwMjItMDMtMTggIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0ZsYXRwYWtdIFBhc3MgZXh0cmEgd2Via2l0LWZsYXRwYWsgYXJncyB0byBzdWItY29t
bWFuZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjkxNDg3KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw5ICs4NiwxNSBAQCBXS19TWVNURU1fTERGTEFHU19JT1NfU0lOQ0Vf
MTUgPSAtZnJhbWV3CiBXS19VSUtJVE1BQ0hFTFBFUl9MREZMQUdTID0gJChXS19VSUtJVE1BQ0hF
TFBFUl9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfVUlLSVRNQUNIRUxQRVJfTERG
TEFHU19tYWNjYXRhbHlzdCA9IC1mcmFtZXdvcmsgVUlLaXRNYWNIZWxwZXI7CiAKK1dLX1dFQkNP
UkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwor
V0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJD
T1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCitXS19XRUJD
T1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQorV0tfV0VCQ09SRV9MREZM
QUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisKIE9USEVSX0NQTFVTUExV
U0ZMQUdTID0gJChpbmhlcml0ZWQpIC1pc3lzdGVtICQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9TeXN0ZW0uZnJhbWV3b3JrL1ByaXZhdGVIZWFkZXJzOwogCi1PVEhFUl9MREZM
QUdTID0gJChpbmhlcml0ZWQpIC1sZ3Rlc3QgLWZvcmNlX2xvYWQgJChCVUlMVF9QUk9EVUNUU19E
SVIpL2xpYlRlc3RXZWJLaXRBUEkuYSAtZnJhbWV3b3JrIEphdmFTY3JpcHRDb3JlIC1mcmFtZXdv
cmsgV2ViS2l0IC1sV2ViQ29yZVRlc3RTdXBwb3J0IC1mcmFtZXdvcmsgTWV0YWwgLWZyYW1ld29y
ayBJT1N1cmZhY2UgJChXS19BUFBTRVJWRVJTVVBQT1JUX0xERkxBR1MpICQoV0tfQVVUSEtJVF9M
REZMQUdTKSAtZnJhbWV3b3JrIE5ldHdvcmsgJChXS19ISURfTERGTEFHUykgJChXS19PUEVOR0xf
TERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TWVNURU1fTERGTEFHUykgJChXS19V
SUtJVE1BQ0hFTFBFUl9MREZMQUdTKSAkKFdLX1ZJU0lPTktJVENPUkVfTERGTEFHUykgJChPVEhF
Ul9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAk
KGluaGVyaXRlZCkgLWxndGVzdCAtZm9yY2VfbG9hZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGli
VGVzdFdlYktpdEFQSS5hIC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWZyYW1ld29yayBXZWJL
aXQgLWxXZWJDb3JlVGVzdFN1cHBvcnQgLWZyYW1ld29yayBNZXRhbCAtZnJhbWV3b3JrIElPU3Vy
ZmFjZSAkKFdLX0FQUFNFUlZFUlNVUFBPUlRfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1Mp
IC1mcmFtZXdvcmsgTmV0d29yayAkKFdLX0hJRF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdT
KSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NZU1RFTV9MREZMQUdTKSAkKFdLX1VJS0lUTUFD
SEVMUEVSX0xERkxBR1MpICQoV0tfVklTSU9OS0lUQ09SRV9MREZMQUdTKSAkKFdLX1dFQkNPUkVf
TERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyQoV0tfQ09DT0FfVE9VQ0gpKTsKIE9U
SEVSX0xERkxBR1NfUExBVEZPUk1fID0gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENhcmJv
bjsKIAogLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBidWlsdCBvbiBpT1MuIEluc3RlYWQg
d2Ugc2hvdWxkIGNyZWF0ZSBhbmQgdXNlIGEgVGVzdFdlYktpdEFQSSBhcHBsaWNhdGlvbi4KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1dlYlByb2Nlc3NQbHVnSW4ueGNjb25maWcJKHJldmlzaW9uIDI5MTQ4NykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvV2ViUHJvY2Vzc1BsdWdJbi54Y2NvbmZpZwkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsMTIgQEAgUFJPRFVDVF9OQU1FID0gVGVzdFdlYktpdEFQ
STsKIFBST0RVQ1RfQlVORExFX0lERU5USUZJRVIgPSBjb20uYXBwbGUuJChQUk9EVUNUX05BTUU6
cmZjMTAzNGlkZW50aWZpZXIpOwogRVhFQ1VUQUJMRV9TVUZGSVggPSAuYnVuZGxlOwogV1JBUFBF
Ul9FWFRFTlNJT04gPSB3a2J1bmRsZTsKLU9USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZy
YW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3Vw
cG9ydDsKK1dLX1dFQkNPUkVfTERGTEFHUyA9ICQoV0tfV0VCQ09SRV9MREZMQUdTXyQoV0tfUExB
VEZPUk1fTkFNRSkpOworV0tfV0VCQ09SRV9MREZMQUdTX2lwaG9uZW9zID0gLWZyYW1ld29yayBX
ZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1NfaXBob25lc2ltdWxhdG9yID0gLWZyYW1ld29yayBX
ZWJDb3JlCitXS19XRUJDT1JFX0xERkxBR1Nfd2F0Y2hvcyA9IC1mcmFtZXdvcmsgV2ViQ29yZQor
V0tfV0VCQ09SRV9MREZMQUdTX3dhdGNoc2ltdWxhdG9yID0gLWZyYW1ld29yayBXZWJDb3JlCisK
K09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAt
ZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX1dFQkNPUkVfTERGTEFH
Uyk7CiBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIU1tzZGs9bWFjb3N4Kl0gPSAiQGxvYWRlcl9wYXRo
Ly4uLy4uLy4uIjsKIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTW3Nkaz1lbWJlZGRlZCpdID0gIkBs
b2FkZXJfcGF0aC8uLiI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTE0ODcp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMCBAQAogCiAjaW1wb3J0ICJEZXBy
ZWNhdGVkR2xvYmFsVmFsdWVzLmgiCiAjaW1wb3J0ICJDb250ZW50RmlsdGVyaW5nLmgiCi0jaW1w
b3J0ICJNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25m
aWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KQEAgLTQzMyw3ICs0MzMsNyBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcs
IExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJvdG9jb2wgcmVnaXN0ZXJXaXRoU2No
ZW1lOkAiaHR0cCJdOwogICAgICAgICBbW2NvbnRyb2xsZXIgd2ViVmlld10gbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly90ZXN0Il1dXTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwot
I2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShNQUMpIHx8IEVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgICAgIFtjb250cm9sbGVyIGV4cGVj
dFBhcmVudGFsQ29udHJvbHNMb2FkZWQ6Tk9dOwogI2Vsc2UKICAgICAgICAgW2NvbnRyb2xsZXIg
ZXhwZWN0UGFyZW50YWxDb250cm9sc0xvYWRlZDpZRVNdOwpAQCAtNDQ1LDcgKzQ0NSwxMSBAQCBU
RVNUKENvbnRlbnRGaWx0ZXJpbmcsIExhemlseUxvYWRQbGF0Zm9yCiAgICAgICAgIFtUZXN0UHJv
dG9jb2wgcmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKICAgICAgICAgW1tjb250cm9sbGVy
IHdlYlZpZXddIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QiXV1dOwogICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05F
VFdPUktJTkdfUFJPQ0VTUykKKyAgICAgICAgW2NvbnRyb2xsZXIgZXhwZWN0UGFyZW50YWxDb250
cm9sc0xvYWRlZDpOT107CisjZWxzZQogICAgICAgICBbY29udHJvbGxlciBleHBlY3RQYXJlbnRh
bENvbnRyb2xzTG9hZGVkOllFU107CisjZW5kaWYKICAgICAgICAgW1Rlc3RQcm90b2NvbCB1bnJl
Z2lzdGVyXTsKICNlbmRpZgogICAgIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmdQbHVnSW4u
bW0JKHJldmlzaW9uIDI5MTQ4NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZ1BsdWdJbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAogI2ltcG9ydCAiQ29udGVu
dEZpbHRlcmluZy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvQ29udGVudEZpbHRlcmluZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCShyZXZpc2lvbiAyOTE0ODcpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9Db250ZW50RmlsdGVyaW5nLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAi
RGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5oIgotI2ltcG9ydCAiTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncy5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RQcm90
b2NvbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0RXJyb3JzUHJp
dmF0ZS5oPgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>