<?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>76138</bug_id>
          
          <creation_ts>2012-01-11 18:40:34 -0800</creation_ts>
          <short_desc>Provide access to user&apos;s list of preferred languages</short_desc>
          <delta_ts>2012-01-19 08:34: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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>74121</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>rakuco</cc>
    
    <cc>rgabor</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>534488</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-11 18:40:34 -0800</bug_when>
    <thetext>On some platforms, OS X at least, the user&apos;s language preference is an ordered list of languages. As noted in https://bugs.webkit.org/show_bug.cgi?id=74121, the &lt;track&gt; needs to consider the user&apos;s language preferences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534490</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-01-11 18:41:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/10681343&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536141</commentid>
    <comment_count>2</comment_count>
      <attachid>122535</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-13 22:13:10 -0800</bug_when>
    <thetext>Created attachment 122535
Proposed patch

A patch for the EWS bots to chew on because I have *no* idea if the custom V8 code is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536142</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 22:15:33 -0800</bug_when>
    <thetext>Attachment 122535 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/platform/win/LanguageWin.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/gtk/LanguageGtk.cpp:26:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/ChangeLog:42:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:46:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/testing/js/JSInternalsCustom.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 5 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536143</commentid>
    <comment_count>4</comment_count>
      <attachid>122535</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-13 22:18:13 -0800</bug_when>
    <thetext>Comment on attachment 122535
Proposed patch

Attachment 122535 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11149843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536144</commentid>
    <comment_count>5</comment_count>
      <attachid>122535</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-13 22:24:51 -0800</bug_when>
    <thetext>Comment on attachment 122535
Proposed patch

Attachment 122535 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11209818</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536147</commentid>
    <comment_count>6</comment_count>
      <attachid>122535</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 22:42:59 -0800</bug_when>
    <thetext>Comment on attachment 122535
Proposed patch

Attachment 122535 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11228824</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536149</commentid>
    <comment_count>7</comment_count>
      <attachid>122535</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-13 23:27:58 -0800</bug_when>
    <thetext>Comment on attachment 122535
Proposed patch

Can we remove platformDefaultLanguage() now, making defaultLanguage() take the first one from the vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536235</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-14 18:48:09 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 122535 [details])
&gt; Can we remove platformDefaultLanguage() now, making defaultLanguage() take the first one from the vector?

Great idea, I should have thought of that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536878</commentid>
    <comment_count>9</comment_count>
      <attachid>122711</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-16 21:40:01 -0800</bug_when>
    <thetext>Created attachment 122711
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536880</commentid>
    <comment_count>10</comment_count>
      <attachid>122711</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-16 21:44:58 -0800</bug_when>
    <thetext>Comment on attachment 122711
Updated patch

Attachment 122711 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11117079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536882</commentid>
    <comment_count>11</comment_count>
      <attachid>122711</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-16 21:54:56 -0800</bug_when>
    <thetext>Comment on attachment 122711
Updated patch

Attachment 122711 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11117082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536883</commentid>
    <comment_count>12</comment_count>
      <attachid>122712</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-16 21:55:01 -0800</bug_when>
    <thetext>Created attachment 122712
Updated the poorly chosen function name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536888</commentid>
    <comment_count>13</comment_count>
      <attachid>122712</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-16 22:13:12 -0800</bug_when>
    <thetext>Comment on attachment 122712
Updated the poorly chosen function name.

Attachment 122712 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11111071</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536899</commentid>
    <comment_count>14</comment_count>
      <attachid>122712</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-16 22:58:41 -0800</bug_when>
    <thetext>Comment on attachment 122712
Updated the poorly chosen function name.

Attachment 122712 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11111085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536905</commentid>
    <comment_count>15</comment_count>
      <attachid>122712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-16 23:38:43 -0800</bug_when>
    <thetext>Comment on attachment 122712
Updated the poorly chosen function name.

Attachment 122712 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11269099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537105</commentid>
    <comment_count>16</comment_count>
      <attachid>122770</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 07:55:03 -0800</bug_when>
    <thetext>Created attachment 122770
A few code fixes, a few stab-in-the-dark build file changes. Maybe this one will fly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537111</commentid>
    <comment_count>17</comment_count>
      <attachid>122770</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 08:16:35 -0800</bug_when>
    <thetext>Comment on attachment 122770
A few code fixes, a few stab-in-the-dark build file changes. Maybe this one will fly.

Attachment 122770 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11267210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537112</commentid>
    <comment_count>18</comment_count>
      <attachid>122770</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-17 08:18:51 -0800</bug_when>
    <thetext>Comment on attachment 122770
A few code fixes, a few stab-in-the-dark build file changes. Maybe this one will fly.

Attachment 122770 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11220018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537128</commentid>
    <comment_count>19</comment_count>
      <attachid>122775</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 08:37:48 -0800</bug_when>
    <thetext>Created attachment 122775
+symbols.filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537135</commentid>
    <comment_count>20</comment_count>
      <attachid>122775</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-17 08:57:44 -0800</bug_when>
    <thetext>Comment on attachment 122775
+symbols.filter

Attachment 122775 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11268227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537138</commentid>
    <comment_count>21</comment_count>
      <attachid>122775</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 09:06:50 -0800</bug_when>
    <thetext>Comment on attachment 122775
+symbols.filter

Attachment 122775 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11262224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537154</commentid>
    <comment_count>22</comment_count>
      <attachid>122777</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 09:24:37 -0800</bug_when>
    <thetext>Created attachment 122777
Add new files to Target.pri (thanks Ossy!), fix typo in custom V8 code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537191</commentid>
    <comment_count>23</comment_count>
      <attachid>122783</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 10:39:03 -0800</bug_when>
    <thetext>Created attachment 122783
+ WebCoreTestSupport.vcproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537193</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-17 10:46:20 -0800</bug_when>
    <thetext>Can we get rid of overrideDefaultLanguage() now, as well? It&apos;s confusing to have two overrides for basically the same thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537243</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-17 11:45:08 -0800</bug_when>
    <thetext>From WinEWS:

11&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;public: void __thiscall WebCore::JSInternals::setUserPreferredLanguages(class JSC::ExecState *,class JSC::JSValue)&quot; (?setUserPreferredLanguages@JSInternals@WebCore@@QAEXPAVExecState@JSC@@VJSValue@4@@Z)
11&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;public: class JSC::JSValue __thiscall WebCore::JSInternals::userPreferredLanguages(class JSC::ExecState *)const &quot; (?userPreferredLanguages@JSInternals@WebCore@@QBE?AVJSValue@JSC@@PAVExecState@4@@Z)

Those mangled symbols need to be added to WebKit2.def. There&apos;s a section at the bottom of that file that contains all the Internals symbols we export.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537252</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-17 11:48:52 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; From WinEWS:
&gt; 
&gt; 11&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;public: void __thiscall WebCore::JSInternals::setUserPreferredLanguages(class JSC::ExecState *,class JSC::JSValue)&quot; (?setUserPreferredLanguages@JSInternals@WebCore@@QAEXPAVExecState@JSC@@VJSValue@4@@Z)
&gt; 11&gt;WebKit.exp : error LNK2001: unresolved external symbol &quot;public: class JSC::JSValue __thiscall WebCore::JSInternals::userPreferredLanguages(class JSC::ExecState *)const &quot; (?userPreferredLanguages@JSInternals@WebCore@@QBE?AVJSValue@JSC@@PAVExecState@4@@Z)
&gt; 
&gt; Those mangled symbols need to be added to WebKit2.def. There&apos;s a section at the bottom of that file that contains all the Internals symbols we export.

Oh, wait, I misread the error. These symbols are failing to be found when linking WebKit.dll. This means that the code that provides those symbols isn&apos;t being compiled for some reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537253</commentid>
    <comment_count>27</comment_count>
      <attachid>122783</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 11:49:00 -0800</bug_when>
    <thetext>Comment on attachment 122783
+ WebCoreTestSupport.vcproj

Attachment 122783 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11117273

New failing tests:
inspector/protocol/runtime-agent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537256</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-17 11:52:18 -0800</bug_when>
    <thetext>It looks like those symbols correspond to functions that are in WebCoreTestSupport.lib. Those symbols shouldn&apos;t be listed in WebKit2[CFLite].def at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537261</commentid>
    <comment_count>29</comment_count>
      <attachid>122795</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 12:00:04 -0800</bug_when>
    <thetext>Created attachment 122795
One more time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537615</commentid>
    <comment_count>30</comment_count>
      <attachid>122869</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-17 21:21:42 -0800</bug_when>
    <thetext>Created attachment 122869
One last version, got rid of overrideDefaultLanguage() as per request</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537624</commentid>
    <comment_count>31</comment_count>
      <attachid>122869</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-17 21:58:56 -0800</bug_when>
    <thetext>Comment on attachment 122869
One last version, got rid of overrideDefaultLanguage() as per request

This still has separate override variables (preferredLanguagesOverride() and languageOverride()). Is that unavoidable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537935</commentid>
    <comment_count>32</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 09:41:59 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 122869 [details])
&gt; This still has separate override variables (preferredLanguagesOverride() and languageOverride()). Is that unavoidable?

No, it is just me attaching an old version of the patch :-(

New version coming up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537943</commentid>
    <comment_count>33</comment_count>
      <attachid>122951</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 09:48:06 -0800</bug_when>
    <thetext>Created attachment 122951
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538003</commentid>
    <comment_count>34</comment_count>
      <attachid>122951</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-18 11:02:51 -0800</bug_when>
    <thetext>Comment on attachment 122951
Updated patch.

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

Looks great, thank you!

&gt; Source/WebCore/platform/Language.h:30
&gt;  #include &lt;wtf/Forward.h&gt;
&gt; +#include &lt;wtf/Vector.h&gt;

I&apos;m surprised that this was needed - Forward.h declares Vector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538004</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-18 11:03:32 -0800</bug_when>
    <thetext>It&apos;s unfortunate that EWS couldn&apos;t apply this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538024</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 11:22:07 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; It&apos;s unfortunate that EWS couldn&apos;t apply this patch.

I agree. Earlier versions of this patch bounced enough times that I am going to rebase and upload again so I can make sure it works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538051</commentid>
    <comment_count>37</comment_count>
      <attachid>122973</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 12:03:17 -0800</bug_when>
    <thetext>Created attachment 122973
Rebased patch for the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538124</commentid>
    <comment_count>38</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 13:53:34 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/105315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538256</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-18 15:31:33 -0800</bug_when>
    <thetext>Plus http://trac.webkit.org/changeset/105333 to fix a bug in the original patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538625</commentid>
    <comment_count>40</comment_count>
    <who name="Gabor Rapcsanyi">rgabor</who>
    <bug_when>2012-01-19 04:42:02 -0800</bug_when>
    <thetext>It breaks these bots:
 http://build.webkit.org/waterfall?show=GTK%20Linux%2032-bit%20Release
 http://build.webkit.sed.hu/waterfall?show=ARMv7%20Linux%20Gtk%20Release%20(Build)


Can somebody fix this error?

CXXLD  Programs/DumpRenderTree
./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::setUserPreferredLanguages(WTF::Vector&lt;WTF::String, 0u&gt; const&amp;)&apos;:
Internals.cpp:(.text+0x78): undefined reference to `WebCore::overrideUserPreferredLanguages(WTF::Vector&lt;WTF::String, 0u&gt; const&amp;)&apos;
collect2: ld returned 1 exit status
make[1]: *** [Programs/DumpRenderTree] Error 1
make[1]: Leaving directory `/ramdisk/arm-gtk-linux-release/build/WebKitBuild/Release&apos;
make: *** [all] Error 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538732</commentid>
    <comment_count>41</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-01-19 08:34:52 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; It breaks these bots:
&gt;  http://build.webkit.org/waterfall?show=GTK%20Linux%2032-bit%20Release
&gt;  http://build.webkit.sed.hu/waterfall?show=ARMv7%20Linux%20Gtk%20Release%20(Build)
&gt; 
&gt; 
&gt; Can somebody fix this error?
&gt; 
&gt; CXXLD  Programs/DumpRenderTree
&gt; ./.libs/libWebCoreInternals.a(libWebCoreInternals_la-Internals.o): In function `WebCore::Internals::setUserPreferredLanguages(WTF::Vector&lt;WTF::String, 0u&gt; const&amp;)&apos;:
&gt; Internals.cpp:(.text+0x78): undefined reference to `WebCore::overrideUserPreferredLanguages(WTF::Vector&lt;WTF::String, 0u&gt; const&amp;)&apos;
&gt; collect2: ld returned 1 exit status
&gt; make[1]: *** [Programs/DumpRenderTree] Error 1
&gt; make[1]: Leaving directory `/ramdisk/arm-gtk-linux-release/build/WebKitBuild/Release&apos;
&gt; make: *** [all] Error 2

I don&apos;t understand this, what would make the new WebCore symbol available in a Debug build but not in a Release build?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122535</attachid>
            <date>2012-01-13 22:13:10 -0800</date>
            <delta_ts>2012-01-16 21:40:01 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>language_patch_7.txt</filename>
            <type>text/plain</type>
            <size>33464</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAxLTEzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJl
ZmVycmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
dGhlIG5ldyBmdW5jdGlvbnMgZm9yIFdlYktpdDIuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
IEluY2x1ZGUgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6IAorICAg
ICAgICAoV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUpOiBOZXcsIHJldHVybiB0
aGUgbGFuZ3VhZ2VzIG92ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBzZXQgdGhlIGxhbmd1YWdlcyBvdmVycmlkZS4KKyAgICAg
ICAgKFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiB0aGUgbGFu
Z3VhZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmg6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IERpdHRvLgorICAgICAgICAqIHBs
YXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTGFu
Z3VhZ2VHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06Cisg
ICAgICAgICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZl
cmVuY2VzRGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVzZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICBh
cyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJGb3JMYW5ndWFnZUNoYW5nZU5v
dGlmaWNhdGlvbnMpOiBOZXcsIG1vdmVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UuCisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSk6IE1vdmVkIG5vdGlmaWNh
dGlvbiByZWdpc3RyYXRpb24gdG8gcmVnaXN0ZXJGb3JMYW5ndWFnZUNoYW5nZU5vdGlmaWNhdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBO
ZXcsIHJldHVybiB0aGUgbGlzdCBvZiB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZXMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
TGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKTogRGl0dG8uCisKKyAgICAgICAgKiB0ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3Vz
dG9tLmNwcAorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVybmFsczo6c2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHRlc3RpbmcvdjgvVjhJbnRlcm5hbHND
dXN0b20uY3BwCisgICAgICAgIChXZWJDb3JlOjpWOEludGVybmFsczo6dXNlclByZWZlcnJlZExh
bmd1YWdlc0FjY2Vzc29yR2V0dGVyKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlcm5h
bHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcik6IE5ldy4KKworICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgcmV0dXJuIHRoZSBwbGF0Zm9ybSdzIHVzZXIg
cHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgb3ZlcnJpZGUgdGhlIHVzZXIncyBwcmVmZXJyZWQg
bGFuZ3VhZ2VzLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOiBBZGQgdXNlclByZWZlcnJlZExhbmd1YWdlcy8KKwogMjAxMi0w
MS0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVu
dCBmbGV4LWFsaWduCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA0ODg4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzNyw2
ICs2MzcsNyBAQCBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBfX1pO
N1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKIF9f
Wk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19aTjdX
ZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFs
RWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2Vi
Q29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZlY3Rv
cklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVz
RVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRy
YWl0c0lTMl9FRUVFCkBAIC02OTcsNiArNjk4LDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJhY3Rl
clNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2CiBf
X1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dlYkNv
cmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0
cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2
c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzNTEsOCArNjM1MSwxMCBAQAogICAg
ICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAnd2Vi
Y29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9WOElu
dGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQu
aCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGlu
Zy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDYgKzEwMSw3IEBACiAJCTA3MDc1NkRGMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFj
a0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi87
IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkRBMTQy
MzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLzsgfTsKIAkJMDcwOUZDNEUx
MDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAv
KiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CisJCTA3MjMwQ0JDMTRDMTBFRDkwMEY2Qjcw
MiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwICovOyB9OwogCQkwNzJDOEIxMTEzMUM1MTg2MDBBNEZDRTkgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwICovOyB9OwogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQg
LyogTWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzUz
ODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwpAQCAtNjczNCw2ICs2NzM1LDcgQEAKIAkJ
MDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0N1ZUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2li
aWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJp
bGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBGMDE4
NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
bWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjMwQ0JC
MTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVybmFsc0N1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXll
clByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTQyMzksNiArMTQyNDEsNyBAQAogCQk0MTgxNUMxQjEzODMxOTYz
MDA1N0FBQTQgLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTA3MjMwQ0JCMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAg
Ki8sCiAJCQkJNDE4MTVDMUMxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5j
cHAgKi8sCiAJCQkJNDE4MTVDMUQxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9y
dC5oICovLAogCQkJKTsKQEAgLTI0MzE2LDYgKzI0MzE5LDcgQEAKIAkJCQk0MTdEQTZEOTEzNzM0
RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0RBNzFE
MTM3MzVERkEwMDdDNTdGQiAvKiBKU0ludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTgxNUMxRTEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTA3MjMwQ0JDMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5j
cHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNCArNzYsMjQgQEAgdm9pZCBvdmVycmlkZURlZmF1
bHRMYW5ndWFnZShjb25zdCBTdHJpbgogICAgIGxhbmd1YWdlT3ZlcnJpZGUoKSA9IG92ZXJyaWRl
OwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRl
KCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCBvdmVycmlkZSwg
KCkpOworICAgIHJldHVybiBvdmVycmlkZTsKK30KKwordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlKQoreworICAgIHByZWZl
cnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKK30KKyAgICAKK1ZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+JiBvdmVy
cmlkZSA9IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYgKCFvdmVycmlkZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKyAgICAKKyAgICByZXR1cm4gcGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDIzIEBACiAjZGVm
aW5lIExhbmd1YWdlX2gKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBkZWZhdWx0TGFuZ3Vh
Z2UoKTsKIHZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAKK1Zl
Y3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK3ZvaWQgb3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKIC8vIFRoZSBvYnNl
cnZlciBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3RlbSBsYW5ndWFnZSBjaGFuZ2Vz
ICh1bmxlc3MgaXQncyBvdmVycmlkZGVuIGJ5IG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKCkpLgog
dHlwZWRlZiB2b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKSh2b2lkKiBjb250
ZXh0KTsKIHZvaWQgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0LCBMYW5n
dWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pOwogdm9pZCByZW1vdmVMYW5ndWFnZUNoYW5nZU9i
c2VydmVyKHZvaWQqIGNvbnRleHQpOwogCiBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KTsKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogdm9p
ZCBsYW5ndWFnZURpZENoYW5nZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5oPgogI2luY2x1ZGUgPExvY2FsaXplUmVzb3VyY2Uu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NzEsNiArNzIsMTMgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1
cm4gbGFuZzsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkp
OworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9t
aXVtLmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBw
b3J0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAg
cmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0
Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxh
dGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDxs
b2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTAsNCArNTEsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAg
ICByZXR1cm4gU3RyaW5nKGxvY2FsZURlZmF1bHQpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0
Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxh
dGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXM7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdl
R3RrLmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0xhbmd1YWdlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRlIDxn
bGliLmg+CiAjaW5jbHVkZSA8bG9jYWxlLmg+CkBAIC01Myw0ICs1NCwxMSBAQCBTdHJpbmcgcGxh
dGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobm9ybWFsaXplZERlZmF1
bHQuZ2V0KCkpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cisg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisgICAgCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAxMDQ4ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDExICszMCwxMyBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5o
IgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBOU1N0cmluZyAqcHJlZmVy
cmVkTGFuZ3VhZ2VDb2RlOworc3RhdGljIEJPT0wgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2Vz
OwogCiBAaW50ZXJmYWNlIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiB9
CkBAIC00OCw2ICs1MCw3IEBAICsgKHZvaWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlk
Q2gKIAogICAgIFtwcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmVsZWFzZV07CiAgICAgcHJlZmVycmVk
TGFuZ3VhZ2VDb2RlID0gbmlsOworICAgIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcyA9IE5P
OwogCiAgICAgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KQEAgLTg1LDYgKzg4LDIwIEBAIHN0YXRp
YyBOU1N0cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2UKICAgICByZXR1cm4gaHR0cFN0eWxl
TGFuZ3VhZ2VDb2RlOwogfQogCitzdGF0aWMgdm9pZCByZWdpc3RlckZvckxhbmd1YWdlQ2hhbmdl
Tm90aWZpY2F0aW9ucygpCit7CisjaWYgIVBMQVRGT1JNKElPUykKKyAgICBzdGF0aWMgYm9vbCBs
YW5ndWFnZUNoYW5nZU9ic2VydmVyQWRkZWQ7CisgICAgaWYgKCFsYW5ndWFnZUNoYW5nZU9ic2Vy
dmVyQWRkZWQpIHsKKyAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOltXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIHNlbGZd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxlY3RvcjpAc2VsZWN0b3IoX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hh
bmdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6QCJBcHBsZUxhbmd1YWdlUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZp
Y2F0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvYmplY3Q6bmlsXTsKKyAgICAgICAgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
ckFkZGVkID0gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKK30KKwogU3Ry
aW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwpAQCAtMTAyLDE2ICsxMTksNyBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KQogCiAgICAgTlNTdHJpbmcgKmNvZGUgPSBbW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZXRhaW5d
IGF1dG9yZWxlYXNlXTsKIAotI2lmICFQTEFURk9STShJT1MpCi0gICAgc3RhdGljIGJvb2wgbGFu
Z3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkOwotICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
ckFkZGVkKSB7Ci0gICAgICAgIFtbTlNEaXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpbV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciBzZWxmXQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5n
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lOkAiQXBwbGVMYW5ndWFnZVByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNh
dGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2JqZWN0Om5pbF07Ci0gICAgICAgIGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJB
ZGRlZCA9IHRydWU7Ci0gICAgfQotI2VuZGlmIC8vICFQTEFURk9STShJT1MpCisgICAgcmVnaXN0
ZXJGb3JMYW5ndWFnZUNoYW5nZU5vdGlmaWNhdGlvbnMoKTsKIAogICAgIHJldHVybiBjb2RlOwog
CkBAIC0xMTksNCArMTI3LDM3IEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmlu
Zz4sIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMsICgpKTsKKworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAoIXVz
ZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICB1c2VDYWNoZWRQcmVmZXJyZWRM
YW5ndWFnZXMgPSBZRVM7CisgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuY2xlYXIoKTsK
KworICAgICAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzKEFkb3B0Q0YsIENGTG9j
YWxlQ29weVByZWZlcnJlZExhbmd1YWdlcygpKTsKKyAgICAgICAgQ0ZJbmRleCBsYW5ndWFnZUNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CisgICAgICAgIGlmICghbGFu
Z3VhZ2VDb3VudCkKKyAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKCJl
biIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8
IGxhbmd1YWdlQ291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbGFuZ3VhZ2UoQWRvcHRDRiwgcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisgICAgICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VD
b2RlKChOU1N0cmluZyAqKWxhbmd1YWdlLmdldCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZWdpc3RlckZvckxhbmd1YWdlQ2hhbmdlTm90aWZpY2F0aW9ucygp
OworCisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisKKyAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Cit9CisKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwCShyZXZpc2lv
biAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw0ICszOSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1EZWZh
dWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBsb2NhbGUubmFtZSgpLnJlcGxhY2UoUUxhdGluMUNo
YXIoJ18nKSwgUUxhdGluMUNoYXIoJy0nKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bURlZmF1bHRMYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFu
Z3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDQgKzY3LDEyIEBA
IFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVm
YXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1EZWZhdWx0TGFuZ3Vh
Z2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKKyAgICAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDEwNDg4OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1
ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAgLTY3MCw0ICs2NzEsMTUgQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZAogICAgIGRvY3VtZW50LT5zZXR0
aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK1ZlY3RvcjxT
dHJpbmc+IEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK30KKwordm9pZCBJbnRl
cm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
bmd1YWdlcykKK3sKKyAgICBXZWJDb3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
bGFuZ3VhZ2VzKTsKK30KKworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFBlclRpbGVEcmF3aW5nRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYpOwogCisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpIGNv
bnN0OworICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVybmFsc0lkOwogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTA0ODg4
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw2ICs4Niw4IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBm
bG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRp
b24pOworCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBBcnJheSB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzOwogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJ
bnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
dGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5h
bHMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0ludGVybmFsczo6dXNlclByZWZl
cnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSW50ZXJuYWxzKiBp
bXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBsKCkpOworICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+IGxhbmd1YWdlcyA9IGltcC0+dXNlclByZWZlcnJlZExhbmd1YWdlcygpOworICAgIGlm
IChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CisgICAgCisg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJyYXk7CisgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxhbmd1YWdlcy5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxhbmd1YWdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIGFycmF5LmFwcGVuZChqc1N0cmluZyhleGVjLCBzdHJpbmdUb1VTdHJpbmcoKml0
KSkpOworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBnbG9iYWxPYmplY3QoKSwgYXJy
YXkpOworfQorCit2b2lkIEpTSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoIWlzSlNBcnJheSh2YWx1
ZSkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVjLCAi
c2V0VXNlclByZWZlcnJlZExhbmd1YWdlczogRXhwZWN0ZWQgQXJyYXkiKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOworICAgIEpT
QXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFN0cmluZyBsYW5ndWFnZSA9IHVz
dHJpbmdUb1N0cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJpbmcoZXhlYykpOworICAgICAg
ICBsYW5ndWFnZXMuYXBwZW5kKGxhbmd1YWdlKTsKKyAgICB9CisgICAgCisgICAgSW50ZXJuYWxz
KiBpbXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBsKCkpOworICAgIGltcC0+c2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9WOEludGVybmFsc0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9WOEludGVybmFs
c0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1Y4
SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOEludGVybmFscy5oIgorCisjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVybmFsczo6dXNlclByZWZlcnJl
ZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEludGVybmFscyogaW50ZXJuYWxzID0g
VjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+IGxhbmd1YWdlcyA9IGludGVybmFscy0+dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwor
ICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsK
KworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkFycmF5OjpOZXcobGFuZ3Vh
Z2VzLnNpemUoKSk7CisgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxh
bmd1YWdlcy5lbmQoKTsKKyAgICBpbnQgaW5kZXggPSAwOworICAgIGZvciAoVmVjdG9yPFN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGFuZ3VhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKKyAgICAgICAgYXJyYXktPlNldCh2ODo6SW50ZWdlcjo6TmV3KGluZGV4KyspLCB0b1Y4KGl0
ZXItPmdldCgpKSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCit2b2lkIFY4SW50ZXJuYWxzOjp1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIGlmICghdmFsdWUtPklzQXJyYXkoKSkgeworICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcigic2V0VXNlclByZWZlcnJlZExhbmd1YWdlczogRXhwZWN0ZWQgQXJyYXkiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFn
ZXM7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJy
YXk+OjpDYXN0KHZhbHVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5LT5MZW5n
dGgoKTsgKytpKQorICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHRvV2ViQ29yZVN0cmluZ1dpdGgo
YXJyYXktPkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyogaW50ZXJuYWxzID0gVjhJbnRl
cm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludGVybmFscy0+c2V0VXNlclBy
ZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDE1KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEtMTMgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBh
Y2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTogT3Zl
cnJpZGUgdGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1YWdlcy4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogU2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJp
ZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IERlZmluZSBVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzQ2hhbmdlZC4KKwogMjAxMi0wMS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIERlbGF5IHVwZGF0aW5nIHRoZSByb290IGNvbXBvc2l0aW5nIGxh
eWVyIGlmIHRoZSBsYXllciB0cmVlIHN0YXRlIGlzIGZyb3plbgpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiAr
MjMyLDcgQEAgdm9pZCBXZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5nZWQodm9pZCogYwogdm9pZCBX
ZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5nZWQoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6TGFuZ3VhZ2VDaGFuZ2VkKGRlZmF1bHRMYW5ndWFnZSgpKSk7
CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKIH0KIAogdm9p
ZCBXZWJDb250ZXh0OjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMsMTEgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgUwogICAgIG92ZXJyaWRlRGVmYXVsdExh
bmd1YWdlKGxhbmd1YWdlKTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKSBjb25zdAorewor
ICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorCiB2b2lk
IFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZCkKIHsKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAg
IHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKICAgICB2b2lkIGxhbmd1YWdl
Q2hhbmdlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxs
S2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQp
OwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHNldFNob3VsZFBhaW50TmF0aXZlQ29udHJv
bHMoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgU2V0QWx3YXlzVXNlc0NvbXBsZXhU
ZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKICAgICBTZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKGJvb2wgdXNlRm9udFNtb290aGluZykKICAgICBMYW5ndWFnZUNoYW5nZWQo
V1RGOjpTdHJpbmcgbGFuZ3VhZ2UpCisgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQo
VmVjdG9yPFdURjo6U3RyaW5nPiBsYW5ndWFnZXMpCiAgICAgRnVsbEtleWJvYXJkQWNjZXNzTW9k
ZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogI2lmIFBMQVRGT1JNKFdJ
TikKICAgICBTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wgc2hvdWxkUGFpbnROYXRp
dmVDb250cm9scykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0
IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEpTSW50ZXJuYWxzQ3VzdG9tLmNw
cC4KKwogMjAxMi0wMS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlbW92ZSAtLWRyeS1ydW4gc3VwcG9ydCBmcm9tIHdlYmtpdC1wYXRjaApJbmRleDogVG9v
bHMvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDEwNDg4OCkKKysrIFRvb2xzL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBAIGxpYldlYkNvcmVJbnRlcm5hbHNfbGFfU09VUkNFUyA9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwNTAxNSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTEzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9m
IHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFu
Z3VhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgZmxleC1hbGlnbgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3Vh
Z2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNz
L3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcm5hbHMudXNlclByZWZlcnJl
ZExhbmd1YWdlcyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0aGUgdXNlcidzIHByZWZlcnJl
ZCBsYW5ndWFnZXMuCisKK2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMg
YSBub24tZW1wdHkgYXJyYXk6IFBBU1MKK2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
IGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHBhc3NlZCB0byBpdDogUEFT
UwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVy
cmVkLWxhbmd1YWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5l
c3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QobWVzc2FnZSwgc3VjY2VzcykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAg
ICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICc6
ICcgKyAoc3VjY2VzcyA/ICdQQVNTJyA6ICdGQUlMJykpOworICAgICAgICAgICAgICAgIGxpLmFw
cGVuZENoaWxkKHRleHQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBsYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlczsKKwor
ICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJl
dHVybnMgYSBub24tZW1wdHkgYXJyYXknLCBsYW5ndWFnZXMubGVuZ3RoKTsKKworICAgICAgICAg
ICAgICAgIGxhbmd1YWdlcy51bnNoaWZ0KCJmaXJzdC1sYW5ndWFnZSIpOworICAgICAgICAgICAg
ICAgIGxhbmd1YWdlcy5wdXNoKCJsYXN0LWxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBsYW5ndWFnZXM7CisKKyAgICAgICAgICAg
ICAgICB2YXIgbmV3TGFuZ3VhZ2VzID0gaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
CisgICAgICAgICAgICAgICAgdmFyIHNhbWVDb250ZW50cyA9IG5ld0xhbmd1YWdlcy5sZW5ndGgg
PT0gbGFuZ3VhZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAoc2FtZUNvbnRlbnRzKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3TGFuZ3VhZ2VzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3TGFuZ3VhZ2VzW2ld
ICE9IGxhbmd1YWdlc1tpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWVDb250
ZW50cyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzIGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHBhc3NlZCB0byBpdCcs
IHNhbWVDb250ZW50cyk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8
cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdl
cyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFn
ZXMuPC9wPgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="commit-queue"
          id="123352"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122711</attachid>
            <date>2012-01-16 21:40:01 -0800</date>
            <delta_ts>2012-01-16 21:55:01 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>language_patch_8.txt</filename>
            <type>text/plain</type>
            <size>35762</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDEyLTAxLTEzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJl
ZmVycmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
dGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IEluY2x1ZGUgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9MYW5ndWFnZS5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUpOiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzIG92ZXJyaWRlLgorICAgICAgICAoV2Vi
Q29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBzZXQgdGhlIGxhbmd1
YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKTog
TWFrZSBzdGF0aWMsIGl0IGlzIG5vdyBvbmx5IHVzZWQgbG9jYWxseS4KKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UpOiBNYWtlIHN0YXRpYywgaXQgaXMgbm93IG9ubHkgdXNl
ZCBsb2NhbGx5LgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKTogTWFrZSBzdGF0aWMsIGl0
IGlzIG5vdyBvbmx5IHVzZWQgbG9jYWxseS4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9MYW5n
dWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSk6
IE1ha2Ugc3RhdGljLCBpdCBpcyBub3cgb25seSB1c2VkIGxvY2FsbHkuCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAgICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVz
ZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICBhcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UpOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIGxpc3Qgb2YgdXNl
ciBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvTGFuZ3VhZ2VR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSk6IE1ha2Ug
c3RhdGljLCBpdCBpcyBub3cgb25seSB1c2VkIGxvY2FsbHkuCisgICAgICAgIChXZWJDb3JlOjpw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UpOiBNYWtlIHN0YXRpYywgaXQgaXMgbm93IG9ubHkgdXNlZCBsb2NhbGx5LgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisg
ICAgICAgICogdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0ludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAg
KFdlYkNvcmU6OkpTSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3Lgor
CisgICAgICAgICogdGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVy
KTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNBY2Nlc3NvclNldHRlcik6IE5ldy4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdl
cyk6IE5ldywgcmV0dXJuIHRoZSBwbGF0Zm9ybSdzIHVzZXIgcHJlZmVycmVkIGxhbmd1YWdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyk6
IE5ldywgb3ZlcnJpZGUgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBB
ZGQgdXNlclByZWZlcnJlZExhbmd1YWdlcy8KKwogMjAxMi0wMS0xMyAgT2phbiBWYWZhaSAgPG9q
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBmbGV4LWFsaWduCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYzNyw2ICs2MzcsNyBAQCBfX1pON1dlYkNv
cmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBfX1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdt
ZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDMUVSS05T
XzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNw
b25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTIzY3JlYXRlRnJhZ21lbnRG
cm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRUVFCiBf
X1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJOM1dURjdIYXNoU2V0SU5TMF82
U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRyYWl0c0lTMl9FRUVFCkBAIC02OTcs
NiArNjk4LDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZQogX19a
TjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckViCiBfX1pON1dlYkNvcmUz
MGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2CiBfX1pON1dlYkNvcmUzMGNvbnRleHRN
ZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZl
cnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2Vi
Q29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pON1dlYkNv
cmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKIF9fWk43V2ViQ29y
ZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtp
bmcgY29weSkKQEAgLTYzNTEsOCArNjM1MSwxMCBAQAogICAgICAgICAgICd0ZXN0aW5nL0ludGVy
bmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAnd2ViY29yZV90ZXN0X3N1cHBvcnRfZmls
ZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCisgICAgICAgICAgICAndGVz
dGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvanMv
V2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtODg3OCw2ICs4ODc4LDcgQEAgX19aTjdX
ZWJDb3JlMTlGbG9hdEFuaW1hdGlvblZhbHVlRDBFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xh
eWVyQ0EyMHVwZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxh
eWVyMTBzZXRPcGFjaXR5RWYKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQ
TlNfNUZyYW1lRWoKK19fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pO
N1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmVMMTF3cml0
ZUxheWVyc0VSTlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFSZW5kZXJMYXllckVQUzJfUktOU183SW50
UmVjdEVpagogX19aTjdXZWJDb3JlTDV3cml0ZUVSTlNfMTBUZXh0U3RyZWFtRVJOU18xMVJlbmRl
ckxheWVyRVJLTlNfN0ludFJlY3RFUzZfUzZfUzZfTlNfMTVMYXllclBhaW50UGhhc2VFaWoKQEAg
LTE2Mjg1LDYgKzE2Mjg2LDcgQEAgX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIy
OGNyZQogX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9f
Wk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5MzFjb250ZXh0TWVudUl0ZW1U
YWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFnU3RvcFNw
ZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJL
TjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMjdEZWZhdWx0TG9j
YWxpemF0aW9uU3RyYXRlZ3kzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CiBfX1pO
N1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43
V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Mzhjb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsNyBAQAogCQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0
VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3Bw
ICovOyB9OwogCQkwNzA3NTZFMDE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZE
QTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3MDlG
QzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNE
QkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEwRUQ5MDBG
NkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJu
YWxzQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEy
NjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclBy
b3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBC
Nzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKQEAgLTY3MzQsNiArNjczNSw3IEBA
CiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nl
c3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUw
RjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzIz
MENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQ
bGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXll
clByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjM5LDYgKzE0MjQxLDcgQEAKIAkJNDE4MTVDMUIxMzgz
MTk2MzAwNTdBQUE0IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20u
Y3BwICovLAogCQkJCTQxODE1QzFDMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBv
cnQuY3BwICovLAogCQkJCTQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQuaCAqLywKIAkJCSk7CkBAIC0yNDMxNiw2ICsyNDMxOSw3IEBACiAJCQkJNDE3REE2RDkx
MzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdE
QTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDE4MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3Vh
Z2UuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5n
dWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDExIEBAIFN0cmluZyBkZWZhdWx0
TGFuZ3VhZ2UoKQogICAgIGlmICghb3ZlcnJpZGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBv
dmVycmlkZTsKIAotICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworICAgIFZl
Y3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBp
ZiAobGFuZ3VhZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlc1swXTsKKworICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdl
KGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCkBAIC03Niw0ICs4MCwyNCBAQCB2b2lkIG92ZXJyaWRl
RGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluCiAgICAgbGFuZ3VhZ2VPdmVycmlkZSgpID0gb3Zl
cnJpZGU7CiB9CiAKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIG92ZXJy
aWRlLCAoKSk7CisgICAgcmV0dXJuIG92ZXJyaWRlOworfQorCit2b2lkIG92ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUpCit7CisgICAg
cHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworfQorICAgIAorVmVjdG9y
PFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4m
IG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJy
aWRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworICAgIAorICAgIHJldHVy
biBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK30KKwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjIgQEAK
ICNkZWZpbmUgTGFuZ3VhZ2VfaAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRM
YW5ndWFnZSgpOwogdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJpbmcmKTsK
IAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwordm9pZCBvdmVycmlk
ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogLy8gVGhl
IG9ic2VydmVyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVtIGxhbmd1YWdlIGNo
YW5nZXMgKHVubGVzcyBpdCdzIG92ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2Uo
KSkuCiB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pKHZvaWQq
IGNvbnRleHQpOwogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQs
IExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5n
dWFnZSgpOworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
CiB2b2lkIGxhbmd1YWdlRGlkQ2hhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5n
c0JsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8TG9jYWxpemVSZXNv
dXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01OSw3ICs2MCw3IEBAIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0
aWMgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCiB7CiAgICAgU3RyaW5nIGxhbmcgPSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0TG9jYWxlKCkuY19zdHIoKTsKICAgICAv
LyBnZXRMb2NhbGUoKSByZXR1cm5zIGEgUE9TSVggbG9jYWxlIHdoaWNoIHVzZXMgJ18nIHRvIHNl
cGFyYXRlIGxhbmd1YWdlIGFuZCBjb3VudHJ5LgpAQCAtNzEsNiArNzIsMTMgQEAgU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gbGFuZzsKIH0KIAorVmVjdG9yPFN0
cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMu
YXBwZW5kKGRlZmF1bHRMYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1
YWdlczsKK30KKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0JvbGQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
TGFuZ3VhZ2VDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCitzdGF0aWMgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLCAoKSk7CiAgICAgaWYgKGNv
bXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKQEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmlu
ZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExh
bmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoZGVmYXVsdExhbmd1YWdlKCkpOworICAgIHJl
dHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAJKHJl
dmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMSBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKK3N0YXRpYyBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2Nh
bGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCAwKTsKIApAQCAtNTAsNCArNTEsMTEgQEAg
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKGxvY2Fs
ZURlZmF1bHQpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cisg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoZGVmYXVsdExhbmd1YWdlKCkpOworICAg
IHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zMiw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkg
aGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hh
bmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhl
IHNhbWUgdmFsdWUuCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0
cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQgPSBzZXRs
b2NhbGUoTENfQ1RZUEUsIE5VTEwpOwogCkBAIC01Myw0ICs1NCwxMSBAQCBTdHJpbmcgcGxhdGZv
cm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobm9ybWFsaXplZERlZmF1bHQu
Z2V0KCkpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoZGVmYXVsdExhbmd1YWdlKCkpOworICAgIHJl
dHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorICAgIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwx
MSArMzAsMTIgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKnByZWZlcnJlZExhbmd1YWdl
Q29kZTsKK3N0YXRpYyBCT09MIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlczsKIAogQGludGVy
ZmFjZSBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QgewogfQpAQCAtNDYsOCAr
NDcsNyBAQCArICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIFtwcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmVs
ZWFzZV07Ci0gICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gbmlsOworICAgIHVzZUNhY2hlZFBy
ZWZlcnJlZExhbmd1YWdlcyA9IE5POwogCiAgICAgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KQEAg
LTg1LDIzICs4NSwzMCBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdl
CiAgICAgcmV0dXJuIGh0dHBTdHlsZUxhbmd1YWdlQ29kZTsKIH0KIAotU3RyaW5nIHBsYXRmb3Jt
RGVmYXVsdExhbmd1YWdlKCkKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgdXNl
clByZWZlcnJlZExhbmd1YWdlcywgKCkpOworCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlmICghcHJlZmVycmVk
TGFuZ3VhZ2VDb2RlKSB7Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHN5bmNocm9uaXplXTsKLSAgICAgICAgTlNBcnJheSAqbGFuZ3VhZ2VzID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3RyaW5nQXJyYXlGb3JLZXk6QCJBcHBs
ZUxhbmd1YWdlcyJdOwotICAgICAgICBpZiAoIVtsYW5ndWFnZXMgY291bnRdKQotICAgICAgICAg
ICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gQCJlbiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZShb
bGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0pOworICAgIGlmICghdXNlQ2FjaGVkUHJlZmVycmVk
TGFuZ3VhZ2VzKSB7CisgICAgICAgIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcyA9IFlFUzsK
KyAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5jbGVhcigpOworCisgICAgICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5UHJlZmVycmVk
TGFuZ3VhZ2VzKCkpOworICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0
Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAgaWYgKCFsYW5ndWFnZUNvdW50KQorICAg
ICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVuIik7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgbGFuZ3VhZ2VDb3VudDsg
aSsrKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZShB
ZG9wdENGLCByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKyAgICAgICAgICAgICAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChjcmVhdGVIVFRQU3R5bGVMYW5ndWFnZUNvZGUoKE5TU3RyaW5nICop
bGFuZ3VhZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAg
IE5TU3RyaW5nICpjb2RlID0gW1twcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmV0YWluXSBhdXRvcmVs
ZWFzZV07Ci0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29sIGxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJBZGRlZDsKICAgICBpZiAoIWxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZCkg
ewpAQCAtMTEyLDExICsxMTksMTIgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkK
ICAgICAgICAgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkID0gdHJ1ZTsKICAgICB9CiAjZW5k
aWYgLy8gIVBMQVRGT1JNKElPUykKLQotICAgIHJldHVybiBjb2RlOworICAgIAorICAgIHJldHVy
biB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsK
IH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdl
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMjEgQEAKIAogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UUxvY2FsZT4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKK3N0YXRpYyBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxlIGxv
Y2FsZTsKICAgICByZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKFFMYXRpbjFDaGFyKCdfJyks
IFFMYXRpbjFDaGFyKCctJykpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoZGVmYXVsdExhbmd1YWdl
KCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHJldmlzaW9uIDEw
NDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogCiAj
aW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNyArNTAs
NyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5CiAgICAgcmV0dXJu
IGxvY2FsZU5hbWU7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0
aWMgU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCiB7CiAgICAgc3RhdGljIFN0cmluZyBjb21wdXRl
ZERlZmF1bHRMYW5ndWFnZTsKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1w
dHkoKSkKQEAgLTY2LDQgKzY3LDEyIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgp
CiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5n
PiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBl
bmQoZGVmYXVsdExhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworfQorCisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShy
ZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC02NzAs
NCArNjcxLDE1IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQKICAg
ICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQp
OwogfQogCitWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCit7CisgICAgV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisKKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoRG9jdW1lbnQqLCBib29sIGVu
YWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcm5h
bHNJZDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBtb2R1bGUgd2luZG93IHsKIAogICAg
ICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVu
dCBkb2N1bWVudCwgaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGluIGxvbmcgeCwgaW4gbG9uZyB5KSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gQXJyYXkg
dXNlclByZWZlcnJlZExhbmd1YWdlczsKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTSW50ZXJuYWxzLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU0lu
dGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7
CisgICAgSW50ZXJuYWxzKiBpbXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBsKCkpOwor
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IGltcC0+dXNlclByZWZlcnJlZExh
bmd1YWdlcygpOworICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
anNOdWxsKCk7CisgICAgCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJyYXk7CisgICAgVmVj
dG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxhbmd1YWdlcy5lbmQoKTsKKyAgICBm
b3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxhbmd1YWdlcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGFycmF5LmFwcGVuZChqc1N0cmluZyhleGVjLCBz
dHJpbmdUb1VTdHJpbmcoKml0KSkpOworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVjLCBn
bG9iYWxPYmplY3QoKSwgYXJyYXkpOworfQorCit2b2lkIEpTSW50ZXJuYWxzOjpzZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBp
ZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAic2V0VXNlclByZWZlcnJlZExhbmd1YWdlczogRXhwZWN0ZWQgQXJy
YXkiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4g
bGFuZ3VhZ2VzOworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFN0
cmluZyBsYW5ndWFnZSA9IHVzdHJpbmdUb1N0cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9TdHJp
bmcoZXhlYykpOworICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKGxhbmd1YWdlKTsKKyAgICB9Cisg
ICAgCisgICAgSW50ZXJuYWxzKiBpbXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBsKCkp
OworICAgIGltcC0+c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAg
IAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy92
OC9WOEludGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVz
dGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOElu
dGVybmFscy5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVy
bmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIEludGVy
bmFscyogaW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IGludGVybmFscy0+dXNlclByZWZl
cnJlZExhbmd1YWdlcygpOworICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gdjg6Ok51bGwoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6
OkFycmF5OjpOZXcobGFuZ3VhZ2VzLnNpemUoKSk7CisgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxhbmd1YWdlcy5lbmQoKTsKKyAgICBpbnQgaW5kZXggPSAwOworICAg
IGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGFuZ3VhZ2VzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgYXJyYXktPlNldCh2ODo6SW50ZWdlcjo6TmV3
KGluZGV4KyspLCB0b1Y4KGl0ZXItPmdldCgpKSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCit2
b2lkIFY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIGlmICghdmFsdWUtPklzQXJyYXkoKSkg
eworICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigic2V0VXNlclByZWZlcnJlZExhbmd1YWdlczog
RXhwZWN0ZWQgQXJyYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9
IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHZhbHVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFycmF5LT5MZW5ndGgoKTsgKytpKQorICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHRv
V2ViQ29yZVN0cmluZ1dpdGgoYXJyYXktPkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyog
aW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGlu
dGVybmFscy0+c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDE1KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDEtMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1
YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYx
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFu
Z3VhZ2VDaGFuZ2VkKTogT3ZlcnJpZGUgdGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1
YWdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogU2V0IHRo
ZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IERlZmluZSBV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZC4KKwogMjAxMi0wMS0xMyAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERlbGF5IHVwZGF0aW5nIHRoZSBy
b290IGNvbXBvc2l0aW5nIGxheWVyIGlmIHRoZSBsYXllciB0cmVlIHN0YXRlIGlzIGZyb3plbgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA0
ODg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAgdm9pZCBXZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5n
ZWQodm9pZCogYwogdm9pZCBXZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5nZWQoKQogewogICAgIHNl
bmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6TGFuZ3VhZ2VDaGFuZ2VkKGRl
ZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZCh1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hh
bmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Myw2
ICsyOTMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpsYW5ndWFnZUNoYW5nZWQoY29uc3QgUwogICAg
IG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGxhbmd1YWdlKTsKIH0KIAordm9pZCBXZWJQcm9jZXNz
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFu
Z3VhZ2VzKSBjb25zdAoreworICAgIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5n
dWFnZXMpOworfQorCiB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFu
Z2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKIHsKICAgICBtX2Z1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIs
NiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENv
ZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsK
ICAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lk
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29u
c3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHNldFNob3Vs
ZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgU2V0
QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkK
ICAgICBTZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wgdXNlRm9udFNtb290aGluZykKICAg
ICBMYW5ndWFnZUNoYW5nZWQoV1RGOjpTdHJpbmcgbGFuZ3VhZ2UpCisgICAgVXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFdURjo6U3RyaW5nPiBsYW5ndWFnZXMpCiAgICAgRnVs
bEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
KQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBTZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJv
b2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNj
ZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEpT
SW50ZXJuYWxzQ3VzdG9tLmNwcC4KKwogMjAxMi0wMS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSAtLWRyeS1ydW4gc3VwcG9ydCBmcm9tIHdlYmtp
dC1wYXRjaApJbmRleDogVG9vbHMvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNDg4OCkKKysrIFRvb2xzL0dOVW1ha2VmaWxlLmFt
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGxpYldlYkNvcmVJbnRlcm5hbHNfbGFf
U09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oIFwKKwlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50
ZXJuYWxzQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVz
dFN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5oCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTEzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJy
ZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hhcm5lc3Mv
dXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTMgIE9qYW4g
VmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgZmxleC1hbGln
bgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdl
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNl
ci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRl
cm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0
aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisKK2ludGVybmFscy51c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzIHJldHVybnMgYSBub24tZW1wdHkgYXJyYXk6IFBBU1MKK2ludGVybmFscy51c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzIGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZhbHVl
IHBhc3NlZCB0byBpdDogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXIt
cHJlZmVycmVkLWxhbmd1YWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9o
YXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3QobWVzc2FnZSwgc3VjY2VzcykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICc6ICcgKyAoc3VjY2VzcyA/ICdQQVNTJyA6ICdGQUlMJykpOworICAg
ICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBsYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZl
cnJlZExhbmd1YWdlczsKKworICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBub24tZW1wdHkgYXJyYXknLCBsYW5ndWFnZXMubGVu
Z3RoKTsKKworICAgICAgICAgICAgICAgIGxhbmd1YWdlcy51bnNoaWZ0KCJmaXJzdC1sYW5ndWFn
ZSIpOworICAgICAgICAgICAgICAgIGxhbmd1YWdlcy5wdXNoKCJsYXN0LWxhbmd1YWdlIik7Cisg
ICAgICAgICAgICAgICAgaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBsYW5ndWFn
ZXM7CisKKyAgICAgICAgICAgICAgICB2YXIgbmV3TGFuZ3VhZ2VzID0gaW50ZXJuYWxzLnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7CisgICAgICAgICAgICAgICAgdmFyIHNhbWVDb250ZW50cyA9IG5l
d0xhbmd1YWdlcy5sZW5ndGggPT0gbGFuZ3VhZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBp
ZiAoc2FtZUNvbnRlbnRzKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbmV3TGFuZ3VhZ2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAobmV3TGFuZ3VhZ2VzW2ldICE9IGxhbmd1YWdlc1tpXSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNhbWVDb250ZW50cyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZh
bHVlIHBhc3NlZCB0byBpdCcsIHNhbWVDb250ZW50cyk7CisgICAgICAgICAgICB9CisgICAgICAg
IAorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICAgICAgICA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcm5hbHMudXNl
clByZWZlcnJlZExhbmd1YWdlcyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0aGUgdXNlcidz
IHByZWZlcnJlZCBsYW5ndWFnZXMuPC9wPgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+
CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="123568"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122712</attachid>
            <date>2012-01-16 21:55:01 -0800</date>
            <delta_ts>2012-01-17 07:55:03 -0800</delta_ts>
            <desc>Updated the poorly chosen function name.</desc>
            <filename>language_patch_9.txt</filename>
            <type>text/plain</type>
            <size>35773</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDEyLTAxLTEzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJl
ZmVycmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
dGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IEluY2x1ZGUgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9MYW5ndWFnZS5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUpOiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzIG92ZXJyaWRlLgorICAgICAgICAoV2Vi
Q29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBzZXQgdGhlIGxhbmd1
YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVk
IGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Us
IG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9y
bURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9M
YW5ndWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVu
YW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tOgorICAgICAgICAoK1tXZWJMYW5ndWFnZUNoYW5n
ZU9ic2VydmVyIF93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZV0pOiBGbGFnIHRo
ZSB1c2VyIGxhbmd1YWdlcworICAgICAgICAgICAgYXMgaW52YWxpZC4KKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIGxpc3Qgb2YgdXNlciBw
cmVmZXJyZWQgbGFuZ3VhZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0v
d2luL0xhbmd1YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2Up
OiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAg
ICAgICAgKiB0ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorICAgICAgICAo
V2ViQ29yZTo6SlNJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisK
KyAgICAgICAgKiB0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JHZXR0ZXIp
OiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpWOEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1
YWdlc0FjY2Vzc29yU2V0dGVyKTogTmV3LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KTogTmV3LCByZXR1cm4gdGhlIHBsYXRmb3JtJ3MgdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTog
TmV3LCBvdmVycmlkZSB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFk
ZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLworCiAyMDEyLTAxLTEzICBPamFuIFZhZmFpICA8b2ph
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW1wbGVtZW50IGZsZXgtYWxpZ24KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNjM3LDYgKzYzNyw3IEBAIF9fWk43V2ViQ29y
ZTIyY291bnRlclZhbHVlRm9yRWxlbWVudEVQTlMKIF9fWk43V2ViQ29yZTIyY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dEVQTlNfNVJhbmdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjJleHRl
cm5hbFJlcHJlc2VudGF0aW9uRVBOU181RnJhbWVFagogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJl
cHJlc2VudGF0aW9uRVBOU183RWxlbWVudEVqCitfX1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNFdgogX19aTjdXZWJDb3JlMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNf
MTVQcm90ZWN0aW9uU3BhY2VFUktOU18xMENyZWRlbnRpYWxFalJLTlNfMTZSZXNvdXJjZVJlc3Bv
bnNlRVJLTlNfMTNSZXNvdXJjZUVycm9yRQogX19aTjdXZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZy
b21Ob2Rlc0VQTlNfOERvY3VtZW50RVJLTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUUKIF9f
Wk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNFUk4zV1RGN0hhc2hTZXRJTlMwXzZT
dHJpbmdFTlMwXzEwU3RyaW5nSGFzaEVOUzBfMTBIYXNoVHJhaXRzSVMyX0VFRUUKQEAgLTY5Nyw2
ICs2OTgsNyBAQCBfX1pON1dlYkNvcmUyOWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlCiBfX1pO
N1dlYkNvcmUyOXNldFVzZXNUZXN0TW9kZUZvY3VzUmluZ0NvbG9yRWIKIF9fWk43V2ViQ29yZTMw
Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51RXYKIF9fWk43V2ViQ29yZTMwY29udGV4dE1l
bnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJD
b3JlMzFDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlNWVtcHR5RXYKIF9fWk43V2ViQ29y
ZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTZzaGFyZWRFdgogX19aTjdXZWJDb3Jl
MzFhcHBsaWNhdGlvbklzTWljcm9zb2Z0TWVzc2VuZ2VyRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2lu
ZyBjb3B5KQpAQCAtNjM1MSw4ICs2MzUxLDEwIEBACiAgICAgICAgICAgJ3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCcsCiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJjb3JlX3Rlc3Rfc3VwcG9ydF9maWxl
cyc6IFsKKyAgICAgICAgICAgICd0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5oJywKKyAgICAgICAgICAgICd0ZXN0
aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuY3BwJywKICAgICAgICAgICAgICd0ZXN0aW5nL2pzL1dlYkNvcmVU
ZXN0U3VwcG9ydC5oJywKICAgICAgICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5jcHAnLApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC04ODc4LDYgKzg4NzgsNyBAQCBfX1pON1dl
YkNvcmUxOUZsb2F0QW5pbWF0aW9uVmFsdWVEMEV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzTGF5
ZXJDQTIwdXBkYXRlT3BhY2l0eU9uTGF5ZXJFdgogX19aTjdXZWJDb3JlMTVQbGF0Zm9ybUNBTGF5
ZXIxMHNldE9wYWNpdHlFZgogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBO
U181RnJhbWVFagorX19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0QzFFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZUwxMXdyaXRl
TGF5ZXJzRVJOU18xMFRleHRTdHJlYW1FUEtOU18xMVJlbmRlckxheWVyRVBTMl9SS05TXzdJbnRS
ZWN0RWlqCiBfX1pON1dlYkNvcmVMNXdyaXRlRVJOU18xMFRleHRTdHJlYW1FUk5TXzExUmVuZGVy
TGF5ZXJFUktOU183SW50UmVjdEVTNl9TNl9TNl9OU18xNUxheWVyUGFpbnRQaGFzZUVpagpAQCAt
MTYyODUsNiArMTYyODYsNyBAQCBfX1pON1dlYkNvcmUyMUNvbnRleHRNZW51Q29udHJvbGxlcjI4
Y3JlCiBfX1pON1dlYkNvcmUzMWNvbnRleHRNZW51SXRlbVRhZ1N0YXJ0U3BlYWtpbmdFdgogX19a
TjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzMWNvbnRleHRNZW51SXRlbVRh
Z1N0YXJ0U3BlYWtpbmdFdgogX19aTjdXZWJDb3JlMzBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3Bl
YWtpbmdFdgorX19aTjdXZWJDb3JlMzBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFUktO
M1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dlYkNvcmUyN0RlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTMwY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKIF9fWk43
V2ViQ29yZTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnVFdgogX19aTjdX
ZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzOGNvbnRleHRNZW51SXRlbVRhZ1dy
aXRpbmdEaXJlY3Rpb25NZW51RXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTAxLDYgKzEwMSw3IEBACiAJCTA3MDc1NkRGMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRU
cmFja0N1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDcwNzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAg
Ki87IH07CiAJCTA3MDc1NkUwMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkRB
MTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLzsgfTsKIAkJMDcwOUZD
NEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzREMTAyNURFRTMwMDU5Q0RC
QSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CisJCTA3MjMwQ0JDMTRDMTBFRDkwMEY2
QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5h
bHNDdXN0b20uY3BwICovOyB9OwogCQkwNzJDOEIxMTEzMUM1MTg2MDBBNEZDRTkgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDA5MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb24uY3BwICovOyB9OwogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2
MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJv
eHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
NzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3
ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwpAQCAtNjczNCw2ICs2NzM1LDcgQEAK
IAkJMDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0N1ZUxpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vz
c2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzBERDhGNTBG
MDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3MjMw
Q0JCMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVybmFsc0N1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBs
YXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5ODAw
Qjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQyMzksNiArMTQyNDEsNyBAQAogCQk0MTgxNUMxQjEzODMx
OTYzMDA1N0FBQTQgLyoganMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTA3MjMwQ0JCMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5j
cHAgKi8sCiAJCQkJNDE4MTVDMUMxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9y
dC5jcHAgKi8sCiAJCQkJNDE4MTVDMUQxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3Vw
cG9ydC5oICovLAogCQkJKTsKQEAgLTI0MzE2LDYgKzI0MzE5LDcgQEAKIAkJCQk0MTdEQTZEOTEz
NzM0RTZFMDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxN0RB
NzFEMTM3MzVERkEwMDdDNTdGQiAvKiBKU0ludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTgxNUMxRTEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTA3MjMwQ0JDMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xh
bmd1YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFn
ZS5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsMTEgQEAgU3RyaW5nIGRlZmF1bHRM
YW5ndWFnZSgpCiAgICAgaWYgKCFvdmVycmlkZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG92
ZXJyaWRlOwogCi0gICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCk7CisgICAgVmVj
dG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOworICAgIGlm
IChsYW5ndWFnZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbGFuZ3VhZ2VzWzBdOworCisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIHZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2Uo
Y29uc3QgU3RyaW5nJiBvdmVycmlkZSkKQEAgLTc2LDQgKzgwLDI0IEBAIHZvaWQgb3ZlcnJpZGVE
ZWZhdWx0TGFuZ3VhZ2UoY29uc3QgU3RyaW4KICAgICBsYW5ndWFnZU92ZXJyaWRlKCkgPSBvdmVy
cmlkZTsKIH0KIAorc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRMYW5ndWFnZXNPdmVy
cmlkZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgb3ZlcnJp
ZGUsICgpKTsKKyAgICByZXR1cm4gb3ZlcnJpZGU7Cit9CisKK3ZvaWQgb3ZlcnJpZGVVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSkKK3sKKyAgICBw
cmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpID0gb3ZlcnJpZGU7Cit9CisgICAgCitWZWN0b3I8
U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiYg
b3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOworICAgIGlmICghb3ZlcnJp
ZGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisgICAgCisgICAgcmV0dXJu
IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE4ICsyNywyMiBAQAog
I2RlZmluZSBMYW5ndWFnZV9oCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgZGVmYXVsdExh
bmd1YWdlKCk7CiB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluZyYpOwog
CitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit2b2lkIG92ZXJyaWRl
VXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworCiAvLyBUaGUg
b2JzZXJ2ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hh
bmdlcyAodW5sZXNzIGl0J3Mgb3ZlcnJpZGRlbiBieSBvdmVycmlkZURlZmF1bHRMYW5ndWFnZSgp
KS4KIHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCog
Y29udGV4dCk7CiB2b2lkIGFkZExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCwg
TGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKTsKIHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFu
Z2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KTsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCk7CitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
IHZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdz
QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KICNpbmNsdWRlIDxMb2NhbGl6ZVJlc291
cmNlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU5LDcgKzYwLDcgQEAgU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRp
YyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgU3RyaW5nIGxhbmcgPSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0TG9jYWxlKCkuY19zdHIoKTsKICAgICAv
LyBnZXRMb2NhbGUoKSByZXR1cm5zIGEgUE9TSVggbG9jYWxlIHdoaWNoIHVzZXMgJ18nIHRvIHNl
cGFyYXRlIGxhbmd1YWdlIGFuZCBjb3VudHJ5LgpAQCAtNzEsNiArNzIsMTMgQEAgU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gbGFuZzsKIH0KIAorVmVjdG9yPFN0
cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMu
YXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7Cit9CisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdCb2xkKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0xhbmd1YWdlQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDExIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3Vh
Z2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UsICgpKTsKICAgICBpZiAo
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAtNDQsNCArNDUsMTEgQEAgU3Ry
aW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0
TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAg
ICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAg
IHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFn
ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMSBAQAogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExh
bmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgY2hhciog
bG9jYWxlRGVmYXVsdCA9IHNldGxvY2FsZShMQ19DVFlQRSwgMCk7CiAKQEAgLTUwLDQgKzUxLDEx
IEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIFN0cmluZyhs
b2NhbGVEZWZhdWx0KTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkocmV2aXNpb24gMTA0ODg4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTMyLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVXNpbmcgcGFuZ29fbGFuZ3VhZ2VfZ2V0X2RlZmF1
bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJlY2F1c2UKIC8vIGl0IGRvZXNuJ3Qgc3VwcG9y
dCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNvIGl0IHJldHVybnMKIC8vIGFsd2F5
cyB0aGUgc2FtZSB2YWx1ZS4KLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQg
PSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpOwogCkBAIC01Myw0ICs1NCwxMSBAQCBTdHJpbmcg
cGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobm9ybWFsaXplZERl
ZmF1bHQuZ2V0KCkpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsK
KyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKyAgICAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHJldmlzaW9uIDEwNDg4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTEgKzMwLDEyIEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICpwcmVmZXJyZWRM
YW5ndWFnZUNvZGU7CitzdGF0aWMgQk9PTCB1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXM7CiAK
IEBpbnRlcmZhY2UgV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKIH0KQEAg
LTQ2LDggKzQ3LDcgQEAgKyAodm9pZClfd2Via2l0X2xhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaAog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBbcHJlZmVycmVkTGFuZ3VhZ2VD
b2RlIHJlbGVhc2VdOwotICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IG5pbDsKKyAgICB1c2VD
YWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMgPSBOTzsKIAogICAgIGxhbmd1YWdlRGlkQ2hhbmdlKCk7
CiB9CkBAIC04NSwyMyArODUsMzAgQEAgc3RhdGljIE5TU3RyaW5nICpjcmVhdGVIVFRQU3R5bGVM
YW5ndWFnZQogICAgIHJldHVybiBodHRwU3R5bGVMYW5ndWFnZUNvZGU7CiB9CiAKLVN0cmluZyBw
bGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKQogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmlu
Zz4sIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMsICgpKTsKKwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBpZiAoIXBy
ZWZlcnJlZExhbmd1YWdlQ29kZSkgewotICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBzeW5jaHJvbml6ZV07Ci0gICAgICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHN0cmluZ0FycmF5Rm9yS2V5
OkAiQXBwbGVMYW5ndWFnZXMiXTsKLSAgICAgICAgaWYgKCFbbGFuZ3VhZ2VzIGNvdW50XSkKLSAg
ICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IEAiZW4iOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBjcmVhdGVIVFRQU3R5bGVMYW5ndWFn
ZUNvZGUoW2xhbmd1YWdlcyBvYmplY3RBdEluZGV4OjBdKTsKKyAgICBpZiAoIXVzZUNhY2hlZFBy
ZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICB1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMg
PSBZRVM7CisgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuY2xlYXIoKTsKKworICAgICAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzKEFkb3B0Q0YsIENGTG9jYWxlQ29weVBy
ZWZlcnJlZExhbmd1YWdlcygpKTsKKyAgICAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CisgICAgICAgIGlmICghbGFuZ3VhZ2VDb3Vu
dCkKKyAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKCJlbiIpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdl
Q291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFu
Z3VhZ2UoQWRvcHRDRiwgcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisgICAgICAgICAgICAgICAgdXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2RlKChOU1N0
cmluZyAqKWxhbmd1YWdlLmdldCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9
CiAKLSAgICBOU1N0cmluZyAqY29kZSA9IFtbcHJlZmVycmVkTGFuZ3VhZ2VDb2RlIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBsYW5n
dWFnZUNoYW5nZU9ic2VydmVyQWRkZWQ7CiAgICAgaWYgKCFsYW5ndWFnZUNoYW5nZU9ic2VydmVy
QWRkZWQpIHsKQEAgLTExMiwxMSArMTE5LDEyIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5n
dWFnZSgpCiAgICAgICAgIGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZCA9IHRydWU7CiAgICAg
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KLSAgICByZXR1cm4gY29kZTsKKyAgICAKKyAg
ICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKIAogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdl
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdl
UXQuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDIxIEBACiAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPFFMb2NhbGU+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1
bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIFFM
b2NhbGUgbG9jYWxlOwogICAgIHJldHVybiBsb2NhbGUubmFtZSgpLnJlcGxhY2UoUUxhdGluMUNo
YXIoJ18nKSwgUUxhdGluMUNoYXIoJy0nKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHJl
dmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNyArNTAsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5CiAg
ICAgcmV0dXJuIGxvY2FsZU5hbWU7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIHN0YXRpYyBTdHJp
bmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5n
dWFnZS5pc0VtcHR5KCkpCkBAIC02Niw0ICs2NywxMiBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UoKQogICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKIH0KIAorVmVj
dG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7Cit9CisKKyAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhU
TUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2Uu
aCIKQEAgLTY3MCw0ICs2NzEsMTUgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBlclRpbGVEcmF3aW5n
RW5hYmxlZAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6dXNlclByZWZlcnJl
ZExhbmd1YWdlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKK3sKKyAgICBXZWJDb3JlOjpvdmVy
cmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKworCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChEb2N1bWVu
dCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworCiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGludGVybmFsc0lkOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIG1vZHVsZSB3aW5k
b3cgewogCiAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVu
dCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9y
KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBp
biBsb25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBbQ3Vz
dG9tXSBBcnJheSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogICAgIH07CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbHMuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitK
U1ZhbHVlIEpTSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKEV4ZWNTdGF0ZSogZXhl
YykgY29uc3QKK3sKKyAgICBJbnRlcm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFscyo+
KGltcGwoKSk7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW1wLT51c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBqc051bGwoKTsKKyAgICAKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcnJh
eTsKKyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGFuZ3VhZ2VzLmVu
ZCgpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGFuZ3Vh
Z2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgYXJyYXkuYXBwZW5kKGpzU3Ry
aW5nKGV4ZWMsIHN0cmluZ1RvVVN0cmluZygqaXQpKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBhcnJheSk7Cit9CisKK3ZvaWQgSlNJbnRlcm5hbHM6
OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgeworICAgICAgICB0aHJvd0Vycm9yKGV4
ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzOiBF
eHBlY3RlZCBBcnJheSIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVl
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsK
KyAgICAgICAgU3RyaW5nIGxhbmd1YWdlID0gdXN0cmluZ1RvU3RyaW5nKGFycmF5LT5nZXRJbmRl
eChpKS50b1N0cmluZyhleGVjKSk7CisgICAgICAgIGxhbmd1YWdlcy5hcHBlbmQobGFuZ3VhZ2Up
OworICAgIH0KKyAgICAKKyAgICBJbnRlcm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFs
cyo+KGltcGwoKSk7CisgICAgaW1wLT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdl
cyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlY4SW50ZXJuYWxzLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRl
ICJWOFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgSW50ZXJuYWxzKiBpbnRlcm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW50ZXJuYWxz
LT51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4g
YXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhsYW5ndWFnZXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGFuZ3VhZ2VzLmVuZCgpOworICAgIGludCBpbmRl
eCA9IDA7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYW5n
dWFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcnJheS0+U2V0KHY4OjpJ
bnRlZ2VyOjpOZXcoaW5kZXgrKyksIHRvVjgoaXRlci0+Z2V0KCkpKTsKKyAgICByZXR1cm4gYXJy
YXk7Cit9CisKK3ZvaWQgVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3Nv
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgaWYgKCF2YWx1ZS0+
SXNBcnJheSgpKSB7CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJzZXRVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzOiBFeHBlY3RlZCBBcnJheSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJy
YXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodmFsdWUpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPkxlbmd0aCgpOyArK2kpCisgICAgICAgIGxhbmd1YWdl
cy5hcHBlbmQodG9XZWJDb3JlU3RyaW5nV2l0aChhcnJheS0+R2V0KGkpKSk7CisgICAgCisgICAg
SW50ZXJuYWxzKiBpbnRlcm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CisgICAgaW50ZXJuYWxzLT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7
Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDUwMTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0wMS0xMyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVm
ZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpsYW5ndWFnZUNoYW5nZWQpOiBPdmVycmlkZSB0aGUgV2ViUHJvY2VzcyB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5n
ZWQpOiBTZXQgdGhlIGxhbmd1YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bjogRGVmaW5lIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkLgorCiAyMDEyLTAxLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsYXkgdXBk
YXRpbmcgdGhlIHJvb3QgY29tcG9zaXRpbmcgbGF5ZXIgaWYgdGhlIGxheWVyIHRyZWUgc3RhdGUg
aXMgZnJvemVuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsNyBAQCB2b2lkIFdlYkNvbnRleHQ6Omxh
bmd1YWdlQ2hhbmdlZCh2b2lkKiBjCiB2b2lkIFdlYkNvbnRleHQ6Omxhbmd1YWdlQ2hhbmdlZCgp
CiB7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMYW5ndWFn
ZUNoYW5nZWQoZGVmYXVsdExhbmd1YWdlKCkpKTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OlVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKSkpOwogfQogCiB2b2lkIFdlYkNvbnRleHQ6OmZ1bGxLZXlib2FyZEFj
Y2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTA0ODg4KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjkzLDYgKzI5MywxMSBAQCB2b2lkIFdlYlByb2Nlc3M6Omxhbmd1YWdlQ2hhbmdlZChj
b25zdCBTCiAgICAgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UobGFuZ3VhZ2UpOwogfQogCit2b2lk
IFdlYlByb2Nlc3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsYW5ndWFnZXMpIGNvbnN0Cit7CisgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNj
ZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogewogICAgIG1f
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTA0ODg4
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Miw2ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QWx3YXlzVXNlc0Nv
bXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRVc2VGb250U21vb3Ro
aW5nKGJvb2wpOwogICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGNvbnN0
OworICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSBjb25zdDsKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJv
b2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZv
aWQgc2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEw
NDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IHsKICAgICBTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNv
bXBsZXhUZXh0KQogICAgIFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCB1c2VGb250U21v
b3RoaW5nKQogICAgIExhbmd1YWdlQ2hhbmdlZChXVEY6OlN0cmluZyBsYW5ndWFnZSkKKyAgICBV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8V1RGOjpTdHJpbmc+IGxhbmd1YWdl
cykKICAgICBGdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFj
Y2Vzc0VuYWJsZWQpCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFNldFNob3VsZFBhaW50TmF0aXZl
Q29udHJvbHMoYm9vbCBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKQpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDE1KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTIt
MDEtMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGQgSlNJbnRlcm5hbHNDdXN0b20uY3BwLgorCiAyMDEyLTAxLTEzICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIC0tZHJ5LXJ1biBzdXBwb3J0
IGZyb20gd2Via2l0LXBhdGNoCkluZGV4OiBUb29scy9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA0ODg4KQorKysgVG9vbHMvR05V
bWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbGliV2ViQ29yZUlu
dGVybmFsc19sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggXAorCVNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0LmgKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDE1KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEt
MTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
dmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvaGFybmVzcy91
c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sOiBBZGRlZC4KKwogMjAxMi0w
MS0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEltcGxlbWVu
dCBmbGV4LWFsaWduCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJy
ZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxl
IEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKworaW50ZXJuYWxzLnVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheTogUEFTUworaW50
ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhl
IHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0OiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hh
cm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdChtZXNzYWdlLCBz
dWNjZXNzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJzogJyArIChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZB
SUwnKSk7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7
CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxhbmd1YWdlcyA9IGludGVybmFs
cy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworCisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJu
YWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheScsIGxh
bmd1YWdlcy5sZW5ndGgpOworCisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnVuc2hpZnQoImZp
cnN0LWxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnB1c2goImxhc3QtbGFu
Z3VhZ2UiKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdl
cyA9IGxhbmd1YWdlczsKKworICAgICAgICAgICAgICAgIHZhciBuZXdMYW5ndWFnZXMgPSBpbnRl
cm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICAgICAgICAgICAgICB2YXIgc2FtZUNv
bnRlbnRzID0gbmV3TGFuZ3VhZ2VzLmxlbmd0aCA9PSBsYW5ndWFnZXMubGVuZ3RoOworICAgICAg
ICAgICAgICAgIGlmIChzYW1lQ29udGVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuZXdMYW5ndWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChuZXdMYW5ndWFnZXNbaV0gIT0gbGFuZ3VhZ2VzW2ldKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtZUNvbnRlbnRzID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdCgn
aW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMg
dGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0Jywgc2FtZUNvbnRlbnRzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGlu
dGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9m
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy48L3A+CisgICAgICAgIDx1bCBpZD0iY29u
c29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="123572"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122770</attachid>
            <date>2012-01-17 07:55:03 -0800</date>
            <delta_ts>2012-01-17 08:37:48 -0800</delta_ts>
            <desc>A few code fixes, a few stab-in-the-dark build file changes. Maybe this one will fly.</desc>
            <filename>language_prefs_patch_10.txt</filename>
            <type>text/plain</type>
            <size>40019</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDEyLTAxLTE3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJl
ZmVycmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQg
dGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAg
ICAgICAgKiBXZWJDb3JlLmd5cGk6IEluY2x1ZGUgbmV3IGZpbGVzLgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9MYW5ndWFnZS5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUpOiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzIG92ZXJyaWRlLgorICAgICAgICAoV2Vi
Q29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBzZXQgdGhlIGxhbmd1
YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OiBOZXcsIHJldHVybiB0aGUgbGFuZ3VhZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdl
Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVk
IGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Us
IG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9y
bURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9M
YW5ndWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVu
YW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tOgorICAgICAgICAoK1tXZWJMYW5ndWFnZUNoYW5n
ZU9ic2VydmVyIF93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZV0pOiBGbGFnIHRo
ZSB1c2VyIGxhbmd1YWdlcworICAgICAgICAgICAgYXMgaW52YWxpZC4KKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZv
cm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIGxpc3Qgb2YgdXNlciBw
cmVmZXJyZWQgbGFuZ3VhZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0v
d2luL0xhbmd1YWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2Up
OiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAg
ICAgICAgKiB0ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorICAgICAgICAo
V2ViQ29yZTo6SlNJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisK
KyAgICAgICAgKiB0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JHZXR0ZXIp
OiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpWOEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1
YWdlc0FjY2Vzc29yU2V0dGVyKTogTmV3LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KTogTmV3LCByZXR1cm4gdGhlIHBsYXRmb3JtJ3MgdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTog
TmV3LCBvdmVycmlkZSB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFk
ZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLworCiAyMDEyLTAxLTE3ICBOaWtvbGFzIFppbW1lcm1h
bm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIExhcmdlIFNWRyB0ZXh0IGxheW91
dCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIGluIHI4MTE2OApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC02NDIsNiArNjQyLDcgQEAgX19aTjdXZWJDb3JlMjJjb3VudGVyVmFs
dWVGb3JFbGVtZW50RVBOUwogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVudEZyb21UZXh0RVBO
U181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzVGcmFtZUVqCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25F
UE5TXzdFbGVtZW50RWoKK19fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2CiBf
X1pON1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQzFFUktOU18xNVByb3RlY3Rpb25T
cGFjZUVSS05TXzEwQ3JlZGVudGlhbEVqUktOU18xNlJlc291cmNlUmVzcG9uc2VFUktOU18xM1Jl
c291cmNlRXJyb3JFCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOU184
RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSTjNXVEY3SGFzaFNldElOUzBfNlN0cmluZ0VOUzBfMTBT
dHJpbmdIYXNoRU5TMF8xMEhhc2hUcmFpdHNJUzJfRUVFRQpAQCAtNzAyLDYgKzcwMyw3IEBAIF9f
Wk43V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGUKIF9fWk43V2ViQ29yZTI5c2V0
VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3JFYgogX19aTjdXZWJDb3JlMzBjb250ZXh0TWVudUl0
ZW1UYWdTcGVsbGluZ01lbnVFdgogX19aTjdXZWJDb3JlMzBjb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmdFdgorX19aTjdXZWJDb3JlMzBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNF
UktOM1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dlYkNvcmUzMUNyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU1ZW1wdHlFdgogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUzMWFwcGxpY2F0aW9u
SXNNaWNyb3NvZnRNZXNzZW5nZXJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02
MzY2LDggKzYzNjYsMTAgQEAKICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuaWRsJywKICAg
ICAgICAgXSwKICAgICAgICAgJ3dlYmNvcmVfdGVzdF9zdXBwb3J0X2ZpbGVzJzogWworICAgICAg
ICAgICAgJ3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwJywKICAgICAgICAgICAgICd0
ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3Rlc3RpbmcvanMvSlNJbnRl
cm5hbHNDdXN0b20uY3BwJywKICAgICAgICAgICAgICd0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0Lmgn
LAogICAgICAgICAgICAgJ3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTg4NzgsNiArODg3OCw3IEBAIF9fWk43V2ViQ29yZTE5RmxvYXRB
bmltYXRpb25WYWx1ZUQwRXYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjB1cGRhdGVP
cGFjaXR5T25MYXllckV2CiBfX1pON1dlYkNvcmUxNVBsYXRmb3JtQ0FMYXllcjEwc2V0T3BhY2l0
eUVmCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzVGcmFtZUVqCitf
X1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdgogX19aTjdXZWJDb3JlMTJQcmlu
dENvbnRleHRDMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlTDExd3JpdGVMYXllcnNFUk5TXzEw
VGV4dFN0cmVhbUVQS05TXzExUmVuZGVyTGF5ZXJFUFMyX1JLTlNfN0ludFJlY3RFaWoKIF9fWk43
V2ViQ29yZUw1d3JpdGVFUk5TXzEwVGV4dFN0cmVhbUVSTlNfMTFSZW5kZXJMYXllckVSS05TXzdJ
bnRSZWN0RVM2X1M2X1M2X05TXzE1TGF5ZXJQYWludFBoYXNlRWlqCkBAIC0xNjI4NSw2ICsxNjI4
Niw3IEBAIF9fWk43V2ViQ29yZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMjhjcmUKIF9fWk43V2Vi
Q29yZTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUyN0Rl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2lu
Z0V2CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pO
N1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklO
UzBfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5MzBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmdFdgogX19aTjdXZWJDb3JlMzhjb250
ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmUyN0RlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlv
bk1lbnVFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3
LDcgQEAKIAkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZE
OTE0MjM5QjRDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLzsgfTsKIAkJMDcw
NzU2RTAxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2REExNDIzOUI0RTAwNDE0
MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5RkM0RTEwMjVERUUzMDA1
OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2li
aWxpdHlTbGlkZXIuaCAqLzsgfTsKKwkJMDcyMzBDQkMxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50
ZXJuYWxzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA3MjMwQ0JCMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFsc0N1c3RvbS5jcHAg
Ki87IH07CiAJCTA3MkM4QjExMTMxQzUxODYwMEE0RkNFOSAvKiBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAgKi87IH07CiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBs
YXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlF
OTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hl
ZFRleHRUcmFjay5jcHAgKi87IH07CkBAIC02NzUxLDYgKzY3NTIsNyBAQAogCQkwNzA3NTZEQTE0
MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYwMTg2ODAwMDcyN0RF
QiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBtZWRpYUNvbnRy
b2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyMzBDQkIxNEMxMEVEOTAw
RjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxzQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2Fj
aGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAx
MTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDI2Myw2ICsxNDI2NSw3IEBACiAJCTQxODE1QzFCMTM4MzE5NjMwMDU3QUFBNCAv
KiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDcy
MzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLywKIAkJCQk0
MTgxNUMxQzEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCAqLywKIAkJ
CQk0MTgxNUMxRDEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggKi8sCiAJ
CQkpOwpAQCAtMjQzNTQsNiArMjQzNTcsNyBAQAogCQkJCTQxN0RBNkQ5MTM3MzRFNkUwMDdDNTdG
QiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE3MUQxMzczNURGQTAw
N0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxODE1QzFFMTM4
MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMDcyMzBDQkMxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmNwcAkocmV2aXNp
b24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw3ICs2OCwxMSBAQCBTdHJpbmcgZGVmYXVsdExhbmd1YWdlKCkKICAg
ICBpZiAoIW92ZXJyaWRlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CiAKLSAg
ICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBs
YW5ndWFnZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5z
aXplKCkpCisgICAgICAgIHJldHVybiBsYW5ndWFnZXNbMF07CisKKyAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIH0KIAogdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJpbmcm
IG92ZXJyaWRlKQpAQCAtNzYsNCArODAsMjQgQEAgdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFn
ZShjb25zdCBTdHJpbgogICAgIGxhbmd1YWdlT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOwogfQogCitz
dGF0aWMgVmVjdG9yPFN0cmluZz4mIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCBvdmVycmlkZSwgKCkpOworICAg
IHJldHVybiBvdmVycmlkZTsKK30KKwordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlKQoreworICAgIHByZWZlcnJlZExhbmd1
YWdlc092ZXJyaWRlKCkgPSBvdmVycmlkZTsKK30KKyAgICAKK1ZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSA9IHBy
ZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCk7CisgICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKyAgICAKKyAgICByZXR1cm4gcGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xhbmd1YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTggKzI3LDIyIEBACiAjZGVmaW5lIExhbmd1
YWdlX2gKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsKIHZv
aWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAKK1ZlY3RvcjxTdHJp
bmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK3ZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKIC8vIFRoZSBvYnNlcnZlciBmdW5j
dGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHN5c3RlbSBsYW5ndWFnZSBjaGFuZ2VzICh1bmxlc3Mg
aXQncyBvdmVycmlkZGVuIGJ5IG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKCkpLgogdHlwZWRlZiB2
b2lkICgqTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKSh2b2lkKiBjb250ZXh0KTsKIHZv
aWQgYWRkTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0LCBMYW5ndWFnZUNoYW5n
ZU9ic2VydmVyRnVuY3Rpb24pOwogdm9pZCByZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZv
aWQqIGNvbnRleHQpOwogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKTsKK1ZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogdm9pZCBsYW5ndWFn
ZURpZENoYW5nZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNw
cAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYg
KzIzLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPEJsYWNrQmVy
cnlQbGF0Zm9ybUNsaWVudC5oPgogI2luY2x1ZGUgPExvY2FsaXplUmVzb3VyY2UuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksNyArNjAs
NyBAQCBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0
Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBTdHJpbmcgbGFuZyA9IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpDbGllbnQ6OmdldCgpLT5nZXRMb2NhbGUoKS5jX3N0cigpOwogICAgIC8vIGdldExvY2FsZSgp
IHJldHVybnMgYSBQT1NJWCBsb2NhbGUgd2hpY2ggdXNlcyAnXycgdG8gc2VwYXJhdGUgbGFuZ3Vh
Z2UgYW5kIGNvdW50cnkuCkBAIC03MSw2ICs3MiwxMyBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UoKQogICAgIHJldHVybiBsYW5nOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZv
cm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQo
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJv
bWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
TGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMywxMCArMzMsMTEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMg
U3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSwgKCkpOwogICAgIGlmIChjb21wdXRlZERlZmF1
bHRMYW5ndWFnZS5pc0VtcHR5KCkpCkBAIC00NCw0ICs0NSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKIH0K
IAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAg
ICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDExIEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKIAogI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3Rh
dGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2NhbGVEZWZhdWx0
ID0gc2V0bG9jYWxlKExDX0NUWVBFLCAwKTsKIApAQCAtNTAsNCArNTEsMTEgQEAgU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKGxvY2FsZURlZmF1bHQp
OwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQor
eworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4g
dXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJHT3duUHRyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzIsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBVc2luZyBwYW5nb19sYW5ndWFnZV9nZXRfZGVmYXVsdCgpIGhlcmUgaXMg
bm90IGFuIG9wdGlvbiwgYmVjYXVzZQogLy8gaXQgZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRo
ZSBsb2NhbGUgaW4gcnVudGltZSwgc28gaXQgcmV0dXJucwogLy8gYWx3YXlzIHRoZSBzYW1lIHZh
bHVlLgotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxh
dGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgY2hhciogbG9jYWxlRGVmYXVsdCA9IHNldGxvY2FsZShM
Q19DVFlQRSwgTlVMTCk7CiAKQEAgLTUzLDQgKzU0LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1
bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIFN0cmluZyhub3JtYWxpemVkRGVmYXVsdC5nZXQoKSk7
CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7
CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMSArMzAs
MTIgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKnByZWZlcnJlZExhbmd1YWdlQ29kZTsK
K3N0YXRpYyBCT09MIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlczsKIAogQGludGVyZmFjZSBX
ZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3QgewogfQpAQCAtNDYsOCArNDcsNyBA
QCArICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAotICAgIFtwcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmVsZWFzZV07
Ci0gICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gbmlsOworICAgIHVzZUNhY2hlZFByZWZlcnJl
ZExhbmd1YWdlcyA9IE5POwogCiAgICAgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KQEAgLTg1LDIz
ICs4NSwzMCBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlCiAgICAg
cmV0dXJuIGh0dHBTdHlsZUxhbmd1YWdlQ29kZTsKIH0KIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVs
dExhbmd1YWdlKCkKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgdXNlclByZWZl
cnJlZExhbmd1YWdlcywgKCkpOworCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAg
IEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlmICghcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlKSB7Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHN5bmNocm9uaXplXTsKLSAgICAgICAgTlNBcnJheSAqbGFuZ3VhZ2VzID0gW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3RyaW5nQXJyYXlGb3JLZXk6QCJBcHBsZUxhbmd1
YWdlcyJdOwotICAgICAgICBpZiAoIVtsYW5ndWFnZXMgY291bnRdKQotICAgICAgICAgICAgcHJl
ZmVycmVkTGFuZ3VhZ2VDb2RlID0gQCJlbiI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBy
ZWZlcnJlZExhbmd1YWdlQ29kZSA9IGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZShbbGFuZ3Vh
Z2VzIG9iamVjdEF0SW5kZXg6MF0pOworICAgIGlmICghdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3Vh
Z2VzKSB7CisgICAgICAgIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcyA9IFlFUzsKKyAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5jbGVhcigpOworCisgICAgICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3Vh
Z2VzKCkpOworICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQgPSBDRkFycmF5R2V0Q291bnQo
bGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAgaWYgKCFsYW5ndWFnZUNvdW50KQorICAgICAgICAg
ICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVuIik7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgbGFuZ3VhZ2VDb3VudDsgaSsrKSB7
CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYW5ndWFnZShBZG9wdENG
LCByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGxh
bmd1YWdlcy5nZXQoKSwgaSkpKTsKKyAgICAgICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLmFwcGVuZChjcmVhdGVIVFRQU3R5bGVMYW5ndWFnZUNvZGUoKE5TU3RyaW5nICopbGFuZ3Vh
Z2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAgIE5TU3Ry
aW5nICpjb2RlID0gW1twcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmV0YWluXSBhdXRvcmVsZWFzZV07
Ci0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29sIGxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXJBZGRlZDsKICAgICBpZiAoIWxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZCkgewpAQCAt
MTEyLDExICsxMTksMTIgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICAg
ICAgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkID0gdHJ1ZTsKICAgICB9CiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKLQotICAgIHJldHVybiBjb2RlOworICAgIAorICAgIHJldHVybiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHJldmlz
aW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMjEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8UUxvY2FsZT4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkK
K3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgUUxvY2FsZSBsb2NhbGU7
CiAgICAgcmV0dXJuIGxvY2FsZS5uYW1lKCkucmVwbGFjZShRTGF0aW4xQ2hhcignXycpLCBRTGF0
aW4xQ2hhcignLScpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw3ICs1MCw3IEBA
IHN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxlVHkKICAgICByZXR1cm4gbG9j
YWxlTmFtZTsKIH0KIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBT
dHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgc3RhdGljIFN0cmluZyBjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZTsKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHko
KSkKQEAgLTY2LDQgKzY3LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAg
ICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQo
cGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24g
MTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgpAQCAtNjcxLDQgKzY3Miwx
NCBAQCB2b2lkIEludGVybmFsczo6c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkCiAgICAgZG9jdW1l
bnQtPnNldHRpbmdzKCktPnNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAor
VmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpOworfQorCit2
b2lkIEludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgbGFuZ3VhZ2VzKQoreworICAgIFdlYkNvcmU6Om92ZXJyaWRlVXNlclByZWZlcnJlZExh
bmd1YWdlcyhsYW5ndWFnZXMpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpOwogCisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdl
cygpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGludGVybmFsc0lkOwogCiBw
cml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24g
MTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50
LCBpbiBmbG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNlcyhET01F
eGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBBcnJheSB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzOwogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
anMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNJ
bnRlcm5hbHMuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTSW50ZXJuYWxzOjp1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3sKKyAgICBJbnRl
cm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFscyo+KGltcGwoKSk7CisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW1wLT51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsK
KyAgICAKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcnJheTsKKyAgICBWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGFuZ3VhZ2VzLmVuZCgpOworICAgIGZvciAoVmVjdG9y
PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGFuZ3VhZ2VzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgYXJyYXkuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHN0cmluZ1RvVVN0
cmluZygqaXQpKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5KGV4ZWMsIGdsb2JhbE9iamVj
dCgpLCBhcnJheSk7Cit9CisKK3ZvaWQgSlNJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmICghaXNKU0Fy
cmF5KHZhbHVlKSkgeworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzOiBFeHBlY3RlZCBBcnJheSIpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7
CisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVlKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIGxhbmd1
YWdlID0gdXN0cmluZ1RvU3RyaW5nKGFycmF5LT5nZXRJbmRleChpKS50b1N0cmluZyhleGVjKSk7
CisgICAgICAgIGxhbmd1YWdlcy5hcHBlbmQobGFuZ3VhZ2UpOworICAgIH0KKyAgICAKKyAgICBJ
bnRlcm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFscyo+KGltcGwoKSk7CisgICAgaW1w
LT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1Y4SW50ZXJu
YWxzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1Y4
SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4SW50ZXJuYWxzLmgi
CisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZXJuYWxzOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSW50ZXJuYWxzKiBpbnRl
cm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW50ZXJuYWxzLT51c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB2ODo6
TnVsbCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6QXJyYXk6Ok5l
dyhsYW5ndWFnZXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbGFuZ3VhZ2VzLmVuZCgpOworICAgIGludCBpbmRleCA9IDA7CisgICAgZm9yIChWZWN0
b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxhbmd1YWdlcy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKQorICAgICAgICBhcnJheS0+U2V0KHY4OjpJbnRlZ2VyOjpOZXcoaW5k
ZXgrKyksIHRvVjgoaXRlci0+Z2V0KCkpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3ZvaWQg
VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKSB7Cisg
ICAgICAgIHRocm93RXJyb3IoInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFy
cmF5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4g
bGFuZ3VhZ2VzOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8
djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJh
eS0+TGVuZ3RoKCk7ICsraSkKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZCh0b1dlYkNvcmVTdHJp
bmcoYXJyYXktPkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyogaW50ZXJuYWxzID0gVjhJ
bnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludGVybmFscy0+c2V0VXNl
clByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMTcg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlk
ZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTog
T3ZlcnJpZGUgdGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1YWdlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogU2V0IHRoZSBsYW5ndWFnZXMgb3Zl
cnJpZGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IERlZmluZSBVc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzQ2hhbmdlZC4KKyAgICAgICAgCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBFeHBv
cnQgdGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOiBE
aXR0by4KKwogMjAxMi0wMS0xNyAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEltcGxlbWVudCBIVFRQIGF1dGhlbnRpY2F0aW9u
IFFNTCBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJl
dmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6bGFu
Z3VhZ2VDaGFuZ2VkKHZvaWQqIGMKIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKCkK
IHsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxhbmd1YWdl
Q2hhbmdlZChkZWZhdWx0TGFuZ3VhZ2UoKSkpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNz
YWdlczo6V2ViUHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZl
cnJlZExhbmd1YWdlcygpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtleWJvYXJkQWNj
ZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOTMsNiArMjkzLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6bGFuZ3VhZ2VDaGFuZ2VkKGNv
bnN0IFMKICAgICBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShsYW5ndWFnZSk7CiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGxhbmd1YWdlcykgY29uc3QKK3sKKyAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMobGFuZ3VhZ2VzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nl
c3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiB7CiAgICAgbV9m
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMDUxNTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhp
bmcoYm9vbCk7CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9v
bCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9p
ZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3Mg
ewogICAgIFNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29t
cGxleFRleHQpCiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9v
dGhpbmcpCiAgICAgTGFuZ3VhZ2VDaGFuZ2VkKFdURjo6U3RyaW5nIGxhbmd1YWdlKQorICAgIFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxXVEY6OlN0cmluZz4gbGFuZ3VhZ2Vz
KQogICAgIEZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCkKICNpZiBQTEFURk9STShXSU4pCiAgICAgU2V0U2hvdWxkUGFpbnROYXRpdmVD
b250cm9scyhib29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQCBFWFBPUlRTCiAgICAgICAg
ID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlND
QEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAy
QFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZT
dHJpbmdJbXBsQDZAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERv
Y3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVu
dE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVu
dE1hcmtlckAyQEBaCisgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2Vi
Q29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/
cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29u
dHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBW
UmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgpAQCAtMTgxLDYgKzE4Miw3
IEBAIEVYUE9SVFMKICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRA
V2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVu
dEBXZWJDb3JlQEBRQkVQQVZTZXR0aW5nc0AyQFhaCiAgICAgICAgID9zZXR0aW5nc0BGcmFtZUBX
ZWJDb3JlQEBRQkVQQVZTZXR0aW5nc0AyQFhaCisgICAgICAgID9zZXRVc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzQEpTSW50ZXJuYWxzQFdlYkNvcmVAQFFBRVhQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1
ZUA0QEBaCiAgICAgICAgID9zaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93
Um9vdEAyQFhaCiAgICAgICAgID9zdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNv
cmVAQFFCRUFCVlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlB
UEFWRG9jdW1lbnRAMUBWSlNWYWx1ZUBKU0NAQEBaCkBAIC0xOTAsNCArMTkyLDYgQEAgRVhQT1JU
UwogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
M0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VA
V2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAg
ICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNASlNJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FW
SlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUA0QEBaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgog
ICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRl
eDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNiArMTU3LDcgQEAgRVhQT1JUUwogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5n
SW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRI
YXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpT
U3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9s
YXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBA
UUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZA
QFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/b3Zl
cnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJp
bmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJF
UEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29y
ZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0
b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVs
ZW1lbnRAMkBISF9OQFoKQEAgLTE3NCw2ICsxNzUsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRT
dWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RG
QEBAWgogICAgICAgICA/c2V0dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NA
MkBYWgogICAgICAgICA/c2V0dGluZ3NARnJhbWVAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBY
WgorICAgICAgICA/c2V0VXNlclByZWZlcnJlZExhbmd1YWdlc0BKU0ludGVybmFsc0BXZWJDb3Jl
QEBRQUVYUEFWRXhlY1N0YXRlQEpTQ0BAVkpTVmFsdWVANEBAWgogICAgICAgICA/c2hhZG93Um9v
dEBFbGVtZW50QFdlYkNvcmVAQFFCRVBBVlNoYWRvd1Jvb3RAMkBYWgogICAgICAgICA/c3VnZ2Vz
dGVkVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWgog
ICAgICAgICA/dG9Eb2N1bWVudEBXZWJDb3JlQEBZQVBBVkRvY3VtZW50QDFAVkpTVmFsdWVASlND
QEBAWgpAQCAtMTgzLDQgKzE4NSw2IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQ
QVZSYW5nZUAxQEBaCiAgICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNW
YWx1ZUBKU0NAQEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzQEpTSW50ZXJuYWxzQFdlYkNvcmVAQFFCRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
NEBAWgorICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVj
dG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1MikKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTE3ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNz
IHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkIEpTSW50
ZXJuYWxzQ3VzdG9tLmNwcC4KKwogMjAxMi0wMS0xNiAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8
Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CiAKICAgICAgICAgR1RLKyBFV1MgbmVlZHMg
dG8gcnVuIHVwZGF0ZS13ZWJraXRndGstbGlicyBhZnRlciBhcHBseWluZyBhIHBhdGNoCkluZGV4
OiBUb29scy9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gMTA1MTUyKQorKysgVG9vbHMvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgbGliV2ViQ29yZUludGVybmFsc19sYV9TT1VSQ0VTID0gXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmggXAorCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxp
c3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaGFybmVzcy91c2VyLXByZWZlcnJl
ZC1sYW5ndWFnZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xNyAgUmFmYWVsIEJyYW5kYW8gIDxy
YWZhZWwubG9ib0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBDcmFzaCBpbiBm
YXN0L3RleHQvcmVnaW9uYWwtaW5kaWNhdG9yLXN5bW9ibHMuaHRtbApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3Vh
Z2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNz
L3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcm5hbHMudXNlclByZWZlcnJl
ZExhbmd1YWdlcyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0aGUgdXNlcidzIHByZWZlcnJl
ZCBsYW5ndWFnZXMuCisKK2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMg
YSBub24tZW1wdHkgYXJyYXk6IFBBU1MKK2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
IGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHBhc3NlZCB0byBpdDogUEFT
UwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVy
cmVkLWxhbmd1YWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5l
c3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NSBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3QobWVzc2FnZSwgc3VjY2VzcykKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAg
ICAgICAgICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICc6
ICcgKyAoc3VjY2VzcyA/ICdQQVNTJyA6ICdGQUlMJykpOworICAgICAgICAgICAgICAgIGxpLmFw
cGVuZENoaWxkKHRleHQpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb25zb2xlIikuYXBwZW5kQ2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHZhciBsYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlczsKKwor
ICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJl
dHVybnMgYSBub24tZW1wdHkgYXJyYXknLCBsYW5ndWFnZXMubGVuZ3RoKTsKKworICAgICAgICAg
ICAgICAgIGxhbmd1YWdlcy51bnNoaWZ0KCJmaXJzdC1sYW5ndWFnZSIpOworICAgICAgICAgICAg
ICAgIGxhbmd1YWdlcy5wdXNoKCJsYXN0LWxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAgaW50
ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgPSBsYW5ndWFnZXM7CisKKyAgICAgICAgICAg
ICAgICB2YXIgbmV3TGFuZ3VhZ2VzID0gaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
CisgICAgICAgICAgICAgICAgdmFyIHNhbWVDb250ZW50cyA9IG5ld0xhbmd1YWdlcy5sZW5ndGgg
PT0gbGFuZ3VhZ2VzLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAoc2FtZUNvbnRlbnRzKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3TGFuZ3VhZ2VzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3TGFuZ3VhZ2VzW2ld
ICE9IGxhbmd1YWdlc1tpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbWVDb250
ZW50cyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHRlc3QoJ2ludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzIGlzIG11dGFibGUsIGFuZCByZXR1cm5zIHRoZSBzYW1lIHZhbHVlIHBhc3NlZCB0byBpdCcs
IHNhbWVDb250ZW50cyk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8
cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdl
cyByZXR1cm5zIGEgbXV0YWJsZSBBcnJheSBvZiB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFn
ZXMuPC9wPgorICAgICAgICA8dWwgaWQ9ImNvbnNvbGUiPjwvdWw+CisgICAgPC9ib2R5PgorPC9o
dG1sPgo=
</data>
<flag name="commit-queue"
          id="123649"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122775</attachid>
            <date>2012-01-17 08:37:48 -0800</date>
            <delta_ts>2012-01-17 09:24:37 -0800</delta_ts>
            <desc>+symbols.filter</desc>
            <filename>language_prefs_patch_11.txt</filename>
            <type>text/plain</type>
            <size>41478</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisKIDIwMTItMDEt
MTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF0gQWRkIG1vcmUgZmlsZXMgdG8gcHJvamVjdC1maWxlcyBmb3IgZWFzaWVyIG5hdmln
YXRpb24gaW4gUXQgQ3JlYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjggQEAK
KzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOiBEaXR0by4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogSW5jbHVkZSBuZXcgZmls
ZXMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4K
KworICAgICAgICAqIHBsYXRmb3JtL0xhbmd1YWdlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6IE5ldywgcmV0dXJuIHRoZSBsYW5ndWFnZXMgb3Zl
cnJpZGUuCisgICAgICAgIChXZWJDb3JlOjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMp
OiBOZXcsIHNldCB0aGUgbGFuZ3VhZ2VzIG92ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6dXNl
clByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgcmV0dXJuIHRoZSBsYW5ndWFnZXMuCisgICAgICAg
ICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkv
TG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZv
cm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0
YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6
IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0
Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRm
b3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9MYW5ndWFnZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTog
UmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBs
YXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5v
dyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAg
ICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2Vz
RGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVzZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICBhcyBpbnZh
bGlkLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbW92ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVy
biB0aGUgbGlzdCBvZiB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZXMuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3Vh
Z2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisg
ICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHRlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3JlOjpKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHRlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXNBY2Nlc3NvckdldHRlcik6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZXJuYWxz
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JTZXR0ZXIpOiBOZXcuCisKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiB0aGUgcGxhdGZvcm0ncyB1c2VyIHBy
ZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIG92ZXJyaWRlIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxh
bmd1YWdlcy4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDogQWRkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMvCisKIDIwMTItMDEt
MTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAg
TGFyZ2UgU1ZHIHRleHQgbGF5b3V0IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gcjgxMTY4Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2ICs2NDIsNyBAQCBfX1pO
N1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBfX1pON1dlYkNvcmUyMmNyZWF0
ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKIF9fWk43V2ViQ29yZTIyZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19aTjdXZWJDb3JlMjJ1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
MUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3Vy
Y2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2ViQ29yZTIzY3JlYXRlRnJh
Z21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0w
RUVFCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVzRVJOM1dURjdIYXNoU2V0
SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRyYWl0c0lTMl9FRUVFCkBA
IC03MDIsNiArNzAzLDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZQogX19aTjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckViCiBfX1pON1dl
YkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2CiBfX1pON1dlYkNvcmUzMGNv
bnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNl
clByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUUKIF9f
Wk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pO
N1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKIF9fWk43
V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTYzNjYsOCArNjM2NiwxMCBAQAogICAgICAgICAgICd0ZXN0aW5n
L0ludGVybmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAnd2ViY29yZV90ZXN0X3N1cHBv
cnRfZmlsZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAg
ICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCisgICAgICAgICAg
ICAndGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rp
bmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9X
ZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuY3Bw
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtODg3OCw2ICs4ODc4LDcgQEAg
X19aTjdXZWJDb3JlMTlGbG9hdEFuaW1hdGlvblZhbHVlRDBFdgogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0xheWVyQ0EyMHVwZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZv
cm1DQUxheWVyMTBzZXRPcGFjaXR5RWYKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbkVQTlNfNUZyYW1lRWoKK19fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2
CiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmVM
MTF3cml0ZUxheWVyc0VSTlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFSZW5kZXJMYXllckVQUzJfUktO
U183SW50UmVjdEVpagogX19aTjdXZWJDb3JlTDV3cml0ZUVSTlNfMTBUZXh0U3RyZWFtRVJOU18x
MVJlbmRlckxheWVyRVJLTlNfN0ludFJlY3RFUzZfUzZfUzZfTlNfMTVMYXllclBhaW50UGhhc2VF
aWoKQEAgLTE2Mjg1LDYgKzE2Mjg2LDcgQEAgX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRy
b2xsZXIyOGNyZQogX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5n
RXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5MzFjb250ZXh0TWVu
dUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFn
U3RvcFNwZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMjdEZWZh
dWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2
CiBfX1pON1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYK
IF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Mzhjb250ZXh0TWVudUl0
ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDUxNTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyog
SlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxp
c3QuY3BwICovOyB9OwogCQkwNzA3NTZFMDE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tD
dWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJ
CTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUz
MDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEw
RUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpT
SW50ZXJuYWxzQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVF
NDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBs
YXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5
RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKQEAgLTY3NTEsNiArNjc1
Miw3IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAv
KiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcw
REQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyog
TWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0
ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjYzLDYgKzE0MjY1LDcgQEAKIAkJNDE4MTVD
MUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwICovLAogCQkJCTQxODE1QzFDMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVz
dFN1cHBvcnQuY3BwICovLAogCQkJCTQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3Jl
VGVzdFN1cHBvcnQuaCAqLywKIAkJCSk7CkBAIC0yNDM1NCw2ICsyNDM1Nyw3IEBACiAJCQkJNDE3
REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRl
cm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDExIEBAIFN0cmluZyBk
ZWZhdWx0TGFuZ3VhZ2UoKQogICAgIGlmICghb3ZlcnJpZGUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBvdmVycmlkZTsKIAotICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
KyAgICBpZiAobGFuZ3VhZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlc1swXTsK
KworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIG92ZXJyaWRlRGVmYXVsdExh
bmd1YWdlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCkBAIC03Niw0ICs4MCwyNCBAQCB2b2lkIG92
ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluCiAgICAgbGFuZ3VhZ2VPdmVycmlkZSgp
ID0gb3ZlcnJpZGU7CiB9CiAKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3Vh
Z2VzT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4s
IG92ZXJyaWRlLCAoKSk7CisgICAgcmV0dXJuIG92ZXJyaWRlOworfQorCit2b2lkIG92ZXJyaWRl
VXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUpCit7
CisgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworfQorICAgIAor
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0
cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAo
IW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworICAgIAorICAg
IHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcs
MjIgQEAKICNkZWZpbmUgTGFuZ3VhZ2VfaAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRl
ZmF1bHRMYW5ndWFnZSgpOwogdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJp
bmcmKTsKIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwordm9pZCBv
dmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwog
Ly8gVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVtIGxhbmd1
YWdlIGNoYW5nZXMgKHVubGVzcyBpdCdzIG92ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZhdWx0TGFu
Z3VhZ2UoKSkuCiB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24p
KHZvaWQqIGNvbnRleHQpOwogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNv
bnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiB2b2lkIHJlbW92ZUxhbmd1
YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1
bHRMYW5ndWFnZSgpOworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCk7CiB2b2lkIGxhbmd1YWdlRGlkQ2hhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVk
U3RyaW5nc0JsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8TG9jYWxp
emVSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01OSw3ICs2MCw3IEBAIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgp
CitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIFN0cmluZyBsYW5nID0g
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldExvY2FsZSgpLmNfc3RyKCk7
CiAgICAgLy8gZ2V0TG9jYWxlKCkgcmV0dXJucyBhIFBPU0lYIGxvY2FsZSB3aGljaCB1c2VzICdf
JyB0byBzZXBhcmF0ZSBsYW5ndWFnZSBhbmQgY291bnRyeS4KQEAgLTcxLDYgKzcyLDEzIEBAIFN0
cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGxhbmc7CiB9CiAKK1Zl
Y3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVj
dG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzOworfQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVs
dExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLCAoKSk7CiAg
ICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKQEAgLTQ0LDQgKzQ1LDEx
IEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVk
RGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgp
KTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VF
ZmwuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
TGFuZ3VhZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURl
ZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAg
IGNoYXIqIGxvY2FsZURlZmF1bHQgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIDApOwogCkBAIC01MCw0
ICs1MSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBT
dHJpbmcobG9jYWxlRGVmYXVsdCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExh
bmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1
YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHJldmlzaW9u
IDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHIuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zMiw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dl
dF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0
IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCiAv
LyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2NhbGVE
ZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKIApAQCAtNTMsNCArNTQsMTEgQEAg
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKG5vcm1h
bGl6ZWREZWZhdWx0LmdldCgpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3Vh
Z2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisgICAgCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAxMDUx
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDExICszMCwxMiBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqcHJl
ZmVycmVkTGFuZ3VhZ2VDb2RlOworc3RhdGljIEJPT0wgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3Vh
Z2VzOwogCiBAaW50ZXJmYWNlIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdCB7
CiB9CkBAIC00Niw4ICs0Nyw3IEBAICsgKHZvaWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2Vz
RGlkQ2gKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgW3ByZWZlcnJlZExh
bmd1YWdlQ29kZSByZWxlYXNlXTsKLSAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBuaWw7Cisg
ICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gTk87CiAKICAgICBsYW5ndWFnZURpZENo
YW5nZSgpOwogfQpAQCAtODUsMjMgKzg1LDMwIEBAIHN0YXRpYyBOU1N0cmluZyAqY3JlYXRlSFRU
UFN0eWxlTGFuZ3VhZ2UKICAgICByZXR1cm4gaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlOwogfQogCi1T
dHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1V
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3Rv
cjxTdHJpbmc+LCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLCAoKSk7CisKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAg
aWYgKCFwcmVmZXJyZWRMYW5ndWFnZUNvZGUpIHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc3luY2hyb25pemVdOwotICAgICAgICBOU0FycmF5ICpsYW5n
dWFnZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzdHJpbmdBcnJh
eUZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07Ci0gICAgICAgIGlmICghW2xhbmd1YWdlcyBjb3Vu
dF0pCi0gICAgICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBAImVuIjsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gY3JlYXRlSFRUUFN0eWxl
TGFuZ3VhZ2VDb2RlKFtsYW5ndWFnZXMgb2JqZWN0QXRJbmRleDowXSk7CisgICAgaWYgKCF1c2VD
YWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMpIHsKKyAgICAgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFu
Z3VhZ2VzID0gWUVTOworICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmNsZWFyKCk7CisK
KyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyhBZG9wdENGLCBDRkxvY2Fs
ZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1
YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4i
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBs
YW5ndWFnZUNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGxhbmd1YWdlKEFkb3B0Q0YsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOworICAgICAgICAgICAgICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29k
ZSgoTlNTdHJpbmcgKilsYW5ndWFnZS5nZXQoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9
CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmNvZGUgPSBbW3ByZWZlcnJlZExhbmd1YWdlQ29kZSBy
ZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQogI2lmICFQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJv
b2wgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkOwogICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VP
YnNlcnZlckFkZGVkKSB7CkBAIC0xMTIsMTEgKzExOSwxMiBAQCBTdHJpbmcgcGxhdGZvcm1EZWZh
dWx0TGFuZ3VhZ2UoKQogICAgICAgICBsYW5ndWFnZUNoYW5nZU9ic2VydmVyQWRkZWQgPSB0cnVl
OwogICAgIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0gICAgcmV0dXJuIGNvZGU7Cisg
ICAgCisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBWZWN0
b3I8U3RyaW5nPigpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZVF0LmNwcAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwyMSBAQAog
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZv
cm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsK
ICAgICBRTG9jYWxlIGxvY2FsZTsKICAgICByZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKFFM
YXRpbjFDaGFyKCdfJyksIFFMYXRpbjFDaGFyKCctJykpOwogfQogCitWZWN0b3I8U3RyaW5nPiBw
bGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQo
cGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFu
Z3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
TGFuZ3VhZ2UuaCIKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2Nh
bGVUeQogICAgIHJldHVybiBsb2NhbGVOYW1lOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBzdGF0
aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICghY29tcHV0ZWREZWZh
dWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAtNjYsNCArNjcsMTEgQEAgU3RyaW5nIHBsYXRmb3Jt
RGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9
CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7Cisg
ICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJI
VE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5v
ZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdl
LmgiCkBAIC02NzEsNCArNjcyLDE0IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQZXJUaWxlRHJhd2lu
Z0VuYWJsZWQKICAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdFbmFi
bGVkKGVuYWJsZWQpOwogfQogCitWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjp1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCit7CisgICAgV2ViQ29yZTo6b3Zl
cnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKERvY3VtZW50
KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogaW50ZXJuYWxzSWQ7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgbW9kdWxlIHdpbmRv
dyB7CiAKICAgICAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3Io
aW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGlu
IGxvbmcgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIFtDdXN0
b21dIEFycmF5IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAgICAgfTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFscy5oIgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
VmFsdWUgSlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVj
KSBjb25zdAoreworICAgIEludGVybmFscyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4o
aW1wbCgpKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMgPSBpbXAtPnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5
OworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5k
KCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYW5ndWFn
ZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcnJheS5hcHBlbmQoanNTdHJp
bmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKCppdCkpKTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJy
YXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGFycmF5KTsKK30KKwordm9pZCBKU0ludGVybmFsczo6
c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhl
YywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4
cGVjdGVkIEFycmF5IikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFZlY3Rv
cjxTdHJpbmc+IGxhbmd1YWdlczsKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSB1c3RyaW5nVG9TdHJpbmcoYXJyYXktPmdldEluZGV4
KGkpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZChsYW5ndWFnZSk7
CisgICAgfQorICAgIAorICAgIEludGVybmFscyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxz
Kj4oaW1wbCgpKTsKKyAgICBpbXAtPnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2Vz
KTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhJbnRlcm5hbHMuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUg
IlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICBJbnRlcm5hbHMqIGludGVybmFscyA9IFY4SW50ZXJuYWxzOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMgPSBpbnRlcm5hbHMt
PnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBh
cnJheSA9IHY4OjpBcnJheTo6TmV3KGxhbmd1YWdlcy5zaXplKCkpOworICAgIFZlY3RvcjxTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7CisgICAgaW50IGluZGV4
ID0gMDsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbGFu
Z3VhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGFycmF5LT5TZXQo
djg6OkludGVnZXI6Ok5ldyhpbmRleCsrKSwgdG9WOCgqaXRlcikpOworICAgIHJldHVybiBhcnJh
eTsKK30KKwordm9pZCBWOEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29y
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIXZhbHVlLT5J
c0FycmF5KCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcigic2V0VXNlclByZWZlcnJlZExhbmd1YWdl
czogRXhwZWN0ZWQgQXJyYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBW
ZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJh
eSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHZhbHVlKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFycmF5LT5MZW5ndGgoKTsgKytpKQorICAgICAgICBsYW5ndWFnZXMuYXBwZW5k
KHRvV2ViQ29yZVN0cmluZyhhcnJheS0+R2V0KGkpKSk7CisgICAgCisgICAgSW50ZXJuYWxzKiBp
bnRlcm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50
ZXJuYWxzLT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUxNTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBA
QAorMjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3Vh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEz
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpsYW5n
dWFnZUNoYW5nZWQpOiBPdmVycmlkZSB0aGUgV2ViUHJvY2VzcyB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQpOiBTZXQgdGhl
IGxhbmd1YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoK
KworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjogRGVmaW5lIFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkLgorICAgICAgICAKKyAgICAgICAgKiB3aW4vV2Vi
S2l0Mi5kZWY6IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiB3aW4vV2ViS2l0
MkNGTGl0ZS5kZWY6IERpdHRvLgorCiAyMDEyLTAxLTE3ICBBbGV4YW5kZXIgRsOmcsO4eSAgPGFs
ZXhhbmRlci5mYWVyb3lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gSW1wbGVtZW50IEhUVFAg
YXV0aGVudGljYXRpb24gUU1MIEFQSQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDcgQEAgdm9pZCBX
ZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5nZWQodm9pZCogYwogdm9pZCBXZWJDb250ZXh0OjpsYW5n
dWFnZUNoYW5nZWQoKQogewogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6TGFuZ3VhZ2VDaGFuZ2VkKGRlZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgc2VuZFRvQWxs
UHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0Ojpm
dWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlz
aW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Myw2ICsyOTMsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpsYW5n
dWFnZUNoYW5nZWQoY29uc3QgUwogICAgIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGxhbmd1YWdl
KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKSBjb25zdAoreworICAgIG92ZXJyaWRlVXNl
clByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorCiB2b2lkIFdlYlByb2Nlc3M6OmZ1
bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCkKIHsKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nl
c3NFbmFibGVkOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJl
dmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxk
VXNlRm9udFNtb290aGluZyhib29sKTsKICAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBT
dHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NN
b2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogI2lmIFBMQVRGT1JN
KFdJTikKICAgICB2b2lkIHNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyB7CiAgICAgU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9v
bCBhbHdheXNVc2VDb21wbGV4VGV4dCkKICAgICBTZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJv
b2wgdXNlRm9udFNtb290aGluZykKICAgICBMYW5ndWFnZUNoYW5nZWQoV1RGOjpTdHJpbmcgbGFu
Z3VhZ2UpCisgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFdURjo6U3Ry
aW5nPiBsYW5ndWFnZXMpCiAgICAgRnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBTZXRTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9scykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw3IEBAIEVY
UE9SVFMKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpT
Q0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBWPyRXZWFr
QFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQQVZTdHJp
bmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NA
QEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9BVj8kVmVj
dG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJAVk1hcmtl
clR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP292ZXJyaWRlVXNlclByZWZlcnJl
ZExhbmd1YWdlc0BXZWJDb3JlQEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZA
QEBaCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAg
ICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAg
ICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FW
PyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCkBA
IC0xODEsNiArMTgyLDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0U3VnZ2VzdGVkVmFsdWVASFRN
TElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3Nl
dHRpbmdzQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFoKICAgICAgICAgP3Nl
dHRpbmdzQEZyYW1lQFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFoKKyAgICAgICAgP3NldFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNASlNJbnRlcm5hbHNAV2ViQ29yZUBAUUFFWFBBVkV4ZWNTdGF0
ZUBKU0NAQFZKU1ZhbHVlQDRAQFoKICAgICAgICAgP3NoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3Jl
QEBRQkVQQVZTaGFkb3dSb290QDJAWFoKICAgICAgICAgP3N1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1
dEVsZW1lbnRAV2ViQ29yZUBAUUJFQUJWU3RyaW5nQFdURkBAWFoKICAgICAgICAgP3RvRG9jdW1l
bnRAV2ViQ29yZUBAWUFQQVZEb2N1bWVudEAxQFZKU1ZhbHVlQEpTQ0BAQFoKQEAgLTE5MCw0ICsx
OTIsNiBAQCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAg
ICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgogICAg
ICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNv
cmVAQFFBRVhYWgorICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BKU0ludGVybmFsc0BX
ZWJDb3JlQEBRQkU/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDRAQFoKKyAgICAgICAgP3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBA
JDBBQEBXVEZAQFhaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1l
Vmlld0AyQFhaCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCShyZXZpc2lv
biAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHdvcmtp
bmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc1N0cmluZ1Ns
b3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFz
aE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3Ry
aW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFp
dHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZA
QFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2Vy
Q29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJD
b3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBa
CisgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFYQUJW
PyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/cGFnZUBEb2N1bWVu
dEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZy
YW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29y
ZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgpAQCAtMTc0LDYgKzE3NSw3IEBAIEVYUE9SVFMK
ICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFF
WEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZTZXR0aW5nc0AyQFhaCiAgICAgICAgID9zZXR0aW5nc0BGcmFtZUBXZWJDb3JlQEBRQkVQ
QVZTZXR0aW5nc0AyQFhaCisgICAgICAgID9zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQEpTSW50
ZXJuYWxzQFdlYkNvcmVAQFFBRVhQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA0QEBaCiAgICAg
ICAgID9zaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93Um9vdEAyQFhaCiAg
ICAgICAgID9zdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFCVlN0
cmluZ0BXVEZAQFhaCiAgICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlBUEFWRG9jdW1lbnRA
MUBWSlNWYWx1ZUBKU0NAQEBaCkBAIC0xODMsNCArMTg1LDYgQEAgRVhQT1JUUwogICAgICAgICA/
dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUds
b2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQ
QVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3VzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNASlNJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWSlNWYWx1ZUBKU0NA
QFBBVkV4ZWNTdGF0ZUA0QEBaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNv
cmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dmll
d0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRleDogU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw5IEBAIF9aTjdXZWJDb3JlMjBO
b2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7CiBfWk43V2ViQ29yZTIwU2hhZG93Q29udGVudEVsZW1l
bnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwogX1pON1dlYkNvcmUyMWdldENhY2hlZERPTVN0cnVj
dHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNzSW5mb0U7CiBfWk43V2Vi
Q29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFajsKK19aTjdXZWJDb3Jl
MjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXY7CiBfWk43V2ViQ29yZTI0RG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3VtZW50TWFya2VyMTFNYXJr
ZXJUeXBlc0U7CitfWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJL
TjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTEwcHV0
VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmllckVOUzFfN0pTVmFsdWVF
Uk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTZKU05vZGUyMHZpc2l0Q2hpbGRy
ZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFOwogX1pON1dlYkNvcmU2SlNOb2RlNnNfaW5m
b0U7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMiBAQAorMjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVm
ZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBKU0ludGVybmFsc0N1c3RvbS5jcHAuCisKIDIw
MTItMDEtMTYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJv
cmEuY29tPgogCiAgICAgICAgIEdUSysgRVdTIG5lZWRzIHRvIHJ1biB1cGRhdGUtd2Via2l0Z3Rr
LWxpYnMgYWZ0ZXIgYXBwbHlpbmcgYSBwYXRjaApJbmRleDogVG9vbHMvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNTE1MikKKysr
IFRvb2xzL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGxp
YldlYkNvcmVJbnRlcm5hbHNfbGFfU09VUkNFUyA9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdyYXBwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
dGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5oCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1MikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTAxLTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIFByb3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFn
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbDogQWRkZWQu
CisKIDIwMTItMDEtMTcgIFJhZmFlbCBCcmFuZGFvICA8cmFmYWVsLmxvYm9Ab3BlbmJvc3NhLm9y
Zz4KIAogICAgICAgICBbUXRdW1dLMl0gQ3Jhc2ggaW4gZmFzdC90ZXh0L3JlZ2lvbmFsLWluZGlj
YXRvci1zeW1vYmxzLmh0bWwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXBy
ZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFn
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG11
dGFibGUgQXJyYXkgb2YgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgorCitpbnRlcm5h
bHMudXNlclByZWZlcnJlZExhbmd1YWdlcyByZXR1cm5zIGEgbm9uLWVtcHR5IGFycmF5OiBQQVNT
CitpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyBpcyBtdXRhYmxlLCBhbmQgcmV0dXJu
cyB0aGUgc2FtZSB2YWx1ZSBwYXNzZWQgdG8gaXQ6IFBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1
YWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KG1lc3Nh
Z2UsIHN1Y2Nlc3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnOiAnICsgKHN1Y2Nlc3MgPyAnUEFTUycg
OiAnRkFJTCcpKTsKKyAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxk
KGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgbGFuZ3VhZ2VzID0gaW50
ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisKKyAgICAgICAgICAgICAgICB0ZXN0KCdp
bnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyByZXR1cm5zIGEgbm9uLWVtcHR5IGFycmF5
JywgbGFuZ3VhZ2VzLmxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBsYW5ndWFnZXMudW5zaGlm
dCgiZmlyc3QtbGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICBsYW5ndWFnZXMucHVzaCgibGFz
dC1sYW5ndWFnZSIpOworICAgICAgICAgICAgICAgIGludGVybmFscy51c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzID0gbGFuZ3VhZ2VzOworCisgICAgICAgICAgICAgICAgdmFyIG5ld0xhbmd1YWdlcyA9
IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgICAgICAgICAgICAgIHZhciBz
YW1lQ29udGVudHMgPSBuZXdMYW5ndWFnZXMubGVuZ3RoID09IGxhbmd1YWdlcy5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgaWYgKHNhbWVDb250ZW50cykgeworICAgICAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IG5ld0xhbmd1YWdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG5ld0xhbmd1YWdlc1tpXSAhPSBsYW5ndWFnZXNbaV0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1lQ29udGVudHMgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0
ZXN0KCdpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyBpcyBtdXRhYmxlLCBhbmQgcmV0
dXJucyB0aGUgc2FtZSB2YWx1ZSBwYXNzZWQgdG8gaXQnLCBzYW1lQ29udGVudHMpOworICAgICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICAgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG11dGFibGUgQXJy
YXkgb2YgdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2VzLjwvcD4KKyAgICAgICAgPHVsIGlk
PSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="commit-queue"
          id="123654"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122777</attachid>
            <date>2012-01-17 09:24:37 -0800</date>
            <delta_ts>2012-01-17 10:39:03 -0800</delta_ts>
            <desc>Add new files to Target.pri (thanks Ossy!), fix typo in custom V8 code.</desc>
            <filename>language_prefs_patch_12.txt</filename>
            <type>text/plain</type>
            <size>42238</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisKIDIwMTItMDEt
MTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF0gQWRkIG1vcmUgZmlsZXMgdG8gcHJvamVjdC1maWxlcyBmb3IgZWFzaWVyIG5hdmln
YXRpb24gaW4gUXQgQ3JlYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjkgQEAK
KzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOiBEaXR0by4KKworICAgICAgICAqIFRhcmdldC5wcmk6IEluY2x1ZGUgbmV3IGZpbGVz
LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL0xhbmd1
YWdlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSk6
IE5ldywgcmV0dXJuIHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3JlOjpv
dmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHNldCB0aGUgbGFuZ3VhZ2VzIG92
ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywg
cmV0dXJuIHRoZSBsYW5ndWFnZXMuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBw
bGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBs
YXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZv
cm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0
YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6
IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVs
dExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1YWdl
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZy
b20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3Jl
OjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAgICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2
ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVzZXIg
bGFuZ3VhZ2VzCisgICAgICAgICAgICBhcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1MYW5ndWFnZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiB0aGUgbGlzdCBvZiB1c2VyIHByZWZlcnJl
ZCBsYW5ndWFnZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTGFu
Z3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFt
ZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdl
YkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAq
IHRlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
bnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisgICAgICAgIChXZWJDb3Jl
OjpKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAg
ICAqIHRlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcik6IE5ldy4K
KyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNj
ZXNzb3JTZXR0ZXIpOiBOZXcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcs
IHJldHVybiB0aGUgcGxhdGZvcm0ncyB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIG92
ZXJyaWRlIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkIHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMvCisKIDIwMTItMDEtMTcgIE5pa29sYXMgWmltbWVybWFubiAgPG56
aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTGFyZ2UgU1ZHIHRleHQgbGF5b3V0IHBlcmZv
cm1hbmNlIHJlZ3Jlc3Npb24gaW4gcjgxMTY4CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEw
NTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIy
NSw2ICsyMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25T
eW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5jcHAgXAorICAgICAgICB0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcCBc
CiAgICAgICAgIHRlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAogfSBlbHNlIHsKICAg
ICBTT1VSQ0VTICs9IFwKQEAgLTM4Myw2ICszODQsNyBAQCB2OCB7CiAgICAgICAgIGJyaWRnZS9y
dW50aW1lX21ldGhvZC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVudGltZV9vYmplY3QuY3BwIFwK
ICAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgXAorICAgICAgICB0ZXN0aW5nL2pzL0pT
SW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBw
b3J0LmNwcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA1MTUyKQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0Miw2
ICs2NDIsNyBAQCBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBfX1pO
N1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0cmlu
Z0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKIF9f
Wk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19aTjdX
ZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50aWFs
RWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43V2Vi
Q29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZlY3Rv
cklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29raWVz
RVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFzaFRy
YWl0c0lTMl9FRUVFCkBAIC03MDIsNiArNzAzLDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJhY3Rl
clNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdD
b2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2CiBf
X1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dlYkNv
cmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0
cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2
c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzNjYsOCArNjM2NiwxMCBAQAogICAg
ICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAnd2Vi
Y29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9WOElu
dGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQu
aCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVzdGlu
Zy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtODg3
OCw2ICs4ODc4LDcgQEAgX19aTjdXZWJDb3JlMTlGbG9hdEFuaW1hdGlvblZhbHVlRDBFdgogX19a
TjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMHVwZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9fWk43
V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMTBzZXRPcGFjaXR5RWYKIF9fWk43V2ViQ29yZTIyZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKK19fWk43V2ViQ29yZTIydXNlclByZWZl
cnJlZExhbmd1YWdlc0V2CiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJhbWVF
CiBfX1pON1dlYkNvcmVMMTF3cml0ZUxheWVyc0VSTlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFSZW5k
ZXJMYXllckVQUzJfUktOU183SW50UmVjdEVpagogX19aTjdXZWJDb3JlTDV3cml0ZUVSTlNfMTBU
ZXh0U3RyZWFtRVJOU18xMVJlbmRlckxheWVyRVJLTlNfN0ludFJlY3RFUzZfUzZfUzZfTlNfMTVM
YXllclBhaW50UGhhc2VFaWoKQEAgLTE2Mjg1LDYgKzE2Mjg2LDcgQEAgX19aTjdXZWJDb3JlMjFD
b250ZXh0TWVudUNvbnRyb2xsZXIyOGNyZQogX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1U
YWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTMwY29u
dGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQogX19a
TjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzMGNvbnRleHRNZW51SXRlbVRh
Z1N0b3BTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdE
aXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5
Mzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQkwNzA3NTZERjE0MjM5
QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBK
U1RleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwogCQkwNzA3NTZFMDE0MjM5QjRFMDA0MTQxNjEg
LyogSlNUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVM
aXN0LmggKi87IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5
U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9Owor
CQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMzBDQkIxNEMxMEVE
OTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDcyQzhCMTExMzFD
NTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3
MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJ
MDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRB
MjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRl
eHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsK
QEAgLTY3NTEsNiArNjc1Miw3IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1Rl
eHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0
VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAy
NURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5h
bHNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBD
NUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENh
Y2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRU
ZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjYzLDYgKzE0MjY1
LDcgQEAKIAkJNDE4MTVDMUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIg
LyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovLAogCQkJCTQxODE1QzFDMTM4MzE5ODMwMDU3QUFB
NCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwICovLAogCQkJCTQxODE1QzFEMTM4MzE5ODMwMDU3
QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLywKIAkJCSk7CkBAIC0yNDM1NCw2ICsyNDM1
Nyw3IEBACiAJCQkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNv
cmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzIzMENCQzE0QzEwRUQ5MDBG
NkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDExIEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogICAgIGlmICghb3ZlcnJpZGUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBvdmVycmlkZTsKIAotICAgIHJldHVybiBwbGF0Zm9ybURlZmF1
bHRMYW5ndWFnZSgpOworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IGxhbmd1YWdlc1swXTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIG92
ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUpCkBAIC03Niw0ICs4
MCwyNCBAQCB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluCiAgICAgbGFu
Z3VhZ2VPdmVycmlkZSgpID0gb3ZlcnJpZGU7CiB9CiAKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYg
cHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
VmVjdG9yPFN0cmluZz4sIG92ZXJyaWRlLCAoKSk7CisgICAgcmV0dXJuIG92ZXJyaWRlOworfQor
Cit2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3ZlcnJpZGUpCit7CisgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJy
aWRlOworfQorICAgIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7
CisgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJp
ZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJy
aWRlOworICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxMDUx
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxOCArMjcsMjIgQEAKICNkZWZpbmUgTGFuZ3VhZ2VfaAogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpOwogdm9pZCBvdmVycmlkZURlZmF1bHRMYW5n
dWFnZShjb25zdCBTdHJpbmcmKTsKIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlcygpOwordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mKTsKKwogLy8gVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdo
ZW4gc3lzdGVtIGxhbmd1YWdlIGNoYW5nZXMgKHVubGVzcyBpdCdzIG92ZXJyaWRkZW4gYnkgb3Zl
cnJpZGVEZWZhdWx0TGFuZ3VhZ2UoKSkuCiB0eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9i
c2VydmVyRnVuY3Rpb24pKHZvaWQqIGNvbnRleHQpOwogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9i
c2VydmVyKHZvaWQqIGNvbnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiB2
b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVN0cmlu
ZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB2b2lkIGxhbmd1YWdlRGlkQ2hhbmdlKCk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0Js
YWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFj
a0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8TG9jYWxpemVSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw3ICs2MCw3IEBAIFN0cmluZyBpbnB1dEVsZW1l
bnRBbHRUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURl
ZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAg
IFN0cmluZyBsYW5nID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldExv
Y2FsZSgpLmNfc3RyKCk7CiAgICAgLy8gZ2V0TG9jYWxlKCkgcmV0dXJucyBhIFBPU0lYIGxvY2Fs
ZSB3aGljaCB1c2VzICdfJyB0byBzZXBhcmF0ZSBsYW5ndWFnZSBhbmQgY291bnRyeS4KQEAgLTcx
LDYgKzcyLDEzIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJu
IGxhbmc7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJl
dHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAko
cmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFu
Z3VhZ2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEwICszMywxMSBAQAogCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIK
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5n
IHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFn
ZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbXB1dGVkRGVmYXVsdExh
bmd1YWdlLCAoKSk7CiAgICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkK
QEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAg
cmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0
Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxh
dGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0xhbmd1YWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCAr
MzIsMTEgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAjaW5jbHVkZSA8bG9jYWxl
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0
cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFu
Z3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQgPSBzZXRsb2NhbGUoTENfQ1RZUEUs
IDApOwogCkBAIC01MCw0ICs1MSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KQogICAgIHJldHVybiBTdHJpbmcobG9jYWxlRGVmYXVsdCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+
IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVu
ZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0
ay5jcHAJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9M
YW5ndWFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1
ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxn
bGliLmg+CkBAIC0zMiw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFVzaW5nIHBh
bmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNl
CiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBz
byBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1TdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAg
ICBjaGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKIApAQCAt
NTMsNCArNTQsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1
cm4gU3RyaW5nKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4g
cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5k
KHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2Uu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1t
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3Vh
Z2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMiBAQAogI2ltcG9ydCAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRp
YyBOU1N0cmluZyAqcHJlZmVycmVkTGFuZ3VhZ2VDb2RlOworc3RhdGljIEJPT0wgdXNlQ2FjaGVk
UHJlZmVycmVkTGFuZ3VhZ2VzOwogCiBAaW50ZXJmYWNlIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2
ZXIgOiBOU09iamVjdCB7CiB9CkBAIC00Niw4ICs0Nyw3IEBAICsgKHZvaWQpX3dlYmtpdF9sYW5n
dWFnZVByZWZlcmVuY2VzRGlkQ2gKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZWxlYXNlXTsKLSAgICBwcmVmZXJyZWRMYW5ndWFn
ZUNvZGUgPSBuaWw7CisgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gTk87CiAKICAg
ICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpAQCAtODUsMjMgKzg1LDMwIEBAIHN0YXRpYyBOU1N0
cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2UKICAgICByZXR1cm4gaHR0cFN0eWxlTGFuZ3Vh
Z2VDb2RlOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorVmVjdG9yPFN0
cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLCAoKSk7CisK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogCi0gICAgaWYgKCFwcmVmZXJyZWRMYW5ndWFnZUNvZGUpIHsKLSAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3luY2hyb25pemVdOwotICAgICAg
ICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzdHJpbmdBcnJheUZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07Ci0gICAgICAgIGlmICgh
W2xhbmd1YWdlcyBjb3VudF0pCi0gICAgICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBA
ImVuIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0g
Y3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2RlKFtsYW5ndWFnZXMgb2JqZWN0QXRJbmRleDowXSk7
CisgICAgaWYgKCF1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMpIHsKKyAgICAgICAgdXNlQ2Fj
aGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gWUVTOworICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLmNsZWFyKCk7CisKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyhB
ZG9wdENGLCBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7CisgICAgICAgIENGSW5k
ZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOworICAg
ICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0Q0YsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOwor
ICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKGNyZWF0ZUhUVFBT
dHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilsYW5ndWFnZS5nZXQoKSkpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmNvZGUgPSBbW3ByZWZlcnJl
ZExhbmd1YWdlQ29kZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQogI2lmICFQTEFURk9STShJT1Mp
CiAgICAgc3RhdGljIGJvb2wgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkOwogICAgIGlmICgh
bGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkKSB7CkBAIC0xMTIsMTEgKzExOSwxMiBAQCBTdHJp
bmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgICAgICBsYW5ndWFnZUNoYW5nZU9ic2Vy
dmVyQWRkZWQgPSB0cnVlOwogICAgIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0gICAg
cmV0dXJuIGNvZGU7CisgICAgCisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKwor
ICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDEzICsyOSwyMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxR
TG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9y
bUxhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxlIGxvY2FsZTsKICAgICByZXR1cm4gbG9jYWxlLm5h
bWUoKS5yZXBsYWNlKFFMYXRpbjFDaGFyKCdfJyksIFFMYXRpbjFDaGFyKCctJykpOwogfQogCitW
ZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZl
Y3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExh
bmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0xhbmd1YWdlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJ
bmZvKExDVFlQRSBsb2NhbGVUeQogICAgIHJldHVybiBsb2NhbGVOYW1lOwogfQogCi1TdHJpbmcg
cGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdl
KCkKIHsKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlm
ICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAtNjYsNCArNjcsMTEgQEAg
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gY29tcHV0ZWREZWZh
dWx0TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExh
bmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsK
KyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOwor
ICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJhbmdlLmgiCkBAIC02NzEsNCArNjcyLDE0IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQKICAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0UGVy
VGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCitWZWN0b3I8U3RyaW5nPiBJbnRlcm5h
bHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3Jl
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCit7Cisg
ICAgV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE3LDYgKzExNyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdF
bmFibGVkKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBW
ZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKICAgICBz
dGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDgg
QEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKGluIERv
Y3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRQ
YWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlRmFjdG9y
LCBpbiBsb25nIHgsIGluIGxvbmcgeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAg
YXR0cmlidXRlIFtDdXN0b21dIEFycmF5IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAgICAgfTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1
c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50
ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFscy5oIgorCisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0pTVmFsdWUgSlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEludGVybmFscyogaW1wID0gc3RhdGljX2Nh
c3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFn
ZXMgPSBpbXAtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAorICAgIE1hcmtlZEFyZ3Vt
ZW50QnVmZmVyIGFycmF5OworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQg
PSBsYW5ndWFnZXMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBsYW5ndWFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcnJh
eS5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKCppdCkpKTsKKyAgICByZXR1
cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGFycmF5KTsKK30KKwordm9p
ZCBKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKSB7CisgICAgICAg
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgInNldFVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5IikpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKKyAgICBKU0FycmF5KiBhcnJheSA9
IGFzQXJyYXkodmFsdWUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVu
Z3RoKCk7ICsraSkgeworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSB1c3RyaW5nVG9TdHJpbmco
YXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFw
cGVuZChsYW5ndWFnZSk7CisgICAgfQorICAgIAorICAgIEludGVybmFscyogaW1wID0gc3RhdGlj
X2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBpbXAtPnNldFVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMobGFuZ3VhZ2VzKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9WOEludGVybmFsc0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbnRlcm5hbHMuaCIKKworI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nl
c3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBJbnRlcm5hbHMqIGludGVybmFscyA9IFY4SW50ZXJuYWxzOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFn
ZXMgPSBpbnRlcm5hbHMtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3Vh
Z2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisKKyAgICB2ODo6TG9j
YWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KGxhbmd1YWdlcy5zaXplKCkpOwor
ICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7
CisgICAgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdGVyID0gbGFuZ3VhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAg
ICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpbmRleCsrKSwgdjhTdHJpbmcoKml0ZXIp
KTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3ZvaWQgVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKSB7CisgICAgICAgIHRocm93RXJyb3IoInNldFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5Iik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOworCisgICAgdjg6Okxv
Y2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+TGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgbGFuZ3VhZ2VzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcoYXJyYXktPkdldChpKSkpOworICAg
IAorICAgIEludGVybmFscyogaW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIGludGVybmFscy0+c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5n
dWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qg
b2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTogT3ZlcnJpZGUgdGhlIFdlYlByb2Nlc3Mg
dXNlclByZWZlcnJlZExhbmd1YWdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNDaGFuZ2VkKTogU2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46IERlZmluZSBVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZC4KKyAgICAgICAg
CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisg
ICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wMS0xNyAgQWxl
eGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95QG5va2lhLmNvbT4KIAogICAgICAgICBb
UXRdIEltcGxlbWVudCBIVFRQIGF1dGhlbnRpY2F0aW9uIFFNTCBBUEkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMy
LDYgKzIzMiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGMKIHZv
aWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKICAgICBzZW5kVG9BbGxQcm9jZXNz
ZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxhbmd1YWdlQ2hhbmdlZChkZWZhdWx0TGFuZ3VhZ2Uo
KSkpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6VXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1YWdlcygpKSk7CiB9CiAK
IHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxs
S2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNiArMjkzLDExIEBAIHZv
aWQgV2ViUHJvY2Vzczo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFMKICAgICBvdmVycmlkZURlZmF1
bHRMYW5ndWFnZShsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6dXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykgY29uc3QK
K3sKKyAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKwog
dm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxL
ZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiB7CiAgICAgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
ID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsK
ICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7CiAgICAgdm9pZCBsYW5n
dWFnZUNoYW5nZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZvaWQg
ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFi
bGVkKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNv
bnRyb2xzKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2
ICs0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNldEFsd2F5c1VzZXNDb21w
bGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiAgICAgU2V0U2hvdWxk
VXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9vdGhpbmcpCiAgICAgTGFuZ3VhZ2VDaGFu
Z2VkKFdURjo6U3RyaW5nIGxhbmd1YWdlKQorICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFu
Z2VkKFZlY3RvcjxXVEY6OlN0cmluZz4gbGFuZ3VhZ2VzKQogICAgIEZ1bGxLZXlib2FyZEFjY2Vz
c01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgU2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhib29sIHNob3VsZFBhaW50
TmF0aXZlQ29udHJvbHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCShyZXZpc2lvbiAxMDUx
NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAg
LTE2NCw2ICsxNjQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNv
cmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJp
bmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/
JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BW
SlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZAQFoKICAgICAgICAg
P2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3Jl
QEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBX
ZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdU
RkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9v
dmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0
cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJD
b3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVy
YXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFW
RWxlbWVudEAyQEhIX05AWgpAQCAtMTgxLDYgKzE4Miw3IEBAIEVYUE9SVFMKICAgICAgICAgP3Nl
dFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BX
VEZAQEBaCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZTZXR0aW5n
c0AyQFhaCiAgICAgICAgID9zZXR0aW5nc0BGcmFtZUBXZWJDb3JlQEBRQkVQQVZTZXR0aW5nc0Ay
QFhaCisgICAgICAgID9zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQEpTSW50ZXJuYWxzQFdlYkNv
cmVAQFFBRVhQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA0QEBaCiAgICAgICAgID9zaGFkb3dS
b290QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93Um9vdEAyQFhaCiAgICAgICAgID9zdWdn
ZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZAQFha
CiAgICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlBUEFWRG9jdW1lbnRAMUBWSlNWYWx1ZUBK
U0NAQEBaCkBAIC0xOTAsNCArMTkyLDYgQEAgRVhQT1JUUwogICAgICAgICA/dG9KU0BXZWJDb3Jl
QEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAx
QFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZK
U1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNo
ZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5n
dWFnZXNASlNJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUA0QEBaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRW
ZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBX
ZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgRVhQT1JUUwog
ICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZF
eGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3Ry
aW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxA
V1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdU
RkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vy
c0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFW
RG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNA
RG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAg
ICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9w
YWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5n
ZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NS
ZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKQEAgLTE3NCw2
ICsxNzUsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRTdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRF
bGVtZW50QFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/c2V0dGluZ3NA
RG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgogICAgICAgICA/c2V0dGluZ3NA
RnJhbWVAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgorICAgICAgICA/c2V0VXNlclByZWZl
cnJlZExhbmd1YWdlc0BKU0ludGVybmFsc0BXZWJDb3JlQEBRQUVYUEFWRXhlY1N0YXRlQEpTQ0BA
VkpTVmFsdWVANEBAWgogICAgICAgICA/c2hhZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFCRVBB
VlNoYWRvd1Jvb3RAMkBYWgogICAgICAgICA/c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxlbWVu
dEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/dG9Eb2N1bWVudEBXZWJD
b3JlQEBZQVBBVkRvY3VtZW50QDFAVkpTVmFsdWVASlNDQEBAWgpAQCAtMTgzLDQgKzE4NSw2IEBA
IEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhl
Y1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5nZUAxQEBaCiAgICAgICAgID90
b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID91
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFF
WFhaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQEpTSW50ZXJuYWxzQFdlYkNvcmVA
QFFCRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBAWgorICAgICAgICA/dXNlclByZWZl
cnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdU
RkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3QDJA
WFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTA1MTUyKQorKysgU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYs
OSBAQCBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2OwogX1pON1dlYkNvcmUy
MFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3Jl
MjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlD
bGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzdFbGVt
ZW50RWo7CitfWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2OwogX1pON1dlYkNv
cmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTRE
b2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFOworX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUU7CiBfWk43
V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50
aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU2
SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdX
ZWJDb3JlNkpTTm9kZTZzX2luZm9FOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8g
dXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgSlNJbnRlcm5h
bHNDdXN0b20uY3BwLgorCiAyMDEyLTAxLTE2ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0
YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBHVEsrIEVXUyBuZWVkcyB0byBy
dW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGFmdGVyIGFwcGx5aW5nIGEgcGF0Y2gKSW5kZXg6IFRv
b2xzL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiAxMDUxNTIpCisrKyBUb29scy9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQCBsaWJXZWJDb3JlSW50ZXJuYWxzX2xhX1NPVVJDRVMgPSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaCBcCisJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAogCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJs
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBv
ZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxh
bmd1YWdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3ICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFl
bC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIENyYXNoIGluIGZhc3Qv
dGV4dC9yZWdpb25hbC1pbmRpY2F0b3Itc3ltb2Jscy5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNl
ci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxh
bmd1YWdlcy4KKworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5v
bi1lbXB0eSBhcnJheTogUEFTUworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMg
bXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0OiBQQVNTCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQt
bGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91
c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBA
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
ZnVuY3Rpb24gdGVzdChtZXNzYWdlLCBzdWNjZXNzKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAg
ICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJzogJyAr
IChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZBSUwnKSk7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5k
Q2hpbGQodGV4dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
dmFyIGxhbmd1YWdlcyA9IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworCisgICAg
ICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJu
cyBhIG5vbi1lbXB0eSBhcnJheScsIGxhbmd1YWdlcy5sZW5ndGgpOworCisgICAgICAgICAgICAg
ICAgbGFuZ3VhZ2VzLnVuc2hpZnQoImZpcnN0LWxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAg
bGFuZ3VhZ2VzLnB1c2goImxhc3QtbGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bHMudXNlclByZWZlcnJlZExhbmd1YWdlcyA9IGxhbmd1YWdlczsKKworICAgICAgICAgICAgICAg
IHZhciBuZXdMYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAg
ICAgICAgICAgICAgICB2YXIgc2FtZUNvbnRlbnRzID0gbmV3TGFuZ3VhZ2VzLmxlbmd0aCA9PSBs
YW5ndWFnZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChzYW1lQ29udGVudHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdMYW5ndWFnZXMubGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdMYW5ndWFnZXNbaV0gIT0g
bGFuZ3VhZ2VzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZUNvbnRlbnRz
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMg
aXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0Jywgc2Ft
ZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxwPlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJl
dHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy48
L3A+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122783</attachid>
            <date>2012-01-17 10:39:03 -0800</date>
            <delta_ts>2012-01-17 12:00:04 -0800</delta_ts>
            <desc>+ WebCoreTestSupport.vcproj</desc>
            <filename>language_prefs_patch_13.txt</filename>
            <type>text/plain</type>
            <size>44533</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisKIDIwMTItMDEt
MTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF0gQWRkIG1vcmUgZmlsZXMgdG8gcHJvamVjdC1maWxlcyBmb3IgZWFzaWVyIG5hdmln
YXRpb24gaW4gUXQgQ3JlYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAK
KzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOiBEaXR0by4KKworICAgICAgICAqIFRhcmdldC5wcmk6IEluY2x1ZGUgbmV3IGZpbGVz
LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZVRlc3RTdXBwb3J0LnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL0xh
bmd1YWdlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlk
ZSk6IE5ldywgcmV0dXJuIHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3Jl
OjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHNldCB0aGUgbGFuZ3VhZ2Vz
IG92ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5l
dywgcmV0dXJuIHRoZSBsYW5ndWFnZXMuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoK
KworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJv
bSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93
IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVm
YXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1
YWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVk
IGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAgICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVz
ZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICBhcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1MYW5ndWFnZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiB0aGUgbGlzdCBvZiB1c2VyIHByZWZl
cnJlZCBsYW5ndWFnZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZv
cm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
TGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJl
bmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAg
ICAqIHRlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisgICAgICAgIChXZWJD
b3JlOjpKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAg
ICAgICAqIHRlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcik6IE5l
dy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
QWNjZXNzb3JTZXR0ZXIpOiBOZXcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBO
ZXcsIHJldHVybiB0aGUgcGxhdGZvcm0ncyB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcs
IG92ZXJyaWRlIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkIHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMvCisKIDIwMTItMDEtMTcgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTGFyZ2UgU1ZHIHRleHQgbGF5b3V0IHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gcjgxMTY4CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTIyNSw2ICsyMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNv
bGVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rp
b25TeW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgXAorICAgICAgICB0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNw
cCBcCiAgICAgICAgIHRlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAogfSBlbHNlIHsK
ICAgICBTT1VSQ0VTICs9IFwKQEAgLTM4Myw2ICszODQsNyBAQCB2OCB7CiAgICAgICAgIGJyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
IFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgXAorICAgICAgICB0ZXN0aW5nL2pz
L0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0
Miw2ICs2NDIsNyBAQCBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBf
X1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoK
IF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19a
TjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50
aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43
V2ViQ29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZl
Y3RvcklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29r
aWVzRVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFz
aFRyYWl0c0lTMl9FRUVFCkBAIC03MDIsNiArNzAzLDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJh
Y3RlclNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1Jp
bmdDb2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2
CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dl
YkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBf
NlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGU2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3Nlbmdl
ckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzNjYsOCArNjM2NiwxMCBAQAog
ICAgICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAn
d2ViY29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9W
OEludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBv
cnQuaCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVz
dGluZy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAt
ODg3OCw2ICs4ODc4LDcgQEAgX19aTjdXZWJDb3JlMTlGbG9hdEFuaW1hdGlvblZhbHVlRDBFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMHVwZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9f
Wk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMTBzZXRPcGFjaXR5RWYKIF9fWk43V2ViQ29yZTIy
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKK19fWk43V2ViQ29yZTIydXNlclBy
ZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJh
bWVFCiBfX1pON1dlYkNvcmVMMTF3cml0ZUxheWVyc0VSTlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFS
ZW5kZXJMYXllckVQUzJfUktOU183SW50UmVjdEVpagogX19aTjdXZWJDb3JlTDV3cml0ZUVSTlNf
MTBUZXh0U3RyZWFtRVJOU18xMVJlbmRlckxheWVyRVJLTlNfN0ludFJlY3RFUzZfUzZfUzZfTlNf
MTVMYXllclBhaW50UGhhc2VFaWoKQEAgLTE2Mjg1LDYgKzE2Mjg2LDcgQEAgX19aTjdXZWJDb3Jl
MjFDb250ZXh0TWVudUNvbnRyb2xsZXIyOGNyZQogX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0
ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTMw
Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQog
X19aTjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzMGNvbnRleHRNZW51SXRl
bVRhZ1N0b3BTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRp
bmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Mzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlVGVzdFN1cHBvcnQudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9y
dC52Y3Byb2oJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1
NTUsNzQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RpbmdcanNcV2ViQ29yZVRlc3RTdXBw
b3J0LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHRlc3RpbmdcanNcSlNJbnRlcm5hbHNDdXN0b20uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3
MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2Vk
SW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZM
aXRlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVk
ZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmls
ZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQy
NzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklU
KSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0
NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx0ZXN0aW5nXGpzXEpTSW50ZXJuYWxzQ3VzdG9tLmgiCisJCQkJPgorCQkJPC9G
aWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cY29uZmlnLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQAog
CQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlC
NEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwogCQkwNzA3NTZFMDE0
MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyog
SlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAv
KiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNs
aWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVF
RTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRy
YWNrLmNwcCAqLzsgfTsKQEAgLTY3NTEsNiArNjc1Miw3IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1l
ZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3Nz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIg
LyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4
dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MjYzLDYgKzE0MjY1LDcgQEAKIAkJNDE4MTVDMUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzIzMENCQjE0
QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovLAogCQkJCTQxODE1QzFD
MTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwICovLAogCQkJCTQxODE1
QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLywKIAkJCSk7CkBA
IC0yNDM1NCw2ICsyNDM1Nyw3IEBACiAJCQkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIElu
dGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIg
LyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAw
NTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzIz
MENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxMDUx
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDExIEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogICAgIGlmICgh
b3ZlcnJpZGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBvdmVycmlkZTsKIAotICAgIHJldHVy
biBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdl
cyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGxhbmd1YWdlc1swXTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCiB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGUpCkBAIC03Niw0ICs4MCwyNCBAQCB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0
IFN0cmluCiAgICAgbGFuZ3VhZ2VPdmVycmlkZSgpID0gb3ZlcnJpZGU7CiB9CiAKK3N0YXRpYyBW
ZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIG92ZXJyaWRlLCAoKSk7CisgICAgcmV0dXJu
IG92ZXJyaWRlOworfQorCit2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUpCit7CisgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUoKSA9IG92ZXJyaWRlOworfQorICAgIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJl
ZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVk
TGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG92ZXJyaWRlOworICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjIgQEAKICNkZWZpbmUgTGFuZ3VhZ2VfaAog
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpOwogdm9pZCBvdmVy
cmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJpbmcmKTsKIAorVmVjdG9yPFN0cmluZz4gdXNl
clByZWZlcnJlZExhbmd1YWdlcygpOwordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogLy8gVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVtIGxhbmd1YWdlIGNoYW5nZXMgKHVubGVzcyBpdCdzIG92
ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoKSkuCiB0eXBlZGVmIHZvaWQgKCpM
YW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pKHZvaWQqIGNvbnRleHQpOwogdm9pZCBhZGRM
YW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2
ZXJGdW5jdGlvbik7CiB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCk7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworVmVjdG9yPFN0cmlu
Zz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB2b2lkIGxhbmd1YWdlRGlkQ2hh
bmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9j
YWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCShyZXZp
c2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2Fs
aXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRm
b3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8TG9jYWxpemVSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw3ICs2MCw3IEBAIFN0
cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFu
Z3VhZ2UoKQogewogICAgIFN0cmluZyBsYW5nID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVu
dDo6Z2V0KCktPmdldExvY2FsZSgpLmNfc3RyKCk7CiAgICAgLy8gZ2V0TG9jYWxlKCkgcmV0dXJu
cyBhIFBPU0lYIGxvY2FsZSB3aGljaCB1c2VzICdfJyB0byBzZXBhcmF0ZSBsYW5ndWFnZSBhbmQg
Y291bnRyeS4KQEAgLTcxLDYgKzcyLDEzIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCiAgICAgcmV0dXJuIGxhbmc7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExh
bmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1
YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFn
ZUNocm9taXVtLmNwcAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEw
ICszMywxMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcg
cGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNv
bXB1dGVkRGVmYXVsdExhbmd1YWdlLCAoKSk7CiAgICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1
YWdlLmlzRW1wdHkoKSkKQEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRM
YW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1
YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJl
ZExhbmd1YWdlczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAj
aW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3Ry
aW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQgPSBzZXRs
b2NhbGUoTENfQ1RZUEUsIDApOwogCkBAIC01MCw0ICs1MSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobG9jYWxlRGVmYXVsdCk7CiB9CiAK
K1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9MYW5ndWFnZUd0ay5jcHAJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIy
LDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zMiw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4g
b3B0aW9uLCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2Fs
ZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1T
dHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxh
bmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBF
LCBOVUxMKTsKIApAQCAtNTMsNCArNTQsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgpKTsKIH0KIAor
VmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXM7Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMiBAQAog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkTGFuZ3VhZ2VDb2RlOworc3RhdGlj
IEJPT0wgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzOwogCiBAaW50ZXJmYWNlIFdlYkxhbmd1
YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiB9CkBAIC00Niw4ICs0Nyw3IEBAICsgKHZv
aWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2gKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZWxlYXNlXTsKLSAgICBw
cmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBuaWw7CisgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3Vh
Z2VzID0gTk87CiAKICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpAQCAtODUsMjMgKzg1LDMw
IEBAIHN0YXRpYyBOU1N0cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2UKICAgICByZXR1cm4g
aHR0cFN0eWxlTGFuZ3VhZ2VDb2RlOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3Vh
Z2UoKQorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzLCAoKSk7CisKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgaWYgKCFwcmVmZXJyZWRMYW5ndWFnZUNvZGUp
IHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3luY2hy
b25pemVdOwotICAgICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBzdHJpbmdBcnJheUZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07
Ci0gICAgICAgIGlmICghW2xhbmd1YWdlcyBjb3VudF0pCi0gICAgICAgICAgICBwcmVmZXJyZWRM
YW5ndWFnZUNvZGUgPSBAImVuIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJlZmVycmVk
TGFuZ3VhZ2VDb2RlID0gY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2RlKFtsYW5ndWFnZXMgb2Jq
ZWN0QXRJbmRleDowXSk7CisgICAgaWYgKCF1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMpIHsK
KyAgICAgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gWUVTOworICAgICAgICB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmNsZWFyKCk7CisKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGxhbmd1YWdlcyhBZG9wdENGLCBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7
CisgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFn
ZXMuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0Q0YsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2Vz
LmdldCgpLCBpKSkpOworICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBw
ZW5kKGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilsYW5ndWFnZS5nZXQo
KSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmNv
ZGUgPSBbW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFk
ZGVkOwogICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkKSB7CkBAIC0xMTIsMTEg
KzExOSwxMiBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgICAgICBsYW5n
dWFnZUNoYW5nZU9ic2VydmVyQWRkZWQgPSB0cnVlOwogICAgIH0KICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQotCi0gICAgcmV0dXJuIGNvZGU7CisgICAgCisgICAgcmV0dXJuIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDEzICsyOSwyMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGlj
IFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxlIGxvY2FsZTsKICAgICBy
ZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKFFMYXRpbjFDaGFyKCdfJyksIFFMYXRpbjFDaGFy
KCctJykpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICBy
ZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGlj
IFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVUeQogICAgIHJldHVybiBsb2NhbGVOYW1l
OwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBw
bGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExh
bmd1YWdlOwogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAt
NjYsNCArNjcsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1
cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMDUxNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC02NzEsNCArNjcyLDE0IEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQKICAgICBkb2N1bWVudC0+c2V0
dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCitWZWN0b3I8
U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit9CisKK3ZvaWQgSW50
ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
YW5ndWFnZXMpCit7CisgICAgV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KGxhbmd1YWdlcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
cmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
UGVyVGlsZURyYXdpbmdFbmFibGVkKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25D
b2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMDUxNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZs
b2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGluIGxvbmcgeSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKKyAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIEFycmF5IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7CiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0lu
dGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFs
cy5oIgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNJbnRlcm5hbHM6OnVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEludGVybmFscyog
aW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZXMgPSBpbXAtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBp
ZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAor
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYW5ndWFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICBhcnJheS5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKCpp
dCkpKTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGFy
cmF5KTsKK30KKwordm9pZCBKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFpc0pTQXJyYXkodmFs
dWUpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
InNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5IikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKKyAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSB1
c3RyaW5nVG9TdHJpbmcoYXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmFwcGVuZChsYW5ndWFnZSk7CisgICAgfQorICAgIAorICAgIEludGVybmFs
cyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBpbXAtPnNldFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5h
bHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9W
OEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbnRlcm5hbHMuaCIKKworI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJbnRlcm5hbHMqIGludGVybmFscyA9
IFY4SW50ZXJuYWxzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZXMgPSBpbnRlcm5hbHMtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
KyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7
CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KGxhbmd1
YWdlcy5zaXplKCkpOworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YW5ndWFnZXMuZW5kKCk7CisgICAgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbGFuZ3VhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpbmRleCsrKSwg
djhTdHJpbmcoKml0ZXIpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3ZvaWQgVjhJbnRlcm5h
bHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKSB7CisgICAgICAgIHRo
cm93RXJyb3IoInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2Vz
OworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5
Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+TGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcoYXJyYXkt
PkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyogaW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludGVybmFscy0+c2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3Mg
dG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTogT3ZlcnJpZGUg
dGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1YWdlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogU2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IERlZmluZSBVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZC4KKyAgICAgICAgCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBFeHBvcnQgdGhlIG5l
dyBmdW5jdGlvbnMuCisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwog
MjAxMi0wMS0xNyAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95QG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdIEltcGxlbWVudCBIVFRQIGF1dGhlbnRpY2F0aW9uIFFNTCBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDEw
NTE1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFu
Z2VkKHZvaWQqIGMKIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxhbmd1YWdlQ2hhbmdlZChk
ZWZhdWx0TGFuZ3VhZ2UoKSkpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1
YWdlcygpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNo
YW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMs
NiArMjkzLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFMKICAg
ICBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
czo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
bmd1YWdlcykgY29uc3QKK3sKKyAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFu
Z3VhZ2VzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hh
bmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiB7CiAgICAgbV9mdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBbHdheXNVc2VzQ29tcGxleFRleHRD
b2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7
CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9p
ZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNl
dEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQp
CiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9vdGhpbmcpCiAg
ICAgTGFuZ3VhZ2VDaGFuZ2VkKFdURjo6U3RyaW5nIGxhbmd1YWdlKQorICAgIFVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxXVEY6OlN0cmluZz4gbGFuZ3VhZ2VzKQogICAgIEZ1
bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCkKICNpZiBQTEFURk9STShXSU4pCiAgICAgU2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhi
b29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdv
cmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc1N0cmlu
Z1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8k
SGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBV
U3RyaW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hU
cmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBs
QDZAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFy
a2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBX
ZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAy
QEBaCisgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFY
QUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/cGFnZUBEb2N1
bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRz
QEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2Vi
Q29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgpAQCAtMTgxLDYgKzE4Miw3IEBAIEVYUE9S
VFMKICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBA
UUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3Jl
QEBRQkVQQVZTZXR0aW5nc0AyQFhaCiAgICAgICAgID9zZXR0aW5nc0BGcmFtZUBXZWJDb3JlQEBR
QkVQQVZTZXR0aW5nc0AyQFhaCisgICAgICAgID9zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQEpT
SW50ZXJuYWxzQFdlYkNvcmVAQFFBRVhQQVZFeGVjU3RhdGVASlNDQEBWSlNWYWx1ZUA0QEBaCiAg
ICAgICAgID9zaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93Um9vdEAyQFha
CiAgICAgICAgID9zdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFC
VlN0cmluZ0BXVEZAQFhaCiAgICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlBUEFWRG9jdW1l
bnRAMUBWSlNWYWx1ZUBKU0NAQEBaCkBAIC0xOTAsNCArMTkyLDYgQEAgRVhQT1JUUwogICAgICAg
ICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RP
TUdsb2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBA
WUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNASlNJbnRlcm5hbHNAV2ViQ29yZUBAUUJFP0FWSlNWYWx1ZUBK
U0NAQFBBVkV4ZWNTdGF0ZUA0QEBaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdl
YkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/
dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRleDogU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3
LDcgQEAgRVhQT1JUUwogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpT
VmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZA
QFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRz
QFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpT
Q0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdl
V2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgog
ICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFF
P0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVA
MkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/b3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAk
MEFAQFdURkBAQFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAy
QFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFha
CiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29y
ZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBI
SF9OQFoKQEAgLTE3NCw2ICsxNzUsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRTdWdnZXN0ZWRW
YWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBAWgogICAg
ICAgICA/c2V0dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgogICAg
ICAgICA/c2V0dGluZ3NARnJhbWVAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWgorICAgICAg
ICA/c2V0VXNlclByZWZlcnJlZExhbmd1YWdlc0BKU0ludGVybmFsc0BXZWJDb3JlQEBRQUVYUEFW
RXhlY1N0YXRlQEpTQ0BAVkpTVmFsdWVANEBAWgogICAgICAgICA/c2hhZG93Um9vdEBFbGVtZW50
QFdlYkNvcmVAQFFCRVBBVlNoYWRvd1Jvb3RAMkBYWgogICAgICAgICA/c3VnZ2VzdGVkVmFsdWVA
SFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/
dG9Eb2N1bWVudEBXZWJDb3JlQEBZQVBBVkRvY3VtZW50QDFAVkpTVmFsdWVASlNDQEBAWgpAQCAt
MTgzLDQgKzE4NSw2IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5nZUAx
QEBaCiAgICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NA
QEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1l
bnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQEpTSW50
ZXJuYWxzQFdlYkNvcmVAQFFCRT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVANEBAWgorICAg
ICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJp
bmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJF
UEFWRnJhbWVWaWV3QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24g
MTA1MTUyKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5
KQpAQCAtNTYsNyArNTYsOSBAQCBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2
OwogX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50
RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxP
YmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50
YXRpb25FUE5TXzdFbGVtZW50RWo7CitfWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdl
c0V2OwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQ
TlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFOworX1pON1dlYkNvcmUz
MG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmlu
Z0VMbTBFRUU7CiBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0
ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RF
OwogX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RW
aXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEt
MTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJv
dmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OiBBZGQgSlNJbnRlcm5hbHNDdXN0b20uY3BwLgorCiAyMDEyLTAxLTE2ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBHVEsr
IEVXUyBuZWVkcyB0byBydW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGFmdGVyIGFwcGx5aW5nIGEg
cGF0Y2gKSW5kZXg6IFRvb2xzL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDUxNTIpCisrKyBUb29scy9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBsaWJXZWJDb3JlSW50ZXJuYWxzX2xhX1NP
VVJDRVMgPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBcCisJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVy
bmFsc0N1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuaAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUxNTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNyAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0
byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVk
LWxhbmd1YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9oYXJuZXNzL3Vz
ZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3ICBSYWZhZWwg
QnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJd
IENyYXNoIGluIGZhc3QvdGV4dC9yZWdpb25hbC1pbmRpY2F0b3Itc3ltb2Jscy5odG1sCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZl
cnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2Vy
J3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheTogUEFTUworaW50ZXJuYWxzLnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2Vk
IHRvIGl0OiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJy
ZWQtbGFuZ3VhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3Mv
dXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdChtZXNzYWdlLCBzdWNjZXNzKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxp
Iik7CisgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSht
ZXNzYWdlICsgJzogJyArIChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZBSUwnKSk7CisgICAgICAgICAg
ICAgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdmFyIGxhbmd1YWdlcyA9IGludGVybmFscy51c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzOworCisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheScsIGxhbmd1YWdlcy5sZW5ndGgpOwor
CisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnVuc2hpZnQoImZpcnN0LWxhbmd1YWdlIik7Cisg
ICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnB1c2goImxhc3QtbGFuZ3VhZ2UiKTsKKyAgICAgICAg
ICAgICAgICBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyA9IGxhbmd1YWdlczsKKwor
ICAgICAgICAgICAgICAgIHZhciBuZXdMYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJl
ZExhbmd1YWdlczsKKyAgICAgICAgICAgICAgICB2YXIgc2FtZUNvbnRlbnRzID0gbmV3TGFuZ3Vh
Z2VzLmxlbmd0aCA9PSBsYW5ndWFnZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChzYW1l
Q29udGVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdM
YW5ndWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdM
YW5ndWFnZXNbaV0gIT0gbGFuZ3VhZ2VzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtZUNvbnRlbnRzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFz
c2VkIHRvIGl0Jywgc2FtZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVy
cmVkIGxhbmd1YWdlcy48L3A+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="123680"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122795</attachid>
            <date>2012-01-17 12:00:04 -0800</date>
            <delta_ts>2012-01-17 21:21:42 -0800</delta_ts>
            <desc>One more time...</desc>
            <filename>language_prefs_patch_14.txt</filename>
            <type>text/plain</type>
            <size>43345</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTE1
MikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisKIDIwMTItMDEt
MTYgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAg
ICAgIFtRdF0gQWRkIG1vcmUgZmlsZXMgdG8gcHJvamVjdC1maWxlcyBmb3IgZWFzaWVyIG5hdmln
YXRpb24gaW4gUXQgQ3JlYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAK
KzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3Jl
Lm9yZGVyOiBEaXR0by4KKworICAgICAgICAqIFRhcmdldC5wcmk6IEluY2x1ZGUgbmV3IGZpbGVz
LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3By
b2ovV2ViQ29yZVRlc3RTdXBwb3J0LnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL0xh
bmd1YWdlLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlk
ZSk6IE5ldywgcmV0dXJuIHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3Jl
OjpvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHNldCB0aGUgbGFuZ3VhZ2Vz
IG92ZXJyaWRlLgorICAgICAgICAoV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5l
dywgcmV0dXJuIHRoZSBsYW5ndWFnZXMuCisgICAgICAgICogcGxhdGZvcm0vTGFuZ3VhZ2UuaDoK
KworICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJv
bSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93
IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVm
YXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0xhbmd1
YWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVk
IGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW06CisgICAgICAgICgrW1dlYkxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIgX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlXSk6IEZsYWcgdGhlIHVz
ZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICBhcyBpbnZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6
cGxhdGZvcm1MYW5ndWFnZSk6IFJlbW92ZWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcsIHJldHVybiB0aGUgbGlzdCBvZiB1c2VyIHByZWZl
cnJlZCBsYW5ndWFnZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZv
cm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
TGFuZ3VhZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJl
bmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAg
ICAqIHRlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisgICAgICAgIChXZWJD
b3JlOjpKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAg
ICAgICAqIHRlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcik6IE5l
dy4KKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
QWNjZXNzb3JTZXR0ZXIpOiBOZXcuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBO
ZXcsIHJldHVybiB0aGUgcGxhdGZvcm0ncyB1c2VyIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBOZXcs
IG92ZXJyaWRlIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogQWRkIHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMvCisKIDIwMTItMDEtMTcgIE5pa29sYXMgWmltbWVybWFubiAg
PG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTGFyZ2UgU1ZHIHRleHQgbGF5b3V0IHBl
cmZvcm1hbmNlIHJlZ3Jlc3Npb24gaW4gcjgxMTY4CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTIyNSw2ICsyMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNv
bGVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rp
b25TeW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEVy
cm9ySGFuZGxlci5jcHAgXAorICAgICAgICB0ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNw
cCBcCiAgICAgICAgIHRlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAogfSBlbHNlIHsK
ICAgICBTT1VSQ0VTICs9IFwKQEAgLTM4Myw2ICszODQsNyBAQCB2OCB7CiAgICAgICAgIGJyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVudGltZV9vYmplY3QuY3Bw
IFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgXAorICAgICAgICB0ZXN0aW5nL2pz
L0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3RpbmcvanMvV2ViQ29yZVRlc3RT
dXBwb3J0LmNwcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTA1MTUy
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0
Miw2ICs2NDIsNyBAQCBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZvckVsZW1lbnRFUE5TCiBf
X1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVSYW5nZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoK
IF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRFagorX19a
TjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43V2ViQ29yZTIzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNlRVJLTlNfMTBDcmVkZW50
aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3VyY2VFcnJvckUKIF9fWk43
V2ViQ29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1bWVudEVSS04zV1RGNlZl
Y3RvcklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyM2dldEhvc3RuYW1lc1dpdGhDb29r
aWVzRVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmluZ0hhc2hFTlMwXzEwSGFz
aFRyYWl0c0lTMl9FRUVFCkBAIC03MDIsNiArNzAzLDcgQEAgX19aTjdXZWJDb3JlMjlpc0NoYXJh
Y3RlclNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3JlMjlzZXRVc2VzVGVzdE1vZGVGb2N1c1Jp
bmdDb2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2
CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pON1dl
YkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBf
NlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGU2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc01pY3Jvc29mdE1lc3Nlbmdl
ckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzNjYsOCArNjM2NiwxMCBAQAog
ICAgICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwnLAogICAgICAgICBdLAogICAgICAgICAn
d2ViY29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisgICAgICAgICAgICAndGVzdGluZy92OC9W
OEludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBv
cnQuaCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAgICAgICAgICAgICAndGVz
dGluZy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAt
ODg3OCw2ICs4ODc4LDcgQEAgX19aTjdXZWJDb3JlMTlGbG9hdEFuaW1hdGlvblZhbHVlRDBFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMHVwZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9f
Wk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMTBzZXRPcGFjaXR5RWYKIF9fWk43V2ViQ29yZTIy
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKK19fWk43V2ViQ29yZTIydXNlclBy
ZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dEMxRVBOU181RnJh
bWVFCiBfX1pON1dlYkNvcmVMMTF3cml0ZUxheWVyc0VSTlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFS
ZW5kZXJMYXllckVQUzJfUktOU183SW50UmVjdEVpagogX19aTjdXZWJDb3JlTDV3cml0ZUVSTlNf
MTBUZXh0U3RyZWFtRVJOU18xMVJlbmRlckxheWVyRVJLTlNfN0ludFJlY3RFUzZfUzZfUzZfTlNf
MTVMYXllclBhaW50UGhhc2VFaWoKQEAgLTE2Mjg1LDYgKzE2Mjg2LDcgQEAgX19aTjdXZWJDb3Jl
MjFDb250ZXh0TWVudUNvbnRyb2xsZXIyOGNyZQogX19aTjdXZWJDb3JlMzFjb250ZXh0TWVudUl0
ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0
cmF0ZWd5MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTMw
Y29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKK19fWk43V2ViQ29yZTMwb3ZlcnJpZGVV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRQog
X19aTjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kzMGNvbnRleHRNZW51SXRl
bVRhZ1N0b3BTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUzOGNvbnRleHRNZW51SXRlbVRhZ1dyaXRp
bmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5Mzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlVGVzdFN1cHBvcnQudmNwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9y
dC52Y3Byb2oJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTU1NSw2ICs1
NTUsNzQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RpbmdcanNcV2ViQ29yZVRlc3RTdXBw
b3J0LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHRlc3RpbmdcanNcSlNJbnRlcm5hbHNDdXN0b20uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0i
MCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3
MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1l
PSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2Vk
SW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZM
aXRlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVk
ZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmls
ZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQy
NzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklU
KSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0
NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlx0ZXN0aW5nXGpzXEpTSW50ZXJuYWxzQ3VzdG9tLmgiCisJCQkJPgorCQkJPC9G
aWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5cY29uZmlnLmgi
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsNyBAQAog
CQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlC
NEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9OwogCQkwNzA3NTZFMDE0
MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyog
SlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAv
KiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNs
aWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHND
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJv
eHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVF
RTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRy
YWNrLmNwcCAqLzsgfTsKQEAgLTY3NTEsNiArNjc1Miw3IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlTbGlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4MDAwNzI3REVCIC8qIG1l
ZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1lZGlhQ29udHJvbHMuY3Nz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIg
LyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4
dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5
ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE0MjYzLDYgKzE0MjY1LDcgQEAKIAkJNDE4MTVDMUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzIzMENCQjE0
QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovLAogCQkJCTQxODE1QzFD
MTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwICovLAogCQkJCTQxODE1
QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuaCAqLywKIAkJCSk7CkBA
IC0yNDM1NCw2ICsyNDM1Nyw3IEBACiAJCQkJNDE3REE2RDkxMzczNEU2RTAwN0M1N0ZCIC8qIElu
dGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIg
LyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAw
NTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzIz
MENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3BwCShyZXZpc2lvbiAxMDUx
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDExIEBAIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQogICAgIGlmICgh
b3ZlcnJpZGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBvdmVycmlkZTsKIAotICAgIHJldHVy
biBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdl
cyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIGxhbmd1YWdlc1swXTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCiB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGUpCkBAIC03Niw0ICs4MCwyNCBAQCB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0
IFN0cmluCiAgICAgbGFuZ3VhZ2VPdmVycmlkZSgpID0gb3ZlcnJpZGU7CiB9CiAKK3N0YXRpYyBW
ZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIG92ZXJyaWRlLCAoKSk7CisgICAgcmV0dXJu
IG92ZXJyaWRlOworfQorCit2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUpCit7CisgICAgcHJlZmVycmVkTGFuZ3VhZ2VzT3Zl
cnJpZGUoKSA9IG92ZXJyaWRlOworfQorICAgIAorVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJl
ZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlID0gcHJlZmVycmVk
TGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG92ZXJyaWRlOworICAgIAorICAgIHJldHVybiBwbGF0Zm9ybVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjIgQEAKICNkZWZpbmUgTGFuZ3VhZ2VfaAog
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpOwogdm9pZCBvdmVy
cmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJpbmcmKTsKIAorVmVjdG9yPFN0cmluZz4gdXNl
clByZWZlcnJlZExhbmd1YWdlcygpOwordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogLy8gVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdp
bGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVtIGxhbmd1YWdlIGNoYW5nZXMgKHVubGVzcyBpdCdzIG92
ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoKSkuCiB0eXBlZGVmIHZvaWQgKCpM
YW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pKHZvaWQqIGNvbnRleHQpOwogdm9pZCBhZGRM
YW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQsIExhbmd1YWdlQ2hhbmdlT2JzZXJ2
ZXJGdW5jdGlvbik7CiB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIodm9pZCogY29u
dGV4dCk7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworVmVjdG9yPFN0cmlu
Zz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB2b2lkIGxhbmd1YWdlRGlkQ2hh
bmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9j
YWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCShyZXZp
c2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2Fs
aXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRm
b3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8TG9jYWxpemVSZXNvdXJjZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw3ICs2MCw3IEBAIFN0
cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFu
Z3VhZ2UoKQogewogICAgIFN0cmluZyBsYW5nID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVu
dDo6Z2V0KCktPmdldExvY2FsZSgpLmNfc3RyKCk7CiAgICAgLy8gZ2V0TG9jYWxlKCkgcmV0dXJu
cyBhIFBPU0lYIGxvY2FsZSB3aGljaCB1c2VzICdfJyB0byBzZXBhcmF0ZSBsYW5ndWFnZSBhbmQg
Y291bnRyeS4KQEAgLTcxLDYgKzcyLDEzIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCiAgICAgcmV0dXJuIGxhbmc7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExh
bmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1
YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFn
ZUNocm9taXVtLmNwcAkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEw
ICszMywxMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcg
cGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNv
bXB1dGVkRGVmYXVsdExhbmd1YWdlLCAoKSk7CiAgICAgaWYgKGNvbXB1dGVkRGVmYXVsdExhbmd1
YWdlLmlzRW1wdHkoKSkKQEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRM
YW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQogCitWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1
YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJl
ZExhbmd1YWdlczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAj
aW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3Ry
aW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQgPSBzZXRs
b2NhbGUoTENfQ1RZUEUsIDApOwogCkBAIC01MCw0ICs1MSwxMSBAQCBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobG9jYWxlRGVmYXVsdCk7CiB9CiAK
K1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAg
VmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9MYW5ndWFnZUd0ay5jcHAJKHJldmlzaW9uIDEwNTE1MikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIy
LDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zMiw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIC8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkgaGVyZSBpcyBub3QgYW4g
b3B0aW9uLCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGxvY2Fs
ZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhlIHNhbWUgdmFsdWUuCi1T
dHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxh
bmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBF
LCBOVUxMKTsKIApAQCAtNTMsNCArNTQsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKG5vcm1hbGl6ZWREZWZhdWx0LmdldCgpKTsKIH0KIAor
VmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXM7Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMiBAQAog
I2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkTGFuZ3VhZ2VDb2RlOworc3RhdGlj
IEJPT0wgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzOwogCiBAaW50ZXJmYWNlIFdlYkxhbmd1
YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiB9CkBAIC00Niw4ICs0Nyw3IEBAICsgKHZv
aWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2gKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZWxlYXNlXTsKLSAgICBw
cmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBuaWw7CisgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3Vh
Z2VzID0gTk87CiAKICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpAQCAtODUsMjMgKzg1LDMw
IEBAIHN0YXRpYyBOU1N0cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2UKICAgICByZXR1cm4g
aHR0cFN0eWxlTGFuZ3VhZ2VDb2RlOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3Vh
Z2UoKQorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKIHsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzLCAoKSk7CisKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgaWYgKCFwcmVmZXJyZWRMYW5ndWFnZUNvZGUp
IHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3luY2hy
b25pemVdOwotICAgICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBzdHJpbmdBcnJheUZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07
Ci0gICAgICAgIGlmICghW2xhbmd1YWdlcyBjb3VudF0pCi0gICAgICAgICAgICBwcmVmZXJyZWRM
YW5ndWFnZUNvZGUgPSBAImVuIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJlZmVycmVk
TGFuZ3VhZ2VDb2RlID0gY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2RlKFtsYW5ndWFnZXMgb2Jq
ZWN0QXRJbmRleDowXSk7CisgICAgaWYgKCF1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMpIHsK
KyAgICAgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gWUVTOworICAgICAgICB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmNsZWFyKCk7CisKKyAgICAgICAgUmV0YWluUHRyPENGQXJyYXlS
ZWY+IGxhbmd1YWdlcyhBZG9wdENGLCBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKSk7
CisgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlHZXRDb3VudChsYW5ndWFn
ZXMuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisgICAgICAgICAgICB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdlKEFkb3B0Q0YsIHJlaW50
ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobGFuZ3VhZ2Vz
LmdldCgpLCBpKSkpOworICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBw
ZW5kKGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcgKilsYW5ndWFnZS5nZXQo
KSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0gICAgTlNTdHJpbmcgKmNv
ZGUgPSBbW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLQogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFk
ZGVkOwogICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkKSB7CkBAIC0xMTIsMTEg
KzExOSwxMiBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgICAgICBsYW5n
dWFnZUNoYW5nZU9ic2VydmVyQWRkZWQgPSB0cnVlOwogICAgIH0KICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQotCi0gICAgcmV0dXJuIGNvZGU7CisgICAgCisgICAgcmV0dXJuIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNwcAkocmV2aXNpb24gMTA1
MTUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3VhZ2VRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDEzICsyOSwyMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGlj
IFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxlIGxvY2FsZTsKICAgICBy
ZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKFFMYXRpbjFDaGFyKCdfJyksIFFMYXRpbjFDaGFy
KCctJykpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAg
dXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICBy
ZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKIAogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcgKzUwLDcgQEAgc3RhdGlj
IFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVUeQogICAgIHJldHVybiBsb2NhbGVOYW1l
OwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBw
bGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBzdGF0aWMgU3RyaW5nIGNvbXB1dGVkRGVmYXVsdExh
bmd1YWdlOwogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAt
NjYsNCArNjcsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1
cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMDUxNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC02NzEsNCArNjcyLDE0IEBAIHZv
aWQgSW50ZXJuYWxzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQKICAgICBkb2N1bWVudC0+c2V0
dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCitWZWN0b3I8
U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cit9CisKK3ZvaWQgSW50
ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
YW5ndWFnZXMpCit7CisgICAgV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KGxhbmd1YWdlcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
cmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
UGVyVGlsZURyYXdpbmdFbmFibGVkKERvY3VtZW50KiwgYm9vbCBlbmFibGVkLCBFeGNlcHRpb25D
b2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxzSWQ7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAxMDUxNTIp
CisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGZs
b2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGluIGxvbmcgeSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKKyAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIEFycmF5IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7CiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0lu
dGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0ludGVybmFs
cy5oIgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNJbnRlcm5hbHM6OnVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAoreworICAgIEludGVybmFscyog
aW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZXMgPSBpbXAtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBp
ZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAor
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYW5ndWFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICBhcnJheS5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3RyaW5nVG9VU3RyaW5nKCpp
dCkpKTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGFy
cmF5KTsKK30KKwordm9pZCBKU0ludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCFpc0pTQXJyYXkodmFs
dWUpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
InNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5IikpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKKyAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBTdHJpbmcgbGFuZ3VhZ2UgPSB1
c3RyaW5nVG9TdHJpbmcoYXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAg
ICAgbGFuZ3VhZ2VzLmFwcGVuZChsYW5ndWFnZSk7CisgICAgfQorICAgIAorICAgIEludGVybmFs
cyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAgICBpbXAtPnNldFVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5h
bHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9W
OEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbnRlcm5hbHMuaCIKKworI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJbnRlcm5hbHMqIGludGVybmFscyA9
IFY4SW50ZXJuYWxzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBjb25zdCBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZXMgPSBpbnRlcm5hbHMtPnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsK
KyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7
CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KGxhbmd1
YWdlcy5zaXplKCkpOworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBs
YW5ndWFnZXMuZW5kKCk7CisgICAgaW50IGluZGV4ID0gMDsKKyAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbGFuZ3VhZ2VzLmJlZ2luKCk7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6Ok5ldyhpbmRleCsrKSwg
djhTdHJpbmcoKml0ZXIpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKK3ZvaWQgVjhJbnRlcm5h
bHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgpKSB7CisgICAgICAgIHRo
cm93RXJyb3IoInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2Vz
OworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5
Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+TGVuZ3Ro
KCk7ICsraSkKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZCh0b1dlYkNvcmVTdHJpbmcoYXJyYXkt
PkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyogaW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludGVybmFscy0+c2V0VXNlclByZWZlcnJl
ZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3Mg
dG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTogT3ZlcnJpZGUg
dGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1YWdlcy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogU2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IERlZmluZSBVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZC4KKyAgICAgICAgCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOiBFeHBvcnQgdGhlIG5l
dyBmdW5jdGlvbnMuCisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwog
MjAxMi0wMS0xNyAgQWxleGFuZGVyIEbDpnLDuHkgIDxhbGV4YW5kZXIuZmFlcm95QG5va2lhLmNv
bT4KIAogICAgICAgICBbUXRdIEltcGxlbWVudCBIVFRQIGF1dGhlbnRpY2F0aW9uIFFNTCBBUEkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHJldmlzaW9uIDEw
NTE1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw3IEBAIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFu
Z2VkKHZvaWQqIGMKIHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKICAgICBz
ZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxhbmd1YWdlQ2hhbmdlZChk
ZWZhdWx0TGFuZ3VhZ2UoKSkpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6VXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1
YWdlcygpKSk7CiB9CiAKIHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNo
YW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMs
NiArMjkzLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6bGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFMKICAg
ICBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShsYW5ndWFnZSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
czo6dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
bmd1YWdlcykgY29uc3QKK3sKKyAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFu
Z3VhZ2VzKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hh
bmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiB7CiAgICAgbV9mdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDYgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRBbHdheXNVc2VzQ29tcGxleFRleHRD
b2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7
CiAgICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9p
ZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNv
bnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBzZXRTaG91
bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTA1MTUyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgIFNl
dEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRleHQp
CiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9vdGhpbmcpCiAg
ICAgTGFuZ3VhZ2VDaGFuZ2VkKFdURjo6U3RyaW5nIGxhbmd1YWdlKQorICAgIFVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxXVEY6OlN0cmluZz4gbGFuZ3VhZ2VzKQogICAgIEZ1
bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCkKICNpZiBQTEFURk9STShXSU4pCiAgICAgU2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhi
b29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CShyZXZpc2lvbiAxMDUxNTIpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdv
cmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc1N0cmlu
Z1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8k
SGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBV
U3RyaW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hU
cmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBs
QDZAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFy
a2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBX
ZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAy
QEBaCisgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFY
QUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/cGFnZUBEb2N1
bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRz
QEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2Vi
Q29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgpAQCAtMTkwLDQgKzE5MSw1IEBAIEVYUE9S
VFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRl
QDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5nZUAxQEBaCiAgICAgICAgID90b1Jhbmdl
QFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID91cGRhdGVM
YXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCisg
ICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0
cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRleDogU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxp
dGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZgkocmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgRVhQT1JUUwogICAgICAgICA/
anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
M0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZAQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BA
QEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRzQFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBV
PyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAQDJAQFdURkBAUEFWU3Ry
aW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRN
YXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRN
YXJrZXJAMkBAWgorICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNv
cmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAgP3Bh
Z2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRy
b2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJh
bmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKQEAgLTE4Myw0ICsxODQsNSBA
QCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4
ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAgICAgICA/
dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgogICAgICAgICA/
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFB
RVhYWgorICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVj
dG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgko
cmV2aXNpb24gMTA1MTUyKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29y
a2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOSBAQCBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0Nv
bnRleHREMUV2OwogX1pON1dlYkNvcmUyMFNoYWRvd0NvbnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNf
OERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9FOwogX1pON1dlYkNvcmUyMmV4dGVybmFs
UmVwcmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWo7CitfWk43V2ViQ29yZTIydXNlclByZWZlcnJl
ZExhbmd1YWdlc0V2OwogX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFy
a2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFOworX1pO
N1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklO
UzBfNlN0cmluZ0VMbTBFRUU7CiBfWk43V2ViQ29yZTZKU05vZGUxMHB1dFZpcnR1YWxFUE4zSlND
OUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9w
ZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU2SlNOb2RlMjB2aXNpdENoaWxkcmVuVmlydHVhbEVSTjNK
U0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpTTm9kZTZzX2luZm9FOwpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1
MTUyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOiBBZGQgSlNJbnRlcm5hbHNDdXN0b20uY3BwLgorCiAyMDEyLTAxLTE2ICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KIAogICAg
ICAgICBHVEsrIEVXUyBuZWVkcyB0byBydW4gdXBkYXRlLXdlYmtpdGd0ay1saWJzIGFmdGVyIGFw
cGx5aW5nIGEgcGF0Y2gKSW5kZXg6IFRvb2xzL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDUxNTIpCisrKyBUb29scy9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBsaWJXZWJDb3JlSW50ZXJu
YWxzX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFw
cGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBcCisJU291cmNlL1dlYkNvcmUvdGVzdGluZy9q
cy9KU0ludGVybmFsc0N1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2Vi
Q29yZVRlc3RTdXBwb3J0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3Jl
VGVzdFN1cHBvcnQuaAogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUxNTIpCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNyAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRl
IGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9oYXJuZXNzL3VzZXIt
cHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9o
YXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3
ICBSYWZhZWwgQnJhbmRhbyAgPHJhZmFlbC5sb2JvQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
W1F0XVtXSzJdIENyYXNoIGluIGZhc3QvdGV4dC9yZWdpb25hbC1pbmRpY2F0b3Itc3ltb2Jscy5o
dG1sCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3Vh
Z2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91
c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGlu
dGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9m
IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKworaW50ZXJuYWxzLnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheTogUEFTUworaW50ZXJuYWxzLnVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFs
dWUgcGFzc2VkIHRvIGl0OiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNl
ci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdChtZXNzYWdlLCBzdWNjZXNzKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlICsgJzogJyArIChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZBSUwnKSk7Cisg
ICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICAgICAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxhbmd1YWdlcyA9IGludGVybmFscy51c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzOworCisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheScsIGxhbmd1YWdlcy5s
ZW5ndGgpOworCisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnVuc2hpZnQoImZpcnN0LWxhbmd1
YWdlIik7CisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnB1c2goImxhc3QtbGFuZ3VhZ2UiKTsK
KyAgICAgICAgICAgICAgICBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyA9IGxhbmd1
YWdlczsKKworICAgICAgICAgICAgICAgIHZhciBuZXdMYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNl
clByZWZlcnJlZExhbmd1YWdlczsKKyAgICAgICAgICAgICAgICB2YXIgc2FtZUNvbnRlbnRzID0g
bmV3TGFuZ3VhZ2VzLmxlbmd0aCA9PSBsYW5ndWFnZXMubGVuZ3RoOworICAgICAgICAgICAgICAg
IGlmIChzYW1lQ29udGVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuZXdMYW5ndWFnZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChuZXdMYW5ndWFnZXNbaV0gIT0gbGFuZ3VhZ2VzW2ldKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2FtZUNvbnRlbnRzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxz
LnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUg
dmFsdWUgcGFzc2VkIHRvIGl0Jywgc2FtZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2Vy
J3MgcHJlZmVycmVkIGxhbmd1YWdlcy48L3A+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91
bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122869</attachid>
            <date>2012-01-17 21:21:42 -0800</date>
            <delta_ts>2012-01-18 09:48:06 -0800</delta_ts>
            <desc>One last version, got rid of overrideDefaultLanguage() as per request</desc>
            <filename>language_patch_16.txt</filename>
            <type>text/plain</type>
            <size>46405</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBMaXN0IHRoZSBuZXcgZnVuY3Rpb25zLgorCiAyMDEyLTAxLTE3
ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTlVM
TCBwdHIgaW4gV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6bG9jYWxDYXJldFJlY3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAxLTE3ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRv
IHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVy
cmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgdGhl
IG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBJbmNsdWRlIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52
Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UpOiBSZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc1sw
XS4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKTogTmV3LCBy
ZXR1cm4gdGhlIGxhbmd1YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJyaWRl
VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgc2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUu
CisgICAgICAgIChXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4g
dGhlIGxhbmd1YWdlcyBhcnJheS4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3Rh
dGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTog
TmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJv
bSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9MYW5ndWFnZS5tbToKKyAgICAgICAgKCtbV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
ciBfd2Via2l0X2xhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2VdKTogRmxhZyB0aGUgdXNlciBs
YW5ndWFnZXMKKyAgICAgICAgICAgIGFzIGludmFsaWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUxhbmd1YWdlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgcmV0dXJuIHRoZSBsaXN0IG9mIHVzZXIgcHJlZmVycmVk
IGxhbmd1YWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURl
ZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9MYW5n
dWFnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1l
ZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIHBsYXRmb3JtJ3MgdXNlciBwcmVm
ZXJyZWQgbGFuZ3VhZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBvdmVycmlkZSB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5n
dWFnZXMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6IEFkZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLgorCisgICAgICAgICog
dGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
dGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6
OkpTSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAg
ICogdGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKTogTmV3Lgor
ICAgICAgICAoV2ViQ29yZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nl
c3NvclNldHRlcik6IE5ldy4KKwogMjAxMi0wMS0xNyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGFzc2VydCBpcyBm
aXJpbmcgd2hlbiB3b3JrZXItcmVhZC1ibG9iLWFzeW5jLmh0bWwgZmFpbHMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgXAorICAgICAgICB0ZXN0aW5nL3Y4L1Y4SW50
ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcAogfSBlbHNlIHsKICAgICBTT1VSQ0VTICs9IFwKQEAgLTM4Myw2ICszODQsNyBAQCB2OCB7
CiAgICAgICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwIFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgXAorICAg
ICAgICB0ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTYzNyw2ICs2MzcsNyBAQCBfX1pON1dlYkNvcmUyMmNvdW50ZXJWYWx1ZUZv
ckVsZW1lbnRFUE5TCiBfX1pON1dlYkNvcmUyMmNyZWF0ZUZyYWdtZW50RnJvbVRleHRFUE5TXzVS
YW5nZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkVQTlNfNUZyYW1lRWoKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNf
N0VsZW1lbnRFagorX19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXYKIF9fWk43
V2ViQ29yZTIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDMUVSS05TXzE1UHJvdGVjdGlvblNwYWNl
RVJLTlNfMTBDcmVkZW50aWFsRWpSS05TXzE2UmVzb3VyY2VSZXNwb25zZUVSS05TXzEzUmVzb3Vy
Y2VFcnJvckUKIF9fWk43V2ViQ29yZTIzY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXNFUE5TXzhEb2N1
bWVudEVSS04zV1RGNlZlY3RvcklQTlNfNE5vZGVFTG0wRUVFCiBfX1pON1dlYkNvcmUyM2dldEhv
c3RuYW1lc1dpdGhDb29raWVzRVJOM1dURjdIYXNoU2V0SU5TMF82U3RyaW5nRU5TMF8xMFN0cmlu
Z0hhc2hFTlMwXzEwSGFzaFRyYWl0c0lTMl9FRUVFCkBAIC02OTcsNiArNjk4LDcgQEAgX19aTjdX
ZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3JlMjlzZXRVc2Vz
VGVzdE1vZGVGb2N1c1JpbmdDb2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRh
Z1NwZWxsaW5nTWVudUV2CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVh
a2luZ0V2CitfX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04z
V1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGljYXRpb25Jc01p
Y3Jvc29mdE1lc3NlbmdlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDQ4ODgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTYzNTEs
OCArNjM1MSwxMCBAQAogICAgICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwnLAogICAgICAg
ICBdLAogICAgICAgICAnd2ViY29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisgICAgICAgICAg
ICAndGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rp
bmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy92OC9X
ZWJDb3JlVGVzdFN1cHBvcnQuaCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9KU0ludGVybmFs
c0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCiAg
ICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgkod29y
a2luZyBjb3B5KQpAQCAtODg3OCw2ICs4ODc4LDcgQEAgX19aTjdXZWJDb3JlMTlGbG9hdEFuaW1h
dGlvblZhbHVlRDBFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMHVwZGF0ZU9wYWNp
dHlPbkxheWVyRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMTBzZXRPcGFjaXR5RWYK
IF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1lRWoKK19fWk43
V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pON1dlYkNvcmUxMlByaW50Q29u
dGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmVMMTF3cml0ZUxheWVyc0VSTlNfMTBUZXh0
U3RyZWFtRVBLTlNfMTFSZW5kZXJMYXllckVQUzJfUktOU183SW50UmVjdEVpagogX19aTjdXZWJD
b3JlTDV3cml0ZUVSTlNfMTBUZXh0U3RyZWFtRVJOU18xMVJlbmRlckxheWVyRVJLTlNfN0ludFJl
Y3RFUzZfUzZfUzZfTlNfMTVMYXllclBhaW50UGhhc2VFaWoKQEAgLTE2Mjg1LDYgKzE2Mjg2LDcg
QEAgX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyOGNyZQogX19aTjdXZWJDb3Jl
MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29yZTI3RGVmYXVs
dExvY2FsaXphdGlvblN0cmF0ZWd5MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYK
IF9fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYKK19fWk43V2Vi
Q29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82
U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9uU3RyYXRlZ3kz
MGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUzOGNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExv
Y2FsaXphdGlvblN0cmF0ZWd5Mzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVu
dUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlVGVzdFN1cHBv
cnQudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTU1NSw2ICs1NTUsNzQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RpbmdcanNc
V2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHRlc3RpbmdcanNcSlNJbnRlcm5hbHNDdXN0b20uY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQy
NzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklU
KSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAi
CisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAy
IgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJ
CQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJ
CQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURp
c2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlG
b3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dh
cm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmls
ZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJl
Y29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0
MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJ
VCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0aW5nXGpzXEpTSW50ZXJuYWxzQ3VzdG9tLmgi
CisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0
aD0iLi5cY29uZmlnLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEw
MSw2ICsxMDEsNyBAQAogCQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tD
dWVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovOyB9
OwogCQkwNzA3NTZFMDE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3NTZEQTE0MjM5
QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3MDlGQzRFMTAy
NURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyog
QWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIg
LyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3Vz
dG9tLmNwcCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8q
IE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2
MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKQEAgLTY3MzQsNiArNjczNSw3IEBACiAJCTA3
MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxp
dHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4RjUwRjAxODY4
MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IG1l
ZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzIzMENCQjE0
QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MjM5LDYgKzE0MjQxLDcgQEAKIAkJNDE4MTVDMUIxMzgzMTk2MzAw
NTdBQUE0IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICov
LAogCQkJCTQxODE1QzFDMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
ICovLAogCQkJCTQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQu
aCAqLywKIAkJCSk7CkBAIC0yNDMxNiw2ICsyNDMxOSw3IEBACiAJCQkJNDE3REE2RDkxMzczNEU2
RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEz
NzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE4
MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuY3Bw
CShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDExIEBAIFN0cmluZyBkZWZhdWx0TGFuZ3Vh
Z2UoKQogICAgIGlmICghb3ZlcnJpZGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBvdmVycmlk
ZTsKIAotICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpOworICAgIFZlY3RvcjxT
dHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFu
Z3VhZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGxhbmd1YWdlc1swXTsKKworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCiB2b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNvbnN0
IFN0cmluZyYgb3ZlcnJpZGUpCkBAIC03Niw0ICs4MCwyNCBAQCB2b2lkIG92ZXJyaWRlRGVmYXVs
dExhbmd1YWdlKGNvbnN0IFN0cmluCiAgICAgbGFuZ3VhZ2VPdmVycmlkZSgpID0gb3ZlcnJpZGU7
CiB9CiAKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmluZz4sIG92ZXJyaWRlLCAo
KSk7CisgICAgcmV0dXJuIG92ZXJyaWRlOworfQorCit2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJl
ZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUpCit7CisgICAgcHJlZmVy
cmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKSA9IG92ZXJyaWRlOworfQorICAgIAorVmVjdG9yPFN0cmlu
Zz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4mIG92ZXJy
aWRlID0gcHJlZmVycmVkTGFuZ3VhZ2VzT3ZlcnJpZGUoKTsKKyAgICBpZiAoIW92ZXJyaWRlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworICAgIAorICAgIHJldHVybiBwbGF0
Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5oCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYW5ndWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxOCArMjcsMjIgQEAKICNkZWZp
bmUgTGFuZ3VhZ2VfaAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIGRlZmF1bHRMYW5ndWFn
ZSgpOwogdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShjb25zdCBTdHJpbmcmKTsKIAorVmVj
dG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwordm9pZCBvdmVycmlkZVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogLy8gVGhlIG9ic2Vy
dmVyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVtIGxhbmd1YWdlIGNoYW5nZXMg
KHVubGVzcyBpdCdzIG92ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoKSkuCiB0
eXBlZGVmIHZvaWQgKCpMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVuY3Rpb24pKHZvaWQqIGNvbnRl
eHQpOwogdm9pZCBhZGRMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQsIExhbmd1
YWdlQ2hhbmdlT2JzZXJ2ZXJGdW5jdGlvbik7CiB2b2lkIHJlbW92ZUxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXIodm9pZCogY29udGV4dCk7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgp
OworVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB2b2lk
IGxhbmd1YWdlRGlkQ2hhbmdlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNr
QmVycnkuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8
QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8TG9jYWxpemVSZXNvdXJjZS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
OSw3ICs2MCw3IEBAIFN0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0aWMgU3Ry
aW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIFN0cmluZyBsYW5nID0gQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdldExvY2FsZSgpLmNfc3RyKCk7CiAgICAgLy8gZ2V0
TG9jYWxlKCkgcmV0dXJucyBhIFBPU0lYIGxvY2FsZSB3aGljaCB1c2VzICdfJyB0byBzZXBhcmF0
ZSBsYW5ndWFnZSBhbmQgY291bnRyeS4KQEAgLTcxLDYgKzcyLDEzIEBAIFN0cmluZyBwbGF0Zm9y
bURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGxhbmc7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+
IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4g
dXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVu
ZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworfQorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQm9sZCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5n
dWFnZUNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDEwICszMywxMSBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkK
K3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLCAoKSk7CiAgICAgaWYgKGNvbXB1
dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKQEAgLTQ0LDQgKzQ1LDExIEBAIFN0cmluZyBw
bGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1
YWdlOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNl
clByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1
cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCShyZXZp
c2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTEgQEAKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCiAjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2Fs
ZURlZmF1bHQgPSBzZXRsb2NhbGUoTENfQ1RZUEUsIDApOwogCkBAIC01MCw0ICs1MSwxMSBAQCBT
dHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobG9jYWxl
RGVmYXVsdCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAg
ICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAg
IHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHIuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxnbGliLmg+CkBAIC0zMiw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIFVzaW5nIHBhbmdvX2xhbmd1YWdlX2dldF9kZWZhdWx0KCkg
aGVyZSBpcyBub3QgYW4gb3B0aW9uLCBiZWNhdXNlCiAvLyBpdCBkb2Vzbid0IHN1cHBvcnQgY2hh
bmdpbmcgdGhlIGxvY2FsZSBpbiBydW50aW1lLCBzbyBpdCByZXR1cm5zCiAvLyBhbHdheXMgdGhl
IHNhbWUgdmFsdWUuCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0
cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBjaGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0
bG9jYWxlKExDX0NUWVBFLCBOVUxMKTsKIApAQCAtNTMsNCArNTQsMTEgQEAgU3RyaW5nIHBsYXRm
b3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gU3RyaW5nKG5vcm1hbGl6ZWREZWZhdWx0
LmdldCgpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAg
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAg
cmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisgICAgCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMw
LDExICszMCwxMiBAQAogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBOU1N0cmluZyAqcHJlZmVycmVkTGFuZ3Vh
Z2VDb2RlOworc3RhdGljIEJPT0wgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzOwogCiBAaW50
ZXJmYWNlIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIgOiBOU09iamVjdCB7CiB9CkBAIC00Niw4
ICs0Nyw3IEBAICsgKHZvaWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2gKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgW3ByZWZlcnJlZExhbmd1YWdlQ29kZSBy
ZWxlYXNlXTsKLSAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBuaWw7CisgICAgdXNlQ2FjaGVk
UHJlZmVycmVkTGFuZ3VhZ2VzID0gTk87CiAKICAgICBsYW5ndWFnZURpZENoYW5nZSgpOwogfQpA
QCAtODUsMjMgKzg1LDMwIEBAIHN0YXRpYyBOU1N0cmluZyAqY3JlYXRlSFRUUFN0eWxlTGFuZ3Vh
Z2UKICAgICByZXR1cm4gaHR0cFN0eWxlTGFuZ3VhZ2VDb2RlOwogfQogCi1TdHJpbmcgcGxhdGZv
cm1EZWZhdWx0TGFuZ3VhZ2UoKQorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLCAoKSk7CisKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgaWYgKCFwcmVmZXJy
ZWRMYW5ndWFnZUNvZGUpIHsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc3luY2hyb25pemVdOwotICAgICAgICBOU0FycmF5ICpsYW5ndWFnZXMgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzdHJpbmdBcnJheUZvcktleTpAIkFw
cGxlTGFuZ3VhZ2VzIl07Ci0gICAgICAgIGlmICghW2xhbmd1YWdlcyBjb3VudF0pCi0gICAgICAg
ICAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBAImVuIjsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2Rl
KFtsYW5ndWFnZXMgb2JqZWN0QXRJbmRleDowXSk7CisgICAgaWYgKCF1c2VDYWNoZWRQcmVmZXJy
ZWRMYW5ndWFnZXMpIHsKKyAgICAgICAgdXNlQ2FjaGVkUHJlZmVycmVkTGFuZ3VhZ2VzID0gWUVT
OworICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmNsZWFyKCk7CisKKyAgICAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGxhbmd1YWdlcyhBZG9wdENGLCBDRkxvY2FsZUNvcHlQcmVmZXJy
ZWRMYW5ndWFnZXMoKSk7CisgICAgICAgIENGSW5kZXggbGFuZ3VhZ2VDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChsYW5ndWFnZXMuZ2V0KCkpOworICAgICAgICBpZiAoIWxhbmd1YWdlQ291bnQpCisg
ICAgICAgICAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZCgiZW4iKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBsYW5ndWFnZUNvdW50
OyBpKyspIHsKKyAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhbmd1YWdl
KEFkb3B0Q0YsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0
SW5kZXgobGFuZ3VhZ2VzLmdldCgpLCBpKSkpOworICAgICAgICAgICAgICAgIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMuYXBwZW5kKGNyZWF0ZUhUVFBTdHlsZUxhbmd1YWdlQ29kZSgoTlNTdHJpbmcg
KilsYW5ndWFnZS5nZXQoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCi0g
ICAgTlNTdHJpbmcgKmNvZGUgPSBbW3ByZWZlcnJlZExhbmd1YWdlQ29kZSByZXRhaW5dIGF1dG9y
ZWxlYXNlXTsKLQogI2lmICFQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgbGFuZ3VhZ2VD
aGFuZ2VPYnNlcnZlckFkZGVkOwogICAgIGlmICghbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVk
KSB7CkBAIC0xMTIsMTEgKzExOSwxMiBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2Uo
KQogICAgICAgICBsYW5ndWFnZUNoYW5nZU9ic2VydmVyQWRkZWQgPSB0cnVlOwogICAgIH0KICNl
bmRpZiAvLyAhUExBVEZPUk0oSU9TKQotCi0gICAgcmV0dXJuIGNvZGU7CisgICAgCisgICAgcmV0
dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9MYW5ndWFnZVF0LmNw
cAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFuZ3Vh
Z2VRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwyMSBAQAogCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDxRTG9jYWxlPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFu
Z3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBRTG9jYWxl
IGxvY2FsZTsKICAgICByZXR1cm4gbG9jYWxlLm5hbWUoKS5yZXBsYWNlKFFMYXRpbjFDaGFyKCdf
JyksIFFMYXRpbjFDaGFyKCctJykpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRM
YW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5n
dWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCShyZXZpc2lv
biAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIK
IAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ5LDcg
KzUwLDcgQEAgc3RhdGljIFN0cmluZyBsb2NhbGVJbmZvKExDVFlQRSBsb2NhbGVUeQogICAgIHJl
dHVybiBsb2NhbGVOYW1lOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQor
c3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBzdGF0aWMgU3RyaW5nIGNv
bXB1dGVkRGVmYXVsdExhbmd1YWdlOwogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2Uu
aXNFbXB0eSgpKQpAQCAtNjYsNCArNjcsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxT
dHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0
cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
LmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCShy
ZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCkBAIC02NzAs
NCArNjcxLDE0IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQKICAg
ICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKGVuYWJsZWQp
OwogfQogCitWZWN0b3I8U3RyaW5nPiBJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7
Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMpCit7CisgICAgV2ViQ29yZTo6b3ZlcnJpZGVVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNyw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFibGVkKERvY3VtZW50KiwgYm9vbCBlbmFi
bGVkLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJuYWxz
SWQ7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShy
ZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKGluIERvY3VtZW50IGRvY3VtZW50KSByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQg
ZG9jdW1lbnQsIGluIGZsb2F0IHNjYWxlRmFjdG9yLCBpbiBsb25nIHgsIGluIGxvbmcgeSkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIEFycmF5IHVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXM7CiAgICAgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
dGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0ludGVybmFscy5oIgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNJbnRl
cm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorewor
ICAgIEludGVybmFscyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsKKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMgPSBpbXAtPnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOworICAgIAorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFycmF5OworICAgIFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7CisgICAgZm9y
IChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYW5ndWFnZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICBhcnJheS5hcHBlbmQoanNTdHJpbmcoZXhlYywgc3Ry
aW5nVG9VU3RyaW5nKCppdCkpKTsKKyAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgZ2xv
YmFsT2JqZWN0KCksIGFycmF5KTsKK30KKwordm9pZCBKU0ludGVybmFsczo6c2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYg
KCFpc0pTQXJyYXkodmFsdWUpKSB7CisgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVjdGVkIEFycmF5
IikpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIFZlY3RvcjxTdHJpbmc+IGxh
bmd1YWdlczsKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICBTdHJp
bmcgbGFuZ3VhZ2UgPSB1c3RyaW5nVG9TdHJpbmcoYXJyYXktPmdldEluZGV4KGkpLnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZChsYW5ndWFnZSk7CisgICAgfQorICAg
IAorICAgIEludGVybmFscyogaW1wID0gc3RhdGljX2Nhc3Q8SW50ZXJuYWxzKj4oaW1wbCgpKTsK
KyAgICBpbXAtPnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcvdjgv
VjhJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhJbnRl
cm5hbHMuaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlcm5h
bHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJbnRlcm5h
bHMqIGludGVybmFscyA9IFY4SW50ZXJuYWxzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMgPSBpbnRlcm5hbHMtPnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHY4OjpOdWxsKCk7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpB
cnJheTo6TmV3KGxhbmd1YWdlcy5zaXplKCkpOworICAgIFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBsYW5ndWFnZXMuZW5kKCk7CisgICAgaW50IGluZGV4ID0gMDsKKyAgICBm
b3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbGFuZ3VhZ2VzLmJlZ2lu
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGFycmF5LT5TZXQodjg6OkludGVnZXI6
Ok5ldyhpbmRleCsrKSwgdjhTdHJpbmcoKml0ZXIpKTsKKyAgICByZXR1cm4gYXJyYXk7Cit9CisK
K3ZvaWQgVjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgaWYgKCF2YWx1ZS0+SXNBcnJheSgp
KSB7CisgICAgICAgIHRocm93RXJyb3IoInNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXM6IEV4cGVj
dGVkIEFycmF5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0
cmluZz4gbGFuZ3VhZ2VzOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6
TG9jYWw8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcnJheS0+TGVuZ3RoKCk7ICsraSkKKyAgICAgICAgbGFuZ3VhZ2VzLmFwcGVuZCh0b1dlYkNv
cmVTdHJpbmcoYXJyYXktPkdldChpKSkpOworICAgIAorICAgIEludGVybmFscyogaW50ZXJuYWxz
ID0gVjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIGludGVybmFscy0+
c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MjQwKQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTIt
MDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKTogRW5jb2RlIHRoZSBsYW5ndWFnZXMgYXJyYXku
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6
IERlY29kZSB0aGUgbGFuZ3VhZ2VzIGFycmF5LgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6Omxhbmd1YWdlQ2hhbmdlZCk6IE92ZXJy
aWRlIHRoZSBXZWJQcm9jZXNzIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmVuc3VyZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIHBhcmFtZXRlcnMu
bGFuZ3VhZ2VzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBPdmVycmlkZSB1
c2VyIGxhbmd1YWdlcyBhcnJheS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6dXNlclBy
ZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
IERlZmluZSBVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZC4KKworICAgICAgICAqIHdpbi9X
ZWJLaXQyLmRlZjogRXhwb3J0IHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAgICAqIHdpbi9XZWJL
aXQyQ0ZMaXRlLmRlZjogRGl0dG8uCisKIDIwMTItMDEtMTcgIE1hdHRoZXcgRGVsYW5leSAgPG1k
ZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBPbiBwb3N0LUxpb24gcmVsZWFzZXMsIHByZXNl
cnZlIHRoZSBMaW9uIGJlaGF2aW9yIHdoZXJlIFdlYktpdCBleHBsaWNpdGx5IGNhbGxzIC1zZXRH
ZW9tZXRyeUZsaXBwZWQgb24gdGhlIGhvc3RpbmcgbGF5ZXIgZm9yIGFwcGxpY2F0aW9ucyB0aGF0
IHdlcmUgbGlua2VkIG9uIExpb24gb3IgZWFybGllci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlz
aW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQogICAgIGVuY29kZXItPmVuY29kZShkaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0
KTsKICNlbmRpZgotICAgIGVuY29kZXItPmVuY29kZShsYW5ndWFnZUNvZGUpOworICAgIGVuY29k
ZXItPmVuY29kZShsYW5ndWFnZXMpOwogICAgIGVuY29kZXItPmVuY29kZSh0ZXh0Q2hlY2tlclN0
YXRlKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKGRlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKTsKQEAgLTEz
OCw3ICsxMzgsNyBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cGFyYW1ldGVycy5sYW5ndWFnZUNvZGUpKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFt
ZXRlcnMubGFuZ3VhZ2VzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKHBhcmFtZXRlcnMudGV4dENoZWNrZXJTdGF0ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzcsNyArNzcsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAg
Ym9vbCBkaXNhYmxlUGx1Z2luUHJvY2Vzc01lc3NhZ2VUaW1lb3V0OwogI2VuZGlmCiAKLSAgICBT
dHJpbmcgbGFuZ3VhZ2VDb2RlOworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKIAogICAg
IFRleHRDaGVja2VyU3RhdGUgdGV4dENoZWNrZXJTdGF0ZTsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyAr
MjMxLDcgQEAgdm9pZCBXZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5nZWQodm9pZCogYwogCiB2b2lk
IFdlYkNvbnRleHQ6Omxhbmd1YWdlQ2hhbmdlZCgpCiB7Ci0gICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpMYW5ndWFnZUNoYW5nZWQoZGVmYXVsdExhbmd1YWdlKCkp
KTsKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKSkpOwogfQogCiB2
b2lkIFdlYkNvbnRleHQ6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCkKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFdlYkNvbnRleHQ6
OmVuc3VyZVdlYlByb2Nlc3MoKQogCiAgICAgcGFyYW1ldGVycy5zaG91bGRUcmFja1Zpc2l0ZWRM
aW5rcyA9IG1faGlzdG9yeUNsaWVudC5zaG91bGRUcmFja1Zpc2l0ZWRMaW5rcygpOwogICAgIHBh
cmFtZXRlcnMuY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKLSAgICBwYXJhbWV0ZXJzLmxhbmd1
YWdlQ29kZSA9IGRlZmF1bHRMYW5ndWFnZSgpOworICAgIHBhcmFtZXRlcnMubGFuZ3VhZ2VzID0g
dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSA9IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJz
LmRhdGFiYXNlRGlyZWN0b3J5ID0gZGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBwYXJhbWV0ZXJz
LmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMDQ4ODgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2VzcyhjbwogICAgIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKHBhcmFtZXRlcnMuc2hvdWxk
VHJhY2tWaXNpdGVkTGlua3MpOwogICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1
YWdlQ29kZS5pc0VtcHR5KCkpCi0gICAgICAgIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKHBhcmFt
ZXRlcnMubGFuZ3VhZ2VDb2RlKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1w
dHkoKSkKKyAgICAgICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKHBhcmFtZXRlcnMu
bGFuZ3VhZ2VzKTsKIAogICAgIG1fdGV4dENoZWNrZXJTdGF0ZSA9IHBhcmFtZXRlcnMudGV4dENo
ZWNrZXJTdGF0ZTsKIApAQCAtMjg4LDkgKzI4OCw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2hv
dWxkVXNlRm9udFNtb290aGkKICAgICBXZWJDb3JlOjpGb250OjpzZXRTaG91bGRVc2VTbW9vdGhp
bmcodXNlRm9udFNtb290aGluZyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6bGFuZ3VhZ2VDaGFu
Z2VkKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpIGNvbnN0Cit2b2lkIFdlYlByb2Nlc3M6OnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYW5ndWFnZXMp
IGNvbnN0CiB7Ci0gICAgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UobGFuZ3VhZ2UpOworICAgIG92
ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShy
ZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogICAgIHZvaWQgc2V0QWx3
YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9pZCBzZXRTaG91bGRVc2VG
b250U21vb3RoaW5nKGJvb2wpOwotICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OworICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVD
aGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk7CiAjaWYgUExBVEZPUk0oV0lO
KQogICAgIHZvaWQgc2V0U2hvdWxkUGFpbnROYXRpdmVDb250cm9scyhib29sKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIHsKICAgICBTZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUg
dGltZW91dEludGVydmFsKQogICAgIFNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJv
b2wgYWx3YXlzVXNlQ29tcGxleFRleHQpCiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhi
b29sIHVzZUZvbnRTbW9vdGhpbmcpCi0gICAgTGFuZ3VhZ2VDaGFuZ2VkKFdURjo6U3RyaW5nIGxh
bmd1YWdlKQorICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxXVEY6OlN0
cmluZz4gbGFuZ3VhZ2VzKQogICAgIEZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICNpZiBQTEFURk9STShXSU4pCiAgICAgU2V0U2hv
dWxkUGFpbnROYXRpdmVDb250cm9scyhib29sIHNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQCBF
WFBPUlRTCiAgICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBK
U0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBsQFdURkBAVj8kV2Vh
a0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/JEhhc2hUcmFpdHNAUEFWU3Ry
aW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlND
QEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZAQFoKICAgICAgICAgP2xhc3RDaGFuZ2VXYXNVc2Vy
RWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAg
ID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3JlQEBRQUU/QVY/JFZl
Y3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFWTm9kZUAyQFZNYXJr
ZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9vdmVycmlkZVVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RG
QEBAWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAg
ICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAg
ICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9B
Vj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgpA
QCAtMTkwLDQgKzE5MSw1IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2ViQ29yZUBAWUE/QVZK
U1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZSYW5n
ZUAxQEBaCiAgICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VAMUBWSlNWYWx1ZUBK
U0NAQEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNARG9j
dW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdl
YkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/
dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJbmRleDogU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3
LDcgQEAgRVhQT1JUUwogICAgICAgICA/anNTdHJpbmdTbG93Q2FzZUBXZWJDb3JlQEBZQT9BVkpT
VmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BBQVY/JEhhc2hNYXBAUEFWU3RyaW5nSW1wbEBXVEZA
QFY/JFdlYWtAVkpTU3RyaW5nQEpTQ0BAQEpTQ0BAVVN0cmluZ0hhc2hAMkBVPyRIYXNoVHJhaXRz
QFBBVlN0cmluZ0ltcGxAV1RGQEBAMkBVPyRIYXNoVHJhaXRzQFY/JFdlYWtAVkpTU3RyaW5nQEpT
Q0BAQEpTQ0BAQDJAQFdURkBAUEFWU3RyaW5nSW1wbEA2QEBaCiAgICAgICAgID9sYXN0Q2hhbmdl
V2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgog
ICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFF
P0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZAQFBBVk5vZGVA
MkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgorICAgICAgICA/b3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAk
MEFAQFdURkBAQFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAy
QFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFha
CiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29y
ZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBI
SF9OQFoKQEAgLTE4Myw0ICsxODQsNSBAQCBFWFBPUlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVA
QFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFA
UEFWUmFuZ2VAMUBAWgogICAgICAgICA/dG9SYW5nZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpT
VmFsdWVASlNDQEBAWgogICAgICAgICA/dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1
YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAg
ICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKSW5kZXg6
IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL2F1dG90
b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOSBAQCBfWk43
V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2OwogX1pON1dlYkNvcmUyMFNoYWRvd0Nv
bnRlbnRFbGVtZW50NmNyZWF0ZUVQTlNfOERvY3VtZW50RTsKIF9aTjdXZWJDb3JlMjFnZXRDYWNo
ZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlDbGFzc0luZm9F
OwogX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzdFbGVtZW50RWo7Citf
Wk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2OwogX1pON1dlYkNvcmUyNERvY3Vt
ZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1h
cmtlcjExTWFya2VyVHlwZXNFOworX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExh
bmd1YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUU7CiBfWk43V2ViQ29yZTZK
U05vZGUxMHB1dFZpcnR1YWxFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMx
XzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFOwogX1pON1dlYkNvcmU2SlNOb2RlMjB2
aXNpdENoaWxkcmVuVmlydHVhbEVSTjNKU0MxMVNsb3RWaXNpdG9yRTsKIF9aTjdXZWJDb3JlNkpT
Tm9kZTZzX2luZm9FOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MjM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMu
Y2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxp
c3Qgb2YgcHJlZmVycmVkIGxhbmd1YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgSlNJbnRlcm5hbHNDdXN0b20u
Y3BwLgorCiAyMDEyLTAxLTE3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRW5hYmxlIHRlc3RzIG9uIHRoZSBtYWMtZXdzCkluZGV4OiBUb29scy9HTlVtYWtlZmls
ZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA0ODg4
KQorKysgVG9vbHMvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcg
QEAgbGliV2ViQ29yZUludGVybmFsc19sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmgKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1
MjQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMDEtMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgUHJvdmlkZSBhY2Nlc3MgdG8gdXNlcidzIGxpc3Qgb2YgcHJlZmVycmVkIGxh
bmd1YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzYxMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sOiBB
ZGRlZC4KKwogMjAxMi0wMS0xNyAgUGhpbGlwIFJvZ2VycyAgPHBkckBnb29nbGUuY29tPgogCiAg
ICAgICAgIEZpeCBnZXRCQm94IGZvciBwZXJwZW5kaWN1bGFyIHBhdGhzCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5n
dWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5l
c3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVy
cmVkIGxhbmd1YWdlcy4KKworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJu
cyBhIG5vbi1lbXB0eSBhcnJheTogUEFTUworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0OiBQ
QVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3Vh
Z2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVm
ZXJyZWQtbGFuZ3VhZ2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGFy
bmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ1IEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZnVuY3Rpb24gdGVzdChtZXNzYWdlLCBzdWNjZXNzKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAg
ICAgICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsg
JzogJyArIChzdWNjZXNzID8gJ1BBU1MnIDogJ0ZBSUwnKSk7CisgICAgICAgICAgICAgICAgbGku
YXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgdmFyIGxhbmd1YWdlcyA9IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwor
CisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMg
cmV0dXJucyBhIG5vbi1lbXB0eSBhcnJheScsIGxhbmd1YWdlcy5sZW5ndGgpOworCisgICAgICAg
ICAgICAgICAgbGFuZ3VhZ2VzLnVuc2hpZnQoImZpcnN0LWxhbmd1YWdlIik7CisgICAgICAgICAg
ICAgICAgbGFuZ3VhZ2VzLnB1c2goImxhc3QtbGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICBp
bnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyA9IGxhbmd1YWdlczsKKworICAgICAgICAg
ICAgICAgIHZhciBuZXdMYW5ndWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdl
czsKKyAgICAgICAgICAgICAgICB2YXIgc2FtZUNvbnRlbnRzID0gbmV3TGFuZ3VhZ2VzLmxlbmd0
aCA9PSBsYW5ndWFnZXMubGVuZ3RoOworICAgICAgICAgICAgICAgIGlmIChzYW1lQ29udGVudHMp
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdMYW5ndWFnZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdMYW5ndWFnZXNb
aV0gIT0gbGFuZ3VhZ2VzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZUNv
bnRlbnRzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMgaXMgbXV0YWJsZSwgYW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0
Jywgc2FtZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAg
IDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzIHJldHVybnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1
YWdlcy48L3A+CisgICAgICAgIDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122951</attachid>
            <date>2012-01-18 09:48:06 -0800</date>
            <delta_ts>2012-01-18 11:02:51 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>language_patch_17.txt</filename>
            <type>text/plain</type>
            <size>47037</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE3ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBMaXN0IHRoZSBuZXcgZnVuY3Rpb25zLgorCiAyMDEyLTAxLTE3
ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTlVM
TCBwdHIgaW4gV2ViQ29yZTo6UmVuZGVyU1ZHSW5saW5lVGV4dDo6bG9jYWxDYXJldFJlY3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAxLTE3ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRv
IHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVy
cmVkLWxhbmd1YWdlLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgdGhl
IG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOiBJbmNsdWRlIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52
Y3Byb2o6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0TGFuZ3VhZ2UpOiBSZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc1sw
XS4KKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKTogTmV3LCBy
ZXR1cm4gdGhlIGxhbmd1YWdlcyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJyaWRl
VXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgc2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUu
CisgICAgICAgIChXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4g
dGhlIGxhbmd1YWdlcyBhcnJheS4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisg
ICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9y
bUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3Rh
dGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTog
TmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBsYXRmb3JtTGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UsIG5vdyBzdGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMpOiBOZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VH
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJv
bSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6
OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRm
b3JtL21hYy9MYW5ndWFnZS5tbToKKyAgICAgICAgKCtbV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
ciBfd2Via2l0X2xhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaGFuZ2VdKTogRmxhZyB0aGUgdXNlciBs
YW5ndWFnZXMKKyAgICAgICAgICAgIGFzIGludmFsaWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0
Zm9ybUxhbmd1YWdlKTogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclBy
ZWZlcnJlZExhbmd1YWdlcyk6IE5ldywgcmV0dXJuIHRoZSBsaXN0IG9mIHVzZXIgcHJlZmVycmVk
IGxhbmd1YWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURl
ZmF1bHRMYW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9MYW5n
dWFnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1l
ZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIHBsYXRmb3JtJ3MgdXNlciBwcmVm
ZXJyZWQgbGFuZ3VhZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCBvdmVycmlkZSB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5n
dWFnZXMuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5pZGw6IEFkZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLgorCisgICAgICAgICog
dGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0lu
dGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6
OkpTSW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAg
ICogdGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKTogTmV3Lgor
ICAgICAgICAoV2ViQ29yZTo6VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nl
c3NvclNldHRlcik6IE5ldy4KKwogMjAxMi0wMS0xNyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGFzc2VydCBpcyBm
aXJpbmcgd2hlbiB3b3JrZXItcmVhZC1ibG9iLWFzeW5jLmh0bWwgZmFpbHMuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTIyNSw2ICsyMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L1Y4
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgXAorICAgICAgICB0ZXN0aW5nL3Y4L1Y4SW50
ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcAogfSBlbHNlIHsKICAgICBTT1VSQ0VTICs9IFwKQEAgLTM4Myw2ICszODQsNyBAQCB2OCB7
CiAgICAgICAgIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVu
dGltZV9vYmplY3QuY3BwIFwKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAgXAorICAg
ICAgICB0ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcCBcCiAgICAgICAgIHRlc3Rpbmcv
anMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
cmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTYzNywxMCArNjM3LDEwIEBAIF9fWk43V2ViQ29yZTIyY291bnRlclZhbHVl
Rm9yRWxlbWVudEVQTlMKIF9fWk43V2ViQ29yZTIyY3JlYXRlRnJhZ21lbnRGcm9tVGV4dEVQTlNf
NVJhbmdlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0
aW9uRVBOU181RnJhbWVFagogX19aTjdXZWJDb3JlMjJleHRlcm5hbFJlcHJlc2VudGF0aW9uRVBO
U183RWxlbWVudEVqCitfX1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdgogX19a
TjdXZWJDb3JlMjNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNfMTVQcm90ZWN0aW9uU3Bh
Y2VFUktOU18xMENyZWRlbnRpYWxFalJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJLTlNfMTNSZXNv
dXJjZUVycm9yRQogX19aTjdXZWJDb3JlMjNjcmVhdGVGcmFnbWVudEZyb21Ob2Rlc0VQTlNfOERv
Y3VtZW50RVJLTjNXVEY2VmVjdG9ySVBOU180Tm9kZUVMbTBFRUUKIF9fWk43V2ViQ29yZTIzZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXNFUk4zV1RGN0hhc2hTZXRJTlMwXzZTdHJpbmdFTlMwXzEwU3Ry
aW5nSGFzaEVOUzBfMTBIYXNoVHJhaXRzSVMyX0VFRUUKLV9fWk43V2ViQ29yZTIzb3ZlcnJpZGVE
ZWZhdWx0TGFuZ3VhZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3Bl
cnR5TGlzdFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRS
ZXNvdXJjZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19a
TjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1hcmtlcnNGb3JFUE5TXzROb2Rl
RU5TXzE0RG9jdW1lbnRNYXJrZXIxMU1hcmtlclR5cGVzRQpAQCAtNjk3LDYgKzY5Nyw3IEBAIF9f
Wk43V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGUKIF9fWk43V2ViQ29yZTI5c2V0
VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3JFYgogX19aTjdXZWJDb3JlMzBjb250ZXh0TWVudUl0
ZW1UYWdTcGVsbGluZ01lbnVFdgogX19aTjdXZWJDb3JlMzBjb250ZXh0TWVudUl0ZW1UYWdTdG9w
U3BlYWtpbmdFdgorX19aTjdXZWJDb3JlMzBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNF
UktOM1dURjZWZWN0b3JJTlMwXzZTdHJpbmdFTG0wRUVFCiBfX1pON1dlYkNvcmUzMUNyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU1ZW1wdHlFdgogX19aTjdXZWJDb3JlMzFDcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlNnNoYXJlZEV2CiBfX1pON1dlYkNvcmUzMWFwcGxpY2F0aW9u
SXNNaWNyb3NvZnRNZXNzZW5nZXJFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTA0
ODg4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02
MzUxLDggKzYzNTEsMTAgQEAKICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuaWRsJywKICAg
ICAgICAgXSwKICAgICAgICAgJ3dlYmNvcmVfdGVzdF9zdXBwb3J0X2ZpbGVzJzogWworICAgICAg
ICAgICAgJ3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwJywKICAgICAgICAgICAgICd0
ZXN0aW5nL3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3Rpbmcv
djgvV2ViQ29yZVRlc3RTdXBwb3J0LmgnLAorICAgICAgICAgICAgJ3Rlc3RpbmcvanMvSlNJbnRl
cm5hbHNDdXN0b20uY3BwJywKICAgICAgICAgICAgICd0ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3Vw
cG9ydC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0Lmgn
LAogICAgICAgICAgICAgJ3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIJ
KHdvcmtpbmcgY29weSkKQEAgLTg4NzgsNiArODg3OCw3IEBAIF9fWk43V2ViQ29yZTE5RmxvYXRB
bmltYXRpb25WYWx1ZUQwRXYKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMjB1cGRhdGVP
cGFjaXR5T25MYXllckV2CiBfX1pON1dlYkNvcmUxNVBsYXRmb3JtQ0FMYXllcjEwc2V0T3BhY2l0
eUVmCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRpb25FUE5TXzVGcmFtZUVqCitf
X1pON1dlYkNvcmUyMnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNFdgogX19aTjdXZWJDb3JlMTJQcmlu
dENvbnRleHRDMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlTDExd3JpdGVMYXllcnNFUk5TXzEw
VGV4dFN0cmVhbUVQS05TXzExUmVuZGVyTGF5ZXJFUFMyX1JLTlNfN0ludFJlY3RFaWoKIF9fWk43
V2ViQ29yZUw1d3JpdGVFUk5TXzEwVGV4dFN0cmVhbUVSTlNfMTFSZW5kZXJMYXllckVSS05TXzdJ
bnRSZWN0RVM2X1M2X1M2X05TXzE1TGF5ZXJQYWludFBoYXNlRWlqCkBAIC0xNjI4NSw2ICsxNjI4
Niw3IEBAIF9fWk43V2ViQ29yZTIxQ29udGV4dE1lbnVDb250cm9sbGVyMjhjcmUKIF9fWk43V2Vi
Q29yZTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUyN0Rl
ZmF1bHRMb2NhbGl6YXRpb25TdHJhdGVneTMxY29udGV4dE1lbnVJdGVtVGFnU3RhcnRTcGVha2lu
Z0V2CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CitfX1pO
N1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0VSS04zV1RGNlZlY3RvcklO
UzBfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0
ZWd5MzBjb250ZXh0TWVudUl0ZW1UYWdTdG9wU3BlYWtpbmdFdgogX19aTjdXZWJDb3JlMzhjb250
ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudUV2CiBfX1pON1dlYkNvcmUyN0RlZmF1
bHRMb2NhbGl6YXRpb25TdHJhdGVneTM4Y29udGV4dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlv
bk1lbnVFdgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZVRlc3RT
dXBwb3J0LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlVGVzdFN1cHBvcnQudmNwcm9qCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlVGVzdFN1cHBvcnQudmNwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01NTUsNiArNTU1LDc0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0aW5n
XGpzXFdlYkNvcmVUZXN0U3VwcG9ydC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKwkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0aW5nXGpzXEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCIKKwkJ
CQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNl
UHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2
NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5I
RVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVy
PSIwIgorCQkJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQwNjU7NDI3Mzs0NTY1OzQ3MDE7
NDcwMiIKKwkJCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iJChOT0lOSEVSSVQpIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgor
CQkJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQwNjU7NDI3Mzs0NTY1OzQ3MDE7NDcwMiIK
KwkJCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iJChOT0lOSEVSSVQpIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJ
CQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJ
CQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdf
QWxsfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lm
aWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVk
ZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCVVz
ZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQw
NjU7NDI3Mzs0NTY1OzQ3MDE7NDcwMiIKKwkJCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iJChOT0lO
SEVSSVQpIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cdGVzdGluZ1xqc1xKU0ludGVybmFsc0N1c3Rv
bS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWxlCiAJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNvbmZpZy5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDEsNiArMTAxLDcgQEAKIAkJMDcwNzU2REYxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRy
YWNrQ3VlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzA3NTZEOTE0MjM5QjRDMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCAq
LzsgfTsKIAkJMDcwNzU2RTAxNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwNzU2REEx
NDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovOyB9OwogCQkwNzA5RkM0
RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcwOUZDNEQxMDI1REVFMzAwNTlDREJB
IC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLzsgfTsKKwkJMDcyMzBDQkMxNEMxMEVEOTAwRjZC
NzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MjMwQ0JCMTRDMTBFRDkwMEY2QjcwMiAvKiBKU0ludGVybmFs
c0N1c3RvbS5jcHAgKi87IH07CiAJCTA3MkM4QjExMTMxQzUxODYwMEE0RkNFOSAvKiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi87IH07CiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYw
NCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3
NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CkBAIC02NzM0LDYgKzY3MzUsNyBAQAog
CQkwNzA3NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNrQ3VlTGlzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzA5RkM0RDEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNz
aWJpbGl0eVNsaWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3Np
YmlsaXR5U2xpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MEREOEY1MEYw
MTg2ODAwMDcyN0RFQiAvKiBtZWRpYUNvbnRyb2xzLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBtZWRpYUNvbnRyb2xzLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcyMzBD
QkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJuYWxzQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxh
eWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4MDBC
Nzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDIzOSw2ICsxNDI0MSw3IEBACiAJCTQxODE1QzFCMTM4MzE5
NjMwMDU3QUFBNCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3VzdG9tLmNw
cCAqLywKIAkJCQk0MTgxNUMxQzEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0
LmNwcCAqLywKIAkJCQk0MTgxNUMxRDEzODMxOTgzMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBw
b3J0LmggKi8sCiAJCQkpOwpAQCAtMjQzMTYsNiArMjQzMTksNyBAQAogCQkJCTQxN0RBNkQ5MTM3
MzRFNkUwMDdDNTdGQiAvKiBJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE3
MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpTSW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQxODE1QzFFMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDcyMzBDQkMxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50ZXJuYWxzQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdl
LmNwcAkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3Vh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NiwyNCArNTYsMzMgQEAgdm9pZCBsYW5ndWFnZURp
ZENoYW5nZSgpCiAgICAgICAgIGl0ZXItPnNlY29uZChpdGVyLT5maXJzdCk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcmIGxhbmd1YWdlT3ZlcnJpZGUoKQorU3RyaW5nIGRlZmF1bHRMYW5ndWFnZSgpCiB7
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG92ZXJyaWRlLCAoKSk7Ci0gICAgcmV0
dXJuIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKKyAgICBpZiAobGFuZ3VhZ2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IGxhbmd1YWdlc1swXTsKKworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1TdHJpbmcg
ZGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiYgcHJlZmVycmVkTGFuZ3Vh
Z2VzT3ZlcnJpZGUoKQogewotICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUgPSBsYW5ndWFnZU92
ZXJyaWRlKCk7Ci0gICAgaWYgKCFvdmVycmlkZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG92
ZXJyaWRlOwotCi0gICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgb3ZlcnJpZGUsICgpKTsKKyAgICByZXR1
cm4gb3ZlcnJpZGU7CiB9CiAKLXZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2UoY29uc3QgU3Ry
aW5nJiBvdmVycmlkZSkKK3ZvaWQgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSkKIHsKLSAgICBsYW5ndWFnZU92ZXJyaWRlKCkgPSBv
dmVycmlkZTsKKyAgICBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpID0gb3ZlcnJpZGU7Cit9
CisgICAgCitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBW
ZWN0b3I8U3RyaW5nPiYgb3ZlcnJpZGUgPSBwcmVmZXJyZWRMYW5ndWFnZXNPdmVycmlkZSgpOwor
ICAgIGlmICghb3ZlcnJpZGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Cisg
ICAgCisgICAgcmV0dXJuIHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYW5ndWFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHJldmlzaW9uIDEwNDg4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDE4ICsyNywyMiBAQAogI2RlZmluZSBMYW5ndWFnZV9oCiAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBT
dHJpbmcgZGVmYXVsdExhbmd1YWdlKCk7Ci12b2lkIG92ZXJyaWRlRGVmYXVsdExhbmd1YWdlKGNv
bnN0IFN0cmluZyYpOworVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlcygpOwor
dm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29uc3QgVmVjdG9yPFN0cmluZz4m
KTsKIAotLy8gVGhlIG9ic2VydmVyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gc3lzdGVt
IGxhbmd1YWdlIGNoYW5nZXMgKHVubGVzcyBpdCdzIG92ZXJyaWRkZW4gYnkgb3ZlcnJpZGVEZWZh
dWx0TGFuZ3VhZ2UoKSkuCisvLyBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQg
d2hlbiBzeXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcy4KIHR5cGVkZWYgdm9pZCAoKkxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJGdW5jdGlvbikodm9pZCogY29udGV4dCk7CiB2b2lkIGFkZExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXIodm9pZCogY29udGV4dCwgTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9u
KTsKIHZvaWQgcmVtb3ZlTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0KTsKIAot
U3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCk7CitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9y
bVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKworLy8gQ2FsbGVkIGZyb20gcGxhdGZvcm0gc3Bl
Y2lmaWMgY29kZSB3aGVuIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlKHMpIGNoYW5nZS4K
IHZvaWQgbGFuZ3VhZ2VEaWRDaGFuZ2UoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdz
QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KICNpbmNsdWRlIDxMb2NhbGl6ZVJlc291
cmNlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU5LDcgKzYwLDcgQEAgU3RyaW5nIGlucHV0RWxlbWVudEFsdFRleHQoKQogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3N0YXRp
YyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgU3RyaW5nIGxhbmcgPSBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0TG9jYWxlKCkuY19zdHIoKTsKICAgICAv
LyBnZXRMb2NhbGUoKSByZXR1cm5zIGEgUE9TSVggbG9jYWxlIHdoaWNoIHVzZXMgJ18nIHRvIHNl
cGFyYXRlIGxhbmd1YWdlIGFuZCBjb3VudHJ5LgpAQCAtNzEsNiArNzIsMTMgQEAgU3RyaW5nIHBs
YXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gbGFuZzsKIH0KIAorVmVjdG9yPFN0
cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3Ry
aW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMu
YXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7Cit9CisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdCb2xkKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0xhbmd1YWdlQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9MYW5ndWFnZUNocm9taXVtLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDExIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3Vh
Z2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UsICgpKTsKICAgICBpZiAo
Y29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgpKQpAQCAtNDQsNCArNDUsMTEgQEAgU3Ry
aW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0
TGFuZ3VhZ2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1
YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAg
ICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdlKCkpOworICAg
IHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTGFuZ3VhZ2VFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5jcHAJ
KHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFn
ZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMSBAQAogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExh
bmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgY2hhciog
bG9jYWxlRGVmYXVsdCA9IHNldGxvY2FsZShMQ19DVFlQRSwgMCk7CiAKQEAgLTUwLDQgKzUxLDEx
IEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIFN0cmluZyhs
b2NhbGVEZWZhdWx0KTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9MYW5ndWFnZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkocmV2aXNpb24gMTA0ODg4
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiR093blB0ci5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2luY2x1ZGUgPGdsaWIuaD4KQEAgLTMyLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gVXNpbmcgcGFuZ29fbGFuZ3VhZ2VfZ2V0X2RlZmF1
bHQoKSBoZXJlIGlzIG5vdCBhbiBvcHRpb24sIGJlY2F1c2UKIC8vIGl0IGRvZXNuJ3Qgc3VwcG9y
dCBjaGFuZ2luZyB0aGUgbG9jYWxlIGluIHJ1bnRpbWUsIHNvIGl0IHJldHVybnMKIC8vIGFsd2F5
cyB0aGUgc2FtZSB2YWx1ZS4KLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitzdGF0
aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIGNoYXIqIGxvY2FsZURlZmF1bHQg
PSBzZXRsb2NhbGUoTENfQ1RZUEUsIE5VTEwpOwogCkBAIC01Myw0ICs1NCwxMSBAQCBTdHJpbmcg
cGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBTdHJpbmcobm9ybWFsaXplZERl
ZmF1bHQuZ2V0KCkpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7
CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsK
KyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKyAgICAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHJldmlzaW9uIDEwNDg4OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzAsMTEgKzMwLDEyIEBACiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TU3RyaW5nICpwcmVmZXJyZWRM
YW5ndWFnZUNvZGU7CitzdGF0aWMgQk9PTCB1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXM7CiAK
IEBpbnRlcmZhY2UgV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKIH0KQEAg
LTQ2LDggKzQ3LDcgQEAgKyAodm9pZClfd2Via2l0X2xhbmd1YWdlUHJlZmVyZW5jZXNEaWRDaAog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBbcHJlZmVycmVkTGFuZ3VhZ2VD
b2RlIHJlbGVhc2VdOwotICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IG5pbDsKKyAgICB1c2VD
YWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMgPSBOTzsKIAogICAgIGxhbmd1YWdlRGlkQ2hhbmdlKCk7
CiB9CkBAIC04NSwyMyArODUsMzAgQEAgc3RhdGljIE5TU3RyaW5nICpjcmVhdGVIVFRQU3R5bGVM
YW5ndWFnZQogICAgIHJldHVybiBodHRwU3R5bGVMYW5ndWFnZUNvZGU7CiB9CiAKLVN0cmluZyBw
bGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKQogeworICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPFN0cmlu
Zz4sIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMsICgpKTsKKwogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBpZiAoIXBy
ZWZlcnJlZExhbmd1YWdlQ29kZSkgewotICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBzeW5jaHJvbml6ZV07Ci0gICAgICAgIE5TQXJyYXkgKmxhbmd1YWdlcyA9
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHN0cmluZ0FycmF5Rm9yS2V5
OkAiQXBwbGVMYW5ndWFnZXMiXTsKLSAgICAgICAgaWYgKCFbbGFuZ3VhZ2VzIGNvdW50XSkKLSAg
ICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IEAiZW4iOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBwcmVmZXJyZWRMYW5ndWFnZUNvZGUgPSBjcmVhdGVIVFRQU3R5bGVMYW5ndWFn
ZUNvZGUoW2xhbmd1YWdlcyBvYmplY3RBdEluZGV4OjBdKTsKKyAgICBpZiAoIXVzZUNhY2hlZFBy
ZWZlcnJlZExhbmd1YWdlcykgeworICAgICAgICB1c2VDYWNoZWRQcmVmZXJyZWRMYW5ndWFnZXMg
PSBZRVM7CisgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuY2xlYXIoKTsKKworICAgICAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gbGFuZ3VhZ2VzKEFkb3B0Q0YsIENGTG9jYWxlQ29weVBy
ZWZlcnJlZExhbmd1YWdlcygpKTsKKyAgICAgICAgQ0ZJbmRleCBsYW5ndWFnZUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGxhbmd1YWdlcy5nZXQoKSk7CisgICAgICAgIGlmICghbGFuZ3VhZ2VDb3Vu
dCkKKyAgICAgICAgICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKCJlbiIpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGxhbmd1YWdl
Q291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFu
Z3VhZ2UoQWRvcHRDRiwgcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChsYW5ndWFnZXMuZ2V0KCksIGkpKSk7CisgICAgICAgICAgICAgICAgdXNlclBy
ZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoY3JlYXRlSFRUUFN0eWxlTGFuZ3VhZ2VDb2RlKChOU1N0
cmluZyAqKWxhbmd1YWdlLmdldCgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9
CiAKLSAgICBOU1N0cmluZyAqY29kZSA9IFtbcHJlZmVycmVkTGFuZ3VhZ2VDb2RlIHJldGFpbl0g
YXV0b3JlbGVhc2VdOwotCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgYm9vbCBsYW5n
dWFnZUNoYW5nZU9ic2VydmVyQWRkZWQ7CiAgICAgaWYgKCFsYW5ndWFnZUNoYW5nZU9ic2VydmVy
QWRkZWQpIHsKQEAgLTExMiwxMSArMTE5LDEyIEBAIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5n
dWFnZSgpCiAgICAgICAgIGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZCA9IHRydWU7CiAgICAg
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCi0KLSAgICByZXR1cm4gY29kZTsKKyAgICAKKyAg
ICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKIAogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdl
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0xhbmd1YWdl
UXQuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9M
YW5ndWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDIxIEBACiAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPFFMb2NhbGU+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1
bHRMYW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIFFM
b2NhbGUgbG9jYWxlOwogICAgIHJldHVybiBsb2NhbGUubmFtZSgpLnJlcGxhY2UoUUxhdGluMUNo
YXIoJ18nKSwgUUxhdGluMUNoYXIoJy0nKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3Jt
VXNlclByZWZlcnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZl
cnJlZExhbmd1YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9y
bUxhbmd1YWdlKCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTGFuZ3VhZ2VXaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAJKHJl
dmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMYW5ndWFn
ZS5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDksNyArNTAsNyBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsZUluZm8oTENUWVBFIGxvY2FsZVR5CiAg
ICAgcmV0dXJuIGxvY2FsZU5hbWU7CiB9CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFn
ZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIHN0YXRpYyBTdHJp
bmcgY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2U7CiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5n
dWFnZS5pc0VtcHR5KCkpCkBAIC02Niw0ICs2NywxMSBAQCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0
TGFuZ3VhZ2UoKQogICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKIH0KIAorVmVj
dG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0
b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXM7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkhUTUxUZXh0
QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRl
cmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKQEAg
LTY3MCw0ICs2NzEsMTQgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFBlclRpbGVEcmF3aW5nRW5hYmxl
ZAogICAgIGRvY3VtZW50LT5zZXR0aW5ncygpLT5zZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1
YWdlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKTsKK30KKwordm9pZCBJbnRlcm5hbHM6OnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1YWdlcykKK3sKKyAgICBXZWJDb3JlOjpvdmVycmlkZVVz
ZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoRG9jdW1lbnQqLCBib29s
IGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRl
cm5hbHNJZDsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBtb2R1bGUgd2luZG93IHsKIAog
ICAgICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1
bWVudCBkb2N1bWVudCwgaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGluIGxvbmcgeCwgaW4gbG9uZyB5
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gQXJy
YXkgdXNlclByZWZlcnJlZExhbmd1YWdlczsKICAgICB9OwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTSW50ZXJuYWxzLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBK
U0ludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlcyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
Cit7CisgICAgSW50ZXJuYWxzKiBpbXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBsKCkp
OworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IGltcC0+dXNlclByZWZlcnJl
ZExhbmd1YWdlcygpOworICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4ganNOdWxsKCk7CisgICAgCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJyYXk7CisgICAg
VmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxhbmd1YWdlcy5lbmQoKTsKKyAg
ICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxhbmd1YWdlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGFycmF5LmFwcGVuZChqc1N0cmluZyhleGVj
LCBzdHJpbmdUb1VTdHJpbmcoKml0KSkpOworICAgIHJldHVybiBjb25zdHJ1Y3RBcnJheShleGVj
LCBnbG9iYWxPYmplY3QoKSwgYXJyYXkpOworfQorCit2b2lkIEpTSW50ZXJuYWxzOjpzZXRVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpIHsKKyAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVTeW50YXhFcnJvcihleGVjLCAic2V0VXNlclByZWZlcnJlZExhbmd1YWdlczogRXhwZWN0ZWQg
QXJyYXkiKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgVmVjdG9yPFN0cmlu
Zz4gbGFuZ3VhZ2VzOworICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IFN0cmluZyBsYW5ndWFnZSA9IHVzdHJpbmdUb1N0cmluZyhhcnJheS0+Z2V0SW5kZXgoaSkudG9T
dHJpbmcoZXhlYykpOworICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKGxhbmd1YWdlKTsKKyAgICB9
CisgICAgCisgICAgSW50ZXJuYWxzKiBpbXAgPSBzdGF0aWNfY2FzdDxJbnRlcm5hbHMqPihpbXBs
KCkpOworICAgIGltcC0+c2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
dGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJW
OEludGVybmFscy5oIgorCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
dGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElu
dGVybmFscyogaW50ZXJuYWxzID0gVjhJbnRlcm5hbHM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcyA9IGludGVybmFscy0+dXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpOworICAgIGlmIChsYW5ndWFnZXMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gdjg6Ok51bGwoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0g
djg6OkFycmF5OjpOZXcobGFuZ3VhZ2VzLnNpemUoKSk7CisgICAgVmVjdG9yPFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGxhbmd1YWdlcy5lbmQoKTsKKyAgICBpbnQgaW5kZXggPSAwOwor
ICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBsYW5ndWFnZXMu
YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgYXJyYXktPlNldCh2ODo6SW50
ZWdlcjo6TmV3KGluZGV4KyspLCB2OFN0cmluZygqaXRlcikpOworICAgIHJldHVybiBhcnJheTsK
K30KKwordm9pZCBWOEludGVybmFsczo6dXNlclByZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBpZiAoIXZhbHVlLT5Jc0Fy
cmF5KCkpIHsKKyAgICAgICAgdGhyb3dFcnJvcigic2V0VXNlclByZWZlcnJlZExhbmd1YWdlczog
RXhwZWN0ZWQgQXJyYXkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9
IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KHZhbHVlKTsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFycmF5LT5MZW5ndGgoKTsgKytpKQorICAgICAgICBsYW5ndWFnZXMuYXBwZW5kKHRv
V2ViQ29yZVN0cmluZyhhcnJheS0+R2V0KGkpKSk7CisgICAgCisgICAgSW50ZXJuYWxzKiBpbnRl
cm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50ZXJu
YWxzLT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7Cit9CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUyNDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAor
MjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBFbmNvZGUgdGhlIGxhbmd1YWdlcyBh
cnJheS4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKTogRGVjb2RlIHRoZSBsYW5ndWFnZXMgYXJyYXkuCisgICAgICAgICogU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKTog
T3ZlcnJpZGUgdGhlIFdlYlByb2Nlc3MgdXNlclByZWZlcnJlZExhbmd1YWdlcy4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGV4dDo6ZW5zdXJlV2ViUHJvY2Vzcyk6IEluaXRpYWxpemUgcGFyYW1l
dGVycy5sYW5ndWFnZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IE92ZXJy
aWRlIHVzZXIgbGFuZ3VhZ2VzIGFycmF5LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjogRGVmaW5lIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkLgorCisgICAgICAgICog
d2luL1dlYktpdDIuZGVmOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICogd2lu
L1dlYktpdDJDRkxpdGUuZGVmOiBEaXR0by4KKwogMjAxMi0wMS0xNyAgTWF0dGhldyBEZWxhbmV5
ICA8bWRlbGFuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIE9uIHBvc3QtTGlvbiByZWxlYXNlcywg
cHJlc2VydmUgdGhlIExpb24gYmVoYXZpb3Igd2hlcmUgV2ViS2l0IGV4cGxpY2l0bHkgY2FsbHMg
LXNldEdlb21ldHJ5RmxpcHBlZCBvbiB0aGUgaG9zdGluZyBsYXllciBmb3IgYXBwbGljYXRpb25z
IHRoYXQgd2VyZSBsaW5rZWQgb24gTGlvbiBvciBlYXJsaWVyLgpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
cmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICNpZiBFTkFCTEUoUExVR0lOX1BS
T0NFU1MpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGRpc2FibGVQbHVnaW5Qcm9jZXNzTWVzc2FnZVRp
bWVvdXQpOwogI2VuZGlmCi0gICAgZW5jb2Rlci0+ZW5jb2RlKGxhbmd1YWdlQ29kZSk7CisgICAg
ZW5jb2Rlci0+ZW5jb2RlKGxhbmd1YWdlcyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHRleHRDaGVj
a2VyU3RhdGUpOwogICAgIGVuY29kZXItPmVuY29kZShmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwpOwpA
QCAtMTM4LDcgKzEzOCw3IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShwYXJhbWV0ZXJzLmxhbmd1YWdlQ29kZSkpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
cGFyYW1ldGVycy5sYW5ndWFnZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUocGFyYW1ldGVycy50ZXh0Q2hlY2tlclN0YXRlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIGRpc2FibGVQbHVnaW5Qcm9jZXNzTWVzc2FnZVRpbWVvdXQ7CiAjZW5kaWYKIAot
ICAgIFN0cmluZyBsYW5ndWFnZUNvZGU7CisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOwog
CiAgICAgVGV4dENoZWNrZXJTdGF0ZSB0ZXh0Q2hlY2tlclN0YXRlOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
MSw3ICsyMzEsNyBAQCB2b2lkIFdlYkNvbnRleHQ6Omxhbmd1YWdlQ2hhbmdlZCh2b2lkKiBjCiAK
IHZvaWQgV2ViQ29udGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKCkKIHsKLSAgICBzZW5kVG9BbGxQcm9j
ZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Okxhbmd1YWdlQ2hhbmdlZChkZWZhdWx0TGFuZ3Vh
Z2UoKSkpOworICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6VXNl
clByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQodXNlclByZWZlcnJlZExhbmd1YWdlcygpKSk7CiB9
CiAKIHZvaWQgV2ViQ29udGV4dDo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgV2ViQ29u
dGV4dDo6ZW5zdXJlV2ViUHJvY2VzcygpCiAKICAgICBwYXJhbWV0ZXJzLnNob3VsZFRyYWNrVmlz
aXRlZExpbmtzID0gbV9oaXN0b3J5Q2xpZW50LnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKCk7CiAg
ICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gbV9jYWNoZU1vZGVsOwotICAgIHBhcmFtZXRlcnMu
bGFuZ3VhZ2VDb2RlID0gZGVmYXVsdExhbmd1YWdlKCk7CisgICAgcGFyYW1ldGVycy5sYW5ndWFn
ZXMgPSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5ID0gYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHBhcmFt
ZXRlcnMuZGF0YWJhc2VEaXJlY3RvcnkgPSBkYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHBhcmFt
ZXRlcnMubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gbG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEw
NDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMyw4ICsyMTMsOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVX
ZWJQcm9jZXNzKGNvCiAgICAgc2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3MocGFyYW1ldGVycy5z
aG91bGRUcmFja1Zpc2l0ZWRMaW5rcyk7CiAgICAgc2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSk7CiAKLSAgICBpZiAoIXBhcmFtZXRlcnMu
bGFuZ3VhZ2VDb2RlLmlzRW1wdHkoKSkKLSAgICAgICAgb3ZlcnJpZGVEZWZhdWx0TGFuZ3VhZ2Uo
cGFyYW1ldGVycy5sYW5ndWFnZUNvZGUpOworICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMu
aXNFbXB0eSgpKQorICAgICAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMocGFyYW1l
dGVycy5sYW5ndWFnZXMpOwogCiAgICAgbV90ZXh0Q2hlY2tlclN0YXRlID0gcGFyYW1ldGVycy50
ZXh0Q2hlY2tlclN0YXRlOwogCkBAIC0yODgsOSArMjg4LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpz
ZXRTaG91bGRVc2VGb250U21vb3RoaQogICAgIFdlYkNvcmU6OkZvbnQ6OnNldFNob3VsZFVzZVNt
b290aGluZyh1c2VGb250U21vb3RoaW5nKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpsYW5ndWFn
ZUNoYW5nZWQoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkgY29uc3QKK3ZvaWQgV2ViUHJvY2Vzczo6
dXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhbmd1
YWdlcykgY29uc3QKIHsKLSAgICBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShsYW5ndWFnZSk7Cisg
ICAgb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9h
cmRBY2Nlc3NFbmFibGVkKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSk7CiAgICAgdm9pZCBz
ZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3Vs
ZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCk7Ci0gICAgdm9pZCBsYW5ndWFnZUNoYW5nZWQoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChj
b25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJvYXJkQWNjZXNz
TW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBzZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMTA0ODg4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlByb2Nlc3MgewogICAgIFNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVydmFsKGRv
dWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAgICAgU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBh
dGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKICAgICBTZXRTaG91bGRVc2VGb250U21vb3Ro
aW5nKGJvb2wgdXNlRm9udFNtb290aGluZykKLSAgICBMYW5ndWFnZUNoYW5nZWQoV1RGOjpTdHJp
bmcgbGFuZ3VhZ2UpCisgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFdU
Rjo6U3RyaW5nPiBsYW5ndWFnZXMpCiAgICAgRnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQo
Ym9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICBT
ZXRTaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKGJvb2wgc2hvdWxkUGFpbnROYXRpdmVDb250cm9s
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHJldmlzaW9uIDEwNDg4OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw3
IEBAIEVYUE9SVFMKICAgICAgICAgP2pzU3RyaW5nU2xvd0Nhc2VAV2ViQ29yZUBAWUE/QVZKU1Zh
bHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAQUFWPyRIYXNoTWFwQFBBVlN0cmluZ0ltcGxAV1RGQEBW
PyRXZWFrQFZKU1N0cmluZ0BKU0NAQEBKU0NAQFVTdHJpbmdIYXNoQDJAVT8kSGFzaFRyYWl0c0BQ
QVZTdHJpbmdJbXBsQFdURkBAQDJAVT8kSGFzaFRyYWl0c0BWPyRXZWFrQFZKU1N0cmluZ0BKU0NA
QEBKU0NAQEAyQEBXVEZAQFBBVlN0cmluZ0ltcGxANkBAWgogICAgICAgICA/bGFzdENoYW5nZVdh
c1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAg
ICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNvcmVAQFFBRT9B
Vj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQQVZOb2RlQDJA
Vk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKKyAgICAgICAgP292ZXJyaWRlVXNlclBy
ZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQVhBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBB
QEBXVEZAQEBaCiAgICAgICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBY
WgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVA
QFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhf
TkBaCkBAIC0xOTAsNCArMTkxLDUgQEAgRVhQT1JUUwogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZ
QT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBB
VlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VAV2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1Zh
bHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0
c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFn
ZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAg
ICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2
ICsxNTcsNyBAQCBFWFBPUlRTCiAgICAgICAgID9qc1N0cmluZ1Nsb3dDYXNlQFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQEFBVj8kSGFzaE1hcEBQQVZTdHJpbmdJbXBs
QFdURkBAVj8kV2Vha0BWSlNTdHJpbmdASlNDQEBASlNDQEBVU3RyaW5nSGFzaEAyQFU/JEhhc2hU
cmFpdHNAUEFWU3RyaW5nSW1wbEBXVEZAQEAyQFU/JEhhc2hUcmFpdHNAVj8kV2Vha0BWSlNTdHJp
bmdASlNDQEBASlNDQEBAMkBAV1RGQEBQQVZTdHJpbmdJbXBsQDZAQFoKICAgICAgICAgP2xhc3RD
aGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVf
TlhaCiAgICAgICAgID9tYXJrZXJzRm9yQERvY3VtZW50TWFya2VyQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUU/QVY/JFZlY3RvckBQQVZEb2N1bWVudE1hcmtlckBXZWJDb3JlQEAkMEFAQFdURkBAUEFW
Tm9kZUAyQFZNYXJrZXJUeXBlc0BEb2N1bWVudE1hcmtlckAyQEBaCisgICAgICAgID9vdmVycmlk
ZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFYQUJWPyRWZWN0b3JAVlN0cmluZ0BX
VEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQ
YWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBB
QUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBX
ZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVu
dEAyQEhIX05AWgpAQCAtMTgzLDQgKzE4NCw1IEBAIEVYUE9SVFMKICAgICAgICAgP3RvSlNAV2Vi
Q29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmpl
Y3RAMUBQQVZSYW5nZUAxQEBaCiAgICAgICAgID90b1JhbmdlQFdlYkNvcmVAQFlBUEFWUmFuZ2VA
MUBWSlNWYWx1ZUBKU0NAQEBaCiAgICAgICAgID91cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHNARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID91c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBY
WgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgpJ
bmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShyZXZpc2lvbiAxMDQ4ODgpCisrKyBTb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw5IEBA
IF9aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEQxRXY7CiBfWk43V2ViQ29yZTIwU2hh
ZG93Q29udGVudEVsZW1lbnQ2Y3JlYXRlRVBOU184RG9jdW1lbnRFOwogX1pON1dlYkNvcmUyMWdl
dENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlNDOUNsYXNz
SW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0VsZW1lbnRF
ajsKK19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXY7CiBfWk43V2ViQ29yZTI0
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18xNERvY3Vt
ZW50TWFya2VyMTFNYXJrZXJUeXBlc0U7CitfWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRTsKIF9aTjdXZWJD
b3JlNkpTTm9kZTEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRlbnRpZmll
ckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29yZTZKU05v
ZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFOwogX1pON1dlYkNv
cmU2SlNOb2RlNnNfaW5mb0U7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUyMzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8
ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2Vy
J3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBKU0ludGVybmFsc0N1
c3RvbS5jcHAuCisKIDIwMTItMDEtMTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBFbmFibGUgdGVzdHMgb24gdGhlIG1hYy1ld3MKSW5kZXg6IFRvb2xzL0dOVW1h
a2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MDQ4ODgpCisrKyBUb29scy9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQCBsaWJXZWJDb3JlSW50ZXJuYWxzX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBcCisJ
U291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuaAogCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDUyNDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMS0xNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJy
ZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRml4IGdldEJCb3ggZm9yIHBlcnBlbmRpY3VsYXIgcGF0aHMKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVk
LWxhbmd1YWdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
aGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaW50ZXJuYWxzLnVzZXJQ
cmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG11dGFibGUgQXJyYXkgb2YgdGhlIHVzZXIncyBw
cmVmZXJyZWQgbGFuZ3VhZ2VzLgorCitpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlcyBy
ZXR1cm5zIGEgbm9uLWVtcHR5IGFycmF5OiBQQVNTCitpbnRlcm5hbHMudXNlclByZWZlcnJlZExh
bmd1YWdlcyBpcyBtdXRhYmxlLCBhbmQgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSBwYXNzZWQgdG8g
aXQ6IFBBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1s
YW5ndWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2Vy
LXByZWZlcnJlZC1sYW5ndWFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDUgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KG1lc3NhZ2UsIHN1Y2Nlc3MpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsK
KyAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3Nh
Z2UgKyAnOiAnICsgKHN1Y2Nlc3MgPyAnUEFTUycgOiAnRkFJTCcpKTsKKyAgICAgICAgICAgICAg
ICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGxpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2YXIgbGFuZ3VhZ2VzID0gaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXM7CisKKyAgICAgICAgICAgICAgICB0ZXN0KCdpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1
YWdlcyByZXR1cm5zIGEgbm9uLWVtcHR5IGFycmF5JywgbGFuZ3VhZ2VzLmxlbmd0aCk7CisKKyAg
ICAgICAgICAgICAgICBsYW5ndWFnZXMudW5zaGlmdCgiZmlyc3QtbGFuZ3VhZ2UiKTsKKyAgICAg
ICAgICAgICAgICBsYW5ndWFnZXMucHVzaCgibGFzdC1sYW5ndWFnZSIpOworICAgICAgICAgICAg
ICAgIGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzOworCisgICAg
ICAgICAgICAgICAgdmFyIG5ld0xhbmd1YWdlcyA9IGludGVybmFscy51c2VyUHJlZmVycmVkTGFu
Z3VhZ2VzOworICAgICAgICAgICAgICAgIHZhciBzYW1lQ29udGVudHMgPSBuZXdMYW5ndWFnZXMu
bGVuZ3RoID09IGxhbmd1YWdlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgaWYgKHNhbWVDb250
ZW50cykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ld0xhbmd1
YWdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0xhbmd1
YWdlc1tpXSAhPSBsYW5ndWFnZXNbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1lQ29udGVudHMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0ZXN0KCdpbnRlcm5hbHMudXNlclByZWZlcnJl
ZExhbmd1YWdlcyBpcyBtdXRhYmxlLCBhbmQgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSBwYXNzZWQg
dG8gaXQnLCBzYW1lQ29udGVudHMpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMgcmV0dXJucyBhIG11dGFibGUgQXJyYXkgb2YgdGhlIHVzZXIncyBwcmVmZXJyZWQg
bGFuZ3VhZ2VzLjwvcD4KKyAgICAgICAgPHVsIGlkPSJjb25zb2xlIj48L3VsPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="123882"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122973</attachid>
            <date>2012-01-18 12:03:17 -0800</date>
            <delta_ts>2012-01-18 12:03:17 -0800</delta_ts>
            <desc>Rebased patch for the EWS bots.</desc>
            <filename>language_patch_18.txt</filename>
            <type>text/plain</type>
            <size>46615</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTMw
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAx
LTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBy
b3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyOiBMaXN0IHRoZSBuZXcgZnVuY3Rpb25zLgorCiAyMDEyLTAxLTE4
ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIENv
bnNvbGlkYXRlIGxheW91dCB0ZXN0IGNyYXNoIGxvZ2dpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEwNTMwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDcxIEBACisyMDEyLTAxLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHBy
ZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogZmFzdC9oYXJuZXNzL3VzZXItcHJlZmVycmVkLWxhbmd1YWdlLmh0bWwK
KworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBFeHBvcnQgdGhlIG5ldyBmdW5jdGlvbnMuCisg
ICAgICAgICogV2ViQ29yZS5vcmRlcjogRGl0dG8uCisKKyAgICAgICAgKiBUYXJnZXQucHJpOiBJ
bmNsdWRlIG5ldyBmaWxlcy4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0TGFu
Z3VhZ2UpOiBSZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlc1swXS4KKyAgICAgICAgKFdlYkNv
cmU6OnByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKTogTmV3LCByZXR1cm4gdGhlIGxhbmd1YWdl
cyBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6Om92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1
YWdlcyk6IE5ldywgc2V0IHRoZSBsYW5ndWFnZXMgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3Jl
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LCByZXR1cm4gdGhlIGxhbmd1YWdlcyBhcnJh
eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9MYW5ndWFnZS5oOgorCisgICAgICAgICogcGxhdGZvcm0v
YmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1l
ZCBmcm9tIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2Vi
Q29yZTo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICog
cGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
TGFuZ3VhZ2UpOiBSZW5hbWVkIGZyb20gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UsIG5vdyBzdGF0
aWMuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOiBO
ZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGxhdGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRM
YW5ndWFnZSwgbm93IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9MYW5ndWFnZS5t
bToKKyAgICAgICAgKCtbV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlciBfd2Via2l0X2xhbmd1YWdl
UHJlZmVyZW5jZXNEaWRDaGFuZ2VdKTogRmxhZyB0aGUgdXNlciBsYW5ndWFnZXMKKyAgICAgICAg
ICAgIGFzIGludmFsaWQuCisgICAgICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVt
b3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcyk6
IE5ldywgcmV0dXJuIHRoZSBsaXN0IG9mIHVzZXIgcHJlZmVycmVkIGxhbmd1YWdlcy4KKworICAg
ICAgICAqIHBsYXRmb3JtL3F0L0xhbmd1YWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxh
dGZvcm1MYW5ndWFnZSk6IFJlbmFtZWQgZnJvbSBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSwgbm93
IHN0YXRpYy4KKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdl
cyk6IE5ldy4KKworICAgICAgICAqIHBsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwbGF0Zm9ybUxhbmd1YWdlKTogUmVuYW1lZCBmcm9tIHBsYXRmb3JtRGVm
YXVsdExhbmd1YWdlLCBub3cgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Vc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KTogTmV3LCByZXR1cm4gdGhlIHBsYXRmb3JtJ3MgdXNlciBwcmVmZXJyZWQgbGFuZ3VhZ2VzLgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTog
TmV3LCBvdmVycmlkZSB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZXMuCisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IEFk
ZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLgorCisgICAgICAgICogdGVzdGluZy9qcy9KU0ludGVy
bmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVybmFsczo6dXNlclByZWZl
cnJlZExhbmd1YWdlcyk6IE5ldy4KKyAgICAgICAgKFdlYkNvcmU6OkpTSW50ZXJuYWxzOjpzZXRV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKTogTmV3LgorCisgICAgICAgICogdGVzdGluZy92OC9WOElu
dGVybmFsc0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVybmFsczo6dXNlclBy
ZWZlcnJlZExhbmd1YWdlc0FjY2Vzc29yR2V0dGVyKTogTmV3LgorICAgICAgICAoV2ViQ29yZTo6
VjhJbnRlcm5hbHM6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNBY2Nlc3NvclNldHRlcik6IE5ldy4K
KwogMjAxMi0wMS0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ0ddIFJhc3Rlcml6ZWQgc2NhbGluZyBvZiB0cmFuc2Zvcm1lZCBTVkcgc2hhcGVz
IHdpdGggZ3JhZGllbnQgZmlsbCBhbmQgLXdlYmtpdC1zdmctc2hhZG93IGFwcGxpZWQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkod29ya2luZyBjb3B5KQpAQCAtMjI1LDYgKzIyNSw3IEBAIHY4IHsKICAgICAgICAgYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
djgvVjhXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBcCisgICAgICAgIHRlc3Rpbmcvdjgv
VjhJbnRlcm5hbHNDdXN0b20uY3BwIFwKICAgICAgICAgdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwCiB9IGVsc2UgewogICAgIFNPVVJDRVMgKz0gXApAQCAtMzg0LDYgKzM4NSw3IEBA
IHY4IHsKICAgICAgICAgYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcCBcCiAgICAgICAgIGJyaWRn
ZS9ydW50aW1lX29iamVjdC5jcHAgXAogICAgICAgICBicmlkZ2UvcnVudGltZV9yb290LmNwcCBc
CisgICAgICAgIHRlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwIFwKICAgICAgICAgdGVz
dGluZy9qcy9XZWJDb3JlVGVzdFN1cHBvcnQuY3BwCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCShyZXZpc2lvbiAxMDUzMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtNjQyLDEwICs2NDIsMTAgQEAgX19aTjdXZWJDb3JlMjJjb3VudGVy
VmFsdWVGb3JFbGVtZW50RVBOUwogX19aTjdXZWJDb3JlMjJjcmVhdGVGcmFnbWVudEZyb21UZXh0
RVBOU181UmFuZ2VFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVz
ZW50YXRpb25FUE5TXzVGcmFtZUVqCiBfX1pON1dlYkNvcmUyMmV4dGVybmFsUmVwcmVzZW50YXRp
b25FUE5TXzdFbGVtZW50RWoKK19fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2
CiBfX1pON1dlYkNvcmUyM0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQzFFUktOU18xNVByb3RlY3Rp
b25TcGFjZUVSS05TXzEwQ3JlZGVudGlhbEVqUktOU18xNlJlc291cmNlUmVzcG9uc2VFUktOU18x
M1Jlc291cmNlRXJyb3JFCiBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBO
U184RG9jdW1lbnRFUktOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRQogX19aTjdXZWJDb3Jl
MjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSTjNXVEY3SGFzaFNldElOUzBfNlN0cmluZ0VOUzBf
MTBTdHJpbmdIYXNoRU5TMF8xMEhhc2hUcmFpdHNJUzJfRUVFRQotX19aTjdXZWJDb3JlMjNvdmVy
cmlkZURlZmF1bHRMYW5ndWFnZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTI0QmluYXJ5
UHJvcGVydHlMaXN0V3JpdGVyMTd3cml0ZVByb3BlcnR5TGlzdEV2CiBfX1pON1dlYkNvcmUyNENh
Y2hlZFJlc291cmNlSGFuZGxlQmFzZTExc2V0UmVzb3VyY2VFUE5TXzE0Q2FjaGVkUmVzb3VyY2VF
CiBfX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNf
NE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjExTWFya2VyVHlwZXNFCkBAIC03MDYsNiArNzA2LDcg
QEAgX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZQogX19aTjdXZWJDb3Jl
MjlzZXRVc2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckViCiBfX1pON1dlYkNvcmUzMGNvbnRleHRN
ZW51SXRlbVRhZ1NwZWxsaW5nTWVudUV2CiBfX1pON1dlYkNvcmUzMGNvbnRleHRNZW51SXRlbVRh
Z1N0b3BTcGVha2luZ0V2CitfX1pON1dlYkNvcmUzMG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1
YWdlc0VSS04zV1RGNlZlY3RvcklOUzBfNlN0cmluZ0VMbTBFRUUKIF9fWk43V2ViQ29yZTMxQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTVlbXB0eUV2CiBfX1pON1dlYkNvcmUzMUNyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU2c2hhcmVkRXYKIF9fWk43V2ViQ29yZTMxYXBwbGlj
YXRpb25Jc01pY3Jvc29mdE1lc3NlbmdlckV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biAxMDUzMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTYzNjcsOCArNjM2NywxMCBAQAogICAgICAgICAgICd0ZXN0aW5nL0ludGVybmFscy5pZGwn
LAogICAgICAgICBdLAogICAgICAgICAnd2ViY29yZV90ZXN0X3N1cHBvcnRfZmlsZXMnOiBbCisg
ICAgICAgICAgICAndGVzdGluZy92OC9WOEludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuaCcsCisgICAgICAgICAgICAndGVzdGluZy9qcy9K
U0ludGVybmFsc0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RpbmcvanMvV2ViQ29yZVRl
c3RTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAndGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1cHBv
cnQuaCcsCiAgICAgICAgICAgICAndGVzdGluZy9JbnRlcm5hbHMuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgkod29ya2luZyBjb3B5KQpAQCAtODg3OCw2ICs4ODc4LDcgQEAgX19aTjdXZWJDb3JlMTlG
bG9hdEFuaW1hdGlvblZhbHVlRDBFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyMHVw
ZGF0ZU9wYWNpdHlPbkxheWVyRXYKIF9fWk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyMTBzZXRP
cGFjaXR5RWYKIF9fWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfNUZyYW1l
RWoKK19fWk43V2ViQ29yZTIydXNlclByZWZlcnJlZExhbmd1YWdlc0V2CiBfX1pON1dlYkNvcmUx
MlByaW50Q29udGV4dEMxRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmVMMTF3cml0ZUxheWVyc0VS
TlNfMTBUZXh0U3RyZWFtRVBLTlNfMTFSZW5kZXJMYXllckVQUzJfUktOU183SW50UmVjdEVpagog
X19aTjdXZWJDb3JlTDV3cml0ZUVSTlNfMTBUZXh0U3RyZWFtRVJOU18xMVJlbmRlckxheWVyRVJL
TlNfN0ludFJlY3RFUzZfUzZfUzZfTlNfMTVMYXllclBhaW50UGhhc2VFaWoKQEAgLTE2Mjg1LDYg
KzE2Mjg2LDcgQEAgX19aTjdXZWJDb3JlMjFDb250ZXh0TWVudUNvbnRyb2xsZXIyOGNyZQogX19a
TjdXZWJDb3JlMzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNwZWFraW5nRXYKIF9fWk43V2ViQ29y
ZTI3RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5MzFjb250ZXh0TWVudUl0ZW1UYWdTdGFydFNw
ZWFraW5nRXYKIF9fWk43V2ViQ29yZTMwY29udGV4dE1lbnVJdGVtVGFnU3RvcFNwZWFraW5nRXYK
K19fWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVj
dG9ySU5TMF82U3RyaW5nRUxtMEVFRQogX19aTjdXZWJDb3JlMjdEZWZhdWx0TG9jYWxpemF0aW9u
U3RyYXRlZ3kzMGNvbnRleHRNZW51SXRlbVRhZ1N0b3BTcGVha2luZ0V2CiBfX1pON1dlYkNvcmUz
OGNvbnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51RXYKIF9fWk43V2ViQ29yZTI3
RGVmYXVsdExvY2FsaXphdGlvblN0cmF0ZWd5Mzhjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGly
ZWN0aW9uTWVudUV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
VGVzdFN1cHBvcnQudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHJldmlzaW9uIDEwNTMwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVUZXN0U3VwcG9ydC52Y3Byb2oJKHdv
cmtpbmcgY29weSkKQEAgLTU1NSw2ICs1NTUsNzQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRl
c3RpbmdcanNcV2ViQ29yZVRlc3RTdXBwb3J0LmgiCiAJCQkJPgogCQkJPC9GaWxlPgorCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHRlc3RpbmdcanNcSlNJbnRlcm5hbHNDdXN0b20uY3Bw
IgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdz
PSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQo
Tk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRI
ZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7
NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0
NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIkKE5PSU5IRVJJVCkiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIK
KwkJCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIi
CisJCQkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQkJCURpc2FibGVT
cGVjaWZpY1dhcm5pbmdzPSI0MDY1OzQyNzM7NDU2NTs0NzAxOzQ3MDIiCisJCQkJCQlGb3JjZWRJ
bmNsdWRlRmlsZXM9IiQoTk9JTkhFUklUKSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMy
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5n
cz0iNDA2NTs0MjczOzQ1NjU7NDcwMTs0NzAyIgorCQkJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSIk
KE5PSU5IRVJJVCkiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx0ZXN0aW5nXGpzXEpTSW50ZXJuYWxz
Q3VzdG9tLmgiCisJCQkJPgorCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUKIAkJCVJl
bGF0aXZlUGF0aD0iLi5cY29uZmlnLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDUzMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQkwNzA3NTZERjE0MjM5QjRFMDA0MTQxNjEgLyogSlNU
ZXh0VHJhY2tDdWVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwICovOyB9OwogCQkwNzA3NTZFMDE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVM
aXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA3
NTZEQTE0MjM5QjRFMDA0MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi87IH07CiAJCTA3
MDlGQzRFMTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzA5RkM0RDEwMjVERUUzMDA1
OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oICovOyB9OworCQkwNzIzMENCQzE0QzEwRUQ5
MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMzBDQkIxNEMxMEVEOTAwRjZCNzAyIC8qIEpTSW50
ZXJuYWxzQ3VzdG9tLmNwcCAqLzsgfTsKIAkJMDcyQzhCMTExMzFDNTE4NjAwQTRGQ0U5IC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsKIAkJMDczNUVFNkEwRjQwQzVFNDAw
NEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXll
clByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKQEAgLTY3NTcsNiArNjc1OCw3
IEBACiAJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tDdWVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3MDlGQzREMTAyNURFRTMwMDU5Q0RCQSAvKiBB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlTbGlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDcwREQ4
RjUwRjAxODY4MDAwNzI3REVCIC8qIG1lZGlhQ29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IG1lZGlhQ29udHJvbHMuY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbnRlcm5hbHNDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVk
aWFQbGF5ZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBs
YXllclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlF
OTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjgyLDYgKzE0Mjg0LDcgQEAKIAkJNDE4MTVDMUIx
MzgzMTk2MzAwNTdBQUE0IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkwNzIzMENCQjE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5hbHNDdXN0
b20uY3BwICovLAogCQkJCTQxODE1QzFDMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQuY3BwICovLAogCQkJCTQxODE1QzFEMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3JlVGVz
dFN1cHBvcnQuaCAqLywKIAkJCSk7CkBAIC0yNDM3Nyw2ICsyNDM4MCw3IEBACiAJCQkJNDE3REE2
RDkxMzczNEU2RTAwN0M1N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRlcm5hbHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE4MTVDMUUxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwNzIzMENCQzE0QzEwRUQ5MDBGNkI3MDIgLyogSlNJbnRlcm5h
bHNDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MYW5ndWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFu
Z3VhZ2UuY3BwCShyZXZpc2lvbiAxMDUzMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YW5ndWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDI0ICs1NiwzMyBAQCB2b2lkIGxhbmd1
YWdlRGlkQ2hhbmdlKCkKICAgICAgICAgaXRlci0+c2Vjb25kKGl0ZXItPmZpcnN0KTsKIH0KIAot
c3RhdGljIFN0cmluZyYgbGFuZ3VhZ2VPdmVycmlkZSgpCitTdHJpbmcgZGVmYXVsdExhbmd1YWdl
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgb3ZlcnJpZGUsICgpKTsKLSAg
ICByZXR1cm4gb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNlclBy
ZWZlcnJlZExhbmd1YWdlcygpOworICAgIGlmIChsYW5ndWFnZXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gbGFuZ3VhZ2VzWzBdOworCisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLVN0
cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKQorc3RhdGljIFZlY3RvcjxTdHJpbmc+JiBwcmVmZXJyZWRM
YW5ndWFnZXNPdmVycmlkZSgpCiB7Ci0gICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZSA9IGxhbmd1
YWdlT3ZlcnJpZGUoKTsKLSAgICBpZiAoIW92ZXJyaWRlLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gb3ZlcnJpZGU7Ci0KLSAgICByZXR1cm4gcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCBvdmVycmlkZSwgKCkpOworICAg
IHJldHVybiBvdmVycmlkZTsKIH0KIAotdm9pZCBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShjb25z
dCBTdHJpbmcmIG92ZXJyaWRlKQordm9pZCBvdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIG92ZXJyaWRlKQogewotICAgIGxhbmd1YWdlT3ZlcnJpZGUo
KSA9IG92ZXJyaWRlOworICAgIHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRlKCkgPSBvdmVycmlk
ZTsKK30KKyAgICAKK1ZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQorewor
ICAgIFZlY3RvcjxTdHJpbmc+JiBvdmVycmlkZSA9IHByZWZlcnJlZExhbmd1YWdlc092ZXJyaWRl
KCk7CisgICAgaWYgKCFvdmVycmlkZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBvdmVycmlk
ZTsKKyAgICAKKyAgICByZXR1cm4gcGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xhbmd1YWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkocmV2aXNpb24gMTA1MzAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGFuZ3VhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsMTggKzI3LDIyIEBACiAjZGVmaW5lIExhbmd1YWdlX2gKIAogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UoKTsKLXZvaWQgb3ZlcnJpZGVEZWZhdWx0TGFuZ3Vh
Z2UoY29uc3QgU3RyaW5nJik7CitWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
KCk7Cit2b2lkIG92ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYpOwogCi0vLyBUaGUgb2JzZXJ2ZXIgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBz
eXN0ZW0gbGFuZ3VhZ2UgY2hhbmdlcyAodW5sZXNzIGl0J3Mgb3ZlcnJpZGRlbiBieSBvdmVycmlk
ZURlZmF1bHRMYW5ndWFnZSgpKS4KKy8vIFRoZSBvYnNlcnZlciBmdW5jdGlvbiB3aWxsIGJlIGNh
bGxlZCB3aGVuIHN5c3RlbSBsYW5ndWFnZSBjaGFuZ2VzLgogdHlwZWRlZiB2b2lkICgqTGFuZ3Vh
Z2VDaGFuZ2VPYnNlcnZlckZ1bmN0aW9uKSh2b2lkKiBjb250ZXh0KTsKIHZvaWQgYWRkTGFuZ3Vh
Z2VDaGFuZ2VPYnNlcnZlcih2b2lkKiBjb250ZXh0LCBMYW5ndWFnZUNoYW5nZU9ic2VydmVyRnVu
Y3Rpb24pOwogdm9pZCByZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyKHZvaWQqIGNvbnRleHQp
OwogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKTsKK1ZlY3RvcjxTdHJpbmc+IHBs
YXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpOworCisvLyBDYWxsZWQgZnJvbSBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlIHdoZW4gdGhlIHVzZXIncyBwcmVmZXJyZWQgbGFuZ3VhZ2UocykgY2hh
bmdlLgogdm9pZCBsYW5ndWFnZURpZENoYW5nZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0
cmluZ3NCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5oPgogI2luY2x1ZGUgPExvY2FsaXpl
UmVzb3VyY2UuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNTksNyArNjAsNyBAQCBTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQor
c3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBTdHJpbmcgbGFuZyA9IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQ6OmdldCgpLT5nZXRMb2NhbGUoKS5jX3N0cigpOwog
ICAgIC8vIGdldExvY2FsZSgpIHJldHVybnMgYSBQT1NJWCBsb2NhbGUgd2hpY2ggdXNlcyAnXycg
dG8gc2VwYXJhdGUgbGFuZ3VhZ2UgYW5kIGNvdW50cnkuCkBAIC03MSw2ICs3MiwxMyBAQCBTdHJp
bmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBsYW5nOwogfQogCitWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3Rv
cjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1
YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJl
ZExhbmd1YWdlczsKK30KKwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0JvbGQoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vTGFuZ3VhZ2VDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwNTMwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0xhbmd1YWdlQ2hyb21pdW0uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMCArMzMsMTEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBwbGF0Zm9ybURlZmF1bHRM
YW5ndWFnZSgpCitzdGF0aWMgU3RyaW5nIHBsYXRmb3JtTGFuZ3VhZ2UoKQogewogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb21wdXRlZERlZmF1bHRMYW5ndWFnZSwgKCkpOwogICAg
IGlmIChjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCkBAIC00NCw0ICs0NSwxMSBA
QCBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0TGFuZ3VhZ2UoKQogICAgIHJldHVybiBjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxhdGZvcm1Vc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
OworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBsYXRmb3JtTGFuZ3VhZ2UoKSk7
CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9MYW5ndWFnZUVmbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xhbmd1YWdlRWZs
LmNwcAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0xh
bmd1YWdlRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDExIEBACiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPGxvY2FsZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TdHJpbmcgcGxhdGZvcm1EZWZh
dWx0TGFuZ3VhZ2UoKQorc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBj
aGFyKiBsb2NhbGVEZWZhdWx0ID0gc2V0bG9jYWxlKExDX0NUWVBFLCAwKTsKIApAQCAtNTAsNCAr
NTEsMTEgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKICAgICByZXR1cm4gU3Ry
aW5nKGxvY2FsZURlZmF1bHQpOwogfQogCitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5n
dWFnZXM7CisgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFn
ZSgpKTsKKyAgICByZXR1cm4gdXNlclByZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0xhbmd1YWdlR3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCShyZXZpc2lvbiAx
MDUzMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTGFuZ3VhZ2VHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJHT3duUHRyLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiAjaW5jbHVkZSA8Z2xpYi5oPgpAQCAtMzIsNyAr
MzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBVc2luZyBwYW5nb19sYW5ndWFnZV9nZXRf
ZGVmYXVsdCgpIGhlcmUgaXMgbm90IGFuIG9wdGlvbiwgYmVjYXVzZQogLy8gaXQgZG9lc24ndCBz
dXBwb3J0IGNoYW5naW5nIHRoZSBsb2NhbGUgaW4gcnVudGltZSwgc28gaXQgcmV0dXJucwogLy8g
YWx3YXlzIHRoZSBzYW1lIHZhbHVlLgotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkK
K3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgY2hhciogbG9jYWxlRGVm
YXVsdCA9IHNldGxvY2FsZShMQ19DVFlQRSwgTlVMTCk7CiAKQEAgLTUzLDQgKzU0LDExIEBAIFN0
cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIFN0cmluZyhub3JtYWxp
emVkRGVmYXVsdC5nZXQoKSk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpCit7CisgICAgVmVjdG9yPFN0cmluZz4gdXNlclByZWZlcnJlZExhbmd1
YWdlczsKKyAgICB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChwbGF0Zm9ybUxhbmd1YWdl
KCkpOworICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworfQorICAgIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gMTA1MzAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxMSArMzAsMTIgQEAKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgTlNTdHJpbmcgKnByZWZl
cnJlZExhbmd1YWdlQ29kZTsKK3N0YXRpYyBCT09MIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdl
czsKIAogQGludGVyZmFjZSBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIDogTlNPYmplY3Qgewog
fQpAQCAtNDYsOCArNDcsNyBAQCArICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0Rp
ZENoCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIFtwcmVmZXJyZWRMYW5n
dWFnZUNvZGUgcmVsZWFzZV07Ci0gICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gbmlsOworICAg
IHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcyA9IE5POwogCiAgICAgbGFuZ3VhZ2VEaWRDaGFu
Z2UoKTsKIH0KQEAgLTg1LDIzICs4NSwzMCBAQCBzdGF0aWMgTlNTdHJpbmcgKmNyZWF0ZUhUVFBT
dHlsZUxhbmd1YWdlCiAgICAgcmV0dXJuIGh0dHBTdHlsZUxhbmd1YWdlQ29kZTsKIH0KIAotU3Ry
aW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK1ZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNl
clByZWZlcnJlZExhbmd1YWdlcygpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8
U3RyaW5nPiwgdXNlclByZWZlcnJlZExhbmd1YWdlcywgKCkpOworCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIGlm
ICghcHJlZmVycmVkTGFuZ3VhZ2VDb2RlKSB7Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHN5bmNocm9uaXplXTsKLSAgICAgICAgTlNBcnJheSAqbGFuZ3Vh
Z2VzID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc3RyaW5nQXJyYXlG
b3JLZXk6QCJBcHBsZUxhbmd1YWdlcyJdOwotICAgICAgICBpZiAoIVtsYW5ndWFnZXMgY291bnRd
KQotICAgICAgICAgICAgcHJlZmVycmVkTGFuZ3VhZ2VDb2RlID0gQCJlbiI7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHByZWZlcnJlZExhbmd1YWdlQ29kZSA9IGNyZWF0ZUhUVFBTdHlsZUxh
bmd1YWdlQ29kZShbbGFuZ3VhZ2VzIG9iamVjdEF0SW5kZXg6MF0pOworICAgIGlmICghdXNlQ2Fj
aGVkUHJlZmVycmVkTGFuZ3VhZ2VzKSB7CisgICAgICAgIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1
YWdlcyA9IFlFUzsKKyAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5jbGVhcigpOworCisg
ICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBsYW5ndWFnZXMoQWRvcHRDRiwgQ0ZMb2NhbGVD
b3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCkpOworICAgICAgICBDRkluZGV4IGxhbmd1YWdlQ291bnQg
PSBDRkFycmF5R2V0Q291bnQobGFuZ3VhZ2VzLmdldCgpKTsKKyAgICAgICAgaWYgKCFsYW5ndWFn
ZUNvdW50KQorICAgICAgICAgICAgdXNlclByZWZlcnJlZExhbmd1YWdlcy5hcHBlbmQoImVuIik7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgbGFu
Z3VhZ2VDb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBsYW5ndWFnZShBZG9wdENGLCByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGxhbmd1YWdlcy5nZXQoKSwgaSkpKTsKKyAgICAgICAgICAgICAgICB1
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLmFwcGVuZChjcmVhdGVIVFRQU3R5bGVMYW5ndWFnZUNvZGUo
KE5TU3RyaW5nICopbGFuZ3VhZ2UuZ2V0KCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIH0KIAotICAgIE5TU3RyaW5nICpjb2RlID0gW1twcmVmZXJyZWRMYW5ndWFnZUNvZGUgcmV0
YWluXSBhdXRvcmVsZWFzZV07Ci0KICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29s
IGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZDsKICAgICBpZiAoIWxhbmd1YWdlQ2hhbmdlT2Jz
ZXJ2ZXJBZGRlZCkgewpAQCAtMTEyLDExICsxMTksMTIgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVs
dExhbmd1YWdlKCkKICAgICAgICAgbGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlckFkZGVkID0gdHJ1ZTsK
ICAgICB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKLQotICAgIHJldHVybiBjb2RlOworICAg
IAorICAgIHJldHVybiB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gVmVjdG9y
PFN0cmluZz4oKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFu
Z3VhZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvTGFu
Z3VhZ2VRdC5jcHAJKHJldmlzaW9uIDEwNTMwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3F0L0xhbmd1YWdlUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMjEgQEAKIAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8UUxvY2FsZT4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHBsYXRmb3Jt
RGVmYXVsdExhbmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAg
ICAgUUxvY2FsZSBsb2NhbGU7CiAgICAgcmV0dXJuIGxvY2FsZS5uYW1lKCkucmVwbGFjZShRTGF0
aW4xQ2hhcignXycpLCBRTGF0aW4xQ2hhcignLScpKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gcGxh
dGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiB1c2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzOworICAgIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXMuYXBwZW5kKHBs
YXRmb3JtTGFuZ3VhZ2UoKSk7CisgICAgcmV0dXJuIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7Cit9
CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9MYW5ndWFnZVdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1YWdlV2luLmNw
cAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xhbmd1
YWdlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkxh
bmd1YWdlLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00OSw3ICs1MCw3IEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxlSW5mbyhMQ1RZUEUgbG9jYWxl
VHkKICAgICByZXR1cm4gbG9jYWxlTmFtZTsKIH0KIAotU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExh
bmd1YWdlKCkKK3N0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiB7CiAgICAgc3RhdGlj
IFN0cmluZyBjb21wdXRlZERlZmF1bHRMYW5ndWFnZTsKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVs
dExhbmd1YWdlLmlzRW1wdHkoKSkKQEAgLTY2LDQgKzY3LDExIEBAIFN0cmluZyBwbGF0Zm9ybURl
ZmF1bHRMYW5ndWFnZSgpCiAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlOwogfQog
CitWZWN0b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXM7CisgICAgdXNlclByZWZlcnJl
ZExhbmd1YWdlcy5hcHBlbmQocGxhdGZvcm1MYW5ndWFnZSgpKTsKKyAgICByZXR1cm4gdXNlclBy
ZWZlcnJlZExhbmd1YWdlczsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRN
TFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgpAQCAtNjc0LDQgKzY3NSwxNCBAQCB2b2lkIEludGVybmFsczo6c2V0UGVyVGlsZURyYXdpbmdF
bmFibGVkCiAgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldFBlclRpbGVEcmF3aW5nRW5hYmxl
ZChlbmFibGVkKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVk
TGFuZ3VhZ2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dXNlclByZWZlcnJlZExh
bmd1YWdlcygpOworfQorCit2b2lkIEludGVybmFsczo6c2V0VXNlclByZWZlcnJlZExhbmd1YWdl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKQoreworICAgIFdlYkNvcmU6Om92ZXJy
aWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhsYW5ndWFnZXMpOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDEwNTMwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChEb2N1bWVudCos
IGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgVmVjdG9yPFN0cmluZz4gdXNl
clByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0OworICAgIHZvaWQgc2V0VXNlclByZWZlcnJlZExh
bmd1YWdlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGludGVybmFsc0lkOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIG1vZHVsZSB3aW5kb3cg
ewogCiAgICAgICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBmbG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBs
b25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9t
XSBBcnJheSB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOwogICAgIH07CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMvSlNJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9KU0ludGVybmFsc0N1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNJbnRlcm5hbHMuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1Zh
bHVlIEpTSW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKK3sKKyAgICBJbnRlcm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFscyo+KGlt
cGwoKSk7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW1wLT51c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBqc051bGwoKTsKKyAgICAKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcnJheTsK
KyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGFuZ3VhZ2VzLmVuZCgp
OworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGFuZ3VhZ2Vz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgYXJyYXkuYXBwZW5kKGpzU3RyaW5n
KGV4ZWMsIHN0cmluZ1RvVVN0cmluZygqaXQpKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBhcnJheSk7Cit9CisKK3ZvaWQgSlNJbnRlcm5hbHM6OnNl
dFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQor
eworICAgIGlmICghaXNKU0FycmF5KHZhbHVlKSkgeworICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJzZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzOiBFeHBl
Y3RlZCBBcnJheSIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8
U3RyaW5nPiBsYW5ndWFnZXM7CisgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHZhbHVlKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgU3RyaW5nIGxhbmd1YWdlID0gdXN0cmluZ1RvU3RyaW5nKGFycmF5LT5nZXRJbmRleChp
KS50b1N0cmluZyhleGVjKSk7CisgICAgICAgIGxhbmd1YWdlcy5hcHBlbmQobGFuZ3VhZ2UpOwor
ICAgIH0KKyAgICAKKyAgICBJbnRlcm5hbHMqIGltcCA9IHN0YXRpY19jYXN0PEludGVybmFscyo+
KGltcGwoKSk7CisgICAgaW1wLT5zZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKGxhbmd1YWdlcyk7
Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL3Y4L1Y4SW50ZXJuYWxzQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvVjhJbnRlcm5hbHNDdXN0b20uY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlY4SW50ZXJuYWxzLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJW
OFByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgSW50ZXJuYWxzKiBpbnRlcm5hbHMgPSBWOEludGVybmFsczo6dG9OYXRpdmUoaW5mby5Ib2xk
ZXIoKSk7CisgICAgY29uc3QgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gaW50ZXJuYWxzLT51
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7CisgICAgaWYgKGxhbmd1YWdlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJy
YXkgPSB2ODo6QXJyYXk6Ok5ldyhsYW5ndWFnZXMuc2l6ZSgpKTsKKyAgICBWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGFuZ3VhZ2VzLmVuZCgpOworICAgIGludCBpbmRleCA9
IDA7CisgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxhbmd1
YWdlcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBhcnJheS0+U2V0KHY4
OjpJbnRlZ2VyOjpOZXcoaW5kZXgrKyksIHY4U3RyaW5nKCppdGVyKSk7CisgICAgcmV0dXJuIGFy
cmF5OworfQorCit2b2lkIFY4SW50ZXJuYWxzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQWNjZXNz
b3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIGlmICghdmFsdWUt
PklzQXJyYXkoKSkgeworICAgICAgICB0aHJvd0Vycm9yKCJzZXRVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzOiBFeHBlY3RlZCBBcnJheSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKKworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFy
cmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QodmFsdWUpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXktPkxlbmd0aCgpOyArK2kpCisgICAgICAgIGxhbmd1YWdlcy5hcHBl
bmQodG9XZWJDb3JlU3RyaW5nKGFycmF5LT5HZXQoaSkpKTsKKyAgICAKKyAgICBJbnRlcm5hbHMq
IGludGVybmFscyA9IFY4SW50ZXJuYWxzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBp
bnRlcm5hbHMtPnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMobGFuZ3VhZ2VzKTsKK30KKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTMwMCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTAxLTE4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRvIHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5n
dWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEVuY29kZSB0aGUgbGFuZ3Vh
Z2VzIGFycmF5LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUpOiBEZWNvZGUgdGhlIGxhbmd1YWdlcyBhcnJheS4KKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dl
YkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpsYW5ndWFnZUNoYW5n
ZWQpOiBPdmVycmlkZSB0aGUgV2ViUHJvY2VzcyB1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKTogSW5pdGlhbGl6ZSBw
YXJhbWV0ZXJzLmxhbmd1YWdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTog
T3ZlcnJpZGUgdXNlciBsYW5ndWFnZXMgYXJyYXkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluOiBEZWZpbmUgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQuCisKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi5kZWY6IEV4cG9ydCB0aGUgbmV3IGZ1bmN0aW9ucy4KKyAgICAgICAg
KiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6IERpdHRvLgorCiAyMDEyLTAxLTE4ICBDYXJsb3MgR2Fy
bmFjaG8gIDxjYXJsb3NnQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBMaXN0ZW4gdG8gR0RL
X1NDUk9MTF9NQVNLCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxMDUzMDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKICAgICBlbmNvZGVyLT5lbmNv
ZGUoZGlzYWJsZVBsdWdpblByb2Nlc3NNZXNzYWdlVGltZW91dCk7CiAjZW5kaWYKLSAgICBlbmNv
ZGVyLT5lbmNvZGUobGFuZ3VhZ2VDb2RlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobGFuZ3VhZ2Vz
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUodGV4dENoZWNrZXJTdGF0ZSk7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogICAgIGVuY29kZXItPmVuY29kZShk
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHBhcmFtZXRlcnMubGFuZ3VhZ2VD
b2RlKSkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmxhbmd1YWdlcykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJz
LnRleHRDaGVja2VyU3RhdGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHJldmlzaW9uIDEwNTMwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgZGlzYWJsZVBsdWdpblBy
b2Nlc3NNZXNzYWdlVGltZW91dDsKICNlbmRpZgogCi0gICAgU3RyaW5nIGxhbmd1YWdlQ29kZTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIHRl
eHRDaGVja2VyU3RhdGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAJKHJldmlzaW9uIDEwNTMwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQ29u
dGV4dDo6bGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGMKIAogdm9pZCBXZWJDb250ZXh0OjpsYW5ndWFn
ZUNoYW5nZWQoKQogewotICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6TGFuZ3VhZ2VDaGFuZ2VkKGRlZmF1bHRMYW5ndWFnZSgpKSk7CisgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdl
ZCh1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCkpKTsKIH0KIAogdm9pZCBXZWJDb250ZXh0OjpmdWxs
S2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQp
CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVXZWJQcm9jZXNzKCkK
IAogICAgIHBhcmFtZXRlcnMuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MgPSBtX2hpc3RvcnlDbGll
bnQuc2hvdWxkVHJhY2tWaXNpdGVkTGlua3MoKTsKICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwg
PSBtX2NhY2hlTW9kZWw7Ci0gICAgcGFyYW1ldGVycy5sYW5ndWFnZUNvZGUgPSBkZWZhdWx0TGFu
Z3VhZ2UoKTsKKyAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IHVzZXJQcmVmZXJyZWRMYW5ndWFn
ZXMoKTsKICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBhcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5kYXRhYmFzZURpcmVjdG9yeSA9
IGRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgcGFyYW1ldGVycy5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkgPSBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDggKzIxMyw4
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY28KICAgICBzZXRTaG91
bGRUcmFja1Zpc2l0ZWRMaW5rcyhwYXJhbWV0ZXJzLnNob3VsZFRyYWNrVmlzaXRlZExpbmtzKTsK
ICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJzLmNhY2hl
TW9kZWwpKTsKIAotICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZUNvZGUuaXNFbXB0eSgpKQot
ICAgICAgICBvdmVycmlkZURlZmF1bHRMYW5ndWFnZShwYXJhbWV0ZXJzLmxhbmd1YWdlQ29kZSk7
CisgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCisgICAgICAgIG92ZXJy
aWRlVXNlclByZWZlcnJlZExhbmd1YWdlcyhwYXJhbWV0ZXJzLmxhbmd1YWdlcyk7CiAKICAgICBt
X3RleHRDaGVja2VyU3RhdGUgPSBwYXJhbWV0ZXJzLnRleHRDaGVja2VyU3RhdGU7CiAKQEAgLTI4
OCw5ICsyODgsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFNob3VsZFVzZUZvbnRTbW9vdGhpCiAg
ICAgV2ViQ29yZTo6Rm9udDo6c2V0U2hvdWxkVXNlU21vb3RoaW5nKHVzZUZvbnRTbW9vdGhpbmcp
OwogfQogCi12b2lkIFdlYlByb2Nlc3M6Omxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmIGxh
bmd1YWdlKSBjb25zdAordm9pZCBXZWJQcm9jZXNzOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hh
bmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFuZ3VhZ2VzKSBjb25zdAogewotICAgIG92ZXJy
aWRlRGVmYXVsdExhbmd1YWdlKGxhbmd1YWdlKTsKKyAgICBvdmVycmlkZVVzZXJQcmVmZXJyZWRM
YW5ndWFnZXMobGFuZ3VhZ2VzKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRB
Y2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTA1MzAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGVmYXVsdFJlcXVlc3RUaW1l
b3V0SW50ZXJ2YWwoZG91YmxlKTsKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENv
ZGVQYXRoKGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsK
LSAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lk
IHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgY29u
c3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQpOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIHNldFNob3Vs
ZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMDUzMDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgU2V0
RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRlcnZhbCkKICAg
ICBTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1VzZUNvbXBsZXhU
ZXh0KQogICAgIFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCB1c2VGb250U21vb3RoaW5n
KQotICAgIExhbmd1YWdlQ2hhbmdlZChXVEY6OlN0cmluZyBsYW5ndWFnZSkKKyAgICBVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8V1RGOjpTdHJpbmc+IGxhbmd1YWdlcykKICAg
ICBGdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQpCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIFNldFNob3VsZFBhaW50TmF0aXZlQ29udHJv
bHMoYm9vbCBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKQpJbmRleDogU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgkocmV2aXNpb24gMTA1MzAwKQorKysgU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgRVhQT1JUUwogICAgICAgICA/bGFz
dENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFC
RV9OWFoKICAgICAgICAgP21hcmtlcnNGb3JARG9jdW1lbnRNYXJrZXJDb250cm9sbGVyQFdlYkNv
cmVAQFFBRT9BVj8kVmVjdG9yQFBBVkRvY3VtZW50TWFya2VyQFdlYkNvcmVAQCQwQUBAV1RGQEBQ
QVZOb2RlQDJAVk1hcmtlclR5cGVzQERvY3VtZW50TWFya2VyQDJAQFoKICAgICAgICAgP29ic2Vy
dmVGcmFtZUBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBASUFFWFBBVkZyYW1lQDJA
QFoKKyAgICAgICAgP292ZXJyaWRlVXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQVhB
QlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQEBaCiAgICAgICAgID9wYWdlQERvY3Vt
ZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNA
RnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJD
b3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCkBAIC0xOTMsNCArMTk0LDUgQEAgRVhQT1JU
UwogICAgICAgICA/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
M0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVlJhbmdlQDFAQFoKICAgICAgICAgP3RvUmFuZ2VA
V2ViQ29yZUBAWUFQQVZSYW5nZUAxQFZKU1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3VwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0BEb2N1bWVudEBXZWJDb3JlQEBRQUVYWFoKKyAg
ICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3Ry
aW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFC
RVBBVkZyYW1lVmlld0AyQFhaCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
CShyZXZpc2lvbiAxMDUzMDApCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9s
YXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBA
UUJFX05YWgogICAgICAgICA/bWFya2Vyc0ZvckBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFP0FWPyRWZWN0b3JAUEFWRG9jdW1lbnRNYXJrZXJAV2ViQ29yZUBAJDBBQEBXVEZA
QFBBVk5vZGVAMkBWTWFya2VyVHlwZXNARG9jdW1lbnRNYXJrZXJAMkBAWgogICAgICAgICA/b2Jz
ZXJ2ZUZyYW1lQEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBJQUVYUEFWRnJhbWVA
MkBAWgorICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlB
WEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAgP3BhZ2VARG9j
dW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCiAgICAgICAgID9wYWludENvbnRyb2xUaW50
c0BGcmFtZVZpZXdAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdl
YkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBISF9OQFoKQEAgLTE4Nyw0ICsxODgsNSBAQCBFWFBP
UlRTCiAgICAgICAgID90b0pTQFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0
ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWUmFuZ2VAMUBAWgogICAgICAgICA/dG9SYW5n
ZUBXZWJDb3JlQEBZQVBBVlJhbmdlQDFAVkpTVmFsdWVASlNDQEBAWgogICAgICAgICA/dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzQERvY3VtZW50QFdlYkNvcmVAQFFBRVhYWgor
ICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZT
dHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBA
UUJFUEFWRnJhbWVWaWV3QDJAWFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNp
b24gMTA1MzAwKQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsOSBAQCBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRD
MUVQTlNfCiBfWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2OwogX1pON1dlYkNv
cmUyMWdldENhY2hlZERPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQS04zSlND
OUNsYXNzSW5mb0U7CiBfWk43V2ViQ29yZTIyZXh0ZXJuYWxSZXByZXNlbnRhdGlvbkVQTlNfN0Vs
ZW1lbnRFajsKK19aTjdXZWJDb3JlMjJ1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzRXY7CiBfWk43V2Vi
Q29yZTI0RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyMTBtYXJrZXJzRm9yRVBOU180Tm9kZUVOU18x
NERvY3VtZW50TWFya2VyMTFNYXJrZXJUeXBlc0U7CitfWk43V2ViQ29yZTMwb3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzRVJLTjNXVEY2VmVjdG9ySU5TMF82U3RyaW5nRUxtMEVFRTsKIF9a
TjdXZWJDb3JlNkpTTm9kZTEwcHV0VmlydHVhbEVQTjNKU0M5RXhlY1N0YXRlRVJLTlMxXzEwSWRl
bnRpZmllckVOUzFfN0pTVmFsdWVFUk5TMV8xNVB1dFByb3BlcnR5U2xvdEU7CiBfWk43V2ViQ29y
ZTZKU05vZGUyMHZpc2l0Q2hpbGRyZW5WaXJ0dWFsRVJOM0pTQzExU2xvdFZpc2l0b3JFOwogX1pO
N1dlYkNvcmU2SlNOb2RlNnNfaW5mb0U7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUzMDApCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMi0wMS0xOCAgRXJpYyBDYXJs
c29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQcm92aWRlIGFjY2VzcyB0
byB1c2VyJ3MgbGlzdCBvZiBwcmVmZXJyZWQgbGFuZ3VhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZCBKU0ludGVy
bmFsc0N1c3RvbS5jcHAuCisKIDIwMTItMDEtMTggIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25p
QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0
aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0
aW9uLgpJbmRleDogVG9vbHMvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvR05V
bWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNTMwMCkKKysrIFRvb2xzL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGxpYldlYkNvcmVJbnRlcm5hbHNfbGFfU09V
UkNFUyA9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIFwKKwlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL0pTSW50ZXJu
YWxzQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvdGVzdGluZy9qcy9XZWJDb3JlVGVzdFN1
cHBvcnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pzL1dlYkNvcmVUZXN0U3VwcG9y
dC5oCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTMwMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTE4ICBFcmljIENhcmxz
b24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFByb3ZpZGUgYWNjZXNzIHRv
IHVzZXIncyBsaXN0IG9mIHByZWZlcnJlZCBsYW5ndWFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQt
bGFuZ3VhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2hhcm5lc3MvdXNl
ci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbDogQWRkZWQuCisKIDIwMTItMDEtMTggIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZDogZml4
IGZhaWxpbmcgaW5zcGVjdG9yIHRlc3QuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3Mv
dXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJlZC1sYW5ndWFnZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQt
bGFuZ3VhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVy
bnMgYSBtdXRhYmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy4KKwor
aW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0eSBhcnJh
eTogUEFTUworaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwgYW5k
IHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0OiBQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hhcm5lc3MvdXNlci1wcmVmZXJyZWQtbGFuZ3VhZ2UuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaGFybmVzcy91c2VyLXByZWZlcnJl
ZC1sYW5ndWFnZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KGxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gdGVz
dChtZXNzYWdlLCBzdWNjZXNzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBs
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICAgICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJzogJyArIChzdWNjZXNzID8g
J1BBU1MnIDogJ0ZBSUwnKSk7CisgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGxhbmd1YWdl
cyA9IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzOworCisgICAgICAgICAgICAgICAg
dGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgcmV0dXJucyBhIG5vbi1lbXB0
eSBhcnJheScsIGxhbmd1YWdlcy5sZW5ndGgpOworCisgICAgICAgICAgICAgICAgbGFuZ3VhZ2Vz
LnVuc2hpZnQoImZpcnN0LWxhbmd1YWdlIik7CisgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzLnB1
c2goImxhc3QtbGFuZ3VhZ2UiKTsKKyAgICAgICAgICAgICAgICBpbnRlcm5hbHMudXNlclByZWZl
cnJlZExhbmd1YWdlcyA9IGxhbmd1YWdlczsKKworICAgICAgICAgICAgICAgIHZhciBuZXdMYW5n
dWFnZXMgPSBpbnRlcm5hbHMudXNlclByZWZlcnJlZExhbmd1YWdlczsKKyAgICAgICAgICAgICAg
ICB2YXIgc2FtZUNvbnRlbnRzID0gbmV3TGFuZ3VhZ2VzLmxlbmd0aCA9PSBsYW5ndWFnZXMubGVu
Z3RoOworICAgICAgICAgICAgICAgIGlmIChzYW1lQ29udGVudHMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdMYW5ndWFnZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdMYW5ndWFnZXNbaV0gIT0gbGFuZ3VhZ2VzW2ld
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZUNvbnRlbnRzID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgdGVzdCgnaW50ZXJuYWxzLnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMgaXMgbXV0YWJsZSwg
YW5kIHJldHVybnMgdGhlIHNhbWUgdmFsdWUgcGFzc2VkIHRvIGl0Jywgc2FtZUNvbnRlbnRzKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgIDxwPlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IGludGVybmFscy51c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIHJldHVybnMgYSBtdXRh
YmxlIEFycmF5IG9mIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlcy48L3A+CisgICAgICAg
IDx1bCBpZD0iY29uc29sZSI+PC91bD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>