<?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>43595</bug_id>
          
          <creation_ts>2010-08-05 17:18:28 -0700</creation_ts>
          <short_desc>Add support for MathML entities</short_desc>
          <delta_ts>2010-08-12 22:32:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>43949</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43949</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>mark</cc>
    
    <cc>sausset</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260972</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-05 17:18:28 -0700</bug_when>
    <thetext>Add support for MathML entities</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260973</commentid>
    <comment_count>1</comment_count>
      <attachid>63667</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-05 17:19:21 -0700</bug_when>
    <thetext>Created attachment 63667
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261061</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-05 20:39:59 -0700</bug_when>
    <thetext>*** Bug 42041 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261064</commentid>
    <comment_count>3</comment_count>
      <attachid>63684</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-05 20:50:29 -0700</bug_when>
    <thetext>Created attachment 63684
Works, no build integration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261348</commentid>
    <comment_count>4</comment_count>
      <attachid>63684</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-06 10:50:02 -0700</bug_when>
    <thetext>Comment on attachment 63684
Works, no build integration

Do we have a way to perf test this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261351</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-06 10:57:36 -0700</bug_when>
    <thetext>I think this fantastic.  But I think we should probably talk about this in person when we&apos;re in the office tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261357</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-06 11:03:52 -0700</bug_when>
    <thetext>We can certainly write a benchmark.  The question is how relate it to real-world content.  At the least, we can run it through the html-parser benchmark.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261360</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-06 11:07:42 -0700</bug_when>
    <thetext>I was thinking we might just make an html page with all of the old html entities on it, maybe 100 times or something?

And then run that through the html parser benchmark?  Donno.

Either way, I&apos;m happy to help you get this landed tomorrow.  It looks fantastic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262523</commentid>
    <comment_count>8</comment_count>
      <attachid>63980</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 00:14:27 -0700</bug_when>
    <thetext>Created attachment 63980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262534</commentid>
    <comment_count>9</comment_count>
      <attachid>63981</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 00:45:18 -0700</bug_when>
    <thetext>Created attachment 63981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262535</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 00:45:43 -0700</bug_when>
    <thetext>This version is faster than the old entity parser, as far as I can tell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262538</commentid>
    <comment_count>11</comment_count>
      <attachid>63981</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 00:55:19 -0700</bug_when>
    <thetext>Comment on attachment 63981
Patch

WebKitTools/Scripts/create-html-entity-table:142
 +      if (c &gt;= &apos;A&apos; &amp;&amp; c &lt;= &apos;Z&apos;)
Shouldn&apos;t these use our ascii helper methods?

WebCore/html/HTMLEntityTable.h:43
 +      static const HTMLEntityTableEntry* start();
I&apos;m confused by these names.  You explained in person this was the global start/end. aka, the start/end of the empty string.

WebCore/html/HTMLEntityTable.h:46
 +      static const HTMLEntityTableEntry* start(UChar);
Confused similarly by these names.

I&apos;ll have to review this for real when I&apos;m less tired.  But looks great.  I&apos;m happy to help you wire it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262928</commentid>
    <comment_count>12</comment_count>
      <attachid>64060</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 18:01:04 -0700</bug_when>
    <thetext>Created attachment 64060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262939</commentid>
    <comment_count>13</comment_count>
      <attachid>64060</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-10 18:21:04 -0700</bug_when>
    <thetext>Comment on attachment 64060
Patch

Sorry.  I got confused and asked git to slam two patches together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264127</commentid>
    <comment_count>14</comment_count>
      <attachid>64060</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 19:51:53 -0700</bug_when>
    <thetext>Comment on attachment 64060
Patch

This patch wrongly included some of your view-source patch (which is probably why it&apos;s failing to apply).  I&apos;m working to get a version of it applied to my local copy now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264147</commentid>
    <comment_count>15</comment_count>
      <attachid>64295</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 20:48:03 -0700</bug_when>
    <thetext>Created attachment 64295
compiles on mac, likely needs further tweaks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264149</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 20:48:55 -0700</bug_when>
    <thetext>We&apos;re likely going to have to do some sys.path hacks to get around webkitpy initialization code on Tiger, since Tiger only has python 2.3.

Otherwise this patch may be ready for landing.  I&apos;m not sure if all platforms use DerivedSources.make though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264150</commentid>
    <comment_count>17</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 20:58:34 -0700</bug_when>
    <thetext>Attachment 64295 did not build on qt:
Build output: http://queues.webkit.org/results/3753095</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264154</commentid>
    <comment_count>18</comment_count>
      <attachid>64297</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 21:33:46 -0700</bug_when>
    <thetext>Created attachment 64297
Should fix Qt/Gtk, gyp/chromium was beyond me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264155</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 21:35:33 -0700</bug_when>
    <thetext>GYP seems to use file-extension base rules, which doesn&apos;t fit well to using &quot;.json&quot; here.  It also doesn&apos;t play nice that our input is HTMLEntityNames.json and our output is HTMLEntityTable.cpp.  So I&apos;m not sure how to fix the chromium case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264156</commentid>
    <comment_count>20</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 21:46:33 -0700</bug_when>
    <thetext>Attachment 64297 did not build on qt:
Build output: http://queues.webkit.org/results/3767105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264158</commentid>
    <comment_count>21</comment_count>
      <attachid>64298</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 21:58:03 -0700</bug_when>
    <thetext>Created attachment 64298
Another attempt to fix Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264160</commentid>
    <comment_count>22</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-12 22:04:46 -0700</bug_when>
    <thetext>Attachment 64298 did not build on qt:
Build output: http://queues.webkit.org/results/3756120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264164</commentid>
    <comment_count>23</comment_count>
      <attachid>64299</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 22:17:59 -0700</bug_when>
    <thetext>Created attachment 64299
Now with all build systems including HTMLEntitySearch.*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264166</commentid>
    <comment_count>24</comment_count>
      <attachid>64298</attachid>
    <who name="Mark Mentovai">mark</who>
    <bug_when>2010-08-12 22:18:51 -0700</bug_when>
    <thetext>Comment on attachment 64298
Another attempt to fix Qt

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 415a62f609c289e3f25e337f158de5db0139cf80..62ca60f2a3f8fb35c50b0caed3b68c0964cd153b 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,15 @@
&gt; +2010-08-12  Adam Barth  &lt;abarth@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add support for MathML entities
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43595
&gt; +
&gt; +        Test progression for proper entity support.
&gt; +
&gt; +        * html5lib/runner-expected-html5.txt:
&gt; +        * html5lib/runner-expected.txt:
&gt; +
&gt;  2010-08-12  Tony Chang  &lt;tony@chromium.org&gt;
&gt;  
&gt;          Unreviewed, landing google-chrome linux 64 test results.
&gt; diff --git a/LayoutTests/html5lib/runner-expected-html5.txt b/LayoutTests/html5lib/runner-expected-html5.txt
&gt; index 2eb01b4cbf8aa762384ab5810f2f18f799a25dcf..84c72174fdce1be53d168da68266ed29234a984c 100644
&gt; --- a/LayoutTests/html5lib/runner-expected-html5.txt
&gt; +++ b/LayoutTests/html5lib/runner-expected-html5.txt
&gt; @@ -118,92 +118,10 @@ resources/doctype01.dat: PASS
&gt;  
&gt;  resources/scriptdata01.dat: PASS
&gt;  
&gt; -resources/html5test-com.dat:
&gt; -7
&gt; -9
&gt; -10
&gt; -11
&gt; -
&gt; -Test 7 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;lang;&amp;rang;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;ãã&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â¨â©&quot;
&gt; -
&gt; -Test 9 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;ImaginaryI;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;ImaginaryI;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â&quot;
&gt; -
&gt; -Test 10 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;Kopf;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;Kopf;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;ð&quot;
&gt; +resources/html5test-com.dat: PASS
&gt;  
&gt; -Test 11 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;notinva;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;notinva;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â&quot;
&gt; -resources/entities01.dat:
&gt; -2
&gt; -5
&gt; -
&gt; -Test 2 of 68 in resources/entities01.dat failed. Input:
&gt; -FOO&amp;gtBAR
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;FOO&amp;gtBAR&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;FOO&gt;BAR&quot;
&gt; +resources/entities01.dat: PASS
&gt;  
&gt; -Test 5 of 68 in resources/entities01.dat failed. Input:
&gt; -I&apos;m &amp;notit; I tell you
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;I&apos;m &amp;notit; I tell you&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;I&apos;m Â¬it; I tell you&quot;
&gt;  resources/entities02.dat: PASS
&gt;  
&gt;  resources/comments01.dat: PASS
&gt; diff --git a/LayoutTests/html5lib/runner-expected.txt b/LayoutTests/html5lib/runner-expected.txt
&gt; index 8a8f7be38c66e31f7d5c91eaa89b5f838fa3a2a9..c9ae245480d49ff502f7030712c24b8c3055e765 100644
&gt; --- a/LayoutTests/html5lib/runner-expected.txt
&gt; +++ b/LayoutTests/html5lib/runner-expected.txt
&gt; @@ -191,92 +191,10 @@ resources/doctype01.dat: PASS
&gt;  
&gt;  resources/scriptdata01.dat: PASS
&gt;  
&gt; -resources/html5test-com.dat:
&gt; -7
&gt; -9
&gt; -10
&gt; -11
&gt; -
&gt; -Test 7 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;lang;&amp;rang;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;ãã&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â¨â©&quot;
&gt; -
&gt; -Test 9 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;ImaginaryI;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;ImaginaryI;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â&quot;
&gt; -
&gt; -Test 10 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;Kopf;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;Kopf;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;ð&quot;
&gt; +resources/html5test-com.dat: PASS
&gt;  
&gt; -Test 11 of 24 in resources/html5test-com.dat failed. Input:
&gt; -&amp;notinva;
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;&amp;notinva;&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;â&quot;
&gt; -resources/entities01.dat:
&gt; -2
&gt; -5
&gt; +resources/entities01.dat: PASS
&gt;  
&gt; -Test 2 of 68 in resources/entities01.dat failed. Input:
&gt; -FOO&amp;gtBAR
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;FOO&amp;gtBAR&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;FOO&gt;BAR&quot;
&gt; -
&gt; -Test 5 of 68 in resources/entities01.dat failed. Input:
&gt; -I&apos;m &amp;notit; I tell you
&gt; -Got:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;I&apos;m &amp;notit; I tell you&quot;
&gt; -Expected:
&gt; -| &lt;html&gt;
&gt; -|   &lt;head&gt;
&gt; -|   &lt;body&gt;
&gt; -|     &quot;I&apos;m Â¬it; I tell you&quot;
&gt;  resources/entities02.dat: PASS
&gt;  
&gt;  resources/comments01.dat: PASS
&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 207608e8eefe0f63cb81dd95d0b899ee8bcc5087..eeb1763fbffacb4b8651111526de4f55d3ab2ed3 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -3062,6 +3062,74 @@
&gt;  
&gt;          Reviewed by Eric Seidel.
&gt;  
&gt; +        Add support for MathML entities
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43595
&gt; +
&gt; +        Implementing the HTML5 entity parsing algorithm require refactoring how
&gt; +        we search for entity names.  Instead of using a perfect hash, we now
&gt; +        use a sorted list.  As we advance through the input, we walk down a
&gt; +        binary search of the table looking for an entity.
&gt; +
&gt; +        Using this data structure lets us keep track of whether the current
&gt; +        string is a prefix of an existing entity, which we need for the
&gt; +        algorithm.  In a future patch, I plan to add some indicies to the
&gt; +        table, which should let us narrow down the range of interesting entries
&gt; +        more quickly.
&gt; +
&gt; +        The one nasty piece of the algorithm is if we walk too far down the
&gt; +        input and we need to back up to a previous match.  In this patch, we
&gt; +        accomplish this by rewinding the input and consuming a known number of
&gt; +        characters to resync the source.
&gt; +
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * html/HTMLEntityParser.cpp:
&gt; +        (WebCore::consumeHTMLEntity):
&gt; +        * html/HTMLEntitySearch.cpp: Added.
&gt; +        (WebCore::):
&gt; +        (WebCore::HTMLEntitySearch::HTMLEntitySearch):
&gt; +        (WebCore::HTMLEntitySearch::compare):
&gt; +        (WebCore::HTMLEntitySearch::findStart):
&gt; +        (WebCore::HTMLEntitySearch::findEnd):
&gt; +        (WebCore::HTMLEntitySearch::advance):
&gt; +        * html/HTMLEntitySearch.h: Added.
&gt; +        (WebCore::HTMLEntitySearch::isEntityPrefix):
&gt; +        (WebCore::HTMLEntitySearch::currentValue):
&gt; +        (WebCore::HTMLEntitySearch::lastMatch):
&gt; +        (WebCore::HTMLEntitySearch::):
&gt; +        (WebCore::HTMLEntitySearch::fail):
&gt; +        * html/HTMLEntityTable.h: Added.
&gt; +        (WebCore::HTMLEntityTableEntry::lastCharacter):
&gt; +
&gt; +2010-08-12  Adam Barth  &lt;abarth@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Port view-source to new parser
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43746
&gt; +
&gt; +        This patch has the basic functionality working in the old design of
&gt; +        constructing the view-source view from the token stream.
&gt; +
&gt; +        No new tests. (OOPS!)
&gt; +
&gt; +        * html/HTMLDocumentParser.cpp:
&gt; +        (WebCore::HTMLDocumentParser::pumpTokenizer):
&gt; +        * html/HTMLViewSourceDocument.cpp:
&gt; +        (WebCore::HTMLViewSourceDocument::createParser):
&gt; +        (WebCore::HTMLViewSourceDocument::addViewSourceToken):
&gt; +        (WebCore::HTMLViewSourceDocument::processCharacterToken):
&gt; +        (WebCore::HTMLViewSourceDocument::processCommentToken):
&gt; +        (WebCore::HTMLViewSourceDocument::processDoctypeToken):
&gt; +        (WebCore::HTMLViewSourceDocument::processTagToken):
&gt; +        * html/HTMLViewSourceDocument.h:
&gt; +        * html/LegacyHTMLDocumentParser.cpp:
&gt; +        (WebCore::LegacyHTMLDocumentParser::processToken):
&gt; +        (WebCore::LegacyHTMLDocumentParser::processDoctypeToken):
&gt; +
&gt; +2010-08-09  Adam Barth  &lt;abarth@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt;          Remove trailing whitespace in HTMLViewSourceDocument.cpp
&gt;          https://bugs.webkit.org/show_bug.cgi?id=43741
&gt;  
&gt; diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
&gt; index 37c2f10d33f8dbd9238dbb4e245feec39b6c9edf..c5ddff9eab2bd7a10c2a5c474bda567a5a8c1b49 100644
&gt; --- a/WebCore/DerivedSources.make
&gt; +++ b/WebCore/DerivedSources.make
&gt; @@ -505,7 +505,7 @@ all : \
&gt;      ColorData.cpp \
&gt;      DocTypeStrings.cpp \
&gt;      HTMLElementFactory.cpp \
&gt; -    HTMLEntityNames.cpp \
&gt; +    HTMLEntityTable.cpp \
&gt;      HTMLNames.cpp \
&gt;      WMLElementFactory.cpp \
&gt;      WMLNames.cpp \
&gt; @@ -600,8 +600,8 @@ DocTypeStrings.cpp : html/DocTypeStrings.gperf $(WebCore)/make-hash-tools.pl
&gt;  
&gt;  # HTML entity names
&gt;  
&gt; -HTMLEntityNames.cpp : html/HTMLEntityNames.gperf $(WebCore)/make-hash-tools.pl
&gt; -	perl $(WebCore)/make-hash-tools.pl . $(WebCore)/html/HTMLEntityNames.gperf
&gt; +HTMLEntityTable.cpp : html/HTMLEntityNames.json $(WebCore)/../WebKitTools/Scripts/create-html-entity-table
&gt; +	python $(WebCore)/../WebKitTools/Scripts/create-html-entity-table $(WebCore)/html/HTMLEntityNames.json &gt; HTMLEntityTable.cpp
&gt;  
&gt;  # --------
&gt;  
&gt; diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
&gt; index bca2aae30fb9095f69f0fee1896b9ecbf7a47995..cd035fe80547dd72bee52b5cc353eb4dedd05238 100644
&gt; --- a/WebCore/GNUmakefile.am
&gt; +++ b/WebCore/GNUmakefile.am
&gt; @@ -92,7 +92,7 @@ webcore_built_sources += \
&gt;  	DerivedSources/WebCore/CSSValueKeywords.h \
&gt;  	DerivedSources/WebCore/HTMLElementFactory.cpp \
&gt;  	DerivedSources/WebCore/HTMLElementFactory.h \
&gt; -	DerivedSources/WebCore/HTMLEntityNames.cpp \
&gt; +	DerivedSources/WebCore/HTMLEntityTable.cpp \
&gt;  	DerivedSources/WebCore/HTMLNames.cpp \
&gt;  	DerivedSources/WebCore/HTMLNames.h \
&gt;  	DerivedSources/WebCore/InspectorBackendDispatcher.cpp \
&gt; @@ -4393,8 +4393,8 @@ DerivedSources/WebCore/DocTypeStrings.cpp : $(WebCore)/html/DocTypeStrings.gperf
&gt;  	$(PERL) $(WebCore)/make-hash-tools.pl $(GENSOURCES_WEBCORE) $(WebCore)/html/DocTypeStrings.gperf
&gt;  
&gt;  # HTML entity names
&gt; -DerivedSources/WebCore/HTMLEntityNames.cpp : $(WebCore)/html/HTMLEntityNames.gperf $(WebCore)/make-hash-tools.pl
&gt; -	$(PERL) $(WebCore)/make-hash-tools.pl $(GENSOURCES_WEBCORE) $(WebCore)/html/HTMLEntityNames.gperf
&gt; +DerivedSources/WebCore/HTMLEntityTable.cpp : $(WebCore)/html/HTMLEntityNames.json $(WebCore)/../WebKitTools/Scripts/create-html-entity-table
&gt; +	$(PYTHON) $(WebCore)/../WebKitTools/Scripts/create-html-entity-table $(WebCore)/html/HTMLEntityNames.json &gt; $(GENSOURCES_WEBCORE)/HTMLEntityTable.cpp
&gt;  
&gt;  # color names
&gt;  DerivedSources/WebCore/ColorData.cpp: $(WebCore)/platform/ColorData.gperf $(WebCore)/make-hash-tools.pl
&gt; diff --git a/WebCore/WebCore.gyp/WebCore.gyp b/WebCore/WebCore.gyp/WebCore.gyp
&gt; index a28ee5d061059abfa4ef91582f3f579ca80d2954..85fa5b84768e77bb60514aa620f5793cc78a47ac 100644
&gt; --- a/WebCore/WebCore.gyp/WebCore.gyp
&gt; +++ b/WebCore/WebCore.gyp/WebCore.gyp
&gt; @@ -276,9 +276,10 @@
&gt;  
&gt;          # gperf rule
&gt;          &apos;../html/DocTypeStrings.gperf&apos;,
&gt; -        &apos;../html/HTMLEntityNames.gperf&apos;,
&gt;          &apos;../platform/ColorData.gperf&apos;,
&gt;  
&gt; +        &apos;../html/HTMLEntityNames.json&apos;,
&gt; +
&gt;          # idl rules
&gt;          &apos;&lt;@(bindings_idl_files)&apos;,
&gt;        ],
&gt; @@ -609,6 +610,26 @@
&gt;            ],
&gt;            &apos;process_outputs_as_sources&apos;: 0,
&gt;          },
&gt; +        {
&gt; +          &apos;rule_name&apos;: &apos;json&apos;,
&gt; +          &apos;extension&apos;: &apos;json&apos;,
&gt; +          #
&gt; +          # json is fed into WebKitTools/Scripts//make-hash-tools.pl
&gt; +          #
&gt; +          &apos;outputs&apos;: [
&gt; +            &apos;&lt;(SHARED_INTERMEDIATE_DIR)/webkit/&lt;(RULE_INPUT_ROOT).cpp&apos;,
&gt; +          ],
&gt; +          &apos;dependencies&apos;: [
&gt; +            &apos;../make-hash-tools.pl&apos;,
&gt; +          ],
&gt; +          &apos;action&apos;: [
&gt; +            &apos;perl&apos;,
&gt; +            &apos;../make-hash-tools.pl&apos;,
&gt; +            &apos;&lt;(SHARED_INTERMEDIATE_DIR)/webkit&apos;,
&gt; +            &apos;&lt;(RULE_INPUT_PATH)&apos;,
&gt; +          ],
&gt; +          &apos;process_outputs_as_sources&apos;: 0,
&gt; +        },
&gt;          # Rule to build generated JavaScript (V8) bindings from .idl source.
&gt;          {
&gt;            &apos;rule_name&apos;: &apos;binding&apos;,
&gt; diff --git a/WebCore/WebCore.pri b/WebCore/WebCore.pri
&gt; index b0effee7eb6ee2b1eb7eb4fb5de6699fe8a84ec8..137c3b03fe10cdbb76b0dca7679cb762101a4173 100644
&gt; --- a/WebCore/WebCore.pri
&gt; +++ b/WebCore/WebCore.pri
&gt; @@ -29,7 +29,7 @@ XML_NAMES = $$PWD/xml/xmlattrs.in
&gt;  
&gt;  XMLNS_NAMES = $$PWD/xml/xmlnsattrs.in
&gt;  
&gt; -ENTITIES_GPERF = $$PWD/html/HTMLEntityNames.gperf
&gt; +HTML_ENTITIES = $$PWD/html/HTMLEntityNames.json
&gt;  
&gt;  COLORDATA_GPERF = $$PWD/platform/ColorData.gperf
&gt;  
&gt; @@ -590,12 +590,12 @@ xmlnames.commands = perl -I$$PWD/bindings/scripts $$xmlnames.wkScript --attrs $$
&gt;  addExtraCompiler(xmlnames)
&gt;  
&gt;  # GENERATOR 8-A:
&gt; -entities.output = $${WC_GENERATED_SOURCES_DIR}/HTMLEntityNames.cpp
&gt; -entities.input = ENTITIES_GPERF
&gt; -entities.wkScript = $$PWD/make-hash-tools.pl
&gt; -entities.commands = perl $$entities.wkScript $${WC_GENERATED_SOURCES_DIR} $$ENTITIES_GPERF
&gt; +entities.output = $${WC_GENERATED_SOURCES_DIR}/HTMLEntityTable.cpp
&gt; +entities.input = HTML_ENTITIES
&gt; +entities.wkScript = $$PWD/../WebKitTools/Scripts/create-html-entity-table
&gt; +entities.commands = python $$entities.wkScript $$HTML_ENTITIES &gt; $${WC_GENERATED_SOURCES_DIR}/HTMLEntityTable.cpp
&gt;  entities.clean = ${QMAKE_FILE_OUT}
&gt; -entities.depends = $$PWD/make-hash-tools.pl
&gt; +entities.depends = $$PWD/../WebKitTools/Scripts/create-html-entity-table
&gt;  addExtraCompiler(entities)
&gt;  
&gt;  # GENERATOR 8-B:
&gt; diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
&gt; index 5ff42507b62ddc560a894a9fe2b228cf71c43bbc..2867512609f90cbb35a8c3b0ca3d406e7dbb9cd0 100644
&gt; --- a/WebCore/WebCore.vcproj/WebCore.vcproj
&gt; +++ b/WebCore/WebCore.vcproj/WebCore.vcproj
&gt; @@ -40905,6 +40905,14 @@
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt;  			&lt;File
&gt; +				RelativePath=&quot;..\html\HTMLViewSourceParser.cpp&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt; +				RelativePath=&quot;..\html\HTMLViewSourceParser.h&quot;
&gt; +				&gt;
&gt; +			&lt;/File&gt;
&gt; +			&lt;File
&gt;  				RelativePath=&quot;..\html\ImageData.cpp&quot;
&gt;  				&gt;
&gt;  			&lt;/File&gt;
&gt; diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; index f9ed1b431396be0c1fd87e107d651c172bf30243..750ed400a8defd414cea95cace22f1fb9f145246 100644
&gt; --- a/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; +++ b/WebCore/WebCore.xcodeproj/project.pbxproj
&gt; @@ -3181,6 +3181,9 @@
&gt;  		A8A564A611DC0E59003AC2F0 /* HTMLFormattingElementList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A564A411DC0E59003AC2F0 /* HTMLFormattingElementList.cpp */; };
&gt;  		A8A909AC0CBCD6B50029B807 /* RenderSVGTransformableContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A909AA0CBCD6B50029B807 /* RenderSVGTransformableContainer.h */; };
&gt;  		A8A909AD0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8A909AB0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp */; };
&gt; +		A8BC044E1214EB2A00B5F122 /* HTMLEntitySearch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 970C4FDF1211266200C3D393 /* HTMLEntitySearch.cpp */; };
&gt; +		A8BC044F1214EB2B00B5F122 /* HTMLEntitySearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 970C4FE01211266200C3D393 /* HTMLEntitySearch.h */; };
&gt; +		A8BC04921214F69600B5F122 /* HTMLEntityTable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */; };
&gt;  		A8BCFD05120A046100B5F122 /* SVGPathSeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8BCFD04120A046100B5F122 /* SVGPathSeg.cpp */; };
&gt;  		A8C2280E11D4A59700D5A7D3 /* DocumentParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */; };
&gt;  		A8C228A111D5722E00D5A7D3 /* DecodedDataDocumentParser.h in Headers */ = {isa = PBXBuildFile; fileRef = A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */; };
&gt; @@ -8476,6 +8479,10 @@
&gt;  		97059974107D975200A50A7C /* PolicyCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyCallback.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		97059975107D975200A50A7C /* PolicyChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PolicyChecker.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		97059976107D975200A50A7C /* PolicyChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolicyChecker.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		970C4FDF1211266200C3D393 /* HTMLEntitySearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEntitySearch.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		970C4FE01211266200C3D393 /* HTMLEntitySearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLEntitySearch.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		970C4FE11211266200C3D393 /* HTMLEntityTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEntityTable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		970C4FE21211266200C3D393 /* HTMLEntityTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLEntityTable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		9719AEFF11D09F2C00D45831 /* HTMLInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTMLInputStream.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		9738899E116EA9DC00ADF313 /* DocumentWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentWriter.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		9738899F116EA9DC00ADF313 /* DocumentWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentWriter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -8861,6 +8868,7 @@
&gt;  		A8A564A411DC0E59003AC2F0 /* HTMLFormattingElementList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLFormattingElementList.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		A8A909AA0CBCD6B50029B807 /* RenderSVGTransformableContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSVGTransformableContainer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		A8A909AB0CBCD6B50029B807 /* RenderSVGTransformableContainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSVGTransformableContainer.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTMLEntityTable.cpp; path = /build/Debug/DerivedSources/WebCore/HTMLEntityTable.cpp; sourceTree = &quot;&lt;absolute&gt;&quot;; };
&gt;  		A8BCFD04120A046100B5F122 /* SVGPathSeg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGPathSeg.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		A8C2280D11D4A59700D5A7D3 /* DocumentParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentParser.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		A8C2289F11D5722E00D5A7D3 /* DecodedDataDocumentParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecodedDataDocumentParser.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -10941,7 +10949,6 @@
&gt;  		E1FF57A50F01256B00891EBB /* ThreadGlobalData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadGlobalData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		E406F3FA1198304D009D59D6 /* DocTypeStrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocTypeStrings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		E406F3FB1198307D009D59D6 /* ColorData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorData.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; -		E406F4021198329A009D59D6 /* HTMLEntityNames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLEntityNames.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		E415F10C0D9A05870033CE97 /* ElementTimeControl.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ElementTimeControl.idl; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		E415F1680D9A165D0033CE97 /* DOMElementTimeControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMElementTimeControl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		E415F1830D9A1A830033CE97 /* ElementTimeControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementTimeControl.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -12288,7 +12295,7 @@
&gt;  				E406F3FA1198304D009D59D6 /* DocTypeStrings.cpp */,
&gt;  				A17C81200F2A5CF7005DAAEB /* HTMLElementFactory.cpp */,
&gt;  				A17C81210F2A5CF7005DAAEB /* HTMLElementFactory.h */,
&gt; -				E406F4021198329A009D59D6 /* HTMLEntityNames.cpp */,
&gt; +				A8BC04911214F69600B5F122 /* HTMLEntityTable.cpp */,
&gt;  				A8D06B380A265DCD005E7203 /* HTMLNames.cpp */,
&gt;  				A8D06B370A265DCD005E7203 /* HTMLNames.h */,
&gt;  				938E65F609F0985D008A48EC /* JSHTMLElementWrapperFactory.cpp */,
&gt; @@ -13986,6 +13993,10 @@
&gt;  				859128790AB222EC00202265 /* HTMLEmbedElement.idl */,
&gt;  				976E895E11C0CA3A00EA9CA9 /* HTMLEntityParser.cpp */,
&gt;  				976E895F11C0CA3A00EA9CA9 /* HTMLEntityParser.h */,
&gt; +				970C4FDF1211266200C3D393 /* HTMLEntitySearch.cpp */,
&gt; +				970C4FE01211266200C3D393 /* HTMLEntitySearch.h */,
&gt; +				970C4FE11211266200C3D393 /* HTMLEntityTable.cpp */,
&gt; +				970C4FE21211266200C3D393 /* HTMLEntityTable.h */,
&gt;  				A81369B9097374F500D74463 /* HTMLFieldSetElement.cpp */,
&gt;  				A81369B8097374F500D74463 /* HTMLFieldSetElement.h */,
&gt;  				1AE2A9F40A1CDA5700B42B25 /* HTMLFieldSetElement.idl */,
&gt; @@ -20156,6 +20167,7 @@
&gt;  				97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
&gt;  				CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */,
&gt;  				2EED57FE1214A9C2007656BB /* ThreadableBlobRegistry.h in Headers */,
&gt; +				A8BC044F1214EB2B00B5F122 /* HTMLEntitySearch.h in Headers */,
&gt;  			);
&gt;  			runOnlyForDeploymentPostprocessing = 0;
&gt;  		};
&gt; @@ -22582,6 +22594,8 @@
&gt;  				E1BE512D0CF6C512002EA959 /* XSLTUnicodeSort.cpp in Sources */,
&gt;  				97DD4D860FDF4D6E00ECF9A4 /* XSSAuditor.cpp in Sources */,
&gt;  				2EED57FD1214A9C2007656BB /* ThreadableBlobRegistry.cpp in Sources */,
&gt; +				A8BC044E1214EB2A00B5F122 /* HTMLEntitySearch.cpp in Sources */,
&gt; +				A8BC04921214F69600B5F122 /* HTMLEntityTable.cpp in Sources */,
&gt;  			);
&gt;  			runOnlyForDeploymentPostprocessing = 0;
&gt;  		};
&gt; diff --git a/WebCore/html/HTMLEntityNames.gperf b/WebCore/html/HTMLEntityNames.gperf
&gt; deleted file mode 100644
&gt; index c665efea52401a202337cf2ea6bb8800bbcb754d..0000000000000000000000000000000000000000
&gt; --- a/WebCore/html/HTMLEntityNames.gperf
&gt; +++ /dev/null
&gt; @@ -1,303 +0,0 @@
&gt; -%{
&gt; -/*
&gt; -     Copyright (C) 1999 Lars Knoll (knoll@mpi-hd.mpg.de)
&gt; -     Copyright (C) 2002, 2003, 2004, 2005 Apple Inc. All rights reserved.
&gt; -  
&gt; -     This library is free software; you can redistribute it and/or
&gt; -     modify it under the terms of the GNU Library General Public
&gt; -     License as published by the Free Software Foundation; either
&gt; -     version 2 of the License, or (at your option) any later version.
&gt; -  
&gt; -     This library is distributed in the hope that it will be useful,
&gt; -     but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; -     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; -     Library General Public License for more details.
&gt; -  
&gt; -     You should have received a copy of the GNU Library General Public License
&gt; -     along with this library; see the file COPYING.LIB.  If not, write to
&gt; -     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; -     Boston, MA 02110-1301, USA.
&gt; -  
&gt; -  ----------------------------------------------------------------------------
&gt; -  
&gt; -    HTMLEntityNames.gperf: input file to generate a hash table for entities
&gt; -    HTMLEntityNames.cpp: DO NOT EDIT! generated by WebCore/make-hash-tools.pl
&gt; -*/
&gt; -%}
&gt; -%struct-type
&gt; -struct Entity {
&gt; -    const char *name;
&gt; -    int code;
&gt; -};
&gt; -%language=ANSI-C
&gt; -%readonly-tables
&gt; -%global-table
&gt; -%compare-strncmp
&gt; -%define lookup-function-name findEntity
&gt; -%define hash-function-name entity_hash_function
&gt; -%includes
&gt; -%enum
&gt; -%%
&gt; -AElig, 0x00c6
&gt; -AMP, 38
&gt; -Aacute, 0x00c1
&gt; -Acirc, 0x00c2
&gt; -Agrave, 0x00c0
&gt; -Alpha, 0x0391
&gt; -Aring, 0x00c5
&gt; -Atilde, 0x00c3
&gt; -Auml, 0x00c4
&gt; -Beta, 0x0392
&gt; -COPY, 0x00a9
&gt; -Ccedil, 0x00c7
&gt; -Chi, 0x03a7
&gt; -Dagger, 0x2021
&gt; -Delta, 0x0394
&gt; -ETH, 0x00d0
&gt; -Eacute, 0x00c9
&gt; -Ecirc, 0x00ca
&gt; -Egrave, 0x00c8
&gt; -Epsilon, 0x0395
&gt; -Eta, 0x0397
&gt; -Euml, 0x00cb
&gt; -GT, 62
&gt; -Gamma, 0x0393
&gt; -Iacute, 0x00cd
&gt; -Icirc, 0x00ce
&gt; -Igrave, 0x00cc
&gt; -Iota, 0x0399
&gt; -Iuml, 0x00cf
&gt; -Kappa, 0x039a
&gt; -LT, 60
&gt; -Lambda, 0x039b
&gt; -Mu, 0x039c
&gt; -Ntilde, 0x00d1
&gt; -Nu, 0x039d
&gt; -OElig, 0x0152
&gt; -Oacute, 0x00d3
&gt; -Ocirc, 0x00d4
&gt; -Ograve, 0x00d2
&gt; -Omega, 0x03a9
&gt; -Omicron, 0x039f
&gt; -Oslash, 0x00d8
&gt; -Otilde, 0x00d5
&gt; -Ouml, 0x00d6
&gt; -Phi, 0x03a6
&gt; -Pi, 0x03a0
&gt; -Prime, 0x2033
&gt; -Psi, 0x03a8
&gt; -QUOT, 34
&gt; -REG, 0x00ae
&gt; -Rho, 0x03a1
&gt; -Scaron, 0x0160
&gt; -Sigma, 0x03a3
&gt; -THORN, 0x00de
&gt; -Tau, 0x03a4
&gt; -Theta, 0x0398
&gt; -Uacute, 0x00da
&gt; -Ucirc, 0x00db
&gt; -Ugrave, 0x00d9
&gt; -Upsilon, 0x03a5
&gt; -Uuml, 0x00dc
&gt; -Xi, 0x039e
&gt; -Yacute, 0x00dd
&gt; -Yuml, 0x0178
&gt; -Zeta, 0x0396
&gt; -aacute, 0x00e1
&gt; -acirc, 0x00e2
&gt; -acute, 0x00b4
&gt; -aelig, 0x00e6
&gt; -agrave, 0x00e0
&gt; -alefsym, 0x2135
&gt; -alpha, 0x03b1
&gt; -amp, 38
&gt; -and, 0x2227
&gt; -ang, 0x2220
&gt; -apos, 0x0027
&gt; -aring, 0x00e5
&gt; -asymp, 0x2248
&gt; -atilde, 0x00e3
&gt; -auml, 0x00e4
&gt; -bdquo, 0x201e
&gt; -beta, 0x03b2
&gt; -brvbar, 0x00a6
&gt; -bull, 0x2022
&gt; -cap, 0x2229
&gt; -ccedil, 0x00e7
&gt; -cedil, 0x00b8
&gt; -cent, 0x00a2
&gt; -chi, 0x03c7
&gt; -circ, 0x02c6
&gt; -clubs, 0x2663
&gt; -cong, 0x2245
&gt; -copy, 0x00a9
&gt; -crarr, 0x21b5
&gt; -cup, 0x222a
&gt; -curren, 0x00a4
&gt; -dArr, 0x21d3
&gt; -dagger, 0x2020
&gt; -darr, 0x2193
&gt; -deg, 0x00b0
&gt; -delta, 0x03b4
&gt; -diams, 0x2666
&gt; -divide, 0x00f7
&gt; -eacute, 0x00e9
&gt; -ecirc, 0x00ea
&gt; -egrave, 0x00e8
&gt; -empty, 0x2205
&gt; -emsp, 0x2003
&gt; -ensp, 0x2002
&gt; -epsilon, 0x03b5
&gt; -equiv, 0x2261
&gt; -eta, 0x03b7
&gt; -eth, 0x00f0
&gt; -euml, 0x00eb
&gt; -euro, 0x20ac
&gt; -exist, 0x2203
&gt; -fnof, 0x0192
&gt; -forall, 0x2200
&gt; -frac12, 0x00bd
&gt; -frac14, 0x00bc
&gt; -frac34, 0x00be
&gt; -frasl, 0x2044
&gt; -gamma, 0x03b3
&gt; -ge, 0x2265
&gt; -gt, 62
&gt; -hArr, 0x21d4
&gt; -harr, 0x2194
&gt; -hearts, 0x2665
&gt; -hellip, 0x2026
&gt; -iacute, 0x00ed
&gt; -icirc, 0x00ee
&gt; -iexcl, 0x00a1
&gt; -igrave, 0x00ec
&gt; -image, 0x2111
&gt; -infin, 0x221e
&gt; -int, 0x222b
&gt; -iota, 0x03b9
&gt; -iquest, 0x00bf
&gt; -isin, 0x2208
&gt; -iuml, 0x00ef
&gt; -kappa, 0x03ba
&gt; -lArr, 0x21d0
&gt; -lambda, 0x03bb
&gt; -lang, 0x3008
&gt; -laquo, 0x00ab
&gt; -larr, 0x2190
&gt; -lceil, 0x2308
&gt; -ldquo, 0x201c
&gt; -le, 0x2264
&gt; -lfloor, 0x230a
&gt; -lowast, 0x2217
&gt; -loz, 0x25ca
&gt; -lrm, 0x200e
&gt; -lsaquo, 0x2039
&gt; -lsquo, 0x2018
&gt; -lt, 60
&gt; -macr, 0x00af
&gt; -mdash, 0x2014
&gt; -micro, 0x00b5
&gt; -middot, 0x00b7
&gt; -minus, 0x2212
&gt; -mu, 0x03bc
&gt; -nabla, 0x2207
&gt; -nbsp, 0x00a0
&gt; -ndash, 0x2013
&gt; -ne, 0x2260
&gt; -ni, 0x220b
&gt; -not, 0x00ac
&gt; -notin, 0x2209
&gt; -nsub, 0x2284
&gt; -nsup, 0x2285
&gt; -ntilde, 0x00f1
&gt; -nu, 0x03bd
&gt; -oacute, 0x00f3
&gt; -ocirc, 0x00f4
&gt; -oelig, 0x0153
&gt; -ograve, 0x00f2
&gt; -oline, 0x203e
&gt; -omega, 0x03c9
&gt; -omicron, 0x03bf
&gt; -oplus, 0x2295
&gt; -or, 0x2228
&gt; -ordf, 0x00aa
&gt; -ordm, 0x00ba
&gt; -oslash, 0x00f8
&gt; -otilde, 0x00f5
&gt; -otimes, 0x2297
&gt; -ouml, 0x00f6
&gt; -para, 0x00b6
&gt; -part, 0x2202
&gt; -percnt, 0x0025
&gt; -permil, 0x2030
&gt; -perp, 0x22a5
&gt; -phi, 0x03c6
&gt; -pi, 0x03c0
&gt; -piv, 0x03d6
&gt; -plusmn, 0x00b1
&gt; -pound, 0x00a3
&gt; -prime, 0x2032
&gt; -prod, 0x220f
&gt; -prop, 0x221d
&gt; -psi, 0x03c8
&gt; -quot, 34
&gt; -rArr, 0x21d2
&gt; -radic, 0x221a
&gt; -rang, 0x3009
&gt; -raquo, 0x00bb
&gt; -rarr, 0x2192
&gt; -rceil, 0x2309
&gt; -rdquo, 0x201d
&gt; -real, 0x211c
&gt; -reg, 0x00ae
&gt; -rfloor, 0x230b
&gt; -rho, 0x03c1
&gt; -rlm, 0x200f
&gt; -rsaquo, 0x203a
&gt; -rsquo, 0x2019
&gt; -sbquo, 0x201a
&gt; -scaron, 0x0161
&gt; -sdot, 0x22c5
&gt; -sect, 0x00a7
&gt; -shy, 0x00ad
&gt; -sigma, 0x03c3
&gt; -sigmaf, 0x03c2
&gt; -sim, 0x223c
&gt; -spades, 0x2660
&gt; -sub, 0x2282
&gt; -sube, 0x2286
&gt; -sum, 0x2211
&gt; -sup, 0x2283
&gt; -sup1, 0x00b9
&gt; -sup2, 0x00b2
&gt; -sup3, 0x00b3
&gt; -supe, 0x2287
&gt; -supl, 0x00b9
&gt; -szlig, 0x00df
&gt; -tau, 0x03c4
&gt; -there4, 0x2234
&gt; -theta, 0x03b8
&gt; -thetasym, 0x03d1
&gt; -thinsp, 0x2009
&gt; -thorn, 0x00fe
&gt; -tilde, 0x02dc
&gt; -times, 0x00d7
&gt; -trade, 0x2122
&gt; -uArr, 0x21d1
&gt; -uacute, 0x00fa
&gt; -uarr, 0x2191
&gt; -ucirc, 0x00fb
&gt; -ugrave, 0x00f9
&gt; -uml, 0x00a8
&gt; -upsih, 0x03d2
&gt; -upsilon, 0x03c5
&gt; -uuml, 0x00fc
&gt; -weierp, 0x2118
&gt; -xi, 0x03be
&gt; -yacute, 0x00fd
&gt; -yen, 0x00a5
&gt; -yuml, 0x00ff
&gt; -zeta, 0x03b6
&gt; -zwj, 0x200d
&gt; -zwnj, 0x200c
&gt; -%%
&gt; diff --git a/WebCore/html/HTMLEntityParser.cpp b/WebCore/html/HTMLEntityParser.cpp
&gt; index 6bec8190dc886cc3e69df71ed0405fa106c0be03..4822827cf43c548214a541da7f39668b88f09000 100644
&gt; --- a/WebCore/html/HTMLEntityParser.cpp
&gt; +++ b/WebCore/html/HTMLEntityParser.cpp
&gt; @@ -28,6 +28,8 @@
&gt;  #include &quot;config.h&quot;
&gt;  #include &quot;HTMLEntityParser.h&quot;
&gt;  
&gt; +#include &quot;HTMLEntitySearch.h&quot;
&gt; +#include &quot;HTMLEntityTable.h&quot;
&gt;  #include &lt;wtf/Vector.h&gt;
&gt;  
&gt;  #include &quot;HTMLEntityNames.cpp&quot;
&gt; @@ -102,7 +104,6 @@ unsigned consumeHTMLEntity(SegmentedString&amp; source, bool&amp; notEnoughCharacters, U
&gt;      EntityState entityState = Initial;
&gt;      unsigned result = 0;
&gt;      Vector&lt;UChar, 10&gt; consumedCharacters;
&gt; -    Vector&lt;char, 10&gt; entityName;
&gt;  
&gt;      while (!source.isEmpty()) {
&gt;          UChar cc = *source;
&gt; @@ -166,7 +167,7 @@ unsigned consumeHTMLEntity(SegmentedString&amp; source, bool&amp; notEnoughCharacters, U
&gt;              else if (cc == &apos;;&apos;) {
&gt;                  source.advancePastNonNewline();
&gt;                  return legalEntityFor(result);
&gt; -            } else 
&gt; +            } else
&gt;                  return legalEntityFor(result);
&gt;              break;
&gt;          }
&gt; @@ -181,48 +182,48 @@ unsigned consumeHTMLEntity(SegmentedString&amp; source, bool&amp; notEnoughCharacters, U
&gt;              break;
&gt;          }
&gt;          case Named: {
&gt; -            // FIXME: This code is wrong. We need to find the longest matching entity.
&gt; -            //        The examples from the spec are:
&gt; -            //            I&apos;m &amp;notit; I tell you
&gt; -            //            I&apos;m &amp;notin; I tell you
&gt; -            //        In the first case, &quot;&amp;not&quot; is the entity.  In the second
&gt; -            //        case, &quot;&amp;notin;&quot; is the entity.
&gt; -            // FIXME: Our list of HTML entities is incomplete.
&gt; -            // FIXME: The number 8 below is bogus.
&gt; -            while (!source.isEmpty() &amp;&amp; entityName.size() &lt;= 8) {
&gt; +            HTMLEntitySearch entitySearch;
&gt; +            while (!source.isEmpty()) {
&gt;                  cc = *source;
&gt; -                if (cc == &apos;;&apos;) {
&gt; -                    const Entity* entity = findEntity(entityName.data(), entityName.size());
&gt; -                    if (entity) {
&gt; -                        source.advanceAndASSERT(&apos;;&apos;);
&gt; -                        return entity-&gt;code;
&gt; -                    }
&gt; -                    break;
&gt; -                }
&gt; -                if (!isAlphaNumeric(cc)) {
&gt; -                    const Entity* entity = findEntity(entityName.data(), entityName.size());
&gt; -                    if (entity) {
&gt; -                        // HTML5 tells us to ignore this entity, for historical reasons,
&gt; -                        // if the lookhead character is &apos;=&apos;.
&gt; -                        if (additionalAllowedCharacter &amp;&amp; cc == &apos;=&apos;)
&gt; -                            break;
&gt; -                        // Some entities require a terminating semicolon, whereas other
&gt; -                        // entities do not.  The HTML5 spec has a giant list:
&gt; -                        //
&gt; -                        // http://www.whatwg.org/specs/web-apps/current-work/multipage/named-character-references.html#named-character-references
&gt; -                        //
&gt; -                        // However, the list seems to boil down to this branch:
&gt; -                        if (entity-&gt;code &gt; 255)
&gt; -                            break;
&gt; -                        return entity-&gt;code;
&gt; -                    }
&gt; +                entitySearch.advance(cc);
&gt; +                if (!entitySearch.isEntityPrefix())
&gt;                      break;
&gt; -                }
&gt; -                entityName.append(cc);
&gt;                  consumedCharacters.append(cc);
&gt;                  source.advanceAndASSERT(cc);
&gt;              }
&gt;              notEnoughCharacters = source.isEmpty();
&gt; +            if (notEnoughCharacters) {
&gt; +                // We can&apos;t an entity because there might be a longer entity
&gt; +                // that we could match if we had more data.
&gt; +                unconsumeCharacters(source, consumedCharacters);
&gt; +                return 0;
&gt; +            }
&gt; +            if (!entitySearch.lastMatch()) {
&gt; +                ASSERT(!entitySearch.currentValue());
&gt; +                unconsumeCharacters(source, consumedCharacters);
&gt; +                return 0;
&gt; +            }
&gt; +            if (entitySearch.lastMatch()-&gt;length != entitySearch.currentLength()) {
&gt; +                // We&apos;ve consumed too many characters.  We need to walk the
&gt; +                // source back to the point at which we had consumed an
&gt; +                // actual entity.
&gt; +                unconsumeCharacters(source, consumedCharacters);
&gt; +                consumedCharacters.clear();
&gt; +                const int length = entitySearch.lastMatch()-&gt;length;
&gt; +                const UChar* reference = entitySearch.lastMatch()-&gt;entity;
&gt; +                for (int i = 0; i &lt; length; ++i) {
&gt; +                    cc = *source;
&gt; +                    ASSERT_UNUSED(reference, cc == *reference++);
&gt; +                    consumedCharacters.append(cc);
&gt; +                    source.advanceAndASSERT(cc);
&gt; +                    ASSERT(!source.isEmpty());
&gt; +                }
&gt; +                cc = *source;
&gt; +            }
&gt; +            if (entitySearch.lastMatch()-&gt;lastCharacter() == &apos;;&apos;)
&gt; +                return entitySearch.lastMatch()-&gt;value;
&gt; +            if (!additionalAllowedCharacter || !(isAlphaNumeric(cc) || cc == &apos;=&apos;))
&gt; +                return entitySearch.lastMatch()-&gt;value;
&gt;              unconsumeCharacters(source, consumedCharacters);
&gt;              return 0;
&gt;          }
&gt; diff --git a/WebCore/html/HTMLEntitySearch.cpp b/WebCore/html/HTMLEntitySearch.cpp
&gt; new file mode 100644
&gt; index 0000000000000000000000000000000000000000..c0526a3d6de7fb27ebb3c83ac39a1ea7a66ec169
&gt; --- /dev/null
&gt; +++ b/WebCore/html/HTMLEntitySearch.cpp
&gt; @@ -0,0 +1,132 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google, Inc. All Rights Reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + */
&gt; +
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;HTMLEntitySearch.h&quot;
&gt; +
&gt; +#include &quot;HTMLEntityTable.h&quot;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +namespace {
&gt; +    
&gt; +const HTMLEntityTableEntry* halfway(const HTMLEntityTableEntry* left, const HTMLEntityTableEntry* right)
&gt; +{
&gt; +    return &amp;left[(right - left) / 2];
&gt; +}
&gt; +
&gt; +}
&gt; +    
&gt; +HTMLEntitySearch::HTMLEntitySearch()
&gt; +    : m_currentLength(0)
&gt; +    , m_currentValue(0)
&gt; +    , m_lastMatch(0)
&gt; +    , m_start(HTMLEntityTable::start())
&gt; +    , m_end(HTMLEntityTable::end())
&gt; +{
&gt; +}
&gt; +
&gt; +HTMLEntitySearch::CompareResult HTMLEntitySearch::compare(const HTMLEntityTableEntry* entry, UChar nextCharacter) const
&gt; +{
&gt; +    if (entry-&gt;length &lt; m_currentLength + 1)
&gt; +        return Before;
&gt; +    UChar entryNextCharacter = entry-&gt;entity[m_currentLength];
&gt; +    if (entryNextCharacter == nextCharacter)
&gt; +        return Prefix;
&gt; +    return entryNextCharacter &lt; nextCharacter ? Before : After;
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntitySearch::findStart(UChar nextCharacter) const
&gt; +{
&gt; +    const HTMLEntityTableEntry* left = m_start;
&gt; +    const HTMLEntityTableEntry* right = m_end;
&gt; +    if (left == right)
&gt; +        return left;
&gt; +    CompareResult result = compare(left, nextCharacter);
&gt; +    if (result == Prefix)
&gt; +        return left;
&gt; +    if (result == After)
&gt; +        return right;
&gt; +    while (left + 1 &lt; right) {
&gt; +        const HTMLEntityTableEntry* probe = halfway(left, right);
&gt; +        result = compare(probe, nextCharacter);
&gt; +        if (result == Before)
&gt; +            left = probe;
&gt; +        else {
&gt; +            ASSERT(result == After || result == Prefix);
&gt; +            right = probe;
&gt; +        }
&gt; +    }
&gt; +    ASSERT(left + 1 == right);
&gt; +    return right;
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntitySearch::findEnd(UChar nextCharacter) const
&gt; +{
&gt; +    const HTMLEntityTableEntry* left = m_start;
&gt; +    const HTMLEntityTableEntry* right = m_end;
&gt; +    if (left == right)
&gt; +        return right;
&gt; +    CompareResult result = compare(right, nextCharacter);
&gt; +    if (result == Prefix)
&gt; +        return right;
&gt; +    if (result == Before)
&gt; +        return left;
&gt; +    while (left + 1 &lt; right) {
&gt; +        const HTMLEntityTableEntry* probe = halfway(left, right);
&gt; +        result = compare(probe, nextCharacter);
&gt; +        if (result == After)
&gt; +            right = probe;
&gt; +        else {
&gt; +            ASSERT(result == Before || result == Prefix);
&gt; +            left = probe;
&gt; +        }
&gt; +    }
&gt; +    ASSERT(left + 1 == right);
&gt; +    return left;
&gt; +}
&gt; +
&gt; +void HTMLEntitySearch::advance(UChar nextCharacter)
&gt; +{
&gt; +    ASSERT(isEntityPrefix());
&gt; +    if (!m_currentLength) {
&gt; +        m_start = HTMLEntityTable::start(nextCharacter);
&gt; +        m_end = HTMLEntityTable::end(nextCharacter);
&gt; +    } else {
&gt; +        m_start = findStart(nextCharacter);
&gt; +        m_end = findEnd(nextCharacter);
&gt; +        if (m_start == m_end &amp;&amp; compare(m_start, nextCharacter) != Prefix)
&gt; +            return fail();
&gt; +    }
&gt; +    ++m_currentLength;
&gt; +    if (m_start-&gt;length != m_currentLength) {
&gt; +        m_currentValue = 0;
&gt; +        return;
&gt; +    }
&gt; +    m_lastMatch = m_start;
&gt; +    m_currentValue = m_lastMatch-&gt;value;
&gt; +}
&gt; +
&gt; +}
&gt; diff --git a/WebCore/html/HTMLEntitySearch.h b/WebCore/html/HTMLEntitySearch.h
&gt; new file mode 100644
&gt; index 0000000000000000000000000000000000000000..e57859d4ebccd2a12b03bde0f8cf1282394dbcc9
&gt; --- /dev/null
&gt; +++ b/WebCore/html/HTMLEntitySearch.h
&gt; @@ -0,0 +1,75 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google, Inc. All Rights Reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + */
&gt; +
&gt; +#ifndef HTMLEntitySearch_h
&gt; +#define HTMLEntitySearch_h
&gt; +
&gt; +#include &quot;PlatformString.h&quot;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +struct HTMLEntityTableEntry;
&gt; +
&gt; +class HTMLEntitySearch {
&gt; +public:
&gt; +    HTMLEntitySearch();
&gt; +
&gt; +    void advance(UChar);
&gt; +
&gt; +    bool isEntityPrefix() const { return !!m_start; }
&gt; +    int currentValue() const { return m_currentValue; }
&gt; +    int currentLength() const { return m_currentLength; }
&gt; +
&gt; +    const HTMLEntityTableEntry* lastMatch() const { return m_lastMatch; }
&gt; +
&gt; +private:
&gt; +    enum CompareResult {
&gt; +        Before,
&gt; +        Prefix,
&gt; +        After,
&gt; +    };
&gt; +
&gt; +    CompareResult compare(const HTMLEntityTableEntry*, UChar) const;
&gt; +    const HTMLEntityTableEntry* findStart(UChar) const;
&gt; +    const HTMLEntityTableEntry* findEnd(UChar) const;
&gt; +
&gt; +    void fail()
&gt; +    {
&gt; +        m_currentValue = 0;
&gt; +        m_start = 0;
&gt; +        m_end = 0;
&gt; +    }
&gt; +
&gt; +    int m_currentLength;
&gt; +    int m_currentValue;
&gt; +
&gt; +    const HTMLEntityTableEntry* m_lastMatch;
&gt; +    const HTMLEntityTableEntry* m_start;
&gt; +    const HTMLEntityTableEntry* m_end;
&gt; +};
&gt; +
&gt; +}
&gt; +
&gt; +#endif
&gt; diff --git a/WebCore/html/HTMLEntityTable.h b/WebCore/html/HTMLEntityTable.h
&gt; new file mode 100644
&gt; index 0000000000000000000000000000000000000000..35a1afd3161f0dca34c52d301dca9c3959c72931
&gt; --- /dev/null
&gt; +++ b/WebCore/html/HTMLEntityTable.h
&gt; @@ -0,0 +1,52 @@
&gt; +/*
&gt; + * Copyright (C) 2010 Google, Inc. All Rights Reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + */
&gt; +
&gt; +#ifndef HTMLEntityTable_h
&gt; +#define HTMLEntityTable_h
&gt; +
&gt; +#include &quot;PlatformString.h&quot;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +struct HTMLEntityTableEntry {
&gt; +    UChar lastCharacter() const { return entity[length - 1]; }
&gt; +
&gt; +    const UChar* entity;
&gt; +    int length;
&gt; +    int value;
&gt; +};
&gt; +
&gt; +class HTMLEntityTable {
&gt; +public:
&gt; +    static const HTMLEntityTableEntry* start();
&gt; +    static const HTMLEntityTableEntry* end();
&gt; +
&gt; +    static const HTMLEntityTableEntry* start(UChar);
&gt; +    static const HTMLEntityTableEntry* end(UChar);
&gt; +};
&gt; +
&gt; +}
&gt; +
&gt; +#endif
&gt; diff --git a/WebCore/make-hash-tools.pl b/WebCore/make-hash-tools.pl
&gt; index 42cb6fd958f105ae6afbf6ede348ac35b6f3963e..8cc9952c1572b003381b0d8273cb1d665c30ffe8 100644
&gt; --- a/WebCore/make-hash-tools.pl
&gt; +++ b/WebCore/make-hash-tools.pl
&gt; @@ -29,16 +29,6 @@ my $option = basename($ARGV[0],&quot;.gperf&quot;);
&gt;  
&gt;  switch ($option) {
&gt;  
&gt; -case &quot;HTMLEntityNames&quot; {
&gt; -
&gt; -    my $htmlEntityNamesGenerated   = &quot;$outdir/HTMLEntityNames.cpp&quot;;
&gt; -    my $htmlEntityNamesGperf       = $ARGV[0];
&gt; -    shift;
&gt; -
&gt; -    system(&quot;gperf --key-positions=\&quot;*\&quot; -D -s 2 $htmlEntityNamesGperf &gt; $htmlEntityNamesGenerated&quot;) == 0 || die &quot;calling gperf failed: $?&quot;;
&gt; -
&gt; -} # case &quot;HTMLEntityNames&quot;
&gt; -
&gt;  case &quot;DocTypeStrings&quot; {
&gt;  
&gt;      my $docTypeStringsGenerated    = &quot;$outdir/DocTypeStrings.cpp&quot;;
&gt; diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
&gt; index f8d1d88c2bd8ac93cf628d0623c58978274c1953..8521eabd7cba5659d24b4d3131714f780a047eed 100644
&gt; --- a/WebKitTools/ChangeLog
&gt; +++ b/WebKitTools/ChangeLog
&gt; @@ -1,3 +1,18 @@
&gt; +2010-08-12  Adam Barth  &lt;abarth@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add support for MathML entities
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43595
&gt; +
&gt; +        A script for generating the C++ state data structure describing all the
&gt; +        entities from a JSON description.
&gt; +
&gt; +        Note: This script is not yet integrated with the build system, so this
&gt; +              patch will not build!  OOPS!
&gt; +
&gt; +        * Scripts/create-html-entity-table: Added.
&gt; +
&gt;  2010-08-12  David Levin  &lt;levin@chromium.org&gt;
&gt;  
&gt;          Build break fix.
&gt; diff --git a/WebKitTools/Scripts/create-html-entity-table b/WebKitTools/Scripts/create-html-entity-table
&gt; new file mode 100755
&gt; index 0000000000000000000000000000000000000000..6513b29da78b3fb5eb80f845bbb3480330c320b5
&gt; --- /dev/null
&gt; +++ b/WebKitTools/Scripts/create-html-entity-table
&gt; @@ -0,0 +1,173 @@
&gt; +#!/usr/bin/env python
&gt; +# Copyright (c) 2010 Google Inc. All rights reserved.
&gt; +#
&gt; +# Redistribution and use in source and binary forms, with or without
&gt; +# modification, are permitted provided that the following conditions are
&gt; +# met:
&gt; +# 
&gt; +#     * Redistributions of source code must retain the above copyright
&gt; +# notice, this list of conditions and the following disclaimer.
&gt; +#     * Redistributions in binary form must reproduce the above
&gt; +# copyright notice, this list of conditions and the following disclaimer
&gt; +# in the documentation and/or other materials provided with the
&gt; +# distribution.
&gt; +#     * Neither the name of Google Inc. nor the names of its
&gt; +# contributors may be used to endorse or promote products derived from
&gt; +# this software without specific prior written permission.
&gt; +# 
&gt; +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&gt; +# &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
&gt; +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
&gt; +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
&gt; +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
&gt; +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
&gt; +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
&gt; +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
&gt; +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt; +
&gt; +import os.path
&gt; +import string
&gt; +import sys
&gt; +
&gt; +import webkitpy.thirdparty.simplejson as simplejson
&gt; +
&gt; +
&gt; +def convert_entity_to_cpp_name(entity):
&gt; +    postfix = &quot;EntityName&quot;
&gt; +    if entity[-1] == &quot;;&quot;:
&gt; +        return &quot;%sSemicolon%s&quot; % (entity[:-1], postfix)
&gt; +    return &quot;%s%s&quot; % (entity, postfix)
&gt; +
&gt; +
&gt; +def convert_entity_to_uchar_array(entity):
&gt; +    return &quot;{&apos;%s&apos;}&quot; % &quot;&apos;, &apos;&quot;.join(entity)
&gt; +
&gt; +
&gt; +def convert_value_to_int(value):
&gt; +    assert(value[0] == &quot;U&quot;)
&gt; +    assert(value[1] == &quot;+&quot;)
&gt; +    return &quot;0x&quot; + value[2:]
&gt; +
&gt; +
&gt; +def offset_table_entry(offset):
&gt; +    return &quot;    &amp;staticEntityTable[%s],&quot; % offset
&gt; +
&gt; +
&gt; +program_name = os.path.basename(__file__)
&gt; +if len(sys.argv) &lt; 2:
&gt; +    print &gt;&gt; sys.stderr, &quot;Usage: %s INPUT_FILE&quot; % program_name
&gt; +    exit(1)
&gt; +
&gt; +input_file = sys.argv[1]
&gt; +html_entity_names_file = open(input_file)
&gt; +entries = simplejson.load(html_entity_names_file)
&gt; +html_entity_names_file.close()
&gt; +
&gt; +entries = sorted(entries, key=lambda entry: entry[&apos;entity&apos;])
&gt; +entity_count = len(entries)
&gt; +
&gt; +print &quot;&quot;&quot;/*
&gt; + * Copyright (C) 2010 Google, Inc. All Rights Reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
&gt; + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
&gt; + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
&gt; + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
&gt; + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
&gt; + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
&gt; + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&gt; + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
&gt; + */
&gt; +
&gt; +// THIS FILE IS GENERATED BY WebKitTools/Scripts/create-html-entity-table
&gt; +// DO NOT EDIT (unless you are a ninja)!
&gt; +
&gt; +#include &quot;config.h&quot;
&gt; +#include &quot;HTMLEntityTable.h&quot;
&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +namespace {
&gt; +&quot;&quot;&quot;
&gt; +
&gt; +for entry in entries:
&gt; +    print &quot;const UChar %sEntityName[] = %s;&quot; % (
&gt; +        convert_entity_to_cpp_name(entry[&quot;entity&quot;]),
&gt; +        convert_entity_to_uchar_array(entry[&quot;entity&quot;]))
&gt; +
&gt; +print &quot;&quot;&quot;
&gt; +HTMLEntityTableEntry staticEntityTable[%s] = {&quot;&quot;&quot; % entity_count
&gt; +
&gt; +index = {}
&gt; +offset = 0
&gt; +for entry in entries:
&gt; +    letter = entry[&quot;entity&quot;][0]
&gt; +    if not index.get(letter):
&gt; +        index[letter] = offset
&gt; +    print &apos;    { %sEntityName, %s, %s },&apos; % (
&gt; +        convert_entity_to_cpp_name(entry[&quot;entity&quot;]),
&gt; +        len(entry[&quot;entity&quot;]),
&gt; +        convert_value_to_int(entry[&quot;value&quot;]))
&gt; +    offset += 1
&gt; +
&gt; +print &quot;&quot;&quot;};
&gt; +&quot;&quot;&quot;
&gt; +
&gt; +print &quot;const HTMLEntityTableEntry* uppercaseOffset[] = {&quot;
&gt; +for letter in string.uppercase:
&gt; +    print offset_table_entry(index[letter])
&gt; +print offset_table_entry(index[&apos;a&apos;])
&gt; +print &quot;&quot;&quot;};
&gt; +
&gt; +const HTMLEntityTableEntry* lowercaseOffset[] = {&quot;&quot;&quot;
&gt; +for letter in string.lowercase:
&gt; +    print offset_table_entry(index[letter])
&gt; +print offset_table_entry(entity_count)
&gt; +print &quot;&quot;&quot;};
&gt; +
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntityTable::start(UChar c)
&gt; +{
&gt; +    if (c &gt;= &apos;A&apos; &amp;&amp; c &lt;= &apos;Z&apos;)
&gt; +        return uppercaseOffset[c - &apos;A&apos;];
&gt; +    if (c &gt;= &apos;a&apos; &amp;&amp; c &lt;= &apos;z&apos;)
&gt; +        return lowercaseOffset[c - &apos;a&apos;];
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntityTable::end(UChar c)
&gt; +{
&gt; +    if (c &gt;= &apos;A&apos; &amp;&amp; c &lt;= &apos;Z&apos;)
&gt; +        return uppercaseOffset[c - &apos;A&apos; + 1] - 1;
&gt; +    if (c &gt;= &apos;a&apos; &amp;&amp; c &lt;= &apos;z&apos;)
&gt; +        return lowercaseOffset[c - &apos;a&apos; + 1] - 1;
&gt; +    return 0;
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntityTable::start()
&gt; +{
&gt; +    return &amp;staticEntityTable[0];
&gt; +}
&gt; +
&gt; +const HTMLEntityTableEntry* HTMLEntityTable::end()
&gt; +{
&gt; +    return &amp;staticEntityTable[%s - 1];
&gt; +}
&gt; +
&gt; +}
&gt; +&quot;&quot;&quot; % entity_count

WebCore/WebCore.gyp/WebCore.gyp:622
 +            &apos;dependencies&apos;: [
This should be &apos;inputs&apos;, not &apos;dependencies&apos;.

WebCore/WebCore.gyp/WebCore.gyp:281
 +          &apos;../html/HTMLEntityNames.json&apos;,
Eric, you seemed to indicate something wasn’t working here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264167</commentid>
    <comment_count>25</comment_count>
    <who name="Mark Mentovai">mark</who>
    <bug_when>2010-08-12 22:19:37 -0700</bug_when>
    <thetext>Sorry, I guess that’s the last time I try to use Bugzilla’s “review patch.”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264169</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 22:20:26 -0700</bug_when>
    <thetext>Bugzilla&apos;s review patch including all text by default is about the worst idea ever.

I think I&apos;ll just create a new bug since this one is dead now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264174</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 22:24:34 -0700</bug_when>
    <thetext>I&apos;ve filed bug https://bugs.webkit.org/show_bug.cgi?id=43948 about the bad default for webkit&apos;s &quot;review patch&quot; link.  I&apos;ll close this bug out once i hear back from the EWSes and open a new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264176</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 22:26:52 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 43949 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264180</commentid>
    <comment_count>29</comment_count>
      <attachid>64302</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-12 22:30:53 -0700</bug_when>
    <thetext>Created attachment 64302
Now with all build systems including HTMLEntitySearch.*</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63667</attachid>
            <date>2010-08-05 17:19:21 -0700</date>
            <delta_ts>2010-08-05 20:50:26 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-43595-20100805171920.patch</filename>
            <type>text/plain</type>
            <size>15282</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDgwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTAtMDgtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgTWF0aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MzU5NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMh
KQorCisgICAgICAgICogaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpIVE1MRW50aXR5U2VhcmNoKToKKyAgICAgICAg
KFdlYkNvcmU6OmhhbGZ3YXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6
Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmluZEVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjphZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbnRpdHlTZWFyY2g6OnZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlTZWFyY2gu
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjopOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmFpbCk6CisgICAgICAgICogaHRtbC9IVE1M
RW50aXR5VGFibGUuaDogQWRkZWQuCisKIDIwMTAtMDgtMDUgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvSFRN
TEVudGl0eVNlYXJjaC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlTZWFyY2guaCIKKworI2luY2x1ZGUgIkhUTUxFbnRp
dHlUYWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0hUTUxFbnRpdHlTZWFyY2g6OkhU
TUxFbnRpdHlTZWFyY2goKQorICAgIDogbV9jdXJyZW50TGVuZ3RoKDApCisgICAgLCBtX3N0YXJ0
KEhUTUxFbnRpdHlUYWJsZTo6c3RhcnQoKSkKKyAgICAsIG1fZW5kKEhUTUxFbnRpdHlUYWJsZTo6
ZW5kKCkpCit7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBoYWxmd2F5KGNvbnN0
IEhUTUxFbnRpdHlQYXJzZXIqIGxlZnQsIGNvbnN0IEhUTUxFbnRpdHlQYXJzZXIqIHJpZ2h0KQor
eworICAgIHJldHVybiBtX3N0YXJ0WyhsZWZ0IC0gcmlnaHQpIC8gMl07Cit9CisKK0NvbXBhcmVS
ZXN1bHQgSFRNTEVudGl0eVNlYXJjaDo6Y29tcGFyZShjb25zdCBIVE1MRW50aXR5VGFibGVFbnRy
eSogZW50cnksIFVDaGFybmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBpZiAoZW50cnktPmxl
bmd0aCA8IG1fY3VycmVudExlbmd0aCArIDEpCisgICAgICAgIHJldHVybiBCZWZvcmU7CisgICAg
VUNoYXIgZW50cnlOZXh0Q2hhcmN0ZXIgPSBlbnRyeS0+ZW50aXR5W21fY3VycmVudExlbmd0aF07
CisgICAgaWYgKGVudHJ5TmV4dENoYXJhY3RlciA9PSBuZXh0Q2hhcmFjdGVyKQorICAgICAgICBy
ZXR1cm4gUHJlZml4OworICAgIHJldHVybiBlbnRyeU5leHRDaGFyYWN0ZXIgPCBuZXh0Q2hhcmFj
dGVyID8gQmVmb3JlIDogQWZ0ZXI7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBI
VE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sK
KyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0g
cmlnaHQpCisgICAgICAgIHJldHVybiBsZWZ0OworICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0g
Y29tcGFyZShsZWZ0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkK
KyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBCZWxvdyk7CisgICAg
d2hpbGUgKGxlZnQgKyAxIDwgcmlnaHQpIHsKKyAgICAgICAgY29uc3QgSFRNTEVudGl0eVRhYmxl
RW50cnkqIHByb2JlID0gaGFsZndheShsZWZ0LCByaWdodCk7CisgICAgICAgIHJlc3VsdCA9IGNv
bXBhcmUocHJvYmUpOworICAgICAgICBpZiAocmVzdWx0ID09IEJlbG93KQorICAgICAgICAgICAg
bGVmdCA9IHByb2JlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQg
PT0gQWJvdmUgfHwgcmVzdWx0ID09IFByZWZpeCk7CisgICAgICAgICAgICByaWdodCA9IHByb2Jl
OworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAg
cmV0dXJuIHJpZ2h0OworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0
eVNlYXJjaDo6ZmluZEVuZChVQ2hhciBuZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBsZWZ0ID0gbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogcmlnaHQgPSBtX2VuZDsKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAg
ICAgICAgcmV0dXJuIHJpZ2h0OworICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShy
aWdodCwgbmV4dENoYXJhY3Rlcik7CisgICAgaWYgKHJlc3VsdCA9PSBQcmVmaXgpCisgICAgICAg
IHJldHVybiByaWdodDsKKyAgICBBU1NFUlQocmVzdWx0ID09IEJlbG93KTsKKyAgICB3aGlsZSAo
bGVmdCArIDEgPCByaWdodCkgeworICAgICAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSog
cHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZShw
cm9iZSk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gQWJvdmUpCisgICAgICAgICAgICByaWdodCA9
IHByb2JlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVs
b3cgfHwgcmVzdWx0ID09IFByZWZpeCk7CisgICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAg
ICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICByZXR1cm4g
bGVmdDsKK30KKwordm9pZCBIVE1MRW50aXR5U2VhcmNoOjphZHZhbmNlKFVDaGFyIG5leHRDaGFy
YWN0ZXIpCit7CisgICAgQVNTRVJUKGlzRW50aXR5UHJlZml4KCkpOworICAgIG1fc3RhcnQgPSBm
aW5kU3RhcnQobmV4dENoYXJhY3Rlcik7CisgICAgbV9lbmQgPSBmaW5kRW5kKG5leHRDaGFyYWN0
ZXIpOworICAgIGlmIChtX3N0YXJ0ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENo
YXJhY3RlcikgIT0gUHJlZml4KQorICAgICAgICByZXR1cm4gZmFpbCgpOworICAgICsrbV9jdXJy
ZW50TGVuZ3RoOworfQorCitib29sIEhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGFydCAhPSAwOworfQorCitpbnQgSFRNTEVudGl0eVNl
YXJjaDo6dmFsdWUoKQoreworICAgIGlmIChtX3N0YXJ0ICYmIG1fc3RhcnQgPT0gbV9lbmQpCisg
ICAgICAgIHJldHVybiBtX3N0YXJ0LT52YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworfQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTEVudGl0eVNlYXJjaC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlTZWFyY2guaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0
eVNlYXJjaF9oCisjZGVmaW5lIEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVudGl0eVRh
YmxlRW50cnk7CisKK2NsYXNzIEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAgIEhUTUxF
bnRpdHlTZWFyY2goKTsKKworICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisgICAgYm9vbCBpc0Vu
dGl0eVByZWZpeCgpIGNvbnN0OworICAgIGludCB2YWx1ZSgpOworCitwcml2YXRlOgorICAgIGVu
dW0gQ29tcGFyZVJlc3VsdCB7CisgICAgICAgIEJlbG93LAorICAgICAgICBQcmVmaXgsCisgICAg
ICAgIEFib3ZlLAorICAgIH07CisKKyAgICBDb21wYXJlUmVzdWx0IGNvbXBhcmUoY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqLCBVQ2hhcikgY29uc3Q7CisgICAgY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIGZpbmRTdGFydChVQ2hhcikgY29uc3Q7CisgICAgY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIGZpbmRFbmQoVUNoYXIpIGNvbnN0OworCisgICAgdm9pZCBmYWlsKCkKKyAgICB7
CisgICAgICAgIG1fY3VycmVudExlbmd0aCA9IDA7CisgICAgICAgIG1fc3RhcnQgPSAwOworICAg
ICAgICBtX2VuZCA9IDA7CisgICAgfQorCisgICAgaW50IG1fY3VycmVudExlbmd0aDsKKyAgICBj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5
VGFibGVFbnRyeSogbV9lbmQ7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxFbnRpdHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5
VGFibGUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVRhYmxlX2gKKyNkZWZpbmUg
SFRNTEVudGl0eVRhYmxlX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5IHsKKyAgICBjb25z
dCBVQ2hhciogZW50aXR5OworICAgIGludCBsZW5ndGg7CisgICAgaW50IHZhbHVlOworfTsKKwor
Y2xhc3MgSFRNTEVudGl0eVRhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIHN0YXJ0KCk7CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiBlbmQoKTsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJLaXRUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDgw
MCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEwLTA4LTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IE1hdGhNTCBlbnRpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDM1OTUKKworICAgICAgICAqIFNjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRh
YmxlOiBBZGRlZC4KKwogMjAxMC0wNS0yMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xzL1Nj
cmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChjKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCBzaW1wbGVqc29uCisKKworZGVmIGlzX3NvcnRlZChlbnRyaWVzKToKKyAgICBlbnRp
dGllcyA9IFtlbnRyeVsnZW50aXR5J10gZm9yIGVudHJ5IGluIGVudHJpZXNdCisgICAgcmV0dXJu
IGVudGl0aWVzID09IHNvcnRlZChlbnRpdGllcykKKworZGVmIGNvbnZlcnRfdmFsdWVfdG9faW50
KHZhbHVlKToKKyAgICBhc3NlcnQodmFsdWVbMF0gPT0gIlUiKQorICAgIGFzc2VydCh2YWx1ZVsx
XSA9PSAiKyIpCisgICAgcmV0dXJuICJcXHgiICsgdmFsdWVbMjpdCisKK2RlZiBzdHJpcF9zZW1p
Y29sb24oZW50cmllcyk6CisgICAgcmVzdWx0ID0gW10KKyAgICBzZWVuX2VudGl0aWVzID0gc2V0
KCkKKyAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgZW50aXR5ID0gZW50cnlbImVu
dGl0eSJdCisgICAgICAgIGlmIGVudGl0eVstMV0gPT0gIjsiOgorICAgICAgICAgICAgZW50aXR5
ID0gZW50aXR5WzotMV0KKyAgICAgICAgaWYgZW50aXR5IGluIHNlZW5fZW50aXRpZXM6CisgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICBzZWVuX2VudGl0aWVzLmFkZChlbnRpdHkpCisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoeworICAgICAgICAgICAgImVudGl0eSI6IGVudGl0eSwKKyAgICAg
ICAgICAgICJ2YWx1ZSI6IGVudHJ5WyJ2YWx1ZSJdCisgICAgICAgIH0pCisgICAgcmV0dXJuIHJl
c3VsdAorCitodG1sX2VudGl0eV9uYW1lc19maWxlID0gb3BlbignV2ViQ29yZS9odG1sL0hUTUxF
bnRpdHlOYW1lcy5qc29uJykKK2VudHJpZXMgPSBzaW1wbGVqc29uLmxvYWQoaHRtbF9lbnRpdHlf
bmFtZXNfZmlsZSkKK2h0bWxfZW50aXR5X25hbWVzX2ZpbGUuY2xvc2UoKQorCitlbnRyaWVzID0g
c3RyaXBfc2VtaWNvbG9uKGVudHJpZXMpCitlbnRyaWVzID0gc29ydGVkKGVudHJpZXMsIGtleT1s
YW1iZGEgZW50cnk6IGVudHJ5WydlbnRpdHknXSkKK2Fzc2VydChpc19zb3J0ZWQoZW50cmllcykp
CisKK2VudGl0eV9jb3VudCA9IGxlbihlbnRyaWVzKQorCitwcmludCAiIiIvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworVEhJUyBGSUxFIElTIEdFTkVSQVRF
RCBCWSBXZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorRE8gTk9U
IEVESVQgKHVubGVzcyB5b3UgYXJlIGEgbmluamEpIQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSFRN
TEVudGl0eVRhYmxlRW50cnkgc3RhdGljRW50aXR5VGFibGVbJXNdID0geyIiIiAlIGVudGl0eV9j
b3VudAorCitmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICBwcmludCAnICAgIHsgTCIlcyIsICVz
LCAlcyB9LCcgJSAoCisgICAgICAgIGVudHJ5WyJlbnRpdHkiXSwKKyAgICAgICAgbGVuKGVudHJ5
WyJlbnRpdHkiXSksCisgICAgICAgIGNvbnZlcnRfdmFsdWVfdG9faW50KGVudHJ5WyJ2YWx1ZSJd
KSkKKworcHJpbnQgIiIifTsKKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRp
dHlUYWJsZTo6c3RhcnQoKQoreworICAgIHJldHVybiAmc3RhdGljRW50aXR5VGFibGVbMF07Cit9
CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OmVuZCgpCit7
CisgICAgcmV0dXJuICZzdGF0aWNFbnRpdHlUYWJsZVslcyAtIDFdOworfQorCit9CisiIiIgJSBl
bnRpdHlfY291bnQKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdFRvb2xzL1NjcmlwdHMvY3Jl
YXRlLWh0bWwtZW50aXR5LXRhYmxlCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiAg
ICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63684</attachid>
            <date>2010-08-05 20:50:29 -0700</date>
            <delta_ts>2010-08-10 00:14:23 -0700</delta_ts>
            <desc>Works, no build integration</desc>
            <filename>bug-43595-20100805205028.patch</filename>
            <type>text/plain</type>
            <size>32774</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5N2Q0OTI4MDllMTEzNWY0MzFkZGZlMDc4NDYxZTg0NGIyYjhmMjQ2Li5lM2I1Zjc4
NTk5ZTZjNDYyYjU5OGJiYWM2ZjY3Nzk4ZDJkNTg2NDBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAK
IDIwMTAtMDgtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKworMjAxMC0wOC0wNSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVy
aWMgU2VpZGVsLgogCiAgICAgICAgIFUrMDAwMCBpcyB0dXJuZWQgdG8gVStGRkZEIChyZXBsYWNl
bWVudCBjaGFyYWN0ZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXIt
ZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVk
LWh0bWw1LnR4dAppbmRleCAwM2U3ODYzMWRmNjVjOTgxYjEyNmEwMGU4YTBlOTc3MjBkOTk4YWVj
Li43N2E0M2RkYzhlMjg3YWFmNmIxNGZlMDFhNDgwN2EyZjhkYTg2YjRmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKQEAgLTIxMyw5MiArMjEz
LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRk
YXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEw
Ci0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxl
ZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgot
fCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQotVGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVj
dGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLihYgiCityZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMCBvZiAyNCBpbiByZXNvdXJj
ZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZLb3BmOwotR290OgotfCA8aHRt
bD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImS29wZjsiCi1FeHBlY3RlZDoKLXwg
PGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi8J2VgiIKK3Jlc291cmNlcy9l
bnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0IDExIG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRl
c3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJm5vdGludmE7Ci1Hb3Q6Ci18IDxodG1sPgotfCAg
IDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZub3RpbnZhOyIKLUV4cGVjdGVkOgotfCA8aHRt
bD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLiiIkiCi1yZXNvdXJjZXMvZW50aXRp
ZXMwMS5kYXQ6Ci0yCi01Ci0KLVRlc3QgMiBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5k
YXQgZmFpbGVkLiBJbnB1dDoKLUZPTyZndEJBUgotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4K
LXwgICA8Ym9keT4KLXwgICAgICJGT08mZ3RCQVIiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9PPkJBUiIKLQotVGVzdCA1IG9mIDY4IGluIHJl
c291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQuIElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxs
IHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20g
Jm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAg
IDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRlbGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVz
MDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21tZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKaW5kZXggM2QyMDhmOWRhODg4NjQxNjIyMWU0
NWVjMjdmMTM2MzRkZWFhMDRhNS4uZmNiYzY1ZDAwYmY1ZDhmMzkzYjQ2YWE1MDNhZThiMjUxNGVj
NjMxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0CkBAIC0yMTIs
OTIgKzIxMiwxMCBAQCByZXNvdXJjZXMvZG9jdHlwZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMv
c2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03
Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRh
dCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6jin6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290
OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsi
Ci1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWI
IgorcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTAgb2YgMjQgaW4g
cmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNv
dXJjZXMvZW50aXRpZXMwMS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMv
aHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRt
bD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2Vz
L2VudGl0aWVzMDEuZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0
aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2
OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQgZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7
IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAg
ICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxpdDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9l
bnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJjZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTRm
YzU5M2VhMWM0OGM0NmI0NzRmZjAwNjhkNzYyY2JkY2Y2MzU5Ni4uZmM2OTliYjQ4ZTJmMDRmYzBl
ZDg1NjhkN2YxN2Y1NTFmNGRmNTIzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMC0wOC0wNSAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAg
ICAgSW1wbGVtZW50aW5nIHRoZSBIVE1MNSBlbnRpdHkgcGFyc2luZyBhbGdvcml0aG0gcmVxdWly
ZSByZWZhY3RvcmluZyBob3cKKyAgICAgICAgd2Ugc2VhcmNoIGZvciBlbnRpdHkgbmFtZXMuICBJ
bnN0ZWFkIG9mIHVzaW5nIGEgcGVyZmVjdCBoYXNoLCB3ZSBub3cKKyAgICAgICAgdXNlIGEgc29y
dGVkIGxpc3QuICBBcyB3ZSBhZHZhbmNlIHRocm91Z2ggdGhlIGlucHV0LCB3ZSB3YWxrIGRvd24g
YQorICAgICAgICBiaW5hcnkgc2VhcmNoIG9mIHRoZSB0YWJsZSBsb29raW5nIGZvciBhbiBlbnRp
dHkuCisKKyAgICAgICAgVXNpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSBsZXRzIHVzIGtlZXAgdHJh
Y2sgb2Ygd2hldGhlciB0aGUgY3VycmVudAorICAgICAgICBzdHJpbmcgaXMgYSBwcmVmaXggb2Yg
YW4gZXhpc3RpbmcgZW50aXR5LCB3aGljaCB3ZSBuZWVkIGZvciB0aGUKKyAgICAgICAgYWxnb3Jp
dGhtLiAgSW4gYSBmdXR1cmUgcGF0Y2gsIEkgcGxhbiB0byBhZGQgc29tZSBpbmRpY2llcyB0byB0
aGUKKyAgICAgICAgdGFibGUsIHdoaWNoIHNob3VsZCBsZXQgdXMgbmFycm93IGRvd24gdGhlIHJh
bmdlIG9mIGludGVyZXN0aW5nIGVudHJpZXMKKyAgICAgICAgbW9yZSBxdWlja2x5LgorCisgICAg
ICAgIFRoZSBvbmUgbmFzdHkgcGllY2Ugb2YgdGhlIGFsZ29yaXRobSBpcyBpZiB3ZSB3YWxrIHRv
byBmYXIgZG93biB0aGUKKyAgICAgICAgaW5wdXQgYW5kIHdlIG5lZWQgdG8gYmFjayB1cCB0byBh
IHByZXZpb3VzIG1hdGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0
aGlzIGJ5IHJld2luZGluZyB0aGUgaW5wdXQgYW5kIGNvbnN1bWluZyBhIGtub3duIG51bWJlciBv
ZgorICAgICAgICBjaGFyYWN0ZXJzIHRvIHJlc3luYyB0aGUgc291cmNlLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVu
dGl0eVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSFRNTEVudGl0eSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNl
YXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpmaW5kRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbnRpdHlTZWFyY2g6OmFkdmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVNlYXJj
aC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5
UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmN1cnJlbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpsYXN0TWF0Y2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxFbnRpdHlTZWFyY2g6OmZhaWwpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVRhYmxlLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVRhYmxlRW50cnk6Omxhc3RDaGFy
YWN0ZXIpOgorCiAyMDEwLTA4LTA1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhjNzFmODIxZjk5M2Q3ZWM2
Mzc0NzNmNzE1MDVhMTBiY2RhYjU5NWUuLmIzMTRmMWJkOGQyMjVmNGEwN2JlNDU4ZTU4MThmY2U5
YmViMTYzOTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNjIyLDYgKzI2MjIsMTAgQEAKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NzE5QUYwMDExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3Ry
ZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzE5
QUVGRjExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi87IH07CisJCTk3MzA3
QzNEMTIwQjkxOTcwMDZDMEJFNyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MzA3QzM5MTIwQjkxOTcwMDZDMEJF
NyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLzsgfTsKKwkJOTczMDdDM0UxMjBCOTE5NzAwNkMw
QkU3IC8qIEhUTUxFbnRpdHlTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MzA3QzNBMTIwQjkxOTcwMDZDMEJFNyAvKiBIVE1MRW50aXR5U2Vh
cmNoLmggKi87IH07CisJCTk3MzA3QzNGMTIwQjkxOTcwMDZDMEJFNyAvKiBIVE1MRW50aXR5VGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
MDdDM0IxMjBCOTE5NzAwNkMwQkU3IC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi87IH07CisJCTk3
MzA3QzQwMTIwQjkxOTcwMDZDMEJFNyAvKiBIVE1MRW50aXR5VGFibGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MzA3QzNDMTIwQjkxOTcwMDZDMEJF
NyAvKiBIVE1MRW50aXR5VGFibGUuaCAqLzsgfTsKIAkJOTczODg5QTAxMTZFQTlEQzAwQURGMzEz
IC8qIERvY3VtZW50V3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3Mzg4OTlFMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5j
cHAgKi87IH07CiAJCTk3Mzg4OUExMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczODg5OUYx
MTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8q
IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWRO
b3RpZmllci5jcHAgKi87IH07CkBAIC04MzgxLDYgKzgzODUsMTAgQEAKIAkJOTcwNTk5NzUxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTcxOUFFRkYxMUQwOUYyQzAwRDQ1ODMxIC8qIEhUTUxJbnB1dFN0
cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MSW5wdXRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTczMDdDMzkxMjBCOTE5NzAwNkMwQkU3
IC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTEVudGl0eVNlYXJjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk3MzA3QzNBMTIwQjkxOTcwMDZDMEJFNyAvKiBIVE1MRW50aXR5U2VhcmNoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTczMDdDM0IxMjBCOTE5NzAwNkMwQkU3IC8qIEhUTUxFbnRpdHlU
YWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50aXR5
VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzMwN0MzQzEyMEI5MTk3
MDA2QzBCRTcgLyogSFRNTEVudGl0eVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhUTUxFbnRpdHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRX
cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkz
IC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzODczLDYgKzEzODgxLDEwIEBACiAJCQkJODU5MTI4NzkwQUIyMjJFQzAwMjAy
MjY1IC8qIEhUTUxFbWJlZEVsZW1lbnQuaWRsICovLAogCQkJCTk3NkU4OTVFMTFDMENBM0EwMEVB
OUNBOSAvKiBIVE1MRW50aXR5UGFyc2VyLmNwcCAqLywKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBF
QTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovLAorCQkJCTk3MzA3QzM5MTIwQjkxOTcwMDZD
MEJFNyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLywKKwkJCQk5NzMwN0MzQTEyMEI5MTk3MDA2
QzBCRTcgLyogSFRNTEVudGl0eVNlYXJjaC5oICovLAorCQkJCTk3MzA3QzNCMTIwQjkxOTcwMDZD
MEJFNyAvKiBIVE1MRW50aXR5VGFibGUuY3BwICovLAorCQkJCTk3MzA3QzNDMTIwQjkxOTcwMDZD
MEJFNyAvKiBIVE1MRW50aXR5VGFibGUuaCAqLywKIAkJCQlBODEzNjlCOTA5NzM3NEY1MDBENzQ0
NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxMzY5QjgwOTczNzRGNTAw
RDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQTlGNDBBMUNEQTU3
MDBCNDJCMjUgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgKi8sCkBAIC0xOTk4Niw2ICsxOTk5
OCw4IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29t
TW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTczMDdDM0UxMjBCOTE5NzAwNkMwQkU3IC8qIEhU
TUxFbnRpdHlTZWFyY2guaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MzA3QzQwMTIwQjkxOTcwMDZD
MEJFNyAvKiBIVE1MRW50aXR5VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAwNDUsNyArMjAw
NTksNiBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhj
b2RlIDIuNCI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CiAJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLApAQCAt
MjIzOTEsNiArMjI0MDQsOCBAQAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xU
VW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThCQ0ZEMDUxMjBBMDQ2
MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTczMDdDM0Qx
MjBCOTE5NzAwNkMwQkU3IC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTczMDdDM0YxMjBCOTE5NzAwNkMwQkU3IC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcAppbmRleCA4NGIyMDA2NzQ0ZmY2Nzhi
OGMyZjZkOGEyMjkxN2E1N2NjM2Y0MTNjLi5iNzM3MDY2NjRiOTJkMjVjZWFhN2I3YzZlZjczYzRi
MDQ1MTg4ZGQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCkBAIC0yOCwyMSArMjgsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MRW50aXR5UGFyc2VyLmgiCiAK
KyNpbmNsdWRlICJIVE1MRW50aXR5U2VhcmNoLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxl
LmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0vLyBVc2UgX19HTlVDX18gaW5zdGVhZCBv
ZiBQTEFURk9STShHQ0MpIHRvIHN0YXkgY29uc2lzdGVudCB3aXRoIHRoZSBncGVyZiBnZW5lcmF0
ZWQgYyBmaWxlCi0jaWZkZWYgX19HTlVDX18KLS8vIFRoZSBtYWluIHBhcnNlciBpbmNsdWRlcyB0
aGlzIHRvbyBzbyB3ZSBhcmUgZ2V0dGluZyB0d28gY29waWVzIG9mIHRoZSBkYXRhLiBIb3dldmVy
LCB0aGlzIHdheSB0aGUgY29kZSBnZXRzIGlubGluZWQuCi0jaW5jbHVkZSAiSFRNTEVudGl0eU5h
bWVzLmNwcCIKLSNlbHNlCi0vLyBOb3QgaW5saW5lZCBmb3Igbm9uLUdDQyBjb21waWxlcnMKLXN0
cnVjdCBFbnRpdHkgewotICAgIGNvbnN0IGNoYXIqIG5hbWU7Ci0gICAgaW50IGNvZGU7Ci19Owot
Y29uc3Qgc3RydWN0IEVudGl0eSogZmluZEVudGl0eShyZWdpc3RlciBjb25zdCBjaGFyKiBzdHIs
IHJlZ2lzdGVyIHVuc2lnbmVkIGludCBsZW4pOwotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBX
VEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMyw3ICsxMDIsNiBAQCB1bnNpZ25lZCBj
b25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdo
Q2hhcmFjdGVycywgVQogICAgIEVudGl0eVN0YXRlIGVudGl0eVN0YXRlID0gSW5pdGlhbDsKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIFZlY3RvcjxVQ2hhciwgMTA+IGNvbnN1bWVkQ2hh
cmFjdGVyczsKLSAgICBWZWN0b3I8Y2hhciwgMTA+IGVudGl0eU5hbWU7CiAKICAgICB3aGlsZSAo
IXNvdXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgVUNoYXIgY2MgPSAqc291cmNlOwpAQCAtMTc3
LDcgKzE2NSw3IEBAIHVuc2lnbmVkIGNvbnN1bWVIVE1MRW50aXR5KFNlZ21lbnRlZFN0cmluZyYg
c291cmNlLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzLCBVCiAgICAgICAgICAgICBlbHNlIGlm
IChjYyA9PSAnOycpIHsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3ROb25OZXds
aW5lKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7Ci0g
ICAgICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xOTIsNDggKzE4MCw0OCBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0eShTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBOYW1lZDogewotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZy4gV2UgbmVlZCB0byBmaW5kIHRoZSBsb25n
ZXN0IG1hdGNoaW5nIGVudGl0eS4KLSAgICAgICAgICAgIC8vICAgICAgICBUaGUgZXhhbXBsZXMg
ZnJvbSB0aGUgc3BlYyBhcmU6Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aXQ7
IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICAgICAgSSdtICZub3RpbjsgSSB0ZWxs
IHlvdQotICAgICAgICAgICAgLy8gICAgICAgIEluIHRoZSBmaXJzdCBjYXNlLCAiJm5vdCIgaXMg
dGhlIGVudGl0eS4gIEluIHRoZSBzZWNvbmQKLSAgICAgICAgICAgIC8vICAgICAgICBjYXNlLCAi
Jm5vdGluOyIgaXMgdGhlIGVudGl0eS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBPdXIgbGlzdCBv
ZiBIVE1MIGVudGl0aWVzIGlzIGluY29tcGxldGUuCi0gICAgICAgICAgICAvLyBGSVhNRTogVGhl
IG51bWJlciA4IGJlbG93IGlzIGJvZ3VzLgotICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNF
bXB0eSgpICYmIGVudGl0eU5hbWUuc2l6ZSgpIDw9IDgpIHsKKyAgICAgICAgICAgIEhUTUxFbnRp
dHlTZWFyY2ggZW50aXR5U2VhcmNoOworICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOwotICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnOycpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkg
PSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZS5hZHZhbmNlQW5kQVNTRVJUKCc7Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZW50aXR5LT5jb2RlOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZW50aXR5U2VhcmNoLmFkdmFuY2UoY2MpOworICAgICAgICAgICAgICAgIGlmICghZW50aXR5U2Vh
cmNoLmlzRW50aXR5UHJlZml4KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWlzQWxwaGFOdW1lcmljKGNjKSkgewot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50
aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGVudGl0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSFRNTDUgdGVsbHMgdXMg
dG8gaWdub3JlIHRoaXMgZW50aXR5LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgdGhlIGxvb2toZWFkIGNoYXJhY3RlciBpcyAnPScuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgJiYgY2Mg
PT0gJz0nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU29tZSBlbnRpdGllcyByZXF1aXJlIGEgdGVybWluYXRpbmcgc2VtaWNv
bG9uLCB3aGVyZWFzIG90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBlbnRpdGllcyBk
byBub3QuICBUaGUgSFRNTDUgc3BlYyBoYXMgYSBnaWFudCBsaXN0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL25hbWVkLWNoYXJhY3Rl
ci1yZWZlcmVuY2VzLmh0bWwjbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCB0aGUg
bGlzdCBzZWVtcyB0byBib2lsIGRvd24gdG8gdGhpcyBicmFuY2g6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZW50aXR5LT5jb2RlID4gMjU1KQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW50aXR5TmFtZS5hcHBlbmQoY2MpOwogICAg
ICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOwogICAgICAgICAgICAg
ICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSBzb3VyY2UuaXNFbXB0eSgpOworICAgICAgICAgICAg
aWYgKG5vdEVub3VnaENoYXJhY3RlcnMpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBh
biBlbnRpdHkgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBhIGxvbmdlciBlbnRpdHkKKyAgICAgICAg
ICAgICAgICAvLyB0aGF0IHdlIGNvdWxkIG1hdGNoIGlmIHdlIGhhZCBtb3JlIGRhdGEuCisgICAg
ICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVy
cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoIWVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKSkgeworICAgICAgICAgICAgICAgIEFTU0VS
VCghZW50aXR5U2VhcmNoLmN1cnJlbnRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICB1bmNvbnN1
bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZW50aXR5U2VhcmNo
LmN1cnJlbnRWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UndmUgY29uc3VtZWQgdG9v
IG1hbnkgY2hhcmFjdGVycy4gIFdlIG5lZWQgdG8gd2FsayB0aGUKKyAgICAgICAgICAgICAgICAv
LyBzb3VyY2UgYmFjayB0byB0aGUgcG9pbnQgYXQgd2hpY2ggd2UgaGFkIGNvbnN1bWVkIGFuCisg
ICAgICAgICAgICAgICAgLy8gYWN0dWFsIGVudGl0eS4KKyAgICAgICAgICAgICAgICB1bmNvbnN1
bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKKyAgICAgICAgICAgICAg
ICBjb25zdW1lZENoYXJhY3RlcnMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQg
bGVuZ3RoID0gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGg7CisgICAgICAgICAgICAg
ICAgY29uc3QgVUNoYXIqIHJlZmVyZW5jZSA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+ZW50
aXR5OworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOworICAgICAgICAgICAgICAgICAgICBB
U1NFUlRfVU5VU0VEKHJlZmVyZW5jZSwgY2MgPT0gKnJlZmVyZW5jZSsrKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFzb3VyY2UuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2MgPSAqc291cmNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVudGl0eVNl
YXJjaC5sYXN0TWF0Y2goKS0+bGFzdENoYXJhY3RlcigpID09ICc7JykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT52YWx1ZTsKKyAgICAgICAgICAgIGlm
ICghYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgfHwgIShpc0FscGhhTnVtZXJpYyhjYykgfHwg
Y2MgPT0gJz0nKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5U2VhcmNoLmxhc3RNYXRj
aCgpLT52YWx1ZTsKICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25z
dW1lZENoYXJhY3RlcnMpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MRW50aXR5U2VhcmNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWVkYjM0NGQ5MTAzYWU3NjE5ZDI5NTA0
MjlmYmRiY2I3NWZkZjdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRp
dHlTZWFyY2guY3BwCkBAIC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhU
TUxFbnRpdHlTZWFyY2guaCIKKworI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisgICAgCitjb25zdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSogaGFsZndheShjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCwgY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0KQoreworICAgIHJldHVybiAmbGVmdFsocmlnaHQg
LSBsZWZ0KSAvIDJdOworfQorCit9CisgICAgCitIVE1MRW50aXR5U2VhcmNoOjpIVE1MRW50aXR5
U2VhcmNoKCkKKyAgICA6IG1fY3VycmVudExlbmd0aCgwKQorICAgICwgbV9jdXJyZW50VmFsdWUo
MCkKKyAgICAsIG1fbGFzdE1hdGNoKDApCisgICAgLCBtX3N0YXJ0KEhUTUxFbnRpdHlUYWJsZTo6
c3RhcnQoKSkKKyAgICAsIG1fZW5kKEhUTUxFbnRpdHlUYWJsZTo6ZW5kKCkpCit7Cit9CisKK0hU
TUxFbnRpdHlTZWFyY2g6OkNvbXBhcmVSZXN1bHQgSFRNTEVudGl0eVNlYXJjaDo6Y29tcGFyZShj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW50cnksIFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNv
bnN0Cit7CisgICAgaWYgKGVudHJ5LT5sZW5ndGggPCBtX2N1cnJlbnRMZW5ndGggKyAxKQorICAg
ICAgICByZXR1cm4gQmVmb3JlOworICAgIFVDaGFyIGVudHJ5TmV4dENoYXJhY3RlciA9IGVudHJ5
LT5lbnRpdHlbbV9jdXJyZW50TGVuZ3RoXTsKKyAgICBpZiAoZW50cnlOZXh0Q2hhcmFjdGVyID09
IG5leHRDaGFyYWN0ZXIpCisgICAgICAgIHJldHVybiBQcmVmaXg7CisgICAgcmV0dXJuIGVudHJ5
TmV4dENoYXJhY3RlciA8IG5leHRDaGFyYWN0ZXIgPyBCZWZvcmUgOiBBZnRlcjsKK30KKworY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydChVQ2hh
ciBuZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5
KiBsZWZ0ID0gbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcmlnaHQg
PSBtX2VuZDsKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7Cisg
ICAgQ29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21wYXJlKGxlZnQsIG5leHRDaGFyYWN0ZXIpOwor
ICAgIGlmIChyZXN1bHQgPT0gUHJlZml4KQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICBpZiAo
cmVzdWx0ID09IEFmdGVyKQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgd2hpbGUgKGxlZnQg
KyAxIDwgcmlnaHQpIHsKKyAgICAgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHByb2Jl
ID0gaGFsZndheShsZWZ0LCByaWdodCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmUocHJvYmUs
IG5leHRDaGFyYWN0ZXIpOworICAgICAgICBpZiAocmVzdWx0ID09IEJlZm9yZSkKKyAgICAgICAg
ICAgIGxlZnQgPSBwcm9iZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocmVz
dWx0ID09IEFmdGVyIHx8IHJlc3VsdCA9PSBQcmVmaXgpOworICAgICAgICAgICAgcmlnaHQgPSBw
cm9iZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQobGVmdCArIDEgPT0gcmlnaHQpOwor
ICAgIHJldHVybiByaWdodDsKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxF
bnRpdHlTZWFyY2g6OmZpbmRFbmQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQp
CisgICAgICAgIHJldHVybiByaWdodDsKKyAgICBDb21wYXJlUmVzdWx0IHJlc3VsdCA9IGNvbXBh
cmUocmlnaHQsIG5leHRDaGFyYWN0ZXIpOworICAgIGlmIChyZXN1bHQgPT0gUHJlZml4KQorICAg
ICAgICByZXR1cm4gcmlnaHQ7CisgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAgIHJl
dHVybiBsZWZ0OworICAgIHdoaWxlIChsZWZ0ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9iZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAg
ICAgICByZXN1bHQgPSBjb21wYXJlKHByb2JlLCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYg
KHJlc3VsdCA9PSBBZnRlcikKKyAgICAgICAgICAgIHJpZ2h0ID0gcHJvYmU7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBCZWZvcmUgfHwgcmVzdWx0ID09IFBy
ZWZpeCk7CisgICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAg
QVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICByZXR1cm4gbGVmdDsKK30KKwordm9pZCBI
VE1MRW50aXR5U2VhcmNoOjphZHZhbmNlKFVDaGFyIG5leHRDaGFyYWN0ZXIpCit7CisgICAgQVNT
RVJUKGlzRW50aXR5UHJlZml4KCkpOworICAgIG1fc3RhcnQgPSBmaW5kU3RhcnQobmV4dENoYXJh
Y3Rlcik7CisgICAgbV9lbmQgPSBmaW5kRW5kKG5leHRDaGFyYWN0ZXIpOworICAgIGlmIChtX3N0
YXJ0ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3RlcikgIT0gUHJlZml4
KQorICAgICAgICByZXR1cm4gZmFpbCgpOworICAgICsrbV9jdXJyZW50TGVuZ3RoOworICAgIGlm
IChtX3N0YXJ0LT5sZW5ndGggIT0gbV9jdXJyZW50TGVuZ3RoKSB7CisgICAgICAgIG1fY3VycmVu
dFZhbHVlID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2xhc3RNYXRjaCA9IG1f
c3RhcnQ7CisgICAgbV9jdXJyZW50VmFsdWUgPSBtX2xhc3RNYXRjaC0+dmFsdWU7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmggYi9XZWJDb3JlL2h0
bWwvSFRNTEVudGl0eVNlYXJjaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YTFhODY2ZjY3MGZkN2E0NDUyOTEx
NjY1MDFmYTI3YTcyMzYwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVu
dGl0eVNlYXJjaC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUxFbnRpdHlTZWFyY2hfaAorI2RlZmlu
ZSBIVE1MRW50aXR5U2VhcmNoX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5OworCitjbGFz
cyBIVE1MRW50aXR5U2VhcmNoIHsKK3B1YmxpYzoKKyAgICBIVE1MRW50aXR5U2VhcmNoKCk7CisK
KyAgICB2b2lkIGFkdmFuY2UoVUNoYXIpOworCisgICAgYm9vbCBpc0VudGl0eVByZWZpeCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9zdGFydDsgfQorICAgIGludCBjdXJyZW50VmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRWYWx1ZTsgfQorCisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIGxhc3RNYXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1hdGNoOyB9CisKK3ByaXZhdGU6
CisgICAgZW51bSBDb21wYXJlUmVzdWx0IHsKKyAgICAgICAgQmVmb3JlLAorICAgICAgICBQcmVm
aXgsCisgICAgICAgIEFmdGVyLAorICAgIH07CisKKyAgICBDb21wYXJlUmVzdWx0IGNvbXBhcmUo
Y29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqLCBVQ2hhcikgY29uc3Q7CisgICAgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIGZpbmRTdGFydChVQ2hhcikgY29uc3Q7CisgICAgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIGZpbmRFbmQoVUNoYXIpIGNvbnN0OworCisgICAgdm9pZCBmYWls
KCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudExlbmd0aCA9IDA7CisgICAgICAgIG1fY3VycmVu
dFZhbHVlID0gMDsKKyAgICAgICAgbV9zdGFydCA9IDA7CisgICAgICAgIG1fZW5kID0gMDsKKyAg
ICB9CisKKyAgICBpbnQgbV9jdXJyZW50TGVuZ3RoOworICAgIGludCBtX2N1cnJlbnRWYWx1ZTsK
KworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBtX2xhc3RNYXRjaDsKKyAgICBjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSogbV9lbmQ7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxFbnRpdHlUYWJsZS5oIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYyZTNiNWVhOGNjYWFkZjg3OTBmZGExNWI2YTRkZWE3Mzk4NmExYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVRhYmxlLmgKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgSFRNTEVudGl0eVRhYmxlX2gKKyNkZWZpbmUgSFRNTEVudGl0eVRhYmxlX2gKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5IHsKKyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3Qg
eyByZXR1cm4gZW50aXR5W2xlbmd0aCAtIDFdOyB9CisKKyAgICBjb25zdCBVQ2hhciogZW50aXR5
OworICAgIGludCBsZW5ndGg7CisgICAgaW50IHZhbHVlOworfTsKKworY2xhc3MgSFRNTEVudGl0
eVRhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkq
IHN0YXJ0KCk7CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBlbmQoKTsK
K307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9X
ZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5kZXggYmFiN2E3YzJhZWYxMGFkMDc0NjM1MDBlY2MxOTk2
NDQxY2Q3NWM3OS4uMDFiMzYxZDBhZGYxZTg3N2Q4NjljMTFmMjhhNGI1NmYxMjBkM2E5MCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA4LTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIE1hdGhNTCBlbnRpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1OTUKKworICAgICAgICBBIHNjcmlwdCBmb3IgZ2Vu
ZXJhdGluZyB0aGUgQysrIHN0YXRlIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgYWxsIHRoZQor
ICAgICAgICBlbnRpdGllcyBmcm9tIGEgSlNPTiBkZXNjcmlwdGlvbi4KKworICAgICAgICBOb3Rl
OiBUaGlzIHNjcmlwdCBpcyBub3QgeWV0IGludGVncmF0ZWQgd2l0aCB0aGUgYnVpbGQgc3lzdGVt
LCBzbyB0aGlzCisgICAgICAgICAgICAgIHBhdGNoIHdpbGwgbm90IGJ1aWxkISAgT09QUyEKKwor
ICAgICAgICAqIFNjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlOiBBZGRlZC4KKwogMjAx
MC0wNS0yMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRl
LWh0bWwtZW50aXR5LXRhYmxlIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRp
dHktdGFibGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTE0ZDgwZDk3N2UyMjg0ZjM5ODRkZjk3ODU2MzVmZGUzZmJm
NzFmZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwt
ZW50aXR5LXRhYmxlCkBAIC0wLDAgKzEsMTE5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMg
Q29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24g
YXMgc2ltcGxlanNvbgorCisKK2RlZiBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRpdHkp
OgorICAgIHBvc3RmaXggPSAiRW50aXR5TmFtZSIKKyAgICBpZiBlbnRpdHlbLTFdID09ICI7IjoK
KyAgICAgICAgcmV0dXJuICIlc1NlbWljb2xvbiVzIiAlIChlbnRpdHlbOi0xXSwgcG9zdGZpeCkK
KyAgICByZXR1cm4gIiVzJXMiICUgKGVudGl0eSwgcG9zdGZpeCkKKworZGVmIGNvbnZlcnRfZW50
aXR5X3RvX3VjaGFyX2FycmF5KGVudGl0eSk6CisgICAgcmV0dXJuICJ7JyVzJ30iICUgIicsICci
LmpvaW4oZW50aXR5KQorCitkZWYgY29udmVydF92YWx1ZV90b19pbnQodmFsdWUpOgorICAgIGFz
c2VydCh2YWx1ZVswXSA9PSAiVSIpCisgICAgYXNzZXJ0KHZhbHVlWzFdID09ICIrIikKKyAgICBy
ZXR1cm4gIjB4IiArIHZhbHVlWzI6XQorCitodG1sX2VudGl0eV9uYW1lc19maWxlID0gb3Blbign
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uJykKK2VudHJpZXMgPSBzaW1wbGVqc29u
LmxvYWQoaHRtbF9lbnRpdHlfbmFtZXNfZmlsZSkKK2h0bWxfZW50aXR5X25hbWVzX2ZpbGUuY2xv
c2UoKQorCitlbnRyaWVzID0gc29ydGVkKGVudHJpZXMsIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5
WydlbnRpdHknXSkKK2VudGl0eV9jb3VudCA9IGxlbihlbnRyaWVzKQorCitwcmludCAiIiIvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworLy8gVEhJUyBGSUxF
IElTIEdFTkVSQVRFRCBCWSBXZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10
YWJsZQorLy8gRE8gTk9UIEVESVQgKHVubGVzcyB5b3UgYXJlIGEgbmluamEpIQorCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKyIiIgorCitmb3IgZW50cnkgaW4gZW50cmllczoKKyAg
ICBwcmludCAiY29uc3QgVUNoYXIgJXNFbnRpdHlOYW1lW10gPSAlczsiICUgKAorICAgICAgICBj
b252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRyeVsiZW50aXR5Il0pLAorICAgICAgICBjb252
ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRyeVsiZW50aXR5Il0pKQorCitwcmludCAiIiIK
K0hUTUxFbnRpdHlUYWJsZUVudHJ5IHN0YXRpY0VudGl0eVRhYmxlWyVzXSA9IHsiIiIgJSBlbnRp
dHlfY291bnQKKworZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgcHJpbnQgJyAgICB7ICVzRW50
aXR5TmFtZSwgJXMsICVzIH0sJyAlICgKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fY3BwX25h
bWUoZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgbGVuKGVudHJ5WyJlbnRpdHkiXSksCisgICAg
ICAgIGNvbnZlcnRfdmFsdWVfdG9faW50KGVudHJ5WyJ2YWx1ZSJdKSkKKworcHJpbnQgIiIifTsK
KworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjpzdGFy
dCgpCit7CisgICAgcmV0dXJuICZzdGF0aWNFbnRpdHlUYWJsZVswXTsKK30KKworY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6ZW5kKCkKK3sKKyAgICByZXR1cm4g
JnN0YXRpY0VudGl0eVRhYmxlWyVzIC0gMV07Cit9CisKK30KKyIiIiAlIGVudGl0eV9jb3VudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63980</attachid>
            <date>2010-08-10 00:14:27 -0700</date>
            <delta_ts>2010-08-10 00:45:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43595-20100810001426.patch</filename>
            <type>text/plain</type>
            <size>33853</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi4zNzBjNThl
MWU4YjBmYWQ3MjRjMTNiZjQ5ZTY1NzI0Y2ZhNTZlMmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0wOSAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVt
IHRlc3QgcmVzdWx0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1l
eHBlY3RlZC1odG1sNS50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQt
aHRtbDUudHh0CmluZGV4IGFjMDE5ZmYyOTMyOTE1Njc3NzY4YzVjYmNkMGIxMDI1Yjc5Njc3MjMu
LjJjYWQ5YTA3MTVjMDVhMmJkMDM2YzA0OTMyZmYzNjM4ZWQ4ZjZlZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dApAQCAtMjEzLDkyICsyMTMs
MTAgQEAgcmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL3NjcmlwdGRh
dGEwMS5kYXQ6IFBBU1MKIAotcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0OgotNwotOQotMTAK
LTExCi0KLVRlc3QgNyBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZsYW5nOyZyYW5nOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICLjgIjjgIkiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18
ICAgPGJvZHk+Ci18ICAgICAi4p+o4p+pIgotCi1UZXN0IDkgb2YgMjQgaW4gcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mSW1hZ2luYXJ5STsKLUdvdDoKLXwgPGh0
bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJkltYWdpbmFyeUk7IgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKFiCIKK3Jlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdDogUEFTUwogCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2Vu
dGl0aWVzMDEuZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVz
dC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRpdGll
czAxLmRhdDoKLTIKLTUKLQotVGVzdCAyIG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRh
dCBmYWlsZWQuIElucHV0OgotRk9PJmd0QkFSCi1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgot
fCAgIDxib2R5PgotfCAgICAgIkZPTyZndEJBUiIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08+QkFSIgotCi1UZXN0IDUgb2YgNjggaW4gcmVz
b3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1JJ20gJm5vdGl0OyBJIHRlbGwg
eW91Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSAm
bm90aXQ7IEkgdGVsbCB5b3UiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiSSdtIMKsaXQ7IEkgdGVsbCB5b3UiCiByZXNvdXJjZXMvZW50aXRpZXMw
Mi5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL2NvbW1lbnRzMDEuZGF0OiBQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAppbmRleCAxNGQzZWE1NzFkOWY4MDFjMTBiZWQ1
NjdmZWM1YzI3YjEyY2FhZjg5Li5kYmNkZDViN2ZhM2Q1MGY4NjY2OTMzNTE2ODY4NjFkYzExYzdm
ZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKQEAgLTIxMiw5
MiArMjEyLDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9z
Y3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdDoKLTcK
LTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0
IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+
Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxo
ZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQotVGVzdCA5IG9mIDI0IGluIHJlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJkltYWdpbmFyeUk7Ci1Hb3Q6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZJbWFnaW5hcnlJOyIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLihYgi
CityZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMCBvZiAyNCBpbiBy
ZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZLb3BmOwotR290Ogot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImS29wZjsiCi1FeHBlY3Rl
ZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi8J2VgiIKK3Jlc291
cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0IDExIG9mIDI0IGluIHJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJm5vdGludmE7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZub3RpbnZhOyIKLUV4cGVjdGVkOgot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLiiIkiCi1yZXNvdXJjZXMv
ZW50aXRpZXMwMS5kYXQ6Ci0yCi01Ci0KLVRlc3QgMiBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRp
ZXMwMS5kYXQgZmFpbGVkLiBJbnB1dDoKLUZPTyZndEJBUgotR290OgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08mZ3RCQVIiCi1FeHBlY3RlZDoKLXwgPGh0bWw+
Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9PPkJBUiIKLQotVGVzdCA1IG9mIDY4
IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQuIElucHV0OgotSSdtICZub3RpdDsg
SSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAg
ICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRlbGwgeW91IgogcmVzb3VyY2VzL2Vu
dGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21tZW50czAxLmRhdDogUEFTUwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2Ji
ZDU3OWUwYTljOTVlNmJhYzMxNDNhOGNmNjNhMjUxMzAzMzI0Li5hMDRkMzRkZjhhYTk3MGM4N2Vk
NTQ5MjQzM2M4MTFiYjJiY2Y3ZDA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDQ4IEBACiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1hdGhNTCBlbnRp
dGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1
OTUKKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhlIEhUTUw1IGVudGl0eSBwYXJzaW5nIGFsZ29y
aXRobSByZXF1aXJlIHJlZmFjdG9yaW5nIGhvdworICAgICAgICB3ZSBzZWFyY2ggZm9yIGVudGl0
eSBuYW1lcy4gIEluc3RlYWQgb2YgdXNpbmcgYSBwZXJmZWN0IGhhc2gsIHdlIG5vdworICAgICAg
ICB1c2UgYSBzb3J0ZWQgbGlzdC4gIEFzIHdlIGFkdmFuY2UgdGhyb3VnaCB0aGUgaW5wdXQsIHdl
IHdhbGsgZG93biBhCisgICAgICAgIGJpbmFyeSBzZWFyY2ggb2YgdGhlIHRhYmxlIGxvb2tpbmcg
Zm9yIGFuIGVudGl0eS4KKworICAgICAgICBVc2luZyB0aGlzIGRhdGEgc3RydWN0dXJlIGxldHMg
dXMga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBjdXJyZW50CisgICAgICAgIHN0cmluZyBpcyBh
IHByZWZpeCBvZiBhbiBleGlzdGluZyBlbnRpdHksIHdoaWNoIHdlIG5lZWQgZm9yIHRoZQorICAg
ICAgICBhbGdvcml0aG0uICBJbiBhIGZ1dHVyZSBwYXRjaCwgSSBwbGFuIHRvIGFkZCBzb21lIGlu
ZGljaWVzIHRvIHRoZQorICAgICAgICB0YWJsZSwgd2hpY2ggc2hvdWxkIGxldCB1cyBuYXJyb3cg
ZG93biB0aGUgcmFuZ2Ugb2YgaW50ZXJlc3RpbmcgZW50cmllcworICAgICAgICBtb3JlIHF1aWNr
bHkuCisKKyAgICAgICAgVGhlIG9uZSBuYXN0eSBwaWVjZSBvZiB0aGUgYWxnb3JpdGhtIGlzIGlm
IHdlIHdhbGsgdG9vIGZhciBkb3duIHRoZQorICAgICAgICBpbnB1dCBhbmQgd2UgbmVlZCB0byBi
YWNrIHVwIHRvIGEgcHJldmlvdXMgbWF0Y2guICBJbiB0aGlzIHBhdGNoLCB3ZQorICAgICAgICBh
Y2NvbXBsaXNoIHRoaXMgYnkgcmV3aW5kaW5nIHRoZSBpbnB1dCBhbmQgY29uc3VtaW5nIGEga25v
d24gbnVtYmVyIG9mCisgICAgICAgIGNoYXJhY3RlcnMgdG8gcmVzeW5jIHRoZSBzb3VyY2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVIVE1M
RW50aXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpI
VE1MRW50aXR5U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmNv
bXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmluZFN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRFbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZSk6CisgICAgICAgICogaHRtbC9IVE1M
RW50aXR5U2VhcmNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJj
aDo6aXNFbnRpdHlQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6
Y3VycmVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6Omxhc3RN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjopOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmFpbCk6CisgICAgICAgICogaHRtbC9IVE1MRW50
aXR5VGFibGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5VGFibGVFbnRy
eTo6bGFzdENoYXJhY3Rlcik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAg
ICBQb3J0IHZpZXctc291cmNlIHRvIG5ldyBwYXJzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQ2CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTRmMWM3MTkwMGZjNmFhMTdiMzgxNjQ0ODgxMzRmM2Qw
N2M3MmY5NS4uODI5OTNlYjc5YzBhY2JlNGRhMWFkNGVjNzVjYThkYmQ0NWEwOTdlNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2NTYsNiArMjY1Niwx
MCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc0MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLzsgfTsK
IAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1
MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTcwQzRGRTMxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlT
ZWFyY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwICovOyB9Owor
CQk5NzBDNEZFNDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGRTAxMjExMjY2MjAw
QzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLzsgfTsKKwkJOTcwQzRGRTUxMjExMjY2MjAw
QzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0
eVRhYmxlLmNwcCAqLzsgfTsKKwkJOTcwQzRGRTYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcwQzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovOyB9OwogCQk5
NzE5QUYwMDExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzE5QUVGRjExRDA5RjJDMDBENDU4
MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi87IH07CiAJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
Y3BwICovOyB9OwogCQk5NzM4ODlBMTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlG
MTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDYwLDYgKzg0NjQsMTAgQEAKIAkJOTcw
NTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkRGMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5U2VhcmNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUxMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1M
RW50aXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TEVudGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTIx
MjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTcxOUFFRkYxMUQwOUYyQzAwRDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MSW5wdXRTdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50
V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50
V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUYxMTZFQTlE
QzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Mzk3NSw2ICsxMzk4MywxMCBAQAogCQkJCTg1OTEyODc5MEFCMjIyRUMwMDIwMjI2NSAvKiBIVE1M
RW1iZWRFbGVtZW50LmlkbCAqLywKIAkJCQk5NzZFODk1RTExQzBDQTNBMDBFQTlDQTkgLyogSFRN
TEVudGl0eVBhcnNlci5jcHAgKi8sCiAJCQkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhU
TUxFbnRpdHlQYXJzZXIuaCAqLywKKwkJCQk5NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVNlYXJjaC5jcHAgKi8sCisJCQkJOTcwQzRGRTAxMjExMjY2MjAwQzNEMzkzIC8qIEhU
TUxFbnRpdHlTZWFyY2guaCAqLywKKwkJCQk5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVRhYmxlLmNwcCAqLywKKwkJCQk5NzBDNEZFMjEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVRhYmxlLmggKi8sCiAJCQkJQTgxMzY5QjkwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxG
aWVsZFNldEVsZW1lbnQuY3BwICovLAogCQkJCUE4MTM2OUI4MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkE5RjQwQTFDREE1NzAwQjQyQjI1IC8q
IEhUTUxGaWVsZFNldEVsZW1lbnQuaWRsICovLApAQCAtMjAxNDYsNiArMjAxNTgsOCBAQAogCQkJ
CTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3Qjc0MzE0MTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTcwQzRGRTQxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlTZWFyY2guaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MEM0RkU2MTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1NzAsNiArMjI1ODQsOCBA
QAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCNzQzMTMxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxW
aWV3U291cmNlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3MEM0RkUzMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3MEM0
RkU1MTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKaW5kZXggODRiMjAwNjc0NGZmNjc4YjhjMmY2ZDhh
MjI5MTdhNTdjYzNmNDEzYy4uYjczNzA2NjY0YjkyZDI1Y2VhYTdiN2M2ZWY3M2M0YjA0NTE4OGRk
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcApAQCAtMjgsMjEgKzI4LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVk
ZSAiSFRNTEVudGl0eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotLy8gVXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExBVEZP
Uk0oR0NDKSB0byBzdGF5IGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMgZmls
ZQotI2lmZGVmIF9fR05VQ19fCi0vLyBUaGUgbWFpbiBwYXJzZXIgaW5jbHVkZXMgdGhpcyB0b28g
c28gd2UgYXJlIGdldHRpbmcgdHdvIGNvcGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwgdGhpcyB3
YXkgdGhlIGNvZGUgZ2V0cyBpbmxpbmVkLgotI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAi
Ci0jZWxzZQotLy8gTm90IGlubGluZWQgZm9yIG5vbi1HQ0MgY29tcGlsZXJzCi1zdHJ1Y3QgRW50
aXR5IHsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIGludCBjb2RlOwotfTsKLWNvbnN0IHN0
cnVjdCBFbnRpdHkqIGZpbmRFbnRpdHkocmVnaXN0ZXIgY29uc3QgY2hhciogc3RyLCByZWdpc3Rl
ciB1bnNpZ25lZCBpbnQgbGVuKTsKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsNyArMTAyLDYgQEAgdW5zaWduZWQgY29uc3VtZUhU
TUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3Rl
cnMsIFUKICAgICBFbnRpdHlTdGF0ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gMDsKICAgICBWZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7
Ci0gICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlOYW1lOwogCiAgICAgd2hpbGUgKCFzb3VyY2Uu
aXNFbXB0eSgpKSB7CiAgICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKQEAgLTE3Nyw3ICsxNjUs
NyBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
Ym9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
JzsnKSB7CiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAg
ICAgfSBlbHNlIAorICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxl
Z2FsRW50aXR5Rm9yKHJlc3VsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTkyLDQ4ICsxODAsNDggQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTmFtZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcuIFdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRj
aGluZyBlbnRpdHkuCi0gICAgICAgICAgICAvLyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhl
IHNwZWMgYXJlOgotICAgICAgICAgICAgLy8gICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwg
eW91Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKLSAg
ICAgICAgICAgIC8vICAgICAgICBJbiB0aGUgZmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRp
dHkuICBJbiB0aGUgc2Vjb25kCi0gICAgICAgICAgICAvLyAgICAgICAgY2FzZSwgIiZub3Rpbjsi
IGlzIHRoZSBlbnRpdHkuCi0gICAgICAgICAgICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBl
bnRpdGllcyBpcyBpbmNvbXBsZXRlLgotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIg
OCBiZWxvdyBpcyBib2d1cy4KLSAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAm
JiBlbnRpdHlOYW1lLnNpemUoKSA8PSA4KSB7CisgICAgICAgICAgICBIVE1MRW50aXR5U2VhcmNo
IGVudGl0eVNlYXJjaDsKKyAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0g
JzsnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVu
dGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZUFuZEFTU0VSVCgnOycpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0
eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVudGl0eVNl
YXJjaC5hZHZhbmNlKGNjKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVudGl0eVNlYXJjaC5pc0Vu
dGl0eVByZWZpeCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUu
ZGF0YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRp
dHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9y
ZSB0aGlzIGVudGl0eSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlmIHRoZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFNvbWUgZW50aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hl
cmVhcyBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAg
VGhlIEhUTUw1IHNwZWMgaGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJl
bmNlcy5odG1sI25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2Vl
bXMgdG8gYm9pbCBkb3duIHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVudGl0eS0+Y29kZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVudGl0eU5hbWUuYXBwZW5kKGNjKTsKICAgICAgICAgICAg
ICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RF
bm91Z2hDaGFyYWN0ZXJzID0gc291cmNlLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGlmIChub3RF
bm91Z2hDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5
IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgYSBsb25nZXIgZW50aXR5CisgICAgICAgICAgICAgICAg
Ly8gdGhhdCB3ZSBjb3VsZCBtYXRjaCBpZiB3ZSBoYWQgbW9yZSBkYXRhLgorICAgICAgICAgICAg
ICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFl
bnRpdHlTZWFyY2gubGFzdE1hdGNoKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudGl0
eVNlYXJjaC5jdXJyZW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFj
dGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWVudGl0eVNlYXJjaC5jdXJyZW50
VmFsdWUoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN1bWVkIHRvbyBtYW55IGNo
YXJhY3RlcnMuICBXZSBuZWVkIHRvIHdhbGsgdGhlCisgICAgICAgICAgICAgICAgLy8gc291cmNl
IGJhY2sgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHdlIGhhZCBjb25zdW1lZCBhbgorICAgICAgICAg
ICAgICAgIC8vIGFjdHVhbCBlbnRpdHkuCisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFj
dGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgY29uc3Vt
ZWRDaGFyYWN0ZXJzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9
IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGNvbnN0
IFVDaGFyKiByZWZlcmVuY2UgPSBlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmVudGl0eTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VO
VVNFRChyZWZlcmVuY2UsIGNjID09ICpyZWZlcmVuY2UrKyk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghc291
cmNlLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNjID0g
KnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbnRpdHlTZWFyY2gubGFz
dE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CisgICAgICAgICAgICBpZiAoIWFkZGl0
aW9uYWxBbGxvd2VkQ2hhcmFjdGVyIHx8ICEoaXNBbHBoYU51bWVyaWMoY2MpIHx8IGNjID09ICc9
JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFs
dWU7CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFy
YWN0ZXJzKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0
eVNlYXJjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjZhM2Q2ZGU3ZmIyN2ViYjNjODNhYzM5YTFlYTdh
NjZlYzE2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNo
LmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUs
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MRW50aXR5
U2VhcmNoLmgiCisKKyNpbmNsdWRlICJIVE1MRW50aXR5VGFibGUuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCituYW1lc3BhY2UgeworICAgIAorY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkq
IGhhbGZ3YXkoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQsIGNvbnN0IEhUTUxFbnRp
dHlUYWJsZUVudHJ5KiByaWdodCkKK3sKKyAgICByZXR1cm4gJmxlZnRbKHJpZ2h0IC0gbGVmdCkg
LyAyXTsKK30KKworfQorICAgIAorSFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCgp
CisgICAgOiBtX2N1cnJlbnRMZW5ndGgoMCkKKyAgICAsIG1fY3VycmVudFZhbHVlKDApCisgICAg
LCBtX2xhc3RNYXRjaCgwKQorICAgICwgbV9zdGFydChIVE1MRW50aXR5VGFibGU6OnN0YXJ0KCkp
CisgICAgLCBtX2VuZChIVE1MRW50aXR5VGFibGU6OmVuZCgpKQoreworfQorCitIVE1MRW50aXR5
U2VhcmNoOjpDb21wYXJlUmVzdWx0IEhUTUxFbnRpdHlTZWFyY2g6OmNvbXBhcmUoY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIGVudHJ5LCBVQ2hhciBuZXh0Q2hhcmFjdGVyKSBjb25zdAorewor
ICAgIGlmIChlbnRyeS0+bGVuZ3RoIDwgbV9jdXJyZW50TGVuZ3RoICsgMSkKKyAgICAgICAgcmV0
dXJuIEJlZm9yZTsKKyAgICBVQ2hhciBlbnRyeU5leHRDaGFyYWN0ZXIgPSBlbnRyeS0+ZW50aXR5
W21fY3VycmVudExlbmd0aF07CisgICAgaWYgKGVudHJ5TmV4dENoYXJhY3RlciA9PSBuZXh0Q2hh
cmFjdGVyKQorICAgICAgICByZXR1cm4gUHJlZml4OworICAgIHJldHVybiBlbnRyeU5leHRDaGFy
YWN0ZXIgPCBuZXh0Q2hhcmFjdGVyID8gQmVmb3JlIDogQWZ0ZXI7Cit9CisKK2NvbnN0IEhUTUxF
bnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQoVUNoYXIgbmV4dENo
YXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCA9
IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7
CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgIHJldHVybiBsZWZ0OworICAgIENvbXBh
cmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAo
cmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgaWYgKHJlc3VsdCA9
PSBBZnRlcikKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIHdoaWxlIChsZWZ0ICsgMSA8IHJp
Z2h0KSB7CisgICAgICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9iZSA9IGhhbGZ3
YXkobGVmdCwgcmlnaHQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlKHByb2JlLCBuZXh0Q2hh
cmFjdGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAgICAgICBsZWZ0
ID0gcHJvYmU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBB
ZnRlciB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAgICAgICAgIHJpZ2h0ID0gcHJvYmU7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICByZXR1
cm4gcmlnaHQ7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2Vh
cmNoOjpmaW5kRW5kKFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0OworICAgIGNvbnN0IEhUTUxFbnRpdHlU
YWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAg
ICByZXR1cm4gcmlnaHQ7CisgICAgQ29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21wYXJlKHJpZ2h0
LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0
dXJuIHJpZ2h0OworICAgIGlmIChyZXN1bHQgPT0gQmVmb3JlKQorICAgICAgICByZXR1cm4gbGVm
dDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkgeworICAgICAgICBjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmVz
dWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChyZXN1bHQg
PT0gQWZ0ZXIpCisgICAgICAgICAgICByaWdodCA9IHByb2JlOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVmb3JlIHx8IHJlc3VsdCA9PSBQcmVmaXgpOwor
ICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChs
ZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIGxlZnQ7Cit9CisKK3ZvaWQgSFRNTEVudGl0
eVNlYXJjaDo6YWR2YW5jZShVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIEFTU0VSVChpc0Vu
dGl0eVByZWZpeCgpKTsKKyAgICBpZiAoIW1fY3VycmVudExlbmd0aCkgeworICAgICAgICBtX3N0
YXJ0ID0gSFRNTEVudGl0eVRhYmxlOjpzdGFydChuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9l
bmQgPSBIVE1MRW50aXR5VGFibGU6OmVuZChuZXh0Q2hhcmFjdGVyKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX3N0YXJ0ID0gZmluZFN0YXJ0KG5leHRDaGFyYWN0ZXIpOworICAgICAgICBtX2Vu
ZCA9IGZpbmRFbmQobmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChtX3N0YXJ0ID09IG1fZW5k
ICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3RlcikgIT0gUHJlZml4KQorICAgICAgICAg
ICAgcmV0dXJuIGZhaWwoKTsKKyAgICB9CisgICAgKyttX2N1cnJlbnRMZW5ndGg7CisgICAgaWYg
KG1fc3RhcnQtPmxlbmd0aCAhPSBtX2N1cnJlbnRMZW5ndGgpIHsKKyAgICAgICAgbV9jdXJyZW50
VmFsdWUgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGFzdE1hdGNoID0gbV9z
dGFydDsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IG1fbGFzdE1hdGNoLT52YWx1ZTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRW50aXR5U2VhcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRhMWE4NjZmNjcwZmQ3YTQ0NTI5MTE2
NjUwMWZhMjdhNzIzNjAwYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50
aXR5U2VhcmNoLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVNlYXJjaF9oCisjZGVmaW5l
IEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVudGl0eVRhYmxlRW50cnk7CisKK2NsYXNz
IEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAgIEhUTUxFbnRpdHlTZWFyY2goKTsKKwor
ICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisKKyAgICBib29sIGlzRW50aXR5UHJlZml4KCkgY29u
c3QgeyByZXR1cm4gISFtX3N0YXJ0OyB9CisgICAgaW50IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRy
eSogbGFzdE1hdGNoKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TWF0Y2g7IH0KKworcHJpdmF0ZToK
KyAgICBlbnVtIENvbXBhcmVSZXN1bHQgeworICAgICAgICBCZWZvcmUsCisgICAgICAgIFByZWZp
eCwKKyAgICAgICAgQWZ0ZXIsCisgICAgfTsKKworICAgIENvbXBhcmVSZXN1bHQgY29tcGFyZShj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSosIFVDaGFyKSBjb25zdDsKKyAgICBjb25zdCBIVE1M
RW50aXR5VGFibGVFbnRyeSogZmluZFN0YXJ0KFVDaGFyKSBjb25zdDsKKyAgICBjb25zdCBIVE1M
RW50aXR5VGFibGVFbnRyeSogZmluZEVuZChVQ2hhcikgY29uc3Q7CisKKyAgICB2b2lkIGZhaWwo
KQorICAgIHsKKyAgICAgICAgbV9jdXJyZW50TGVuZ3RoID0gMDsKKyAgICAgICAgbV9jdXJyZW50
VmFsdWUgPSAwOworICAgICAgICBtX3N0YXJ0ID0gMDsKKyAgICAgICAgbV9lbmQgPSAwOworICAg
IH0KKworICAgIGludCBtX2N1cnJlbnRMZW5ndGg7CisgICAgaW50IG1fY3VycmVudFZhbHVlOwor
CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fbGFzdE1hdGNoOworICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBtX3N0YXJ0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiBtX2VuZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTEVudGl0eVRhYmxlLmggYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVRhYmxlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzVhMWFmZDMxNjFmMGRjYTM0YzUyZDMwMWRjYTljMzk1OWM3MjkzMQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBIVE1MRW50aXR5VGFibGVfaAorI2RlZmluZSBIVE1MRW50aXR5VGFibGVfaAorCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkgeworICAgIFVDaGFyIGxhc3RDaGFyYWN0ZXIoKSBjb25zdCB7
IHJldHVybiBlbnRpdHlbbGVuZ3RoIC0gMV07IH0KKworICAgIGNvbnN0IFVDaGFyKiBlbnRpdHk7
CisgICAgaW50IGxlbmd0aDsKKyAgICBpbnQgdmFsdWU7Cit9OworCitjbGFzcyBIVE1MRW50aXR5
VGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSog
c3RhcnQoKTsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVuZCgpOwor
CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFydChVQ2hhcik7Cisg
ICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBlbmQoVUNoYXIpOworfTsKKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA3MmZjODZiN2QzNDMzZDE3NzA1NjcwMWRkNTJlMDhhNDIzZjQ0
MjdmLi5hNGFhOTI1ZGI2MGUwNWZiNTBmYzFlNmFmMGYyYmJmNjU3YzI0MTQ1IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgTWF0aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzU5NQorCisgICAgICAgIEEgc2NyaXB0IGZvciBnZW5lcmF0aW5n
IHRoZSBDKysgc3RhdGUgZGF0YSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBhbGwgdGhlCisgICAgICAg
IGVudGl0aWVzIGZyb20gYSBKU09OIGRlc2NyaXB0aW9uLgorCisgICAgICAgIE5vdGU6IFRoaXMg
c2NyaXB0IGlzIG5vdCB5ZXQgaW50ZWdyYXRlZCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0sIHNvIHRo
aXMKKyAgICAgICAgICAgICAgcGF0Y2ggd2lsbCBub3QgYnVpbGQhICBPT1BTIQorCisgICAgICAg
ICogU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGU6IEFkZGVkLgorCiAyMDEwLTA4LTA5
ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1l
bnRpdHktdGFibGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJs
ZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40YmQ4NTk5OWYxODU0MTA3ZDYwOWQwNTkwMjMzODIwMjBkMzgyOTA4Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHkt
dGFibGUKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmln
aHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IHN0cmluZworaW1wb3J0IHdlYmtpdHB5LnRoaXJkcGFydHkuc2lt
cGxlanNvbiBhcyBzaW1wbGVqc29uCisKKworZGVmIGNvbnZlcnRfZW50aXR5X3RvX2NwcF9uYW1l
KGVudGl0eSk6CisgICAgcG9zdGZpeCA9ICJFbnRpdHlOYW1lIgorICAgIGlmIGVudGl0eVstMV0g
PT0gIjsiOgorICAgICAgICByZXR1cm4gIiVzU2VtaWNvbG9uJXMiICUgKGVudGl0eVs6LTFdLCBw
b3N0Zml4KQorICAgIHJldHVybiAiJXMlcyIgJSAoZW50aXR5LCBwb3N0Zml4KQorCitkZWYgY29u
dmVydF9lbnRpdHlfdG9fdWNoYXJfYXJyYXkoZW50aXR5KToKKyAgICByZXR1cm4gInsnJXMnfSIg
JSAiJywgJyIuam9pbihlbnRpdHkpCisKK2RlZiBjb252ZXJ0X3ZhbHVlX3RvX2ludCh2YWx1ZSk6
CisgICAgYXNzZXJ0KHZhbHVlWzBdID09ICJVIikKKyAgICBhc3NlcnQodmFsdWVbMV0gPT0gIisi
KQorICAgIHJldHVybiAiMHgiICsgdmFsdWVbMjpdCisKK2RlZiBvZmZzZXRfdGFibGVfZW50cnko
b2Zmc2V0KToKKyAgICByZXR1cm4gIiAgICAmc3RhdGljRW50aXR5VGFibGVbJXNdLCIgJSBvZmZz
ZXQKKworaHRtbF9lbnRpdHlfbmFtZXNfZmlsZSA9IG9wZW4oJ1dlYkNvcmUvaHRtbC9IVE1MRW50
aXR5TmFtZXMuanNvbicpCitlbnRyaWVzID0gc2ltcGxlanNvbi5sb2FkKGh0bWxfZW50aXR5X25h
bWVzX2ZpbGUpCitodG1sX2VudGl0eV9uYW1lc19maWxlLmNsb3NlKCkKKworZW50cmllcyA9IHNv
cnRlZChlbnRyaWVzLCBrZXk9bGFtYmRhIGVudHJ5OiBlbnRyeVsnZW50aXR5J10pCitlbnRpdHlf
Y291bnQgPSBsZW4oZW50cmllcykKKworcHJpbnQgIiIiLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgQlkgV2Vi
S2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKKy8vIERPIE5PVCBFRElU
ICh1bmxlc3MgeW91IGFyZSBhIG5pbmphKSEKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFj
ZSB7CisiIiIKKworZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgcHJpbnQgImNvbnN0IFVDaGFy
ICVzRW50aXR5TmFtZVtdID0gJXM7IiAlICgKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fY3Bw
X25hbWUoZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fdWNoYXJf
YXJyYXkoZW50cnlbImVudGl0eSJdKSkKKworcHJpbnQgIiIiCitIVE1MRW50aXR5VGFibGVFbnRy
eSBzdGF0aWNFbnRpdHlUYWJsZVslc10gPSB7IiIiICUgZW50aXR5X2NvdW50CisKK2luZGV4ID0g
e30KK29mZnNldCA9IDAKK2ZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgIGxldHRlciA9IGVudHJ5
WyJlbnRpdHkiXVswXQorICAgIGlmIG5vdCBpbmRleC5nZXQobGV0dGVyKToKKyAgICAgICAgaW5k
ZXhbbGV0dGVyXSA9IG9mZnNldAorICAgIHByaW50ICcgICAgeyAlc0VudGl0eU5hbWUsICVzLCAl
cyB9LCcgJSAoCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX2NwcF9uYW1lKGVudHJ5WyJlbnRp
dHkiXSksCisgICAgICAgIGxlbihlbnRyeVsiZW50aXR5Il0pLAorICAgICAgICBjb252ZXJ0X3Zh
bHVlX3RvX2ludChlbnRyeVsidmFsdWUiXSkpCisgICAgb2Zmc2V0ICs9IDEKKworcHJpbnQgIiIi
fTsKKyIiIgorCitwcmludCAiY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHVwcGVyY2FzZU9m
ZnNldFtdID0geyIKK2ZvciBsZXR0ZXIgaW4gc3RyaW5nLnVwcGVyY2FzZToKKyAgICBwcmludCBv
ZmZzZXRfdGFibGVfZW50cnkoaW5kZXhbbGV0dGVyXSkKK3ByaW50IG9mZnNldF90YWJsZV9lbnRy
eShpbmRleFsnYSddKQorcHJpbnQgIiIifTsKKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkq
IGxvd2VyY2FzZU9mZnNldFtdID0geyIiIgorZm9yIGxldHRlciBpbiBzdHJpbmcubG93ZXJjYXNl
OgorICAgIHByaW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFtsZXR0ZXJdKQorcHJpbnQgb2Zm
c2V0X3RhYmxlX2VudHJ5KGVudGl0eV9jb3VudCkKK3ByaW50ICIiIn07CisKK30KKworY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6c3RhcnQoVUNoYXIgYykKK3sK
KyAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgICAgICAgIHJldHVybiB1cHBlcmNhc2VP
ZmZzZXRbYyAtICdBJ107CisgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorICAgICAgICBy
ZXR1cm4gbG93ZXJjYXNlT2Zmc2V0W2MgLSAnYSddOworICAgIHJldHVybiAwOworfQorCitjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjplbmQoVUNoYXIgYykKK3sK
KyAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgICAgICAgIHJldHVybiB1cHBlcmNhc2VP
ZmZzZXRbYyAtICdBJyArIDFdOworICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAg
ICAgcmV0dXJuIGxvd2VyY2FzZU9mZnNldFtjIC0gJ2EnICsgMV07CisgICAgcmV0dXJuIDA7Cit9
CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OnN0YXJ0KCkK
K3sKKyAgICByZXR1cm4gJnN0YXRpY0VudGl0eVRhYmxlWzBdOworfQorCitjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjplbmQoKQoreworICAgIHJldHVybiAmc3Rh
dGljRW50aXR5VGFibGVbJXMgLSAxXTsKK30KKworfQorIiIiICUgZW50aXR5X2NvdW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63981</attachid>
            <date>2010-08-10 00:45:18 -0700</date>
            <delta_ts>2010-08-10 18:01:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43595-20100810004516.patch</filename>
            <type>text/plain</type>
            <size>33926</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi4zNzBjNThl
MWU4YjBmYWQ3MjRjMTNiZjQ5ZTY1NzI0Y2ZhNTZlMmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0wOSAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVt
IHRlc3QgcmVzdWx0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1l
eHBlY3RlZC1odG1sNS50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQt
aHRtbDUudHh0CmluZGV4IGFjMDE5ZmYyOTMyOTE1Njc3NzY4YzVjYmNkMGIxMDI1Yjc5Njc3MjMu
LjJjYWQ5YTA3MTVjMDVhMmJkMDM2YzA0OTMyZmYzNjM4ZWQ4ZjZlZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dApAQCAtMjEzLDkyICsyMTMs
MTAgQEAgcmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL3NjcmlwdGRh
dGEwMS5kYXQ6IFBBU1MKIAotcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0OgotNwotOQotMTAK
LTExCi0KLVRlc3QgNyBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZsYW5nOyZyYW5nOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICLjgIjjgIkiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18
ICAgPGJvZHk+Ci18ICAgICAi4p+o4p+pIgotCi1UZXN0IDkgb2YgMjQgaW4gcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mSW1hZ2luYXJ5STsKLUdvdDoKLXwgPGh0
bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJkltYWdpbmFyeUk7IgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKFiCIKK3Jlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdDogUEFTUwogCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2Vu
dGl0aWVzMDEuZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVz
dC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRpdGll
czAxLmRhdDoKLTIKLTUKLQotVGVzdCAyIG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRh
dCBmYWlsZWQuIElucHV0OgotRk9PJmd0QkFSCi1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgot
fCAgIDxib2R5PgotfCAgICAgIkZPTyZndEJBUiIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08+QkFSIgotCi1UZXN0IDUgb2YgNjggaW4gcmVz
b3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1JJ20gJm5vdGl0OyBJIHRlbGwg
eW91Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSAm
bm90aXQ7IEkgdGVsbCB5b3UiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiSSdtIMKsaXQ7IEkgdGVsbCB5b3UiCiByZXNvdXJjZXMvZW50aXRpZXMw
Mi5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL2NvbW1lbnRzMDEuZGF0OiBQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAppbmRleCAxNGQzZWE1NzFkOWY4MDFjMTBiZWQ1
NjdmZWM1YzI3YjEyY2FhZjg5Li5kYmNkZDViN2ZhM2Q1MGY4NjY2OTMzNTE2ODY4NjFkYzExYzdm
ZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKQEAgLTIxMiw5
MiArMjEyLDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9z
Y3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdDoKLTcK
LTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0
IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+
Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxo
ZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQotVGVzdCA5IG9mIDI0IGluIHJlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJkltYWdpbmFyeUk7Ci1Hb3Q6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZJbWFnaW5hcnlJOyIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLihYgi
CityZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMCBvZiAyNCBpbiBy
ZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZLb3BmOwotR290Ogot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImS29wZjsiCi1FeHBlY3Rl
ZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi8J2VgiIKK3Jlc291
cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0IDExIG9mIDI0IGluIHJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJm5vdGludmE7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZub3RpbnZhOyIKLUV4cGVjdGVkOgot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLiiIkiCi1yZXNvdXJjZXMv
ZW50aXRpZXMwMS5kYXQ6Ci0yCi01Ci0KLVRlc3QgMiBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRp
ZXMwMS5kYXQgZmFpbGVkLiBJbnB1dDoKLUZPTyZndEJBUgotR290OgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08mZ3RCQVIiCi1FeHBlY3RlZDoKLXwgPGh0bWw+
Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9PPkJBUiIKLQotVGVzdCA1IG9mIDY4
IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQuIElucHV0OgotSSdtICZub3RpdDsg
SSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAg
ICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRlbGwgeW91IgogcmVzb3VyY2VzL2Vu
dGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21tZW50czAxLmRhdDogUEFTUwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxN2Ji
ZDU3OWUwYTljOTVlNmJhYzMxNDNhOGNmNjNhMjUxMzAzMzI0Li5hMDRkMzRkZjhhYTk3MGM4N2Vk
NTQ5MjQzM2M4MTFiYjJiY2Y3ZDA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDQ4IEBACiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1hdGhNTCBlbnRp
dGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM1
OTUKKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhlIEhUTUw1IGVudGl0eSBwYXJzaW5nIGFsZ29y
aXRobSByZXF1aXJlIHJlZmFjdG9yaW5nIGhvdworICAgICAgICB3ZSBzZWFyY2ggZm9yIGVudGl0
eSBuYW1lcy4gIEluc3RlYWQgb2YgdXNpbmcgYSBwZXJmZWN0IGhhc2gsIHdlIG5vdworICAgICAg
ICB1c2UgYSBzb3J0ZWQgbGlzdC4gIEFzIHdlIGFkdmFuY2UgdGhyb3VnaCB0aGUgaW5wdXQsIHdl
IHdhbGsgZG93biBhCisgICAgICAgIGJpbmFyeSBzZWFyY2ggb2YgdGhlIHRhYmxlIGxvb2tpbmcg
Zm9yIGFuIGVudGl0eS4KKworICAgICAgICBVc2luZyB0aGlzIGRhdGEgc3RydWN0dXJlIGxldHMg
dXMga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBjdXJyZW50CisgICAgICAgIHN0cmluZyBpcyBh
IHByZWZpeCBvZiBhbiBleGlzdGluZyBlbnRpdHksIHdoaWNoIHdlIG5lZWQgZm9yIHRoZQorICAg
ICAgICBhbGdvcml0aG0uICBJbiBhIGZ1dHVyZSBwYXRjaCwgSSBwbGFuIHRvIGFkZCBzb21lIGlu
ZGljaWVzIHRvIHRoZQorICAgICAgICB0YWJsZSwgd2hpY2ggc2hvdWxkIGxldCB1cyBuYXJyb3cg
ZG93biB0aGUgcmFuZ2Ugb2YgaW50ZXJlc3RpbmcgZW50cmllcworICAgICAgICBtb3JlIHF1aWNr
bHkuCisKKyAgICAgICAgVGhlIG9uZSBuYXN0eSBwaWVjZSBvZiB0aGUgYWxnb3JpdGhtIGlzIGlm
IHdlIHdhbGsgdG9vIGZhciBkb3duIHRoZQorICAgICAgICBpbnB1dCBhbmQgd2UgbmVlZCB0byBi
YWNrIHVwIHRvIGEgcHJldmlvdXMgbWF0Y2guICBJbiB0aGlzIHBhdGNoLCB3ZQorICAgICAgICBh
Y2NvbXBsaXNoIHRoaXMgYnkgcmV3aW5kaW5nIHRoZSBpbnB1dCBhbmQgY29uc3VtaW5nIGEga25v
d24gbnVtYmVyIG9mCisgICAgICAgIGNoYXJhY3RlcnMgdG8gcmVzeW5jIHRoZSBzb3VyY2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVIVE1M
RW50aXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpI
VE1MRW50aXR5U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmNv
bXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmluZFN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRFbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZSk6CisgICAgICAgICogaHRtbC9IVE1M
RW50aXR5U2VhcmNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJj
aDo6aXNFbnRpdHlQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6
Y3VycmVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6Omxhc3RN
YXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjopOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmFpbCk6CisgICAgICAgICogaHRtbC9IVE1MRW50
aXR5VGFibGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5VGFibGVFbnRy
eTo6bGFzdENoYXJhY3Rlcik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAg
ICBQb3J0IHZpZXctc291cmNlIHRvIG5ldyBwYXJzZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQ2CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTRmMWM3MTkwMGZjNmFhMTdiMzgxNjQ0ODgxMzRmM2Qw
N2M3MmY5NS4uODI5OTNlYjc5YzBhY2JlNGRhMWFkNGVjNzVjYThkYmQ0NWEwOTdlNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2NTYsNiArMjY1Niwx
MCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc0MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAqLzsgfTsK
IAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1
MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJOTcwQzRGRTMxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlT
ZWFyY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwICovOyB9Owor
CQk5NzBDNEZFNDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGRTAxMjExMjY2MjAw
QzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLzsgfTsKKwkJOTcwQzRGRTUxMjExMjY2MjAw
QzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0
eVRhYmxlLmNwcCAqLzsgfTsKKwkJOTcwQzRGRTYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTcwQzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovOyB9OwogCQk5
NzE5QUYwMDExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzE5QUVGRjExRDA5RjJDMDBENDU4
MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi87IH07CiAJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
Y3BwICovOyB9OwogCQk5NzM4ODlBMTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlG
MTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDYwLDYgKzg0NjQsMTAgQEAKIAkJOTcw
NTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkRGMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5U2VhcmNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUxMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1M
RW50aXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TEVudGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTIx
MjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTcxOUFFRkYxMUQwOUYyQzAwRDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MSW5wdXRTdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50
V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50
V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUYxMTZFQTlE
QzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
Mzk3NSw2ICsxMzk4MywxMCBAQAogCQkJCTg1OTEyODc5MEFCMjIyRUMwMDIwMjI2NSAvKiBIVE1M
RW1iZWRFbGVtZW50LmlkbCAqLywKIAkJCQk5NzZFODk1RTExQzBDQTNBMDBFQTlDQTkgLyogSFRN
TEVudGl0eVBhcnNlci5jcHAgKi8sCiAJCQkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhU
TUxFbnRpdHlQYXJzZXIuaCAqLywKKwkJCQk5NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVNlYXJjaC5jcHAgKi8sCisJCQkJOTcwQzRGRTAxMjExMjY2MjAwQzNEMzkzIC8qIEhU
TUxFbnRpdHlTZWFyY2guaCAqLywKKwkJCQk5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVRhYmxlLmNwcCAqLywKKwkJCQk5NzBDNEZFMjEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVRhYmxlLmggKi8sCiAJCQkJQTgxMzY5QjkwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxG
aWVsZFNldEVsZW1lbnQuY3BwICovLAogCQkJCUE4MTM2OUI4MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBI
VE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkE5RjQwQTFDREE1NzAwQjQyQjI1IC8q
IEhUTUxGaWVsZFNldEVsZW1lbnQuaWRsICovLApAQCAtMjAxNDYsNiArMjAxNTgsOCBAQAogCQkJ
CTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTk3Qjc0MzE0MTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJOTcwQzRGRTQxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlTZWFyY2guaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MEM0RkU2MTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1NzAsNiArMjI1ODQsOCBA
QAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdCNzQzMTMxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxW
aWV3U291cmNlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3MEM0RkUzMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3MEM0
RkU1MTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKaW5kZXggODRiMjAwNjc0NGZmNjc4YjhjMmY2ZDhh
MjI5MTdhNTdjYzNmNDEzYy4uYTJiNmUyODE1ZDdmYTc1OGQ4OGEwZGM4Yzk1YzRhYWQwMzRhMjA5
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcApAQCAtMjgsMjEgKzI4LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVk
ZSAiSFRNTEVudGl0eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotLy8gVXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExBVEZP
Uk0oR0NDKSB0byBzdGF5IGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMgZmls
ZQotI2lmZGVmIF9fR05VQ19fCi0vLyBUaGUgbWFpbiBwYXJzZXIgaW5jbHVkZXMgdGhpcyB0b28g
c28gd2UgYXJlIGdldHRpbmcgdHdvIGNvcGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwgdGhpcyB3
YXkgdGhlIGNvZGUgZ2V0cyBpbmxpbmVkLgotI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAi
Ci0jZWxzZQotLy8gTm90IGlubGluZWQgZm9yIG5vbi1HQ0MgY29tcGlsZXJzCi1zdHJ1Y3QgRW50
aXR5IHsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwotICAgIGludCBjb2RlOwotfTsKLWNvbnN0IHN0
cnVjdCBFbnRpdHkqIGZpbmRFbnRpdHkocmVnaXN0ZXIgY29uc3QgY2hhciogc3RyLCByZWdpc3Rl
ciB1bnNpZ25lZCBpbnQgbGVuKTsKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsNyArMTAyLDYgQEAgdW5zaWduZWQgY29uc3VtZUhU
TUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3Rl
cnMsIFUKICAgICBFbnRpdHlTdGF0ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gMDsKICAgICBWZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7
Ci0gICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlOYW1lOwogCiAgICAgd2hpbGUgKCFzb3VyY2Uu
aXNFbXB0eSgpKSB7CiAgICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKQEAgLTE3Nyw3ICsxNjUs
NyBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwg
Ym9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
JzsnKSB7CiAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAg
ICAgfSBlbHNlIAorICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxl
Z2FsRW50aXR5Rm9yKHJlc3VsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTkyLDQ4ICsxODAsNDggQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTmFtZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcuIFdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRj
aGluZyBlbnRpdHkuCi0gICAgICAgICAgICAvLyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhl
IHNwZWMgYXJlOgotICAgICAgICAgICAgLy8gICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwg
eW91Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKLSAg
ICAgICAgICAgIC8vICAgICAgICBJbiB0aGUgZmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRp
dHkuICBJbiB0aGUgc2Vjb25kCi0gICAgICAgICAgICAvLyAgICAgICAgY2FzZSwgIiZub3Rpbjsi
IGlzIHRoZSBlbnRpdHkuCi0gICAgICAgICAgICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBl
bnRpdGllcyBpcyBpbmNvbXBsZXRlLgotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIg
OCBiZWxvdyBpcyBib2d1cy4KLSAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAm
JiBlbnRpdHlOYW1lLnNpemUoKSA8PSA4KSB7CisgICAgICAgICAgICBIVE1MRW50aXR5U2VhcmNo
IGVudGl0eVNlYXJjaDsKKyAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0g
JzsnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVu
dGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZUFuZEFTU0VSVCgnOycpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0
eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVudGl0eVNl
YXJjaC5hZHZhbmNlKGNjKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVudGl0eVNlYXJjaC5pc0Vu
dGl0eVByZWZpeCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUu
ZGF0YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRp
dHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9y
ZSB0aGlzIGVudGl0eSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlmIHRoZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFNvbWUgZW50aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hl
cmVhcyBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAg
VGhlIEhUTUw1IHNwZWMgaGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3Bl
Y3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJl
bmNlcy5odG1sI25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2Vl
bXMgdG8gYm9pbCBkb3duIHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGVudGl0eS0+Y29kZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVudGl0eU5hbWUuYXBwZW5kKGNjKTsKICAgICAgICAgICAg
ICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RF
bm91Z2hDaGFyYWN0ZXJzID0gc291cmNlLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGlmIChub3RF
bm91Z2hDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5
IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgYSBsb25nZXIgZW50aXR5CisgICAgICAgICAgICAgICAg
Ly8gdGhhdCB3ZSBjb3VsZCBtYXRjaCBpZiB3ZSBoYWQgbW9yZSBkYXRhLgorICAgICAgICAgICAg
ICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAg
ICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFl
bnRpdHlTZWFyY2gubGFzdE1hdGNoKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudGl0
eVNlYXJjaC5jdXJyZW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFj
dGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRj
aCgpLT5sZW5ndGggIT0gZW50aXR5U2VhcmNoLmN1cnJlbnRMZW5ndGgoKSkgeworICAgICAgICAg
ICAgICAgIC8vIFdlJ3ZlIGNvbnN1bWVkIHRvbyBtYW55IGNoYXJhY3RlcnMuICBXZSBuZWVkIHRv
IHdhbGsgdGhlCisgICAgICAgICAgICAgICAgLy8gc291cmNlIGJhY2sgdG8gdGhlIHBvaW50IGF0
IHdoaWNoIHdlIGhhZCBjb25zdW1lZCBhbgorICAgICAgICAgICAgICAgIC8vIGFjdHVhbCBlbnRp
dHkuCisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVk
Q2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9IGVudGl0eVNlYXJjaC5sYXN0TWF0
Y2goKS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiByZWZlcmVuY2UgPSBl
bnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmVudGl0eTsKKyAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNjID0gKnNv
dXJjZTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZWZlcmVuY2UsIGNjID09
ICpyZWZlcmVuY2UrKyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5h
cHBlbmQoY2MpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChj
Yyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghc291cmNlLmlzRW1wdHkoKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmxhc3RDaGFyYWN0
ZXIoKSA9PSAnOycpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0
Y2goKS0+dmFsdWU7CisgICAgICAgICAgICBpZiAoIWFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
IHx8ICEoaXNBbHBoYU51bWVyaWMoY2MpIHx8IGNjID09ICc9JykpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CiAgICAgICAgICAgICB1bmNv
bnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKICAgICAgICAgICAg
IHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0
eVNlYXJjaC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzA1MjZhM2Q2ZGU3ZmIyN2ViYjNjODNhYzM5YTFlYTdhNjZlYzE2OQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcApAQCAtMCwwICsxLDEzMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MRW50aXR5U2VhcmNoLmgiCisKKyNpbmNsdWRl
ICJIVE1MRW50aXR5VGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
eworICAgIAorY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGhhbGZ3YXkoY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIGxlZnQsIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCkK
K3sKKyAgICByZXR1cm4gJmxlZnRbKHJpZ2h0IC0gbGVmdCkgLyAyXTsKK30KKworfQorICAgIAor
SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCgpCisgICAgOiBtX2N1cnJlbnRMZW5n
dGgoMCkKKyAgICAsIG1fY3VycmVudFZhbHVlKDApCisgICAgLCBtX2xhc3RNYXRjaCgwKQorICAg
ICwgbV9zdGFydChIVE1MRW50aXR5VGFibGU6OnN0YXJ0KCkpCisgICAgLCBtX2VuZChIVE1MRW50
aXR5VGFibGU6OmVuZCgpKQoreworfQorCitIVE1MRW50aXR5U2VhcmNoOjpDb21wYXJlUmVzdWx0
IEhUTUxFbnRpdHlTZWFyY2g6OmNvbXBhcmUoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVu
dHJ5LCBVQ2hhciBuZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGlmIChlbnRyeS0+bGVuZ3Ro
IDwgbV9jdXJyZW50TGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICBVQ2hh
ciBlbnRyeU5leHRDaGFyYWN0ZXIgPSBlbnRyeS0+ZW50aXR5W21fY3VycmVudExlbmd0aF07Cisg
ICAgaWYgKGVudHJ5TmV4dENoYXJhY3RlciA9PSBuZXh0Q2hhcmFjdGVyKQorICAgICAgICByZXR1
cm4gUHJlZml4OworICAgIHJldHVybiBlbnRyeU5leHRDaGFyYWN0ZXIgPCBuZXh0Q2hhcmFjdGVy
ID8gQmVmb3JlIDogQWZ0ZXI7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1M
RW50aXR5U2VhcmNoOjpmaW5kU3RhcnQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAg
ICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmln
aHQpCisgICAgICAgIHJldHVybiBsZWZ0OworICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29t
cGFyZShsZWZ0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAg
ICAgICAgcmV0dXJuIGxlZnQ7CisgICAgaWYgKHJlc3VsdCA9PSBBZnRlcikKKyAgICAgICAgcmV0
dXJuIHJpZ2h0OworICAgIHdoaWxlIChsZWZ0ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9iZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAg
ICAgICByZXN1bHQgPSBjb21wYXJlKHByb2JlLCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYg
KHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBBZnRlciB8fCByZXN1bHQgPT0gUHJl
Zml4KTsKKyAgICAgICAgICAgIHJpZ2h0ID0gcHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAg
QVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICByZXR1cm4gcmlnaHQ7Cit9CisKK2NvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kRW5kKFVDaGFyIG5l
eHRDaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxl
ZnQgPSBtX3N0YXJ0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCA9IG1f
ZW5kOworICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAg
Q29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21wYXJlKHJpZ2h0LCBuZXh0Q2hhcmFjdGVyKTsKKyAg
ICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIGlmIChy
ZXN1bHQgPT0gQmVmb3JlKQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICB3aGlsZSAobGVmdCAr
IDEgPCByaWdodCkgeworICAgICAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcHJvYmUg
PSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZShwcm9iZSwg
bmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gQWZ0ZXIpCisgICAgICAgICAg
ICByaWdodCA9IHByb2JlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gQmVmb3JlIHx8IHJlc3VsdCA9PSBQcmVmaXgpOworICAgICAgICAgICAgbGVmdCA9IHBy
b2JlOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7Cisg
ICAgcmV0dXJuIGxlZnQ7Cit9CisKK3ZvaWQgSFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZShVQ2hh
ciBuZXh0Q2hhcmFjdGVyKQoreworICAgIEFTU0VSVChpc0VudGl0eVByZWZpeCgpKTsKKyAgICBp
ZiAoIW1fY3VycmVudExlbmd0aCkgeworICAgICAgICBtX3N0YXJ0ID0gSFRNTEVudGl0eVRhYmxl
OjpzdGFydChuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9lbmQgPSBIVE1MRW50aXR5VGFibGU6
OmVuZChuZXh0Q2hhcmFjdGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3N0YXJ0ID0gZmlu
ZFN0YXJ0KG5leHRDaGFyYWN0ZXIpOworICAgICAgICBtX2VuZCA9IGZpbmRFbmQobmV4dENoYXJh
Y3Rlcik7CisgICAgICAgIGlmIChtX3N0YXJ0ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwg
bmV4dENoYXJhY3RlcikgIT0gUHJlZml4KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoKTsKKyAg
ICB9CisgICAgKyttX2N1cnJlbnRMZW5ndGg7CisgICAgaWYgKG1fc3RhcnQtPmxlbmd0aCAhPSBt
X2N1cnJlbnRMZW5ndGgpIHsKKyAgICAgICAgbV9jdXJyZW50VmFsdWUgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fbGFzdE1hdGNoID0gbV9zdGFydDsKKyAgICBtX2N1cnJlbnRW
YWx1ZSA9IG1fbGFzdE1hdGNoLT52YWx1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxFbnRpdHlTZWFyY2guaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTU3ODU5ZDRlYmNjZDJhMTJiMDNiZGUwZjhjZjEyODIzOTRkYmNjOQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSFRNTEVudGl0eVNlYXJjaF9oCisjZGVmaW5lIEhUTUxFbnRpdHlTZWFyY2hfaAor
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgSFRNTEVudGl0eVRhYmxlRW50cnk7CisKK2NsYXNzIEhUTUxFbnRpdHlTZWFyY2ggewor
cHVibGljOgorICAgIEhUTUxFbnRpdHlTZWFyY2goKTsKKworICAgIHZvaWQgYWR2YW5jZShVQ2hh
cik7CisKKyAgICBib29sIGlzRW50aXR5UHJlZml4KCkgY29uc3QgeyByZXR1cm4gISFtX3N0YXJ0
OyB9CisgICAgaW50IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVl
OyB9CisgICAgaW50IGN1cnJlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRMZW5n
dGg7IH0KKworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBsYXN0TWF0Y2goKSBjb25z
dCB7IHJldHVybiBtX2xhc3RNYXRjaDsgfQorCitwcml2YXRlOgorICAgIGVudW0gQ29tcGFyZVJl
c3VsdCB7CisgICAgICAgIEJlZm9yZSwKKyAgICAgICAgUHJlZml4LAorICAgICAgICBBZnRlciwK
KyAgICB9OworCisgICAgQ29tcGFyZVJlc3VsdCBjb21wYXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiwgVUNoYXIpIGNvbnN0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBm
aW5kU3RhcnQoVUNoYXIpIGNvbnN0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBm
aW5kRW5kKFVDaGFyKSBjb25zdDsKKworICAgIHZvaWQgZmFpbCgpCisgICAgeworICAgICAgICBt
X2N1cnJlbnRWYWx1ZSA9IDA7CisgICAgICAgIG1fc3RhcnQgPSAwOworICAgICAgICBtX2VuZCA9
IDA7CisgICAgfQorCisgICAgaW50IG1fY3VycmVudExlbmd0aDsKKyAgICBpbnQgbV9jdXJyZW50
VmFsdWU7CisKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbV9sYXN0TWF0Y2g7Cisg
ICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIG1fZW5kOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFi
bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNWExYWZkMzE2MWYwZGNhMzRjNTJkMzAxZGNhOWMzOTU5YzcyOTMx
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCkBAIC0w
LDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhUTUxFbnRpdHlUYWJsZV9oCisjZGVmaW5lIEhUTUxFbnRpdHlUYWJsZV9o
CisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBIVE1MRW50aXR5VGFibGVFbnRyeSB7CisgICAgVUNoYXIgbGFzdENoYXJhY3Rlcigp
IGNvbnN0IHsgcmV0dXJuIGVudGl0eVtsZW5ndGggLSAxXTsgfQorCisgICAgY29uc3QgVUNoYXIq
IGVudGl0eTsKKyAgICBpbnQgbGVuZ3RoOworICAgIGludCB2YWx1ZTsKK307CisKK2NsYXNzIEhU
TUxFbnRpdHlUYWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiBzdGFydCgpOworICAgIHN0YXRpYyBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSog
ZW5kKCk7CisKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHN0YXJ0KFVD
aGFyKTsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVuZChVQ2hhcik7
Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDcyZmM4NmI3ZDM0MzNkMTc3MDU2NzAxZGQ1MmUw
OGE0MjNmNDQyN2YuLmE0YWE5MjVkYjYwZTA1ZmI1MGZjMWU2YWYwZjJiYmY2NTdjMjQxNDUgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOC0wOSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAgICAgQSBzY3JpcHQgZm9yIGdl
bmVyYXRpbmcgdGhlIEMrKyBzdGF0ZSBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGFsbCB0aGUK
KyAgICAgICAgZW50aXRpZXMgZnJvbSBhIEpTT04gZGVzY3JpcHRpb24uCisKKyAgICAgICAgTm90
ZTogVGhpcyBzY3JpcHQgaXMgbm90IHlldCBpbnRlZ3JhdGVkIHdpdGggdGhlIGJ1aWxkIHN5c3Rl
bSwgc28gdGhpcworICAgICAgICAgICAgICBwYXRjaCB3aWxsIG5vdCBidWlsZCEgIE9PUFMhCisK
KyAgICAgICAgKiBTY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZTogQWRkZWQuCisKIDIw
MTAtMDgtMDkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0
ZS1odG1sLWVudGl0eS10YWJsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50
aXR5LXRhYmxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzZmI3YjYyOTk5OWEzZmFjNDZmNzA1Y2MyNDQ2ZDY0NzQ3
YjQxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1s
LWVudGl0eS10YWJsZQpAQCAtMCwwICsxLDE2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
IENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgd2Via2l0cHkudGhpcmRw
YXJ0eS5zaW1wbGVqc29uIGFzIHNpbXBsZWpzb24KKworCitkZWYgY29udmVydF9lbnRpdHlfdG9f
Y3BwX25hbWUoZW50aXR5KToKKyAgICBwb3N0Zml4ID0gIkVudGl0eU5hbWUiCisgICAgaWYgZW50
aXR5Wy0xXSA9PSAiOyI6CisgICAgICAgIHJldHVybiAiJXNTZW1pY29sb24lcyIgJSAoZW50aXR5
WzotMV0sIHBvc3RmaXgpCisgICAgcmV0dXJuICIlcyVzIiAlIChlbnRpdHksIHBvc3RmaXgpCisK
K2RlZiBjb252ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRpdHkpOgorICAgIHJldHVybiAi
eyclcyd9IiAlICInLCAnIi5qb2luKGVudGl0eSkKKworZGVmIGNvbnZlcnRfdmFsdWVfdG9faW50
KHZhbHVlKToKKyAgICBhc3NlcnQodmFsdWVbMF0gPT0gIlUiKQorICAgIGFzc2VydCh2YWx1ZVsx
XSA9PSAiKyIpCisgICAgcmV0dXJuICIweCIgKyB2YWx1ZVsyOl0KKworZGVmIG9mZnNldF90YWJs
ZV9lbnRyeShvZmZzZXQpOgorICAgIHJldHVybiAiICAgICZzdGF0aWNFbnRpdHlUYWJsZVslc10s
IiAlIG9mZnNldAorCitodG1sX2VudGl0eV9uYW1lc19maWxlID0gb3BlbignV2ViQ29yZS9odG1s
L0hUTUxFbnRpdHlOYW1lcy5qc29uJykKK2VudHJpZXMgPSBzaW1wbGVqc29uLmxvYWQoaHRtbF9l
bnRpdHlfbmFtZXNfZmlsZSkKK2h0bWxfZW50aXR5X25hbWVzX2ZpbGUuY2xvc2UoKQorCitlbnRy
aWVzID0gc29ydGVkKGVudHJpZXMsIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5WydlbnRpdHknXSkK
K2VudGl0eV9jb3VudCA9IGxlbihlbnRyaWVzKQorCitwcmludCAiIiIvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworLy8gVEhJUyBGSUxFIElTIEdFTkVSQVRF
RCBCWSBXZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorLy8gRE8g
Tk9UIEVESVQgKHVubGVzcyB5b3UgYXJlIGEgbmluamEpIQorCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
bmFtZXNwYWNlIHsKKyIiIgorCitmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICBwcmludCAiY29u
c3QgVUNoYXIgJXNFbnRpdHlOYW1lW10gPSAlczsiICUgKAorICAgICAgICBjb252ZXJ0X2VudGl0
eV90b19jcHBfbmFtZShlbnRyeVsiZW50aXR5Il0pLAorICAgICAgICBjb252ZXJ0X2VudGl0eV90
b191Y2hhcl9hcnJheShlbnRyeVsiZW50aXR5Il0pKQorCitwcmludCAiIiIKK0hUTUxFbnRpdHlU
YWJsZUVudHJ5IHN0YXRpY0VudGl0eVRhYmxlWyVzXSA9IHsiIiIgJSBlbnRpdHlfY291bnQKKwor
aW5kZXggPSB7fQorb2Zmc2V0ID0gMAorZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgbGV0dGVy
ID0gZW50cnlbImVudGl0eSJdWzBdCisgICAgaWYgbm90IGluZGV4LmdldChsZXR0ZXIpOgorICAg
ICAgICBpbmRleFtsZXR0ZXJdID0gb2Zmc2V0CisgICAgcHJpbnQgJyAgICB7ICVzRW50aXR5TmFt
ZSwgJXMsICVzIH0sJyAlICgKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fY3BwX25hbWUoZW50
cnlbImVudGl0eSJdKSwKKyAgICAgICAgbGVuKGVudHJ5WyJlbnRpdHkiXSksCisgICAgICAgIGNv
bnZlcnRfdmFsdWVfdG9faW50KGVudHJ5WyJ2YWx1ZSJdKSkKKyAgICBvZmZzZXQgKz0gMQorCitw
cmludCAiIiJ9OworIiIiCisKK3ByaW50ICJjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogdXBw
ZXJjYXNlT2Zmc2V0W10gPSB7IgorZm9yIGxldHRlciBpbiBzdHJpbmcudXBwZXJjYXNlOgorICAg
IHByaW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFtsZXR0ZXJdKQorcHJpbnQgb2Zmc2V0X3Rh
YmxlX2VudHJ5KGluZGV4WydhJ10pCitwcmludCAiIiJ9OworCitjb25zdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSogbG93ZXJjYXNlT2Zmc2V0W10gPSB7IiIiCitmb3IgbGV0dGVyIGluIHN0cmluZy5s
b3dlcmNhc2U6CisgICAgcHJpbnQgb2Zmc2V0X3RhYmxlX2VudHJ5KGluZGV4W2xldHRlcl0pCitw
cmludCBvZmZzZXRfdGFibGVfZW50cnkoZW50aXR5X2NvdW50KQorcHJpbnQgIiIifTsKKworfQor
Citjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjpzdGFydChVQ2hh
ciBjKQoreworICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyAgICAgICAgcmV0dXJuIHVw
cGVyY2FzZU9mZnNldFtjIC0gJ0EnXTsKKyAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpCisg
ICAgICAgIHJldHVybiBsb3dlcmNhc2VPZmZzZXRbYyAtICdhJ107CisgICAgcmV0dXJuIDA7Cit9
CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OmVuZChVQ2hh
ciBjKQoreworICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyAgICAgICAgcmV0dXJuIHVw
cGVyY2FzZU9mZnNldFtjIC0gJ0EnICsgMV0gLSAxOworICAgIGlmIChjID49ICdhJyAmJiBjIDw9
ICd6JykKKyAgICAgICAgcmV0dXJuIGxvd2VyY2FzZU9mZnNldFtjIC0gJ2EnICsgMV0gLSAxOwor
ICAgIHJldHVybiAwOworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0
eVRhYmxlOjpzdGFydCgpCit7CisgICAgcmV0dXJuICZzdGF0aWNFbnRpdHlUYWJsZVswXTsKK30K
KworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6ZW5kKCkKK3sK
KyAgICByZXR1cm4gJnN0YXRpY0VudGl0eVRhYmxlWyVzIC0gMV07Cit9CisKK30KKyIiIiAlIGVu
dGl0eV9jb3VudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64060</attachid>
            <date>2010-08-10 18:01:04 -0700</date>
            <delta_ts>2010-08-12 19:51:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43595-20100810180103.patch</filename>
            <type>text/plain</type>
            <size>56340</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2Y2UyNTQ3MDdjY2YwYzJkYTJiMGMxZTc5ZDk0ZmFkNzBmOThkYjNlLi4zNzBjNThl
MWU4YjBmYWQ3MjRjMTNiZjQ5ZTY1NzI0Y2ZhNTZlMmRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0wOSAg
SmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVt
IHRlc3QgcmVzdWx0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1l
eHBlY3RlZC1odG1sNS50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQt
aHRtbDUudHh0CmluZGV4IGFjMDE5ZmYyOTMyOTE1Njc3NzY4YzVjYmNkMGIxMDI1Yjc5Njc3MjMu
LjJjYWQ5YTA3MTVjMDVhMmJkMDM2YzA0OTMyZmYzNjM4ZWQ4ZjZlZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dApAQCAtMjEzLDkyICsyMTMs
MTAgQEAgcmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL3NjcmlwdGRh
dGEwMS5kYXQ6IFBBU1MKIAotcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0OgotNwotOQotMTAK
LTExCi0KLVRlc3QgNyBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZsYW5nOyZyYW5nOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICLjgIjjgIkiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18
ICAgPGJvZHk+Ci18ICAgICAi4p+o4p+pIgotCi1UZXN0IDkgb2YgMjQgaW4gcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mSW1hZ2luYXJ5STsKLUdvdDoKLXwgPGh0
bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJkltYWdpbmFyeUk7IgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKFiCIKK3Jlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdDogUEFTUwogCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2Vu
dGl0aWVzMDEuZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVz
dC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRpdGll
czAxLmRhdDoKLTIKLTUKLQotVGVzdCAyIG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRh
dCBmYWlsZWQuIElucHV0OgotRk9PJmd0QkFSCi1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgot
fCAgIDxib2R5PgotfCAgICAgIkZPTyZndEJBUiIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08+QkFSIgotCi1UZXN0IDUgb2YgNjggaW4gcmVz
b3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1JJ20gJm5vdGl0OyBJIHRlbGwg
eW91Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSAm
bm90aXQ7IEkgdGVsbCB5b3UiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiSSdtIMKsaXQ7IEkgdGVsbCB5b3UiCiByZXNvdXJjZXMvZW50aXRpZXMw
Mi5kYXQ6IFBBU1MKIAogcmVzb3VyY2VzL2NvbW1lbnRzMDEuZGF0OiBQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAppbmRleCAxNGQzZWE1NzFkOWY4MDFjMTBiZWQ1
NjdmZWM1YzI3YjEyY2FhZjg5Li5kYmNkZDViN2ZhM2Q1MGY4NjY2OTMzNTE2ODY4NjFkYzExYzdm
ZGY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQKQEAgLTIxMiw5
MiArMjEyLDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9z
Y3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdDoKLTcK
LTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1dGVzdC1jb20uZGF0
IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+
Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxo
ZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQotVGVzdCA5IG9mIDI0IGluIHJlc291
cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJkltYWdpbmFyeUk7Ci1Hb3Q6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZJbWFnaW5hcnlJOyIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLihYgi
CityZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMCBvZiAyNCBpbiBy
ZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZLb3BmOwotR290Ogot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICImS29wZjsiCi1FeHBlY3Rl
ZDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi8J2VgiIKK3Jlc291
cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0IDExIG9mIDI0IGluIHJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJm5vdGludmE7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZub3RpbnZhOyIKLUV4cGVjdGVkOgot
fCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLiiIkiCi1yZXNvdXJjZXMv
ZW50aXRpZXMwMS5kYXQ6Ci0yCi01Ci0KLVRlc3QgMiBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRp
ZXMwMS5kYXQgZmFpbGVkLiBJbnB1dDoKLUZPTyZndEJBUgotR290OgotfCA8aHRtbD4KLXwgICA8
aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJGT08mZ3RCQVIiCi1FeHBlY3RlZDoKLXwgPGh0bWw+
Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9PPkJBUiIKLQotVGVzdCA1IG9mIDY4
IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQuIElucHV0OgotSSdtICZub3RpdDsg
SSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAg
ICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRlbGwgeW91IgogcmVzb3VyY2VzL2Vu
dGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21tZW50czAxLmRhdDogUEFTUwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9BbmRyb2lkLm1rIGIvV2ViQ29yZS9BbmRyb2lkLm1rCmluZGV4IDRi
NTVhNDY0MjY1Yjc3MWEyYWU3ODAwNjY4Zjc1YmRhYzAyN2YzMDIuLjlhYzI3MDE5YzgyYmQ4M2Iz
Zjk2YzdiMTk1YTVmOWNkNjYxNDVjNmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQW5kcm9pZC5tawor
KysgYi9XZWJDb3JlL0FuZHJvaWQubWsKQEAgLTI4NSw2ICsyODUsNyBAQCBMT0NBTF9TUkNfRklM
RVMgOj0gJChMT0NBTF9TUkNfRklMRVMpIFwKIAlodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
LmNwcCBcCiAJaHRtbC9MZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwIFwKIAlodG1sL0hUTUxW
aWV3U291cmNlRG9jdW1lbnQuY3BwIFwKKwlodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmNwcCBc
CiAJaHRtbC9JbWFnZURhdGEuY3BwIFwKIAlodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAgXAog
CWh0bWwvTGVnYWN5UHJlbG9hZFNjYW5uZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDY0ZDEyZWQ5YzFiYjU4
OWEyODg2OWNkNGQwYjY1ODg4MzhmZjE2ZGEuLmUxOTFkYTc5YWNlNGU1MTg3MDU1YzIwYzg0Mjdh
MjU0MmY1MTcyZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTAzNyw2ICsxMDM3LDcgQEAgU0VUKFdlYkNvcmVfU09V
UkNFUwogICAgIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcAogICAgIGh0bWwvSFRN
TFVMaXN0RWxlbWVudC5jcHAKICAgICBodG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCisg
ICAgaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKICAgICBodG1sL0ltYWdlRGF0YS5jcHAK
ICAgICBodG1sL0ltYWdlUmVzaXplclRocmVhZC5jcHAKICAgICBodG1sL0xhYmVsc05vZGVMaXN0
LmNwcApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlMzRhMzZkZDY4MzBiMWVhNzY2YzlhZDk3MGIzY2U0OTI3NjdiN2ZjLi5hMDRkMzRkZjhh
YTk3MGM4N2VkNTQ5MjQzM2M4MTFiYjJiY2Y3ZDA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDc0IEBACiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1h
dGhNTCBlbnRpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDM1OTUKKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhlIEhUTUw1IGVudGl0eSBwYXJz
aW5nIGFsZ29yaXRobSByZXF1aXJlIHJlZmFjdG9yaW5nIGhvdworICAgICAgICB3ZSBzZWFyY2gg
Zm9yIGVudGl0eSBuYW1lcy4gIEluc3RlYWQgb2YgdXNpbmcgYSBwZXJmZWN0IGhhc2gsIHdlIG5v
dworICAgICAgICB1c2UgYSBzb3J0ZWQgbGlzdC4gIEFzIHdlIGFkdmFuY2UgdGhyb3VnaCB0aGUg
aW5wdXQsIHdlIHdhbGsgZG93biBhCisgICAgICAgIGJpbmFyeSBzZWFyY2ggb2YgdGhlIHRhYmxl
IGxvb2tpbmcgZm9yIGFuIGVudGl0eS4KKworICAgICAgICBVc2luZyB0aGlzIGRhdGEgc3RydWN0
dXJlIGxldHMgdXMga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZSBjdXJyZW50CisgICAgICAgIHN0
cmluZyBpcyBhIHByZWZpeCBvZiBhbiBleGlzdGluZyBlbnRpdHksIHdoaWNoIHdlIG5lZWQgZm9y
IHRoZQorICAgICAgICBhbGdvcml0aG0uICBJbiBhIGZ1dHVyZSBwYXRjaCwgSSBwbGFuIHRvIGFk
ZCBzb21lIGluZGljaWVzIHRvIHRoZQorICAgICAgICB0YWJsZSwgd2hpY2ggc2hvdWxkIGxldCB1
cyBuYXJyb3cgZG93biB0aGUgcmFuZ2Ugb2YgaW50ZXJlc3RpbmcgZW50cmllcworICAgICAgICBt
b3JlIHF1aWNrbHkuCisKKyAgICAgICAgVGhlIG9uZSBuYXN0eSBwaWVjZSBvZiB0aGUgYWxnb3Jp
dGhtIGlzIGlmIHdlIHdhbGsgdG9vIGZhciBkb3duIHRoZQorICAgICAgICBpbnB1dCBhbmQgd2Ug
bmVlZCB0byBiYWNrIHVwIHRvIGEgcHJldmlvdXMgbWF0Y2guICBJbiB0aGlzIHBhdGNoLCB3ZQor
ICAgICAgICBhY2NvbXBsaXNoIHRoaXMgYnkgcmV3aW5kaW5nIHRoZSBpbnB1dCBhbmQgY29uc3Vt
aW5nIGEga25vd24gbnVtYmVyIG9mCisgICAgICAgIGNoYXJhY3RlcnMgdG8gcmVzeW5jIHRoZSBz
b3VyY2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVIVE1MRW50aXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5
U2VhcmNoOjpIVE1MRW50aXR5U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlT
ZWFyY2g6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6Zmlu
ZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZSk6CisgICAgICAgICog
aHRtbC9IVE1MRW50aXR5U2VhcmNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVu
dGl0eVNlYXJjaDo6aXNFbnRpdHlQcmVmaXgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0
eVNlYXJjaDo6Y3VycmVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFy
Y2g6Omxhc3RNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjopOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6ZmFpbCk6CisgICAgICAgICogaHRt
bC9IVE1MRW50aXR5VGFibGUuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5
VGFibGVFbnRyeTo6bGFzdENoYXJhY3Rlcik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQb3J0IHZpZXctc291cmNlIHRvIG5ldyBwYXJzZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNzQ2CisKKyAgICAgICAgVGhpcyBw
YXRjaCBoYXMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgd29ya2luZyBpbiB0aGUgb2xkIGRlc2ln
biBvZgorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhlIHZpZXctc291cmNlIHZpZXcgZnJvbSB0aGUg
dG9rZW4gc3RyZWFtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWV3U291
cmNlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVu
dDo6Y3JlYXRlUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1l
bnQ6OmFkZFZpZXdTb3VyY2VUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJj
ZURvY3VtZW50Ojpwcm9jZXNzQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vzc0NvbW1lbnRUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50Ojpwcm9jZXNzRG9jdHlwZVRva2VuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NUYWdUb2tlbik6Cisg
ICAgICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9M
ZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5SFRN
TERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzRG9jdHlwZVRva2VuKToKKworMjAxMC0wOC0wOSAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIFJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIEhU
TUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Mzc0MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBhYmEwZmYxMWE4NDg5YTRkMDFjMTIy
ODg0NTgwZTdhOWU5ZDEzOTVhLi5hNzQ1ODBiZDczOGQ4ZDgzMDAxODA5ZTFjYjgxZTBmNzI5MDc1
ZWIwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTE1NTAsNiArMTU1MCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxWaWV3
U291cmNlRG9jdW1lbnQuY3BwIFwKIAlXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oIFwKKwlXZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIFwKKwlXZWJDb3Jl
L2h0bWwvSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlRGF0YS5j
cHAgXAogCVdlYkNvcmUvaHRtbC9JbWFnZURhdGEuaCBcCiAJV2ViQ29yZS9odG1sL0ltYWdlUmVz
aXplclRocmVhZC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiOTgxNGI3M2Q3NDYxYmViZWRhNTM0MDFhMzg4MDBiOGUy
MjYzMTg4Li41NTdhN2YxZjQ5NGQxNjhhYTlmNTk5MGJiNmJmNzUxYjkyYWI2M2Y0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTcyMCw2ICsxNzIwLDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxWaWRlb0VsZW1lbnQuaCcs
CiAgICAgICAgICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwv
SFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUxWaWV3U291
cmNlUGFyc2VyLmgnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9JbWFnZURhdGEuaCcsCiAgICAgICAgICAgICAnaHRtbC9JbWFnZVJlc2l6ZXJU
aHJlYWQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDM1NDQ1NzlmNTc2Y2JjYTEyN2Y3ZjFiMjcyNjUzZDgyNmU1ODI0ZTQu
LmI1N2U1NmVmNjJkYzEzMzkwOTYzZWYyMmU1NjQ1NzE5OTM4M2Y0NjAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNzMzLDYgKzcz
Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNw
cCBcCiAgICAgaHRtbC9IVE1MVUxpc3RFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmNwcCBcCisgICAgaHRtbC9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgXAog
ICAgIGh0bWwvSW1hZ2VEYXRhLmNwcCBcCiAgICAgaHRtbC9JbWFnZVJlc2l6ZXJUaHJlYWQuY3Bw
IFwKICAgICBodG1sL0xhYmVsc05vZGVMaXN0LmNwcCBcCkBAIC0xNDk0LDYgKzE0OTUsNyBAQCBI
RUFERVJTICs9IFwKICAgICBodG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBcCiAgICAgaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmggXAogICAgIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oIFwKKyAg
ICBodG1sL0hUTUxWaWV3U291cmNlUGFyc2VyLmggXAogICAgIGh0bWwvSW1hZ2VEYXRhLmggXAog
ICAgIGh0bWwvSW1hZ2VSZXNpemVyVGhyZWFkLmggXAogICAgIGh0bWwvTGFiZWxzTm9kZUxpc3Qu
aCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBjYTkwZGY0MjZlMWFl
MTJlYjgwMTBiNzIyZTJhODlmOGU3MmE5MDhlLi43YmRhZTZjOWZhN2Q4M2YzNmIyOWUwMjViZWE3
ZWM5NTYxNDUwMTViIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQw
ODczLDYgKzQwODczLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVmll
d1NvdXJjZVBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZURhdGEuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2M2N2I2ZDg3
MWE4YThiNTA4YTNjODcwOTY3YTA4MzRjNWU2ZDBhYS4uODI5OTNlYjc5YzBhY2JlNGRhMWFkNGVj
NzVjYThkYmQ0NWEwOTdlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI2NTYsNiArMjY1NiwxMCBAQAogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0Mg
LyogUG9saWN5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmNwcCAqLzsgfTsKIAkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTcwQzRGRTMxMjExMjY2
MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxF
bnRpdHlTZWFyY2guY3BwICovOyB9OworCQk5NzBDNEZFNDEyMTEyNjYyMDBDM0QzOTMgLyogSFRN
TEVudGl0eVNlYXJjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTcwQzRGRTAxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLzsg
fTsKKwkJOTcwQzRGRTUxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZFMTEyMTEy
NjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLzsgfTsKKwkJOTcwQzRGRTYxMjEx
MjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxF
bnRpdHlUYWJsZS5oICovOyB9OwogCQk5NzE5QUYwMDExRDA5RjJDMDBENDU4MzEgLyogSFRNTElu
cHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5NzE5QUVGRjExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi87IH07CiAJ
CTk3Mzg4OUEwMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzM4ODk5RTExNkVBOURDMDBB
REYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovOyB9OwogCQk5NzM4ODlBMTExNkVBOURDMDBB
REYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlGMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0y
NjY3LDYgKzI2NzEsOCBAQAogCQk5NzZFODk2MTExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0
eVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUxFbnRpdHlQYXJzZXIuaCAqLzsgfTsKIAkJ
OTc5RjQzRDMxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGlyZWN0U2NoZWR1bGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3OUY0M0QxMTA3NUU0NEEw
MDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5jcHAgKi87IH07CiAJCTk3OUY0M0Q0MTA3NUU0
NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc5RjQzRDIxMDc1RTQ0QTAwMDBGODNCIC8qIFJlZGly
ZWN0U2NoZWR1bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJOTdCNzQzMTMxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Qjc0
MzExMTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAgKi87IH07CisJ
CTk3Qjc0MzE0MTIxMEFDRDkwMDgzNkU5QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCNzQzMTIxMjEwQUNE
OTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggKi87IH07CiAJCTk3QzA3ODUwMTE2
NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0MwNzg0RjExNjVENUJFMDAzQTMyRUYgLyogU3VmZml4VHJl
ZS5oICovOyB9OwogCQk5N0RDRTIwMTEwODA3Qzc1MDA1N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdE
Q0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJ
OTdEQ0UyMDIxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0RDRTIwMDEwODA3Qzc1MDA1
N0QzOTQgLyogSGlzdG9yeUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODQ1OCw2ICs4NDY0LDEwIEBACiAJCTk3MDU5OTc0MTA3
RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMg
LyogSFRNTEVudGl0eVNlYXJjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIVE1MRW50aXR5U2VhcmNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTcwQzRGRTAxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEVudGl0eVNlYXJjaC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRh
YmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlU
YWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUyMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEVudGl0eVRhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
MTlBRUZGMTFEMDlGMkMwMEQ0NTgzMSAvKiBIVE1MSW5wdXRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3Mzg4OTlFMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFdyaXRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3Mzg4OTlGMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b2N1bWVudFdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ2OSw2ICs4
NDc5LDggQEAKIAkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUxFbnRpdHlQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEVudGl0eVBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzlGNDNEMTEwNzVFNDRBMDAwMEY4M0IgLyog
UmVkaXJlY3RTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVkaXJlY3RTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NzlGNDNEMjEwNzVFNDRBMDAwMEY4M0IgLyogUmVkaXJlY3RTY2hlZHVsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVkaXJlY3RTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTdCNzQzMTExMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291
cmNlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxW
aWV3U291cmNlUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCNzQz
MTIxMjEwQUNEOTAwODM2RTlDIC8qIEhUTUxWaWV3U291cmNlUGFyc2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxWaWV3U291cmNlUGFyc2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3QzA3ODRGMTE2NUQ1QkUwMDNBMzJFRiAvKiBTdWZmaXhUcmVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1ZmZpeFRyZWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdEQ0UxRkYxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3Rv
cnlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhp
c3RvcnlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdEQ0Uy
MDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhpc3RvcnlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMzk3MSw2ICsxMzk4MywxMCBAQAogCQkJCTg1OTEyODc5MEFCMjIyRUMw
MDIwMjI2NSAvKiBIVE1MRW1iZWRFbGVtZW50LmlkbCAqLywKIAkJCQk5NzZFODk1RTExQzBDQTNB
MDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5jcHAgKi8sCiAJCQkJOTc2RTg5NUYxMUMwQ0Ez
QTAwRUE5Q0E5IC8qIEhUTUxFbnRpdHlQYXJzZXIuaCAqLywKKwkJCQk5NzBDNEZERjEyMTEyNjYy
MDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5jcHAgKi8sCisJCQkJOTcwQzRGRTAxMjExMjY2
MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLywKKwkJCQk5NzBDNEZFMTEyMTEyNjYy
MDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywKKwkJCQk5NzBDNEZFMjEyMTEyNjYy
MDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmggKi8sCiAJCQkJQTgxMzY5QjkwOTczNzRGNTAw
RDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuY3BwICovLAogCQkJCUE4MTM2OUI4MDk3Mzc0
RjUwMEQ3NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50LmggKi8sCiAJCQkJMUFFMkE5RjQwQTFD
REE1NzAwQjQyQjI1IC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuaWRsICovLApAQCAtMTQxNjAsNiAr
MTQxNzYsOCBAQAogCQkJCUU0NDYxMzlBMENENjMzMTAwMEZBREE3NSAvKiBIVE1MVmlkZW9FbGVt
ZW50LmlkbCAqLywKIAkJCQlCQ0NENzRFNDBBNEM4RERGMDA1RkRBNkQgLyogSFRNTFZpZXdTb3Vy
Y2VEb2N1bWVudC5jcHAgKi8sCiAJCQkJQkNDRDc0REIwQTRDOEQzNTAwNUZEQTZEIC8qIEhUTUxW
aWV3U291cmNlRG9jdW1lbnQuaCAqLywKKwkJCQk5N0I3NDMxMTEyMTBBQ0Q5MDA4MzZFOUMgLyog
SFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwICovLAorCQkJCTk3Qjc0MzEyMTIxMEFDRDkwMDgzNkU5
QyAvKiBIVE1MVmlld1NvdXJjZVBhcnNlci5oICovLAogCQkJCUE3Nzk3OTEzMEQ2QjlEMEMwMDM4
NTFCOSAvKiBJbWFnZURhdGEuY3BwICovLAogCQkJCUE3Nzk3OTE0MEQ2QjlEMEMwMDM4NTFCOSAv
KiBJbWFnZURhdGEuaCAqLywKIAkJCQlBNzc5NzkxNTBENkI5RDBDMDAzODUxQjkgLyogSW1hZ2VE
YXRhLmlkbCAqLywKQEAgLTIwMTM5LDYgKzIwMTU3LDkgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEy
MDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4
NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Ux
NzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
N0I3NDMxNDEyMTBBQ0Q5MDA4MzZFOUMgLyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk3MEM0RkU0MTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNo
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzBDNEZFNjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVu
dGl0eVRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTYyLDYgKzIyNTgzLDkgQEAKIAkJCQk5
M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5N0I3NDMxMzEyMTBBQ0Q5MDA4MzZFOUMg
LyogSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTcwQzRGRTMx
MjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTcwQzRGRTUxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzU0ZTdlZDUyZDY5
YjkwM2M3NmVmZjQxMmViMDhiYjRmMWMwNWZkZC4uM2Q3MDliNDhkY2U2NWI2NDhmM2NkMTA5MWMz
NjkxMmQ4YmUwYTY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTI5LDEy
ICsyOSwxMyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MUGFyc2VyU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5o
IgogI2luY2x1ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRS
dW5uZXIuaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJIVE1MRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MVmlld1NvdXJjZURvY3VtZW50LmgiCiAjaW5jbHVkZSAi
WFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVu
dGl0eVBhcnNlci5jcHAKaW5kZXggODRiMjAwNjc0NGZmNjc4YjhjMmY2ZDhhMjI5MTdhNTdjYzNm
NDEzYy4uYTJiNmUyODE1ZDdmYTc1OGQ4OGEwZGM4Yzk1YzRhYWQwMzRhMjA5MSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRW50aXR5UGFyc2VyLmNwcApAQCAtMjgsMjEgKzI4LDEwIEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVkZSAiSFRNTEVudGl0
eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAotLy8gVXNlIF9fR05VQ19fIGluc3RlYWQgb2YgUExBVEZPUk0oR0NDKSB0byBz
dGF5IGNvbnNpc3RlbnQgd2l0aCB0aGUgZ3BlcmYgZ2VuZXJhdGVkIGMgZmlsZQotI2lmZGVmIF9f
R05VQ19fCi0vLyBUaGUgbWFpbiBwYXJzZXIgaW5jbHVkZXMgdGhpcyB0b28gc28gd2UgYXJlIGdl
dHRpbmcgdHdvIGNvcGllcyBvZiB0aGUgZGF0YS4gSG93ZXZlciwgdGhpcyB3YXkgdGhlIGNvZGUg
Z2V0cyBpbmxpbmVkLgotI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAiCi0jZWxzZQotLy8g
Tm90IGlubGluZWQgZm9yIG5vbi1HQ0MgY29tcGlsZXJzCi1zdHJ1Y3QgRW50aXR5IHsKLSAgICBj
b25zdCBjaGFyKiBuYW1lOwotICAgIGludCBjb2RlOwotfTsKLWNvbnN0IHN0cnVjdCBFbnRpdHkq
IGZpbmRFbnRpdHkocmVnaXN0ZXIgY29uc3QgY2hhciogc3RyLCByZWdpc3RlciB1bnNpZ25lZCBp
bnQgbGVuKTsKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC0xMTMsNyArMTAyLDYgQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICBF
bnRpdHlTdGF0ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0g
MDsKICAgICBWZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgVmVjdG9y
PGNoYXIsIDEwPiBlbnRpdHlOYW1lOwogCiAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7
CiAgICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKQEAgLTE3Nyw3ICsxNjUsNyBAQCB1bnNpZ25l
ZCBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5v
dWdoQ2hhcmFjdGVycywgVQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7CiAgICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIAor
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9y
KHJlc3VsdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTkyLDQ4ICsxODAs
NDggQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgTmFtZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNv
ZGUgaXMgd3JvbmcuIFdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBlbnRpdHku
Ci0gICAgICAgICAgICAvLyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhlIHNwZWMgYXJlOgot
ICAgICAgICAgICAgLy8gICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwgeW91Ci0gICAgICAg
ICAgICAvLyAgICAgICAgICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8v
ICAgICAgICBJbiB0aGUgZmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRpdHkuICBJbiB0aGUg
c2Vjb25kCi0gICAgICAgICAgICAvLyAgICAgICAgY2FzZSwgIiZub3RpbjsiIGlzIHRoZSBlbnRp
dHkuCi0gICAgICAgICAgICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBpcyBp
bmNvbXBsZXRlLgotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIgOCBiZWxvdyBpcyBi
b2d1cy4KLSAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAmJiBlbnRpdHlOYW1l
LnNpemUoKSA8PSA4KSB7CisgICAgICAgICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJj
aDsKKyAgICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIGNjID0gKnNvdXJjZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJzsnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVudGl0eShlbnRpdHlO
YW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
ZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VS
VCgnOycpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKLSAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVudGl0eVNlYXJjaC5hZHZhbmNl
KGNjKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVudGl0eVNlYXJjaC5pc0VudGl0eVByZWZpeCgp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRp
dHlOYW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9yZSB0aGlzIGVudGl0
eSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlm
IHRoZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUg
ZW50aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hlcmVhcyBvdGhlcgot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAgVGhlIEhUTUw1IHNw
ZWMgaGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMv
Y3VycmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1sI25h
bWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLwotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2VlbXMgdG8gYm9pbCBk
b3duIHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS0+
Y29kZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVudGl0eU5hbWUuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBjb25zdW1l
ZENoYXJhY3RlcnMuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFu
ZEFTU0VSVChjYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RFbm91Z2hDaGFyYWN0
ZXJzID0gc291cmNlLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0
ZXJzKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5IGJlY2F1c2UgdGhl
cmUgbWlnaHQgYmUgYSBsb25nZXIgZW50aXR5CisgICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSBj
b3VsZCBtYXRjaCBpZiB3ZSBoYWQgbW9yZSBkYXRhLgorICAgICAgICAgICAgICAgIHVuY29uc3Vt
ZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2gu
bGFzdE1hdGNoKCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudGl0eVNlYXJjaC5jdXJy
ZW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2Us
IGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGgg
IT0gZW50aXR5U2VhcmNoLmN1cnJlbnRMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIFdl
J3ZlIGNvbnN1bWVkIHRvbyBtYW55IGNoYXJhY3RlcnMuICBXZSBuZWVkIHRvIHdhbGsgdGhlCisg
ICAgICAgICAgICAgICAgLy8gc291cmNlIGJhY2sgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHdlIGhh
ZCBjb25zdW1lZCBhbgorICAgICAgICAgICAgICAgIC8vIGFjdHVhbCBlbnRpdHkuCisgICAgICAg
ICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7
CisgICAgICAgICAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgY29uc3QgaW50IGxlbmd0aCA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+bGVuZ3Ro
OworICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyKiByZWZlcmVuY2UgPSBlbnRpdHlTZWFyY2gu
bGFzdE1hdGNoKCktPmVudGl0eTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChyZWZlcmVuY2UsIGNjID09ICpyZWZlcmVuY2Ur
Kyk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOwor
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghc291cmNlLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7
CisgICAgICAgICAgICBpZiAoIWFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyIHx8ICEoaXNBbHBo
YU51bWVyaWMoY2MpIHx8IGNjID09ICc9JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0
eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0
ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjZhM2Q2
ZGU3ZmIyN2ViYjNjODNhYzM5YTFlYTdhNjZlYzE2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJIVE1MRW50aXR5U2VhcmNoLmgiCisKKyNpbmNsdWRlICJIVE1MRW50aXR5
VGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworICAgIAorY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGhhbGZ3YXkoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIGxlZnQsIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCkKK3sKKyAgICByZXR1
cm4gJmxlZnRbKHJpZ2h0IC0gbGVmdCkgLyAyXTsKK30KKworfQorICAgIAorSFRNTEVudGl0eVNl
YXJjaDo6SFRNTEVudGl0eVNlYXJjaCgpCisgICAgOiBtX2N1cnJlbnRMZW5ndGgoMCkKKyAgICAs
IG1fY3VycmVudFZhbHVlKDApCisgICAgLCBtX2xhc3RNYXRjaCgwKQorICAgICwgbV9zdGFydChI
VE1MRW50aXR5VGFibGU6OnN0YXJ0KCkpCisgICAgLCBtX2VuZChIVE1MRW50aXR5VGFibGU6OmVu
ZCgpKQoreworfQorCitIVE1MRW50aXR5U2VhcmNoOjpDb21wYXJlUmVzdWx0IEhUTUxFbnRpdHlT
ZWFyY2g6OmNvbXBhcmUoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVudHJ5LCBVQ2hhciBu
ZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGlmIChlbnRyeS0+bGVuZ3RoIDwgbV9jdXJyZW50
TGVuZ3RoICsgMSkKKyAgICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICBVQ2hhciBlbnRyeU5leHRD
aGFyYWN0ZXIgPSBlbnRyeS0+ZW50aXR5W21fY3VycmVudExlbmd0aF07CisgICAgaWYgKGVudHJ5
TmV4dENoYXJhY3RlciA9PSBuZXh0Q2hhcmFjdGVyKQorICAgICAgICByZXR1cm4gUHJlZml4Owor
ICAgIHJldHVybiBlbnRyeU5leHRDaGFyYWN0ZXIgPCBuZXh0Q2hhcmFjdGVyID8gQmVmb3JlIDog
QWZ0ZXI7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNo
OjpmaW5kU3RhcnQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25zdCBIVE1M
RW50aXR5VGFibGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAg
IHJldHVybiBsZWZ0OworICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCBu
ZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJu
IGxlZnQ7CisgICAgaWYgKHJlc3VsdCA9PSBBZnRlcikKKyAgICAgICAgcmV0dXJuIHJpZ2h0Owor
ICAgIHdoaWxlIChsZWZ0ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0IEhUTUxFbnRpdHlU
YWJsZUVudHJ5KiBwcm9iZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAgICAgICByZXN1bHQg
PSBjb21wYXJlKHByb2JlLCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBC
ZWZvcmUpCisgICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBBZnRlciB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAg
ICAgICAgIHJpZ2h0ID0gcHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQg
KyAxID09IHJpZ2h0KTsKKyAgICByZXR1cm4gcmlnaHQ7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlU
YWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kRW5kKFVDaGFyIG5leHRDaGFyYWN0ZXIp
IGNvbnN0Cit7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0
OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlm
IChsZWZ0ID09IHJpZ2h0KQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgQ29tcGFyZVJlc3Vs
dCByZXN1bHQgPSBjb21wYXJlKHJpZ2h0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0
ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIGlmIChyZXN1bHQgPT0gQmVm
b3JlKQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkg
eworICAgICAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxl
ZnQsIHJpZ2h0KTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rl
cik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gQWZ0ZXIpCisgICAgICAgICAgICByaWdodCA9IHBy
b2JlOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVmb3Jl
IHx8IHJlc3VsdCA9PSBQcmVmaXgpOworICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAg
ICB9CisgICAgfQorICAgIEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIGxl
ZnQ7Cit9CisKK3ZvaWQgSFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZShVQ2hhciBuZXh0Q2hhcmFj
dGVyKQoreworICAgIEFTU0VSVChpc0VudGl0eVByZWZpeCgpKTsKKyAgICBpZiAoIW1fY3VycmVu
dExlbmd0aCkgeworICAgICAgICBtX3N0YXJ0ID0gSFRNTEVudGl0eVRhYmxlOjpzdGFydChuZXh0
Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9lbmQgPSBIVE1MRW50aXR5VGFibGU6OmVuZChuZXh0Q2hh
cmFjdGVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX3N0YXJ0ID0gZmluZFN0YXJ0KG5leHRD
aGFyYWN0ZXIpOworICAgICAgICBtX2VuZCA9IGZpbmRFbmQobmV4dENoYXJhY3Rlcik7CisgICAg
ICAgIGlmIChtX3N0YXJ0ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3Rl
cikgIT0gUHJlZml4KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoKTsKKyAgICB9CisgICAgKytt
X2N1cnJlbnRMZW5ndGg7CisgICAgaWYgKG1fc3RhcnQtPmxlbmd0aCAhPSBtX2N1cnJlbnRMZW5n
dGgpIHsKKyAgICAgICAgbV9jdXJyZW50VmFsdWUgPSAwOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fbGFzdE1hdGNoID0gbV9zdGFydDsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IG1fbGFz
dE1hdGNoLT52YWx1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRp
dHlTZWFyY2guaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTU3ODU5ZDRlYmNjZDJhMTJiMDNiZGUwZjhjZjEyODIzOTRkYmNjOQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRN
TEVudGl0eVNlYXJjaF9oCisjZGVmaW5lIEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVu
dGl0eVRhYmxlRW50cnk7CisKK2NsYXNzIEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAg
IEhUTUxFbnRpdHlTZWFyY2goKTsKKworICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisKKyAgICBi
b29sIGlzRW50aXR5UHJlZml4KCkgY29uc3QgeyByZXR1cm4gISFtX3N0YXJ0OyB9CisgICAgaW50
IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgaW50
IGN1cnJlbnRMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRMZW5ndGg7IH0KKworICAg
IGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBsYXN0TWF0Y2goKSBjb25zdCB7IHJldHVybiBt
X2xhc3RNYXRjaDsgfQorCitwcml2YXRlOgorICAgIGVudW0gQ29tcGFyZVJlc3VsdCB7CisgICAg
ICAgIEJlZm9yZSwKKyAgICAgICAgUHJlZml4LAorICAgICAgICBBZnRlciwKKyAgICB9OworCisg
ICAgQ29tcGFyZVJlc3VsdCBjb21wYXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiwgVUNo
YXIpIGNvbnN0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kU3RhcnQoVUNo
YXIpIGNvbnN0OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kRW5kKFVDaGFy
KSBjb25zdDsKKworICAgIHZvaWQgZmFpbCgpCisgICAgeworICAgICAgICBtX2N1cnJlbnRWYWx1
ZSA9IDA7CisgICAgICAgIG1fc3RhcnQgPSAwOworICAgICAgICBtX2VuZCA9IDA7CisgICAgfQor
CisgICAgaW50IG1fY3VycmVudExlbmd0aDsKKyAgICBpbnQgbV9jdXJyZW50VmFsdWU7CisKKyAg
ICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbV9sYXN0TWF0Y2g7CisgICAgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIG1fZW5kOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRW50aXR5VGFibGUuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNWExYWZkMzE2MWYwZGNhMzRjNTJkMzAxZGNhOWMzOTU5YzcyOTMxCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEhUTUxFbnRpdHlUYWJsZV9oCisjZGVmaW5lIEhUTUxFbnRpdHlUYWJsZV9oCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBIVE1M
RW50aXR5VGFibGVFbnRyeSB7CisgICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0IHsgcmV0
dXJuIGVudGl0eVtsZW5ndGggLSAxXTsgfQorCisgICAgY29uc3QgVUNoYXIqIGVudGl0eTsKKyAg
ICBpbnQgbGVuZ3RoOworICAgIGludCB2YWx1ZTsKK307CisKK2NsYXNzIEhUTUxFbnRpdHlUYWJs
ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFy
dCgpOworICAgIHN0YXRpYyBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW5kKCk7CisKKyAg
ICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHN0YXJ0KFVDaGFyKTsKKyAgICBz
dGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVuZChVQ2hhcik7Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbi5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxUb2tlbi5oCmluZGV4IDI5MjI3Mjc1NTA5YmRmYmFjMjFjYzAwMDdiZDY0ZDcyYTQ3
NjA1Y2YuLmU0MmE4Mjk3YzUwOGFjZDlkYjM0Yjg5MTZiOWU3OTk0YjE2YzRlMTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW4uaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRva2Vu
LmgKQEAgLTY0LDEyICs2NCwyMiBAQCBwdWJsaWM6CiAKICAgICBIVE1MVG9rZW4oKSB7IGNsZWFy
KCk7IH0KIAotICAgIHZvaWQgY2xlYXIoKQorICAgIHZvaWQgY2xlYXIoaW50IHN0YXJ0SW5kZXgg
PSAwKQogICAgIHsKICAgICAgICAgbV90eXBlID0gVW5pbml0aWFsaXplZDsKKyAgICAgICAgbV9y
YW5nZS5tX3N0YXJ0ID0gc3RhcnRJbmRleDsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IHN0YXJ0
SW5kZXg7CiAgICAgICAgIG1fZGF0YS5jbGVhcigpOwogICAgIH0KIAorICAgIGludCBzdGFydElu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX3N0YXJ0OyB9CisgICAgaW50IGVuZEluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5tX2VuZDsgfQorCisgICAgdm9pZCBlbmQoaW50IGVu
ZEluZGV4KQorICAgIHsKKyAgICAgICAgbV9yYW5nZS5tX2VuZCA9IGVuZEluZGV4OworICAgIH0K
KwogICAgIHZvaWQgbWFrZUVuZE9mRmlsZSgpCiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBl
ID09IFVuaW5pdGlhbGl6ZWQpOwpAQCAtMzIxLDYgKzMzMSw5IEBAIHByaXZhdGU6CiAKICAgICBU
eXBlIG1fdHlwZTsKIAorICAgIC8vIFdoaWNoIGNoYXJhY3RlcnMgZnJvbSB0aGUgaW5wdXQgc3Ry
ZWFtIGFyZSByZXByZXNlbnRlZCBieSB0aGlzIHRva2VuLgorICAgIFJhbmdlIG1fcmFuZ2U7CisK
ICAgICAvLyAibmFtZSIgZm9yIERPQ1RZUEUsIFN0YXJ0VGFnLCBhbmQgRW5kVGFnCiAgICAgLy8g
ImNoYXJhY3RlcnMiIGZvciBDaGFyYWN0ZXIKICAgICAvLyAiZGF0YSIgZm9yIENvbW1lbnQKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAppbmRleCBlMWI5NTliZmY1NmQ2ZWQ5
MjNjZDBiMGMzYTcxYTVhYzc1YmEyY2ZhLi5jMzMwYzRkNjllYWVjY2RkMTNkODI4NmU1NWYxMzZk
ZWRlZWFjZGFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuY3BwCkBAIC0z
Niw3ICszNiw5IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5o
IgotI2luY2x1ZGUgIkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUgIkhUTUxU
b2tlbi5oIgorI2luY2x1ZGUgIkhUTUxWaWV3U291cmNlUGFyc2VyLmgiCisjaW5jbHVkZSAiU2Vn
bWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHREb2N1bWVu
dC5oIgogCkBAIC01OCwxMCArNjAsOCBAQCBEb2N1bWVudFBhcnNlciogSFRNTFZpZXdTb3VyY2VE
b2N1bWVudDo6Y3JlYXRlUGFyc2VyKCkKICNpZiBFTkFCTEUoWEhUTUxNUCkKICAgICAgICAgfHwg
bV90eXBlID09ICJhcHBsaWNhdGlvbi92bmQud2FwLnhodG1sK3htbCIKICNlbmRpZgotICAgICAg
ICApIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCByZXNwZWN0IFNldHRpbmdzOjpodG1sNVBh
cnNlckVuYWJsZWQoKQotICAgICAgICByZXR1cm4gbmV3IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNl
cih0aGlzKTsKLSAgICB9CisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIG5ldyBIVE1MVmlld1Nv
dXJjZVBhcnNlcih0aGlzKTsKIAogICAgIHJldHVybiBjcmVhdGVUZXh0RG9jdW1lbnRQYXJzZXIo
dGhpcyk7CiB9CkBAIC0xMDAsMTA3ICsxMDAsOTEgQEAgdm9pZCBIVE1MVmlld1NvdXJjZURvY3Vt
ZW50OjphZGRWaWV3U291cmNlVGV4dChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgYWRkVGV4dCh0
ZXh0LCAiIik7CiB9CiAKLXZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkVmlld1NvdXJj
ZVRva2VuKFRva2VuKiB0b2tlbikKK3ZvaWQgSFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6YWRkU291
cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2VuKQogewogICAgIGlmICgh
bV9jdXJyZW50KQogICAgICAgICBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKIAotICAgIGlmICh0
b2tlbi0+dGFnTmFtZSA9PSB0ZXh0QXRvbSkKLSAgICAgICAgYWRkVGV4dCh0b2tlbi0+dGV4dC5n
ZXQoKSwgIiIpOwotICAgIGVsc2UgaWYgKHRva2VuLT50YWdOYW1lID09IGNvbW1lbnRBdG9tKSB7
Ci0gICAgICAgIGlmICh0b2tlbi0+YmVnaW5UYWcpIHsKLSAgICAgICAgICAgIG1fY3VycmVudCA9
IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1jb21tZW50Iik7Ci0gICAgICAgICAg
ICBhZGRUZXh0KFN0cmluZygiPCEtLSIpICsgdG9rZW4tPnRleHQuZ2V0KCkgKyAiLS0+IiwgIndl
YmtpdC1odG1sLWNvbW1lbnQiKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8v
IEhhbmRsZSB0aGUgdGFnLgotICAgICAgICBTdHJpbmcgY2xhc3NOYW1lU3RyID0gIndlYmtpdC1o
dG1sLXRhZyI7Ci0gICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNsYXNz
TmFtZVN0cik7Ci0KLSAgICAgICAgU3RyaW5nIHRleHQgPSAiPCI7Ci0gICAgICAgIGlmICghdG9r
ZW4tPmJlZ2luVGFnKQotICAgICAgICAgICAgdGV4dCArPSAiLyI7Ci0gICAgICAgIHRleHQgKz0g
dG9rZW4tPnRhZ05hbWU7Ci0gICAgICAgIFZlY3RvcjxVQ2hhcj4qIGd1aWRlID0gdG9rZW4tPm1f
c291cmNlSW5mby5nZXQoKTsKLSAgICAgICAgaWYgKCFndWlkZSB8fCAhZ3VpZGUtPnNpemUoKSkK
LSAgICAgICAgICAgIHRleHQgKz0gIj4iOwotCi0gICAgICAgIGFkZFRleHQodGV4dCwgY2xhc3NO
YW1lU3RyKTsKLQotICAgICAgICAvLyBXYWxrIG91ciBndWlkZSBzdHJpbmcgdGhhdCB0ZWxscyB1
cyB3aGVyZSBhdHRyaWJ1dGUgbmFtZXMvdmFsdWVzIHNob3VsZCBnby4KLSAgICAgICAgaWYgKGd1
aWRlICYmIGd1aWRlLT5zaXplKCkpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBndWlk
ZS0+c2l6ZSgpOwotICAgICAgICAgICAgdW5zaWduZWQgYmVnaW4gPSAwOwotICAgICAgICAgICAg
dW5zaWduZWQgY3VyckF0dHIgPSAwOwotICAgICAgICAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gYXR0
ciA9IDA7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9PSAnYScgfHwgZ3VpZGUtPmF0KGkp
ID09ICd4JyB8fCBndWlkZS0+YXQoaSkgPT0gJ3YnKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEFkZCBpbiB0aGUgc3RyaW5nLgotICAgICAgICAgICAgICAgICAgICBhZGRUZXh0KFN0cmluZyhz
dGF0aWNfY2FzdDxVQ2hhcio+KGd1aWRlLT5kYXRhKCkpICsgYmVnaW4sIGkgLSBiZWdpbiksIGNs
YXNzTmFtZVN0cik7Ci0KLSAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSBpICsgMTsKLQotICAg
ICAgICAgICAgICAgICAgICBpZiAoZ3VpZGUtPmF0KGkpID09ICdhJykgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRva2VuLT5hdHRycyAmJiBjdXJyQXR0ciA8IHRva2VuLT5hdHRycy0+
bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IHRva2VuLT5hdHRy
cy0+YXR0cmlidXRlSXRlbShjdXJyQXR0cisrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyID0gMDsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoYXR0cikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGd1aWRlLT5hdChpKSA9PSAnYScpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTdHJpbmcgbmFtZSA9IGF0dHItPm5hbWUoKS50b1N0cmluZygpOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndl
YmtpdC1odG1sLWF0dHJpYnV0ZS1uYW1lIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWRkVGV4dChuYW1lLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ICE9IG1fdGJvZHkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX2N1
cnJlbnQtPnBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVl
KCkuc3RyaW5nKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGln
bm9yaW5nIGNhc2Ugc2luY2UgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyIGRvZXNuJ3QKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBsb3dlciBuYW1lcyB3aGVuIHBhc3NpbmcgaW4gdG9r
ZW5zIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSFRNTFZpZXdTb3VyY2VEb2N1
bWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
dG9rZW4tPnRhZ05hbWUsICJiYXNlIikgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFtZSgp
LmxvY2FsTmFtZSgpLCAiaHJlZiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENhdGNoIHRoZSBocmVmIGF0dHJpYnV0ZSBpbiB0aGUgYmFzZSBlbGVtZW50LgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJdCB3aWxsIGJlIHVzZWQgZm9yIHJlbmRlcmlu
ZyBhbmNob3JzIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnkg
YWRkTGluaygpIGJlbG93LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCYXNl
RWxlbWVudFVSTChLVVJMKHVybCgpLCB2YWx1ZSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBYTUwgY291bGQg
dXNlIG5hbWVzcGFjZSBwcmVmaXhlcyBhbmQgY29uZnVzZSB1cy4KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgp
LCAic3JjIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+bmFtZSgpLmxvY2FsTmFtZSgpLCAi
aHJlZiIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBhZGRM
aW5rKHZhbHVlLCBlcXVhbElnbm9yaW5nQ2FzZSh0b2tlbi0+dGFnTmFtZSwgImEiKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2N1cnJlbnQgPSBhZGRTcGFuV2l0aENsYXNzTmFtZSgid2Via2l0LWh0bWwtYXR0cmli
dXRlLXZhbHVlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVGV4dCh2YWx1ZSwg
IndlYmtpdC1odG1sLWF0dHJpYnV0ZS12YWx1ZSIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgIT0gbV90Ym9keSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9jdXJyZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG1fY3VycmVudC0+cGFyZW50
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBBZGQgaW4g
YW55IHN0cmluZyB0aGF0IG1pZ2h0IGJlIGxlZnQuCi0gICAgICAgICAgICBpZiAoYmVnaW4gPCBz
aXplKQotICAgICAgICAgICAgICAgIGFkZFRleHQoU3RyaW5nKHN0YXRpY19jYXN0PFVDaGFyKj4o
Z3VpZGUtPmRhdGEoKSkgKyBiZWdpbiwgc2l6ZSAtIGJlZ2luKSwgY2xhc3NOYW1lU3RyKTsKLQot
ICAgICAgICAgICAgLy8gQWRkIGluIHRoZSBlbmQgdGFnLgotICAgICAgICAgICAgYWRkVGV4dCgi
PiIsIGNsYXNzTmFtZVN0cik7Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJlbnQgPSBtX3Rk
OworICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CisgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5p
dGlhbGl6ZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEhUTUxUb2tlbjo6RE9DVFlQRToKKyAgICAgICAgcHJvY2Vzc0RvY3R5cGVUb2tl
bihzb3VyY2UsIHRva2VuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9rZW46OkVu
ZE9mRmlsZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9rZW46OlN0YXJ0VGFnOgor
ICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6CisgICAgICAgIHByb2Nlc3NUYWdUb2tlbihzb3Vy
Y2UsIHRva2VuKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBIVE1MVG9rZW46OkNvbW1lbnQ6
CisgICAgICAgIHByb2Nlc3NDb21tZW50VG9rZW4oc291cmNlLCB0b2tlbik7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgSFRNTFRva2VuOjpDaGFyYWN0ZXI6CisgICAgICAgIHByb2Nlc3NDaGFy
YWN0ZXJUb2tlbihzb3VyY2UsIHRva2VuKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12
b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9rZW4oRG9j
dHlwZVRva2VuKiBkb2N0eXBlVG9rZW4pCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnBy
b2Nlc3NEb2N0eXBlVG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpCiB7CiAg
ICAgaWYgKCFtX2N1cnJlbnQpCiAgICAgICAgIGNyZWF0ZUNvbnRhaW5pbmdUYWJsZSgpOwogICAg
IG1fY3VycmVudCA9IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKCJ3ZWJraXQtaHRtbC1kb2N0eXBlIik7
Ci0gICAgU3RyaW5nIHRleHQgPSAiPCI7Ci0gICAgdGV4dCArPSBTdHJpbmc6OmFkb3B0KGRvY3R5
cGVUb2tlbi0+bV9zb3VyY2UpOwotICAgIHRleHQgKz0gIj4iOwotICAgIGFkZFRleHQodGV4dCwg
IndlYmtpdC1odG1sLWRvY3R5cGUiKTsKKyAgICBhZGRUZXh0KHNvdXJjZSwgIndlYmtpdC1odG1s
LWRvY3R5cGUiKTsKKyAgICBtX2N1cnJlbnQgPSBtX3RkOworfQorCit2b2lkIEhUTUxWaWV3U291
cmNlRG9jdW1lbnQ6OnByb2Nlc3NUYWdUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRv
a2VuJiB0b2tlbikKK3sKKyAgICBTdHJpbmcgY2xhc3NOYW1lU3RyID0gIndlYmtpdC1odG1sLXRh
ZyI7CisgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoY2xhc3NOYW1lU3RyKTsK
KworICAgIEF0b21pY1N0cmluZyB0YWdOYW1lKHRva2VuLm5hbWUoKS5kYXRhKCksIHRva2VuLm5h
bWUoKS5zaXplKCkpOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIEhUTUxUb2tlbjo6
QXR0cmlidXRlTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHRva2VuLmF0dHJpYnV0ZXMoKS5i
ZWdpbigpOworICAgIHdoaWxlIChpbmRleCA8IHNvdXJjZS5sZW5ndGgoKSkgeworICAgICAgICBp
ZiAoaXRlciA9PSB0b2tlbi5hdHRyaWJ1dGVzKCkuZW5kKCkpIHsKKyAgICAgICAgICAgIC8vIFdl
IHdhbnQgdG8gc2hvdyB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgaW4gdGhlIHRva2VuLgorICAg
ICAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBzb3VyY2UubGVuZ3RoKCks
ICIiKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBzb3VyY2UubGVuZ3RoKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBBdG9taWNTdHJpbmcgbmFtZShp
dGVyLT5tX25hbWUuZGF0YSgpLCBpdGVyLT5tX25hbWUuc2l6ZSgpKTsKKyAgICAgICAgU3RyaW5n
IHZhbHVlKGl0ZXItPm1fdmFsdWUuZGF0YSgpLCBpdGVyLT5tX3ZhbHVlLnNpemUoKSk7IAorCisg
ICAgICAgIGluZGV4ID0gYWRkUmFuZ2Uoc291cmNlLCBpbmRleCwgaXRlci0+bV9uYW1lUmFuZ2Uu
bV9zdGFydCAtIHRva2VuLnN0YXJ0SW5kZXgoKSwgIiIpOworICAgICAgICBpbmRleCA9IGFkZFJh
bmdlKHNvdXJjZSwgaW5kZXgsIGl0ZXItPm1fbmFtZVJhbmdlLm1fZW5kIC0gdG9rZW4uc3RhcnRJ
bmRleCgpLCAid2Via2l0LWh0bWwtYXR0cmlidXRlLW5hbWUiKTsKKworICAgICAgICBpZiAodGFn
TmFtZSA9PSBiYXNlVGFnICYmIG5hbWUgPT0gaHJlZkF0dHIpIHsKKyAgICAgICAgICAgIC8vIENh
dGNoIHRoZSBocmVmIGF0dHJpYnV0ZSBpbiB0aGUgYmFzZSBlbGVtZW50LiBJdCB3aWxsIGJlIHVz
ZWQKKyAgICAgICAgICAgIC8vIGZvciByZW5kZXJpbmcgYW5jaG9ycyBjcmVhdGVkIGJ5IGFkZExp
bmsoKSBiZWxvdy4KKyAgICAgICAgICAgIHNldEJhc2VFbGVtZW50VVJMKEtVUkwodXJsKCksIHZh
bHVlKSk7CisgICAgICAgIH0KKworICAgICAgICBpbmRleCA9IGFkZFJhbmdlKHNvdXJjZSwgaW5k
ZXgsIGl0ZXItPm1fdmFsdWVSYW5nZS5tX3N0YXJ0IC0gdG9rZW4uc3RhcnRJbmRleCgpLCAiIik7
CisKKyAgICAgICAgYm9vbCBpc0xpbmsgPSBuYW1lID09IHNyY0F0dHIgfHwgbmFtZSA9PSBocmVm
QXR0cjsKKyAgICAgICAgaW5kZXggPSBhZGRSYW5nZShzb3VyY2UsIGluZGV4LCBpdGVyLT5tX3Zh
bHVlUmFuZ2UubV9lbmQgLSB0b2tlbi5zdGFydEluZGV4KCksICJ3ZWJraXQtaHRtbC1hdHRyaWJ1
dGUtdmFsdWUiLCBpc0xpbmssIHRhZ05hbWUgPT0gYVRhZyk7CisKKyAgICAgICAgKytpdGVyOwor
ICAgIH0KKyAgICBtX2N1cnJlbnQgPSBtX3RkOworfQorCit2b2lkIEhUTUxWaWV3U291cmNlRG9j
dW1lbnQ6OnByb2Nlc3NDb21tZW50VG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tl
biYpCit7CisgICAgbV9jdXJyZW50ID0gYWRkU3BhbldpdGhDbGFzc05hbWUoIndlYmtpdC1odG1s
LWNvbW1lbnQiKTsKKyAgICBhZGRUZXh0KHNvdXJjZSwgIndlYmtpdC1odG1sLWNvbW1lbnQiKTsK
KyAgICBtX2N1cnJlbnQgPSBtX3RkOworfQorCit2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1lbnQ6
OnByb2Nlc3NDaGFyYWN0ZXJUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJikK
K3sKKyAgICBhZGRUZXh0KHNvdXJjZSwgIiIpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhU
TUxWaWV3U291cmNlRG9jdW1lbnQ6OmFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmluZyYg
Y2xhc3NOYW1lKQpAQCAtMjg3LDYgKzI3MSwyNSBAQCB2b2lkIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQ6OmFkZFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGNsYXNzTmFtZQog
ICAgICAgICBtX2N1cnJlbnQgPSBtX3Rib2R5OwogfQogCitpbnQgSFRNTFZpZXdTb3VyY2VEb2N1
bWVudDo6YWRkUmFuZ2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGludCBzdGFydCwgaW50IGVuZCwg
Y29uc3QgU3RyaW5nJiBjbGFzc05hbWUsIGJvb2wgaXNMaW5rLCBib29sIGlzQW5jaG9yKQorewor
ICAgIEFTU0VSVChzdGFydCA8PSBlbmQpOworICAgIGlmIChzdGFydCA9PSBlbmQpCisgICAgICAg
IHJldHVybiBzdGFydDsKKworICAgIFN0cmluZyB0ZXh0ID0gc291cmNlLnN1YnN0cmluZyhzdGFy
dCwgZW5kIC0gc3RhcnQpOworICAgIGlmICghY2xhc3NOYW1lLmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoaXNMaW5rKQorICAgICAgICAgICAgbV9jdXJyZW50ID0gYWRkTGluayh0ZXh0LCBpc0Fu
Y2hvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY3VycmVudCA9IGFkZFNwYW5XaXRo
Q2xhc3NOYW1lKGNsYXNzTmFtZSk7CisgICAgfQorICAgIGFkZFRleHQodGV4dCwgY2xhc3NOYW1l
KTsKKyAgICBpZiAoIWNsYXNzTmFtZS5pc0VtcHR5KCkgJiYgbV9jdXJyZW50ICE9IG1fdGJvZHkp
CisgICAgICAgIG1fY3VycmVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihtX2N1cnJlbnQtPnBh
cmVudCgpKTsKKyAgICByZXR1cm4gZW5kOworfQorCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxW
aWV3U291cmNlRG9jdW1lbnQ6OmFkZExpbmsoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNo
b3IpCiB7CiAgICAgaWYgKG1fY3VycmVudCA9PSBtX3Rib2R5KQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVmlld1Nv
dXJjZURvY3VtZW50LmgKaW5kZXggY2Y2Y2ZjMWRlZDRlMGZjNWZkYjg3OWU4MDQxN2E3Mjk4YzI1
ZGI5OC4uODgwNTg0ODQ1MWQzYWQwYWRiM2I2MTc5YWNlMmY3MzkzNDU1OTM1OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxWaWV3U291cmNlRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVudC5oCkBAIC0yOSwxMSArMjksOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIERvY3R5cGVUb2tlbjsKIGNsYXNzIEhUTUxUYWJsZUNlbGxF
bGVtZW50OwogY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ7Ci0KLXN0cnVjdCBUb2tlbjsK
K2NsYXNzIEhUTUxUb2tlbjsKIAogY2xhc3MgSFRNTFZpZXdTb3VyY2VEb2N1bWVudCA6IHB1Ymxp
YyBIVE1MRG9jdW1lbnQgewogcHVibGljOgpAQCAtNDIsMjAgKzQwLDI3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlld1NvdXJjZURvY3VtZW50KGZyYW1lLCB1
cmwsIG1pbWVUeXBlKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGRWaWV3U291cmNlVG9rZW4oVG9r
ZW4qKTsgLy8gVXNlZCBieSB0aGUgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLgorICAgIHZvaWQg
YWRkU291cmNlKGNvbnN0IFN0cmluZyYsIEhUTUxUb2tlbiYpOworCisgICAgdm9pZCBhZGRWaWV3
U291cmNlVG9rZW4oSFRNTFRva2VuJik7IC8vIFVzZWQgYnkgdGhlIEhUTUxEb2N1bWVudFBhcnNl
ci4KICAgICB2b2lkIGFkZFZpZXdTb3VyY2VUZXh0KGNvbnN0IFN0cmluZyYpOyAvLyBVc2VkIGJ5
IHRoZSBUZXh0RG9jdW1lbnRQYXJzZXIuCi0gICAgdm9pZCBhZGRWaWV3U291cmNlRG9jdHlwZVRv
a2VuKERvY3R5cGVUb2tlbiopOwogCiBwcml2YXRlOgogICAgIEhUTUxWaWV3U291cmNlRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAv
LyBSZXR1cm5zIExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlciBvciBUZXh0RG9jdW1lbnRQYXJzZXIg
YmFzZWQgb24gbV90eXBlLgorICAgIC8vIFJldHVybnMgSFRNTFZpZXdTb3VyY2VQYXJzZXIgb3Ig
VGV4dERvY3VtZW50UGFyc2VyIGJhc2VkIG9uIG1fdHlwZS4KICAgICB2aXJ0dWFsIERvY3VtZW50
UGFyc2VyKiBjcmVhdGVQYXJzZXIoKTsKIAorICAgIHZvaWQgcHJvY2Vzc0RvY3R5cGVUb2tlbihj
b25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJik7CisgICAgdm9pZCBwcm9jZXNzVGFnVG9r
ZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpOworICAgIHZvaWQgcHJvY2Vzc0Nv
bW1lbnRUb2tlbihjb25zdCBTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJik7CisgICAgdm9pZCBw
cm9jZXNzQ2hhcmFjdGVyVG9rZW4oY29uc3QgU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYpOwor
CiAgICAgdm9pZCBjcmVhdGVDb250YWluaW5nVGFibGUoKTsKICAgICBQYXNzUmVmUHRyPEVsZW1l
bnQ+IGFkZFNwYW5XaXRoQ2xhc3NOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkTGlu
ZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSk7CiAgICAgdm9pZCBhZGRUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOworICAgIGludCBhZGRSYW5nZShjb25z
dCBTdHJpbmcmIHNvdXJjZSwgaW50IHN0YXJ0LCBpbnQgZW5kLCBjb25zdCBTdHJpbmcmIGNsYXNz
TmFtZSwgYm9vbCBpc0xpbmsgPSBmYWxzZSwgYm9vbCBpc0FuY2hvciA9IGZhbHNlKTsKICAgICBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGFkZExpbmsoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNBbmNo
b3IpOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9MZWdh
Y3lIVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVu
dFBhcnNlci5jcHAKaW5kZXggOTgwZDZlZDhlYjE3NTIwNmM4ZmMyNDQ2N2E5YmJlMGM5ODRhNzk3
ZC4uMGQ0ZDYxNTdmMDQ4YjcxZTY3YThiNTgxMjczZTEwYzJlNWI0OWM2NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0xlZ2FjeUhUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTE5MjYsMTEgKzE5MjYsOCBAQCBQ
YXNzUmVmUHRyPE5vZGU+IExlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKCkK
ICAgICBpZiAoIW1fcGFyc2VyU3RvcHBlZCkgewogICAgICAgICBpZiAoTmFtZWROb2RlTWFwKiBt
YXAgPSBtX2N1cnJlbnRUb2tlbi5hdHRycy5nZXQoKSkKICAgICAgICAgICAgIG1hcC0+c2hyaW5r
VG9MZW5ndGgoKTsKLSAgICAgICAgaWYgKGluVmlld1NvdXJjZU1vZGUoKSkKLSAgICAgICAgICAg
IHN0YXRpY19jYXN0PEhUTUxWaWV3U291cmNlRG9jdW1lbnQqPihkb2N1bWVudCgpKS0+YWRkVmll
d1NvdXJjZVRva2VuKCZtX2N1cnJlbnRUb2tlbik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IC8vIHBhc3MgdGhlIHRva2VuIG92ZXIgdG8gdGhlIHBhcnNlciwgdGhlIHBhcnNlciBET0VTIE5P
VCBkZWxldGUgdGhlIHRva2VuCi0gICAgICAgICAgICBuID0gbV90cmVlQnVpbGRlci0+cGFyc2VU
b2tlbigmbV9jdXJyZW50VG9rZW4pOworICAgICAgICAvLyBwYXNzIHRoZSB0b2tlbiBvdmVyIHRv
IHRoZSBwYXJzZXIsIHRoZSBwYXJzZXIgRE9FUyBOT1QgZGVsZXRlIHRoZSB0b2tlbgorICAgICAg
ICBuID0gbV90cmVlQnVpbGRlci0+cGFyc2VUb2tlbigmbV9jdXJyZW50VG9rZW4pOwogICAgIH0K
ICAgICBtX2N1cnJlbnRUb2tlbi5yZXNldCgpOwogCkBAIC0xOTM5LDEwICsxOTM2LDcgQEAgUGFz
c1JlZlB0cjxOb2RlPiBMZWdhY3lIVE1MRG9jdW1lbnRQYXJzZXI6OnByb2Nlc3NUb2tlbigpCiAK
IHZvaWQgTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzRG9jdHlwZVRva2VuKCkKIHsK
LSAgICBpZiAoaW5WaWV3U291cmNlTW9kZSgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVmll
d1NvdXJjZURvY3VtZW50Kj4oZG9jdW1lbnQoKSktPmFkZFZpZXdTb3VyY2VEb2N0eXBlVG9rZW4o
Jm1fZG9jdHlwZVRva2VuKTsKLSAgICBlbHNlCi0gICAgICAgIG1fdHJlZUJ1aWxkZXItPnBhcnNl
RG9jdHlwZVRva2VuKCZtX2RvY3R5cGVUb2tlbik7CisgICAgbV90cmVlQnVpbGRlci0+cGFyc2VE
b2N0eXBlVG9rZW4oJm1fZG9jdHlwZVRva2VuKTsKIH0KIAogTGVnYWN5SFRNTERvY3VtZW50UGFy
c2VyOjp+TGVnYWN5SFRNTERvY3VtZW50UGFyc2VyKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA3MmZjODZiN2QzNDMzZDE3
NzA1NjcwMWRkNTJlMDhhNDIzZjQ0MjdmLi5hNGFhOTI1ZGI2MGUwNWZiNTBmYzFlNmFmMGYyYmJm
NjU3YzI0MTQ1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0aE1MIGVudGl0aWVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU5NQorCisgICAgICAgIEEg
c2NyaXB0IGZvciBnZW5lcmF0aW5nIHRoZSBDKysgc3RhdGUgZGF0YSBzdHJ1Y3R1cmUgZGVzY3Jp
YmluZyBhbGwgdGhlCisgICAgICAgIGVudGl0aWVzIGZyb20gYSBKU09OIGRlc2NyaXB0aW9uLgor
CisgICAgICAgIE5vdGU6IFRoaXMgc2NyaXB0IGlzIG5vdCB5ZXQgaW50ZWdyYXRlZCB3aXRoIHRo
ZSBidWlsZCBzeXN0ZW0sIHNvIHRoaXMKKyAgICAgICAgICAgICAgcGF0Y2ggd2lsbCBub3QgYnVp
bGQhICBPT1BTIQorCisgICAgICAgICogU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGU6
IEFkZGVkLgorCiAyMDEwLTA4LTA5ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2Ny
ZWF0ZS1odG1sLWVudGl0eS10YWJsZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2ZiN2I2Mjk5OTlhM2ZhYzQ2Zjcw
NWNjMjQ0NmQ2NDc0N2I0MWI2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKQEAgLTAsMCArMSwxNjAgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN0cmluZworaW1wb3J0IHdl
YmtpdHB5LnRoaXJkcGFydHkuc2ltcGxlanNvbiBhcyBzaW1wbGVqc29uCisKKworZGVmIGNvbnZl
cnRfZW50aXR5X3RvX2NwcF9uYW1lKGVudGl0eSk6CisgICAgcG9zdGZpeCA9ICJFbnRpdHlOYW1l
IgorICAgIGlmIGVudGl0eVstMV0gPT0gIjsiOgorICAgICAgICByZXR1cm4gIiVzU2VtaWNvbG9u
JXMiICUgKGVudGl0eVs6LTFdLCBwb3N0Zml4KQorICAgIHJldHVybiAiJXMlcyIgJSAoZW50aXR5
LCBwb3N0Zml4KQorCitkZWYgY29udmVydF9lbnRpdHlfdG9fdWNoYXJfYXJyYXkoZW50aXR5KToK
KyAgICByZXR1cm4gInsnJXMnfSIgJSAiJywgJyIuam9pbihlbnRpdHkpCisKK2RlZiBjb252ZXJ0
X3ZhbHVlX3RvX2ludCh2YWx1ZSk6CisgICAgYXNzZXJ0KHZhbHVlWzBdID09ICJVIikKKyAgICBh
c3NlcnQodmFsdWVbMV0gPT0gIisiKQorICAgIHJldHVybiAiMHgiICsgdmFsdWVbMjpdCisKK2Rl
ZiBvZmZzZXRfdGFibGVfZW50cnkob2Zmc2V0KToKKyAgICByZXR1cm4gIiAgICAmc3RhdGljRW50
aXR5VGFibGVbJXNdLCIgJSBvZmZzZXQKKworaHRtbF9lbnRpdHlfbmFtZXNfZmlsZSA9IG9wZW4o
J1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbicpCitlbnRyaWVzID0gc2ltcGxlanNv
bi5sb2FkKGh0bWxfZW50aXR5X25hbWVzX2ZpbGUpCitodG1sX2VudGl0eV9uYW1lc19maWxlLmNs
b3NlKCkKKworZW50cmllcyA9IHNvcnRlZChlbnRyaWVzLCBrZXk9bGFtYmRhIGVudHJ5OiBlbnRy
eVsnZW50aXR5J10pCitlbnRpdHlfY291bnQgPSBsZW4oZW50cmllcykKKworcHJpbnQgIiIiLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8vIFRISVMgRklM
RSBJUyBHRU5FUkFURUQgQlkgV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHkt
dGFibGUKKy8vIERPIE5PVCBFRElUICh1bmxlc3MgeW91IGFyZSBhIG5pbmphKSEKKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisiIiIKKworZm9yIGVudHJ5IGluIGVudHJpZXM6Cisg
ICAgcHJpbnQgImNvbnN0IFVDaGFyICVzRW50aXR5TmFtZVtdID0gJXM7IiAlICgKKyAgICAgICAg
Y29udmVydF9lbnRpdHlfdG9fY3BwX25hbWUoZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgY29u
dmVydF9lbnRpdHlfdG9fdWNoYXJfYXJyYXkoZW50cnlbImVudGl0eSJdKSkKKworcHJpbnQgIiIi
CitIVE1MRW50aXR5VGFibGVFbnRyeSBzdGF0aWNFbnRpdHlUYWJsZVslc10gPSB7IiIiICUgZW50
aXR5X2NvdW50CisKK2luZGV4ID0ge30KK29mZnNldCA9IDAKK2ZvciBlbnRyeSBpbiBlbnRyaWVz
OgorICAgIGxldHRlciA9IGVudHJ5WyJlbnRpdHkiXVswXQorICAgIGlmIG5vdCBpbmRleC5nZXQo
bGV0dGVyKToKKyAgICAgICAgaW5kZXhbbGV0dGVyXSA9IG9mZnNldAorICAgIHByaW50ICcgICAg
eyAlc0VudGl0eU5hbWUsICVzLCAlcyB9LCcgJSAoCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3Rv
X2NwcF9uYW1lKGVudHJ5WyJlbnRpdHkiXSksCisgICAgICAgIGxlbihlbnRyeVsiZW50aXR5Il0p
LAorICAgICAgICBjb252ZXJ0X3ZhbHVlX3RvX2ludChlbnRyeVsidmFsdWUiXSkpCisgICAgb2Zm
c2V0ICs9IDEKKworcHJpbnQgIiIifTsKKyIiIgorCitwcmludCAiY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIHVwcGVyY2FzZU9mZnNldFtdID0geyIKK2ZvciBsZXR0ZXIgaW4gc3RyaW5nLnVw
cGVyY2FzZToKKyAgICBwcmludCBvZmZzZXRfdGFibGVfZW50cnkoaW5kZXhbbGV0dGVyXSkKK3By
aW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFsnYSddKQorcHJpbnQgIiIifTsKKworY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIGxvd2VyY2FzZU9mZnNldFtdID0geyIiIgorZm9yIGxldHRl
ciBpbiBzdHJpbmcubG93ZXJjYXNlOgorICAgIHByaW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRl
eFtsZXR0ZXJdKQorcHJpbnQgb2Zmc2V0X3RhYmxlX2VudHJ5KGVudGl0eV9jb3VudCkKK3ByaW50
ICIiIn07CisKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJs
ZTo6c3RhcnQoVUNoYXIgYykKK3sKKyAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgICAg
ICAgIHJldHVybiB1cHBlcmNhc2VPZmZzZXRbYyAtICdBJ107CisgICAgaWYgKGMgPj0gJ2EnICYm
IGMgPD0gJ3onKQorICAgICAgICByZXR1cm4gbG93ZXJjYXNlT2Zmc2V0W2MgLSAnYSddOworICAg
IHJldHVybiAwOworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRh
YmxlOjplbmQoVUNoYXIgYykKK3sKKyAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpCisgICAg
ICAgIHJldHVybiB1cHBlcmNhc2VPZmZzZXRbYyAtICdBJyArIDFdIC0gMTsKKyAgICBpZiAoYyA+
PSAnYScgJiYgYyA8PSAneicpCisgICAgICAgIHJldHVybiBsb3dlcmNhc2VPZmZzZXRbYyAtICdh
JyArIDFdIC0gMTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIEhUTUxFbnRpdHlUYWJsZTo6c3RhcnQoKQoreworICAgIHJldHVybiAmc3RhdGljRW50aXR5
VGFibGVbMF07Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFi
bGU6OmVuZCgpCit7CisgICAgcmV0dXJuICZzdGF0aWNFbnRpdHlUYWJsZVslcyAtIDFdOworfQor
Cit9CisiIiIgJSBlbnRpdHlfY291bnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64295</attachid>
            <date>2010-08-12 20:48:03 -0700</date>
            <delta_ts>2010-08-12 21:33:28 -0700</delta_ts>
            <desc>compiles on mac, likely needs further tweaks</desc>
            <filename>bug-43595-20100812204756.patch</filename>
            <type>text/plain</type>
            <size>39488</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTVhNjJmNjA5YzI4OWUzZjI1ZTMzN2YxNThkZTVkYjAxMzljZjgwLi42MmNhNjBm
MmEzZjhmYjM1YzUwYjBjYWVkM2I2OGMwOTY0Y2QxNTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0xMiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGxh
bmRpbmcgZ29vZ2xlLWNocm9tZSBsaW51eCA2NCB0ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAyZWIwMWI0Y2JmOGFh
NzYyMzg0YWI1ODEwZjJmMThmNzk5YTI1ZGNmLi44NGM3MjE3NGZkY2UxYmU1M2QxNjhkYTY4MjY2
ZWQyOTIzNGE5ODRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKQEAgLTExOCw5MiArMTE4LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0
OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3Vy
Y2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQot
VGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0
OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5Pgot
fCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwg
ICA8Ym9keT4KLXwgICAgICLihYgiCi0KLVRlc3QgMTAgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgot
fCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNvdXJjZXMvaHRtbDV0ZXN0
LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNv
bS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2VzL2VudGl0aWVzMDEu
ZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZh
aWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCityZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6
IFBBU1MKIAotVGVzdCA1IG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQu
IElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRl
bGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21t
ZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
aW5kZXggOGE4ZjdiZTM4YzY2ZTMxZjdkNWM5MWVhYTg5YjVmODM4ZmEzYTJhOS4uYzlhZTI0NTQ4
MGQ0OWZmNTAyZjcwMzA3MTJjMjRiOGMzMDU1ZTc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
dW5uZXItZXhwZWN0ZWQudHh0CkBAIC0xOTEsOTIgKzE5MSwxMCBAQCByZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMvc2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGlu
IHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7
Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6ji
n6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhl
YWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWIIgotCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRp
dGllczAxLmRhdDoKLTIKLTUKK3Jlc291cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0
IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08m
Z3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9P
Jmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAg
ICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQg
ZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4
cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxp
dDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9lbnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJj
ZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA3NjA4ZThlZWZlMGY2M2NiODFkZDk1ZDBiODk5ZWU4
YmNjNTA4Ny4uZWViMTc2M2ZiZmZhY2I0Yjg2NTExMTE1MjZkZTRmNTVkM2FiMmVkMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTMwNjIs
NiArMzA2Miw3NCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAgICAgSW1wbGVtZW50aW5n
IHRoZSBIVE1MNSBlbnRpdHkgcGFyc2luZyBhbGdvcml0aG0gcmVxdWlyZSByZWZhY3RvcmluZyBo
b3cKKyAgICAgICAgd2Ugc2VhcmNoIGZvciBlbnRpdHkgbmFtZXMuICBJbnN0ZWFkIG9mIHVzaW5n
IGEgcGVyZmVjdCBoYXNoLCB3ZSBub3cKKyAgICAgICAgdXNlIGEgc29ydGVkIGxpc3QuICBBcyB3
ZSBhZHZhbmNlIHRocm91Z2ggdGhlIGlucHV0LCB3ZSB3YWxrIGRvd24gYQorICAgICAgICBiaW5h
cnkgc2VhcmNoIG9mIHRoZSB0YWJsZSBsb29raW5nIGZvciBhbiBlbnRpdHkuCisKKyAgICAgICAg
VXNpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSBsZXRzIHVzIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0
aGUgY3VycmVudAorICAgICAgICBzdHJpbmcgaXMgYSBwcmVmaXggb2YgYW4gZXhpc3RpbmcgZW50
aXR5LCB3aGljaCB3ZSBuZWVkIGZvciB0aGUKKyAgICAgICAgYWxnb3JpdGhtLiAgSW4gYSBmdXR1
cmUgcGF0Y2gsIEkgcGxhbiB0byBhZGQgc29tZSBpbmRpY2llcyB0byB0aGUKKyAgICAgICAgdGFi
bGUsIHdoaWNoIHNob3VsZCBsZXQgdXMgbmFycm93IGRvd24gdGhlIHJhbmdlIG9mIGludGVyZXN0
aW5nIGVudHJpZXMKKyAgICAgICAgbW9yZSBxdWlja2x5LgorCisgICAgICAgIFRoZSBvbmUgbmFz
dHkgcGllY2Ugb2YgdGhlIGFsZ29yaXRobSBpcyBpZiB3ZSB3YWxrIHRvbyBmYXIgZG93biB0aGUK
KyAgICAgICAgaW5wdXQgYW5kIHdlIG5lZWQgdG8gYmFjayB1cCB0byBhIHByZXZpb3VzIG1hdGNo
LiAgSW4gdGhpcyBwYXRjaCwgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlzIGJ5IHJld2luZGlu
ZyB0aGUgaW5wdXQgYW5kIGNvbnN1bWluZyBhIGtub3duIG51bWJlciBvZgorICAgICAgICBjaGFy
YWN0ZXJzIHRvIHJlc3luYyB0aGUgc291cmNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSFRNTEVudGl0eSk6CisgICAgICAgICogaHRtbC9I
VE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50
aXR5U2VhcmNoOjpmaW5kRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmFkdmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVNlYXJjaC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmN1cnJlbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpsYXN0TWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVudGl0eVNlYXJjaDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmZhaWwpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVRhYmxlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVRhYmxlRW50cnk6Omxhc3RDaGFyYWN0ZXIpOgorCisyMDEw
LTA4LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9ydCB2aWV3LXNvdXJjZSB0byBuZXcg
cGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Mzc0NgorCisgICAgICAgIFRoaXMgcGF0Y2ggaGFzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IHdv
cmtpbmcgaW4gdGhlIG9sZCBkZXNpZ24gb2YKKyAgICAgICAgY29uc3RydWN0aW5nIHRoZSB2aWV3
LXNvdXJjZSB2aWV3IGZyb20gdGhlIHRva2VuIHN0cmVhbS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAg
ICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vzc0NoYXJhY3RlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDb21tZW50
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vz
c0RvY3R5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50
Ojpwcm9jZXNzVGFnVG9rZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVU
b2tlbik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZW1vdmUgdHJh
aWxpbmcgd2hpdGVzcGFjZSBpbiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDEKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDM3YzJmMTBkMzNmOGRiZDkyMzhkYmI0ZTI0NWZlZWMzOWI2YzllZGYuLmM1ZGRm
ZjllYWIyYmQ3YTEwYzJhNWM0NzRiZGE1NjdhNWE4YzFiNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTUwNSw3ICs1MDUsNyBAQCBhbGwgOiBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRG9jVHlw
ZVN0cmluZ3MuY3BwIFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKLSAgICBIVE1MRW50
aXR5TmFtZXMuY3BwIFwKKyAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMu
Y3BwIFwKICAgICBXTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIFdNTE5hbWVzLmNwcCBcCkBA
IC02MDAsOCArNjAwLDggQEAgRG9jVHlwZVN0cmluZ3MuY3BwIDogaHRtbC9Eb2NUeXBlU3RyaW5n
cy5ncGVyZiAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAogCiAjIEhUTUwgZW50aXR5IG5h
bWVzCiAKLUhUTUxFbnRpdHlOYW1lcy5jcHAgOiBodG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZiAk
KFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAotCXBlcmwgJChXZWJDb3JlKS9tYWtlLWhhc2gt
dG9vbHMucGwgLiAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitIVE1MRW50
aXR5VGFibGUuY3BwIDogaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbiAkKFdlYkNvcmUpLy4uL1dl
YktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisJcHl0aG9uICQoV2Vi
Q29yZSkvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgJChX
ZWJDb3JlKS9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uID4gSFRNTEVudGl0eVRhYmxlLmNwcAog
CiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDVm
ZjQyNTA3YjYyZGRjNTYwYTg5NGE5ZmUyYjIyOGNmNzFjNDNiYmMuLjI4Njc1MTI2MDlmOTBjYmIz
NWE4YzNiMGNhM2Q0MDZlN2RiYjljZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNDA5MDUsNiArNDA5MDUsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVmlld1NvdXJjZVBhcnNlci5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXEhUTUxWaWV3U291cmNlUGFyc2VyLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEltYWdlRGF0YS5jcHAiDQogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBmOWVkMWI0MzEzOTZiZTBjMWZkODdlMTA3ZDY1MWMxNzJiZjMwMjQzLi43NTBlZDQwMGE4ZGVm
ZDQxNGNlYTk1Y2FjZTIyZjFmYjlmMTQ1MjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMzE4MSw2ICszMTgxLDkgQEAKIAkJQThBNTY0QTYxMURDMEU1
OTAwM0FDMkYwIC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNTY0QTQxMURDMEU1OTAwM0FDMkYw
IC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwICovOyB9OwogCQlBOEE5MDlBQzBDQkNE
NkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBOTA5QUEwQ0JDRDZCNTAw
MjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCAqLzsgfTsKIAkJQThB
OTA5QUQwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBOTA5
QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3Bw
ICovOyB9OworCQlBOEJDMDQ0RTEyMTRFQjJBMDBCNUYxMjIgLyogSFRNTEVudGl0eVNlYXJjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZE
RjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5jcHAgKi87IH07CisJCUE4QkMw
NDRGMTIxNEVCMkIwMEI1RjEyMiAvKiBIVE1MRW50aXR5U2VhcmNoLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMg
LyogSFRNTEVudGl0eVNlYXJjaC5oICovOyB9OworCQlBOEJDMDQ5MjEyMTRGNjk2MDBCNUYxMjIg
LyogSFRNTEVudGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUu
Y3BwICovOyB9OwogCQlBOEJDRkQwNTEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEJDRkQwNDEy
MEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAgKi87IH07CiAJCUE4QzIyODBFMTFENEE1
OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1l
bnRQYXJzZXIuY3BwICovOyB9OwogCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2Rl
ZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1l
bnRQYXJzZXIuaCAqLzsgfTsKQEAgLTg0NzYsNiArODQ3OSwxMCBAQAogCQk5NzA1OTk3NDEwN0Q5
NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVj
a2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8q
IEhUTUxFbnRpdHlTZWFyY2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTEVudGl0eVNlYXJjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3
MEM0RkUwMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTExMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50aXR5VGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzBDNEZFMjEyMTEyNjYyMDBD
M0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhUTUxFbnRpdHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzE5
QUVGRjExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzM4ODk5RjExNkVBOURDMDBBREYzMTMg
LyogRG9jdW1lbnRXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9j
dW1lbnRXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NjEsNiArODg2
OCw3IEBACiAJCUE4QTU2NEE0MTFEQzBFNTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1l
bnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE5
MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFCMENCQ0Q2
QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEJDMDQ5MTEyMTRGNjk2
MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEhUTUxFbnRpdHlUYWJsZS5jcHA7IHBhdGggPSAvYnVpbGQvRGVidWcvRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwogCQlBOEJDRkQwNDEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2VnLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8q
IERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4
OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5NDEsNyArMTA5NDksNiBAQAogCQlFMUZG
NTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHbG9iYWxEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwNkYzRkExMTk4MzA0RDAwOUQ1OUQ2IC8qIERvY1R5cGVT
dHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY1R5cGVT
dHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwNkYzRkIxMTk4MzA3
RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb2xvckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFNDA2
RjQwMjExOTgzMjlBMDA5RDU5RDYgLyogSFRNTEVudGl0eU5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlOYW1lcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTBDMEQ5QTA1ODcwMDMzQ0U5NyAvKiBFbGVtZW50VGlt
ZUNvbnRyb2wuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRUaW1lQ29udHJvbC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTY4MEQ5QTE2NUQwMDMzQ0U5
NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRE9NRWxlbWVudFRpbWVDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudFRpbWVDb250cm9sLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI4OCw3ICsxMjI5NSw3IEBACiAJCQkJRTQwNkYz
RkExMTk4MzA0RDAwOUQ1OUQ2IC8qIERvY1R5cGVTdHJpbmdzLmNwcCAqLywKIAkJCQlBMTdDODEy
MDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJCQlBMTdD
ODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8sCi0JCQkJRTQw
NkY0MDIxMTk4MzI5QTAwOUQ1OUQ2IC8qIEhUTUxFbnRpdHlOYW1lcy5jcHAgKi8sCisJCQkJQThC
QzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8sCiAJCQkJQThE
MDZCMzgwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgKi8sCiAJCQkJQThEMDZCMzcw
QTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oICovLAogCQkJCTkzOEU2NUY2MDlGMDk4NUQw
MDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLApAQCAtMTM5ODYs
NiArMTM5OTMsMTAgQEAKIAkJCQk4NTkxMjg3OTBBQjIyMkVDMDAyMDIyNjUgLyogSFRNTEVtYmVk
RWxlbWVudC5pZGwgKi8sCiAJCQkJOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUxFbnRp
dHlQYXJzZXIuY3BwICovLAogCQkJCTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MRW50
aXR5UGFyc2VyLmggKi8sCisJCQkJOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlTZWFyY2guY3BwICovLAorCQkJCTk3MEM0RkUwMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50
aXR5U2VhcmNoLmggKi8sCisJCQkJOTcwQzRGRTExMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlUYWJsZS5jcHAgKi8sCisJCQkJOTcwQzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlUYWJsZS5oICovLAogCQkJCUE4MTM2OUI5MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MRmllbGRT
ZXRFbGVtZW50LmNwcCAqLywKIAkJCQlBODEzNjlCODA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTEZp
ZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBOUY0MEExQ0RBNTcwMEI0MkIyNSAvKiBIVE1M
RmllbGRTZXRFbGVtZW50LmlkbCAqLywKQEAgLTIwMTU2LDYgKzIwMTY3LDcgQEAKIAkJCQk5N0RE
NEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRUVENTdGRTEyMTRBOUMyMDA3NjU2QkIgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQThCQzA0NEYxMjE0RUIyQjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlT
ZWFyY2guaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1ODIsNiArMjI1OTQsOCBAQAogCQkJCUUxQkU1
MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkVFRDU3RkQxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVCbG9iUmVn
aXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThCQzA0NEUxMjE0RUIyQTAwQjVGMTIyIC8q
IEhUTUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThCQzA0OTIxMjE0RjY5
NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
RW50aXR5UGFyc2VyLmNwcAppbmRleCA2YmVjODE5MGRjODg2Y2MzZTY5ZGY3MWVkMDQwNWZhMTA2
YzBiZTAzLi40ODIyODI3Y2Y0M2M1NDgyMTRhNTQxZGE3ZjM5NjY4Yjg4ZjA5MDAwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbnRpdHlQYXJzZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVkZSAiSFRNTEVudGl0
eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAiCkBAIC0xMDIsNyArMTA0
LDYgQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Us
IGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICBFbnRpdHlTdGF0ZSBlbnRpdHlTdGF0
ZSA9IEluaXRpYWw7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBWZWN0b3I8VUNoYXIs
IDEwPiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRpdHlOYW1l
OwogCiAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CiAgICAgICAgIFVDaGFyIGNjID0g
KnNvdXJjZTsKQEAgLTE2Niw3ICsxNjcsNyBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0eShT
ZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVQogICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7CiAgICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2VQYXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBsZWdhbEVudGl0
eUZvcihyZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTgxLDQ4ICsxODIsNDggQEAgdW5zaWduZWQgY29uc3Vt
ZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJh
Y3RlcnMsIFUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgTmFt
ZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcuIFdlIG5lZWQg
dG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBlbnRpdHkuCi0gICAgICAgICAgICAvLyAgICAg
ICAgVGhlIGV4YW1wbGVzIGZyb20gdGhlIHNwZWMgYXJlOgotICAgICAgICAgICAgLy8gICAgICAg
ICAgICBJJ20gJm5vdGl0OyBJIHRlbGwgeW91Ci0gICAgICAgICAgICAvLyAgICAgICAgICAgIEkn
bSAmbm90aW47IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICBJbiB0aGUgZmlyc3Qg
Y2FzZSwgIiZub3QiIGlzIHRoZSBlbnRpdHkuICBJbiB0aGUgc2Vjb25kCi0gICAgICAgICAgICAv
LyAgICAgICAgY2FzZSwgIiZub3RpbjsiIGlzIHRoZSBlbnRpdHkuCi0gICAgICAgICAgICAvLyBG
SVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBpcyBpbmNvbXBsZXRlLgotICAgICAgICAg
ICAgLy8gRklYTUU6IFRoZSBudW1iZXIgOCBiZWxvdyBpcyBib2d1cy4KLSAgICAgICAgICAgIHdo
aWxlICghc291cmNlLmlzRW1wdHkoKSAmJiBlbnRpdHlOYW1lLnNpemUoKSA8PSA4KSB7CisgICAg
ICAgICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJjaDsKKyAgICAgICAgICAgIHdoaWxl
ICghc291cmNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKLSAg
ICAgICAgICAgICAgICBpZiAoY2MgPT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0
IEVudGl0eSogZW50aXR5ID0gZmluZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFt
ZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnOycpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlO
YW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9yZSB0aGlzIGVudGl0eSwg
Zm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRo
ZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUgZW50
aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hlcmVhcyBvdGhlcgotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAgVGhlIEhUTUw1IHNwZWMg
aGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1sI25hbWVk
LWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2VlbXMgdG8gYm9pbCBkb3du
IHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eS0+Y29k
ZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbnRpdHlTZWFyY2guYWR2YW5jZShjYyk7CisgICAgICAgICAgICAg
ICAgaWYgKCFlbnRpdHlTZWFyY2guaXNFbnRpdHlQcmVmaXgoKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVudGl0eU5hbWUu
YXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBwZW5kKGNj
KTsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBub3RFbm91Z2hDaGFyYWN0ZXJzID0gc291cmNlLmlzRW1wdHko
KTsKKyAgICAgICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgYSBsb25nZXIg
ZW50aXR5CisgICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSBjb3VsZCBtYXRjaCBpZiB3ZSBoYWQg
bW9yZSBkYXRhLgorICAgICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBj
b25zdW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCkpIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoIWVudGl0eVNlYXJjaC5jdXJyZW50VmFsdWUoKSk7CisgICAgICAg
ICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGggIT0gZW50aXR5U2VhcmNoLmN1cnJl
bnRMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN1bWVkIHRvbyBtYW55
IGNoYXJhY3RlcnMuICBXZSBuZWVkIHRvIHdhbGsgdGhlCisgICAgICAgICAgICAgICAgLy8gc291
cmNlIGJhY2sgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHdlIGhhZCBjb25zdW1lZCBhbgorICAgICAg
ICAgICAgICAgIC8vIGFjdHVhbCBlbnRpdHkuCisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hh
cmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgY29u
c3VtZWRDaGFyYWN0ZXJzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0
aCA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+bGVuZ3RoOworICAgICAgICAgICAgICAgIGNv
bnN0IFVDaGFyKiByZWZlcmVuY2UgPSBlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmVudGl0eTsK
KyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X1VOVVNFRChyZWZlcmVuY2UsIGNjID09ICpyZWZlcmVuY2UrKyk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAgICAgICBz
b3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCgh
c291cmNlLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNj
ID0gKnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbnRpdHlTZWFyY2gu
bGFzdE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CisgICAgICAgICAgICBpZiAoIWFk
ZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyIHx8ICEoaXNBbHBoYU51bWVyaWMoY2MpIHx8IGNjID09
ICc9JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+
dmFsdWU7CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRD
aGFyYWN0ZXJzKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVu
dGl0eVNlYXJjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjZhM2Q2ZGU3ZmIyN2ViYjNjODNhYzM5YTFl
YTdhNjZlYzE2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2Vh
cmNoLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MRW50
aXR5U2VhcmNoLmgiCisKKyNpbmNsdWRlICJIVE1MRW50aXR5VGFibGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgeworICAgIAorY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIGhhbGZ3YXkoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQsIGNvbnN0IEhUTUxF
bnRpdHlUYWJsZUVudHJ5KiByaWdodCkKK3sKKyAgICByZXR1cm4gJmxlZnRbKHJpZ2h0IC0gbGVm
dCkgLyAyXTsKK30KKworfQorICAgIAorSFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJj
aCgpCisgICAgOiBtX2N1cnJlbnRMZW5ndGgoMCkKKyAgICAsIG1fY3VycmVudFZhbHVlKDApCisg
ICAgLCBtX2xhc3RNYXRjaCgwKQorICAgICwgbV9zdGFydChIVE1MRW50aXR5VGFibGU6OnN0YXJ0
KCkpCisgICAgLCBtX2VuZChIVE1MRW50aXR5VGFibGU6OmVuZCgpKQoreworfQorCitIVE1MRW50
aXR5U2VhcmNoOjpDb21wYXJlUmVzdWx0IEhUTUxFbnRpdHlTZWFyY2g6OmNvbXBhcmUoY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIGVudHJ5LCBVQ2hhciBuZXh0Q2hhcmFjdGVyKSBjb25zdAor
eworICAgIGlmIChlbnRyeS0+bGVuZ3RoIDwgbV9jdXJyZW50TGVuZ3RoICsgMSkKKyAgICAgICAg
cmV0dXJuIEJlZm9yZTsKKyAgICBVQ2hhciBlbnRyeU5leHRDaGFyYWN0ZXIgPSBlbnRyeS0+ZW50
aXR5W21fY3VycmVudExlbmd0aF07CisgICAgaWYgKGVudHJ5TmV4dENoYXJhY3RlciA9PSBuZXh0
Q2hhcmFjdGVyKQorICAgICAgICByZXR1cm4gUHJlZml4OworICAgIHJldHVybiBlbnRyeU5leHRD
aGFyYWN0ZXIgPCBuZXh0Q2hhcmFjdGVyID8gQmVmb3JlIDogQWZ0ZXI7Cit9CisKK2NvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQoVUNoYXIgbmV4
dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVm
dCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9l
bmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgIHJldHVybiBsZWZ0OworICAgIENv
bXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBp
ZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgaWYgKHJlc3Vs
dCA9PSBBZnRlcikKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIHdoaWxlIChsZWZ0ICsgMSA8
IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9iZSA9IGhh
bGZ3YXkobGVmdCwgcmlnaHQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlKHByb2JlLCBuZXh0
Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAgICAgICBs
ZWZ0ID0gcHJvYmU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9
PSBBZnRlciB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAgICAgICAgIHJpZ2h0ID0gcHJvYmU7
CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICBy
ZXR1cm4gcmlnaHQ7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5
U2VhcmNoOjpmaW5kRW5kKFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAgY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0OworICAgIGNvbnN0IEhUTUxFbnRp
dHlUYWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlmIChsZWZ0ID09IHJpZ2h0KQorICAg
ICAgICByZXR1cm4gcmlnaHQ7CisgICAgQ29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21wYXJlKHJp
Z2h0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAg
cmV0dXJuIHJpZ2h0OworICAgIGlmIChyZXN1bHQgPT0gQmVmb3JlKQorICAgICAgICByZXR1cm4g
bGVmdDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkgeworICAgICAgICBjb25zdCBIVE1M
RW50aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
cmVzdWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChyZXN1
bHQgPT0gQWZ0ZXIpCisgICAgICAgICAgICByaWdodCA9IHByb2JlOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVmb3JlIHx8IHJlc3VsdCA9PSBQcmVmaXgp
OworICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VS
VChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIGxlZnQ7Cit9CisKK3ZvaWQgSFRNTEVu
dGl0eVNlYXJjaDo6YWR2YW5jZShVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIEFTU0VSVChp
c0VudGl0eVByZWZpeCgpKTsKKyAgICBpZiAoIW1fY3VycmVudExlbmd0aCkgeworICAgICAgICBt
X3N0YXJ0ID0gSFRNTEVudGl0eVRhYmxlOjpzdGFydChuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAg
bV9lbmQgPSBIVE1MRW50aXR5VGFibGU6OmVuZChuZXh0Q2hhcmFjdGVyKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBtX3N0YXJ0ID0gZmluZFN0YXJ0KG5leHRDaGFyYWN0ZXIpOworICAgICAgICBt
X2VuZCA9IGZpbmRFbmQobmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChtX3N0YXJ0ID09IG1f
ZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3RlcikgIT0gUHJlZml4KQorICAgICAg
ICAgICAgcmV0dXJuIGZhaWwoKTsKKyAgICB9CisgICAgKyttX2N1cnJlbnRMZW5ndGg7CisgICAg
aWYgKG1fc3RhcnQtPmxlbmd0aCAhPSBtX2N1cnJlbnRMZW5ndGgpIHsKKyAgICAgICAgbV9jdXJy
ZW50VmFsdWUgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGFzdE1hdGNoID0g
bV9zdGFydDsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IG1fbGFzdE1hdGNoLT52YWx1ZTsKK30KKwor
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guaCBiL1dlYkNvcmUv
aHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU3ODU5ZDRlYmNjZDJhMTJiMDNi
ZGUwZjhjZjEyODIzOTRkYmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
RW50aXR5U2VhcmNoLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVNlYXJjaF9oCisjZGVm
aW5lIEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVudGl0eVRhYmxlRW50cnk7CisKK2Ns
YXNzIEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAgIEhUTUxFbnRpdHlTZWFyY2goKTsK
KworICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisKKyAgICBib29sIGlzRW50aXR5UHJlZml4KCkg
Y29uc3QgeyByZXR1cm4gISFtX3N0YXJ0OyB9CisgICAgaW50IGN1cnJlbnRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgaW50IGN1cnJlbnRMZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRMZW5ndGg7IH0KKworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiBsYXN0TWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xhc3RNYXRjaDsgfQorCitwcml2
YXRlOgorICAgIGVudW0gQ29tcGFyZVJlc3VsdCB7CisgICAgICAgIEJlZm9yZSwKKyAgICAgICAg
UHJlZml4LAorICAgICAgICBBZnRlciwKKyAgICB9OworCisgICAgQ29tcGFyZVJlc3VsdCBjb21w
YXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiwgVUNoYXIpIGNvbnN0OworICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kU3RhcnQoVUNoYXIpIGNvbnN0OworICAgIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kRW5kKFVDaGFyKSBjb25zdDsKKworICAgIHZvaWQg
ZmFpbCgpCisgICAgeworICAgICAgICBtX2N1cnJlbnRWYWx1ZSA9IDA7CisgICAgICAgIG1fc3Rh
cnQgPSAwOworICAgICAgICBtX2VuZCA9IDA7CisgICAgfQorCisgICAgaW50IG1fY3VycmVudExl
bmd0aDsKKyAgICBpbnQgbV9jdXJyZW50VmFsdWU7CisKKyAgICBjb25zdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSogbV9sYXN0TWF0Y2g7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1f
c3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fZW5kOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWExYWZkMzE2MWYwZGNh
MzRjNTJkMzAxZGNhOWMzOTU5YzcyOTMxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxFbnRpdHlUYWJsZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUxFbnRpdHlUYWJsZV9oCisj
ZGVmaW5lIEhUTUxFbnRpdHlUYWJsZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBIVE1MRW50aXR5VGFibGVFbnRyeSB7Cisg
ICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIGVudGl0eVtsZW5ndGggLSAx
XTsgfQorCisgICAgY29uc3QgVUNoYXIqIGVudGl0eTsKKyAgICBpbnQgbGVuZ3RoOworICAgIGlu
dCB2YWx1ZTsKK307CisKK2NsYXNzIEhUTUxFbnRpdHlUYWJsZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFydCgpOworICAgIHN0YXRpYyBjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW5kKCk7CisKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIHN0YXJ0KFVDaGFyKTsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0
eVRhYmxlRW50cnkqIGVuZChVQ2hhcik7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY4ZDFk
ODhjMmJkOGFjOTNjZjYyOGQwNjIzYzU4OTc4Mjc0YzE5NTMuLjg1MjFlYWJkN2NiYTU2NTlkMjRi
NGQzMTMxNzE0Zjc4MGEwNDdlZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZwor
KysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOC0xMiAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisK
KyAgICAgICAgQSBzY3JpcHQgZm9yIGdlbmVyYXRpbmcgdGhlIEMrKyBzdGF0ZSBkYXRhIHN0cnVj
dHVyZSBkZXNjcmliaW5nIGFsbCB0aGUKKyAgICAgICAgZW50aXRpZXMgZnJvbSBhIEpTT04gZGVz
Y3JpcHRpb24uCisKKyAgICAgICAgTm90ZTogVGhpcyBzY3JpcHQgaXMgbm90IHlldCBpbnRlZ3Jh
dGVkIHdpdGggdGhlIGJ1aWxkIHN5c3RlbSwgc28gdGhpcworICAgICAgICAgICAgICBwYXRjaCB3
aWxsIG5vdCBidWlsZCEgIE9PUFMhCisKKyAgICAgICAgKiBTY3JpcHRzL2NyZWF0ZS1odG1sLWVu
dGl0eS10YWJsZTogQWRkZWQuCisKIDIwMTAtMDgtMTIgIERhdmlkIExldmluICA8bGV2aW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEJ1aWxkIGJyZWFrIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUxM2IyOWRhNzhiM2Zi
NWViODBmODQ1YmJiMzQ4MDMzMGMzMjBiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCkBAIC0wLDAgKzEsMTczIEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcy5wYXRoCitp
bXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCisKK2ltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNp
bXBsZWpzb24gYXMgc2ltcGxlanNvbgorCisKK2RlZiBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFt
ZShlbnRpdHkpOgorICAgIHBvc3RmaXggPSAiRW50aXR5TmFtZSIKKyAgICBpZiBlbnRpdHlbLTFd
ID09ICI7IjoKKyAgICAgICAgcmV0dXJuICIlc1NlbWljb2xvbiVzIiAlIChlbnRpdHlbOi0xXSwg
cG9zdGZpeCkKKyAgICByZXR1cm4gIiVzJXMiICUgKGVudGl0eSwgcG9zdGZpeCkKKworCitkZWYg
Y29udmVydF9lbnRpdHlfdG9fdWNoYXJfYXJyYXkoZW50aXR5KToKKyAgICByZXR1cm4gInsnJXMn
fSIgJSAiJywgJyIuam9pbihlbnRpdHkpCisKKworZGVmIGNvbnZlcnRfdmFsdWVfdG9faW50KHZh
bHVlKToKKyAgICBhc3NlcnQodmFsdWVbMF0gPT0gIlUiKQorICAgIGFzc2VydCh2YWx1ZVsxXSA9
PSAiKyIpCisgICAgcmV0dXJuICIweCIgKyB2YWx1ZVsyOl0KKworCitkZWYgb2Zmc2V0X3RhYmxl
X2VudHJ5KG9mZnNldCk6CisgICAgcmV0dXJuICIgICAgJnN0YXRpY0VudGl0eVRhYmxlWyVzXSwi
ICUgb2Zmc2V0CisKKworcHJvZ3JhbV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykK
K2lmIGxlbihzeXMuYXJndikgPCAyOgorICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJVc2FnZTog
JXMgSU5QVVRfRklMRSIgJSBwcm9ncmFtX25hbWUKKyAgICBleGl0KDEpCisKK2lucHV0X2ZpbGUg
PSBzeXMuYXJndlsxXQoraHRtbF9lbnRpdHlfbmFtZXNfZmlsZSA9IG9wZW4oaW5wdXRfZmlsZSkK
K2VudHJpZXMgPSBzaW1wbGVqc29uLmxvYWQoaHRtbF9lbnRpdHlfbmFtZXNfZmlsZSkKK2h0bWxf
ZW50aXR5X25hbWVzX2ZpbGUuY2xvc2UoKQorCitlbnRyaWVzID0gc29ydGVkKGVudHJpZXMsIGtl
eT1sYW1iZGEgZW50cnk6IGVudHJ5WydlbnRpdHknXSkKK2VudGl0eV9jb3VudCA9IGxlbihlbnRy
aWVzKQorCitwcmludCAiIiIvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworLy8gVEhJUyBGSUxFIElTIEdFTkVSQVRFRCBCWSBXZWJLaXRUb29scy9TY3JpcHRz
L2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorLy8gRE8gTk9UIEVESVQgKHVubGVzcyB5b3UgYXJl
IGEgbmluamEpIQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVRh
YmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKyIiIgorCitmb3Ig
ZW50cnkgaW4gZW50cmllczoKKyAgICBwcmludCAiY29uc3QgVUNoYXIgJXNFbnRpdHlOYW1lW10g
PSAlczsiICUgKAorICAgICAgICBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRyeVsiZW50
aXR5Il0pLAorICAgICAgICBjb252ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRyeVsiZW50
aXR5Il0pKQorCitwcmludCAiIiIKK0hUTUxFbnRpdHlUYWJsZUVudHJ5IHN0YXRpY0VudGl0eVRh
YmxlWyVzXSA9IHsiIiIgJSBlbnRpdHlfY291bnQKKworaW5kZXggPSB7fQorb2Zmc2V0ID0gMAor
Zm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgbGV0dGVyID0gZW50cnlbImVudGl0eSJdWzBdCisg
ICAgaWYgbm90IGluZGV4LmdldChsZXR0ZXIpOgorICAgICAgICBpbmRleFtsZXR0ZXJdID0gb2Zm
c2V0CisgICAgcHJpbnQgJyAgICB7ICVzRW50aXR5TmFtZSwgJXMsICVzIH0sJyAlICgKKyAgICAg
ICAgY29udmVydF9lbnRpdHlfdG9fY3BwX25hbWUoZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAg
bGVuKGVudHJ5WyJlbnRpdHkiXSksCisgICAgICAgIGNvbnZlcnRfdmFsdWVfdG9faW50KGVudHJ5
WyJ2YWx1ZSJdKSkKKyAgICBvZmZzZXQgKz0gMQorCitwcmludCAiIiJ9OworIiIiCisKK3ByaW50
ICJjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogdXBwZXJjYXNlT2Zmc2V0W10gPSB7IgorZm9y
IGxldHRlciBpbiBzdHJpbmcudXBwZXJjYXNlOgorICAgIHByaW50IG9mZnNldF90YWJsZV9lbnRy
eShpbmRleFtsZXR0ZXJdKQorcHJpbnQgb2Zmc2V0X3RhYmxlX2VudHJ5KGluZGV4WydhJ10pCitw
cmludCAiIiJ9OworCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbG93ZXJjYXNlT2Zmc2V0
W10gPSB7IiIiCitmb3IgbGV0dGVyIGluIHN0cmluZy5sb3dlcmNhc2U6CisgICAgcHJpbnQgb2Zm
c2V0X3RhYmxlX2VudHJ5KGluZGV4W2xldHRlcl0pCitwcmludCBvZmZzZXRfdGFibGVfZW50cnko
ZW50aXR5X2NvdW50KQorcHJpbnQgIiIifTsKKworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVF
bnRyeSogSFRNTEVudGl0eVRhYmxlOjpzdGFydChVQ2hhciBjKQoreworICAgIGlmIChjID49ICdB
JyAmJiBjIDw9ICdaJykKKyAgICAgICAgcmV0dXJuIHVwcGVyY2FzZU9mZnNldFtjIC0gJ0EnXTsK
KyAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpCisgICAgICAgIHJldHVybiBsb3dlcmNhc2VP
ZmZzZXRbYyAtICdhJ107CisgICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJs
ZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OmVuZChVQ2hhciBjKQoreworICAgIGlmIChjID49ICdB
JyAmJiBjIDw9ICdaJykKKyAgICAgICAgcmV0dXJuIHVwcGVyY2FzZU9mZnNldFtjIC0gJ0EnICsg
MV0gLSAxOworICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgcmV0dXJuIGxv
d2VyY2FzZU9mZnNldFtjIC0gJ2EnICsgMV0gLSAxOworICAgIHJldHVybiAwOworfQorCitjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjpzdGFydCgpCit7CisgICAg
cmV0dXJuICZzdGF0aWNFbnRpdHlUYWJsZVswXTsKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxl
RW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6ZW5kKCkKK3sKKyAgICByZXR1cm4gJnN0YXRpY0VudGl0
eVRhYmxlWyVzIC0gMV07Cit9CisKK30KKyIiIiAlIGVudGl0eV9jb3VudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64297</attachid>
            <date>2010-08-12 21:33:46 -0700</date>
            <delta_ts>2010-08-12 21:57:29 -0700</delta_ts>
            <desc>Should fix Qt/Gtk, gyp/chromium was beyond me</desc>
            <filename>bug-43595-20100812213340.patch</filename>
            <type>text/plain</type>
            <size>49876</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTVhNjJmNjA5YzI4OWUzZjI1ZTMzN2YxNThkZTVkYjAxMzljZjgwLi42MmNhNjBm
MmEzZjhmYjM1YzUwYjBjYWVkM2I2OGMwOTY0Y2QxNTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0xMiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGxh
bmRpbmcgZ29vZ2xlLWNocm9tZSBsaW51eCA2NCB0ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAyZWIwMWI0Y2JmOGFh
NzYyMzg0YWI1ODEwZjJmMThmNzk5YTI1ZGNmLi44NGM3MjE3NGZkY2UxYmU1M2QxNjhkYTY4MjY2
ZWQyOTIzNGE5ODRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKQEAgLTExOCw5MiArMTE4LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0
OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3Vy
Y2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQot
VGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0
OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5Pgot
fCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwg
ICA8Ym9keT4KLXwgICAgICLihYgiCi0KLVRlc3QgMTAgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgot
fCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNvdXJjZXMvaHRtbDV0ZXN0
LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNv
bS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2VzL2VudGl0aWVzMDEu
ZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZh
aWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCityZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6
IFBBU1MKIAotVGVzdCA1IG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQu
IElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRl
bGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21t
ZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
aW5kZXggOGE4ZjdiZTM4YzY2ZTMxZjdkNWM5MWVhYTg5YjVmODM4ZmEzYTJhOS4uYzlhZTI0NTQ4
MGQ0OWZmNTAyZjcwMzA3MTJjMjRiOGMzMDU1ZTc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
dW5uZXItZXhwZWN0ZWQudHh0CkBAIC0xOTEsOTIgKzE5MSwxMCBAQCByZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMvc2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGlu
IHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7
Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6ji
n6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhl
YWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWIIgotCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRp
dGllczAxLmRhdDoKLTIKLTUKK3Jlc291cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0
IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08m
Z3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9P
Jmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAg
ICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQg
ZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4
cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxp
dDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9lbnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJj
ZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA3NjA4ZThlZWZlMGY2M2NiODFkZDk1ZDBiODk5ZWU4
YmNjNTA4Ny4uZWViMTc2M2ZiZmZhY2I0Yjg2NTExMTE1MjZkZTRmNTVkM2FiMmVkMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTMwNjIs
NiArMzA2Miw3NCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAgICAgSW1wbGVtZW50aW5n
IHRoZSBIVE1MNSBlbnRpdHkgcGFyc2luZyBhbGdvcml0aG0gcmVxdWlyZSByZWZhY3RvcmluZyBo
b3cKKyAgICAgICAgd2Ugc2VhcmNoIGZvciBlbnRpdHkgbmFtZXMuICBJbnN0ZWFkIG9mIHVzaW5n
IGEgcGVyZmVjdCBoYXNoLCB3ZSBub3cKKyAgICAgICAgdXNlIGEgc29ydGVkIGxpc3QuICBBcyB3
ZSBhZHZhbmNlIHRocm91Z2ggdGhlIGlucHV0LCB3ZSB3YWxrIGRvd24gYQorICAgICAgICBiaW5h
cnkgc2VhcmNoIG9mIHRoZSB0YWJsZSBsb29raW5nIGZvciBhbiBlbnRpdHkuCisKKyAgICAgICAg
VXNpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSBsZXRzIHVzIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0
aGUgY3VycmVudAorICAgICAgICBzdHJpbmcgaXMgYSBwcmVmaXggb2YgYW4gZXhpc3RpbmcgZW50
aXR5LCB3aGljaCB3ZSBuZWVkIGZvciB0aGUKKyAgICAgICAgYWxnb3JpdGhtLiAgSW4gYSBmdXR1
cmUgcGF0Y2gsIEkgcGxhbiB0byBhZGQgc29tZSBpbmRpY2llcyB0byB0aGUKKyAgICAgICAgdGFi
bGUsIHdoaWNoIHNob3VsZCBsZXQgdXMgbmFycm93IGRvd24gdGhlIHJhbmdlIG9mIGludGVyZXN0
aW5nIGVudHJpZXMKKyAgICAgICAgbW9yZSBxdWlja2x5LgorCisgICAgICAgIFRoZSBvbmUgbmFz
dHkgcGllY2Ugb2YgdGhlIGFsZ29yaXRobSBpcyBpZiB3ZSB3YWxrIHRvbyBmYXIgZG93biB0aGUK
KyAgICAgICAgaW5wdXQgYW5kIHdlIG5lZWQgdG8gYmFjayB1cCB0byBhIHByZXZpb3VzIG1hdGNo
LiAgSW4gdGhpcyBwYXRjaCwgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlzIGJ5IHJld2luZGlu
ZyB0aGUgaW5wdXQgYW5kIGNvbnN1bWluZyBhIGtub3duIG51bWJlciBvZgorICAgICAgICBjaGFy
YWN0ZXJzIHRvIHJlc3luYyB0aGUgc291cmNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSFRNTEVudGl0eSk6CisgICAgICAgICogaHRtbC9I
VE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50
aXR5U2VhcmNoOjpmaW5kRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmFkdmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVNlYXJjaC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmN1cnJlbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpsYXN0TWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVudGl0eVNlYXJjaDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmZhaWwpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVRhYmxlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVRhYmxlRW50cnk6Omxhc3RDaGFyYWN0ZXIpOgorCisyMDEw
LTA4LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9ydCB2aWV3LXNvdXJjZSB0byBuZXcg
cGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Mzc0NgorCisgICAgICAgIFRoaXMgcGF0Y2ggaGFzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IHdv
cmtpbmcgaW4gdGhlIG9sZCBkZXNpZ24gb2YKKyAgICAgICAgY29uc3RydWN0aW5nIHRoZSB2aWV3
LXNvdXJjZSB2aWV3IGZyb20gdGhlIHRva2VuIHN0cmVhbS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAg
ICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vzc0NoYXJhY3RlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDb21tZW50
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vz
c0RvY3R5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50
Ojpwcm9jZXNzVGFnVG9rZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVU
b2tlbik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZW1vdmUgdHJh
aWxpbmcgd2hpdGVzcGFjZSBpbiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDEKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDM3YzJmMTBkMzNmOGRiZDkyMzhkYmI0ZTI0NWZlZWMzOWI2YzllZGYuLmM1ZGRm
ZjllYWIyYmQ3YTEwYzJhNWM0NzRiZGE1NjdhNWE4YzFiNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTUwNSw3ICs1MDUsNyBAQCBhbGwgOiBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRG9jVHlw
ZVN0cmluZ3MuY3BwIFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKLSAgICBIVE1MRW50
aXR5TmFtZXMuY3BwIFwKKyAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMu
Y3BwIFwKICAgICBXTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIFdNTE5hbWVzLmNwcCBcCkBA
IC02MDAsOCArNjAwLDggQEAgRG9jVHlwZVN0cmluZ3MuY3BwIDogaHRtbC9Eb2NUeXBlU3RyaW5n
cy5ncGVyZiAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAogCiAjIEhUTUwgZW50aXR5IG5h
bWVzCiAKLUhUTUxFbnRpdHlOYW1lcy5jcHAgOiBodG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZiAk
KFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAotCXBlcmwgJChXZWJDb3JlKS9tYWtlLWhhc2gt
dG9vbHMucGwgLiAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitIVE1MRW50
aXR5VGFibGUuY3BwIDogaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbiAkKFdlYkNvcmUpLy4uL1dl
YktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisJcHl0aG9uICQoV2Vi
Q29yZSkvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgJChX
ZWJDb3JlKS9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uID4gSFRNTEVudGl0eVRhYmxlLmNwcAog
CiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJjYTJhYWUzMGZiOTA5NWY2OWYwZmVlMTg5NmI5ZWNi
ZjdhNDc5OTUuLmNkMDM1ZmU4MDU0N2RkNzJiZWU1MmI1Y2MzNTNlYjRkZWRkMDUyMzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtOTIsNyArOTIsNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRN
TEVsZW1lbnRGYWN0b3J5LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5h
bWVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSFRNTE5hbWVzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwIFwKQEAgLTQzOTMsOCArNDM5Myw4IEBAIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvRG9jVHlwZVN0cmluZ3MuY3BwIDogJChXZWJDb3JlKS9odG1sL0RvY1R5cGVT
dHJpbmdzLmdwZXJmCiAJJChQRVJMKSAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbCAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkgJChXZWJDb3JlKS9odG1sL0RvY1R5cGVTdHJpbmdzLmdwZXJmCiAK
ICMgSFRNTCBlbnRpdHkgbmFtZXMKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5h
bWVzLmNwcCA6ICQoV2ViQ29yZSkvaHRtbC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYgJChXZWJDb3Jl
KS9tYWtlLWhhc2gtdG9vbHMucGwKLQkkKFBFUkwpICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xz
LnBsICQoR0VOU09VUkNFU19XRUJDT1JFKSAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVz
LmdwZXJmCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgOiAkKFdl
YkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmpzb24gJChXZWJDb3JlKS8uLi9XZWJLaXRUb29s
cy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorCSQoUFlUSE9OKSAkKFdlYkNvcmUp
Ly4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlICQoV2ViQ29y
ZSkvaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbiA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9IVE1M
RW50aXR5VGFibGUuY3BwCiAKICMgY29sb3IgbmFtZXMKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJD
b3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGEyOGVl
NWQwNjEwNTlhYmZhNGVmOTE1ODJmM2Y1NzljYTgwZDI5NTQuLjg1ZmE1Yjg0NzY4ZTc3YmI2MDUx
NGFhNjIwZjU3OTNjYzc4YTQ3YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjc2LDkg
KzI3NiwxMCBAQAogCiAgICAgICAgICMgZ3BlcmYgcnVsZQogICAgICAgICAnLi4vaHRtbC9Eb2NU
eXBlU3RyaW5ncy5ncGVyZicsCi0gICAgICAgICcuLi9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVy
ZicsCiAgICAgICAgICcuLi9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYnLAogCisgICAgICAgICcu
Li9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uJywKKwogICAgICAgICAjIGlkbCBydWxlcwogICAg
ICAgICAnPEAoYmluZGluZ3NfaWRsX2ZpbGVzKScsCiAgICAgICBdLApAQCAtNjA5LDYgKzYxMCwy
NiBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2Vz
JzogMCwKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICdydWxlX25hbWUnOiAnanNv
bicsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdqc29uJywKKyAgICAgICAgICAjCisgICAgICAg
ICAgIyBqc29uIGlzIGZlZCBpbnRvIFdlYktpdFRvb2xzL1NjcmlwdHMvL21ha2UtaGFzaC10b29s
cy5wbAorICAgICAgICAgICMKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvPChSVUxFX0lOUFVUX1JPT1QpLmNwcCcs
CisgICAgICAgICAgXSwKKyAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgICAg
Jy4uL21ha2UtaGFzaC10b29scy5wbCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9u
JzogWworICAgICAgICAgICAgJ3BlcmwnLAorICAgICAgICAgICAgJy4uL21ha2UtaGFzaC10b29s
cy5wbCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0JywK
KyAgICAgICAgICAgICc8KFJVTEVfSU5QVVRfUEFUSCknLAorICAgICAgICAgIF0sCisgICAgICAg
ICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJzogMCwKKyAgICAgICAgfSwKICAgICAgICAg
IyBSdWxlIHRvIGJ1aWxkIGdlbmVyYXRlZCBKYXZhU2NyaXB0IChWOCkgYmluZGluZ3MgZnJvbSAu
aWRsIHNvdXJjZS4KICAgICAgICAgewogICAgICAgICAgICdydWxlX25hbWUnOiAnYmluZGluZycs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJDb3JlLnByaQpp
bmRleCBiMGVmZmVlN2ViNmVlMmIxZWI3ZWI0ZmI1ZGU2Njk5ZmU4YTg0ZWM4Li5iYThkNDBjMzQy
OWVjMmIzM2JmZGQ2YTNiMGYwMDhmMWQxNmQ2MTk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTI5LDcgKzI5LDcgQEAgWE1MX05B
TUVTID0gJCRQV0QveG1sL3htbGF0dHJzLmluCiAKIFhNTE5TX05BTUVTID0gJCRQV0QveG1sL3ht
bG5zYXR0cnMuaW4KIAotRU5USVRJRVNfR1BFUkYgPSAkJFBXRC9odG1sL0hUTUxFbnRpdHlOYW1l
cy5ncGVyZgorSFRNTF9FTlRJVElFUyA9ICQkUFdEL2h0bWwvSFRNTEVudGl0eU5hbWVzLmpzb24K
IAogQ09MT1JEQVRBX0dQRVJGID0gJCRQV0QvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmCiAKQEAg
LTU5MCwxMiArNTkwLDEyIEBAIHhtbG5hbWVzLmNvbW1hbmRzID0gcGVybCAtSSQkUFdEL2JpbmRp
bmdzL3NjcmlwdHMgJCR4bWxuYW1lcy53a1NjcmlwdCAtLWF0dHJzICQkCiBhZGRFeHRyYUNvbXBp
bGVyKHhtbG5hbWVzKQogCiAjIEdFTkVSQVRPUiA4LUE6Ci1lbnRpdGllcy5vdXRwdXQgPSAkJHtX
Q19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxFbnRpdHlOYW1lcy5jcHAKLWVudGl0aWVzLmlu
cHV0ID0gRU5USVRJRVNfR1BFUkYKLWVudGl0aWVzLndrU2NyaXB0ID0gJCRQV0QvbWFrZS1oYXNo
LXRvb2xzLnBsCi1lbnRpdGllcy5jb21tYW5kcyA9IHBlcmwgJCRlbnRpdGllcy53a1NjcmlwdCAk
JHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9ICQkRU5USVRJRVNfR1BFUkYKK2VudGl0aWVzLm91
dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vSFRNTEVudGl0eVRhYmxlLmNwcAor
ZW50aXRpZXMuaW5wdXQgPSBIVE1MX0VOVElUSUVTCitlbnRpdGllcy53a1NjcmlwdCA9ICQkUFdE
Ly4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCitlbnRpdGll
cy5jb21tYW5kcyA9IHB5dGhvbiAkJGVudGl0aWVzLndrU2NyaXB0ICQkSFRNTF9FTlRJVElFUwog
ZW50aXRpZXMuY2xlYW4gPSAke1FNQUtFX0ZJTEVfT1VUfQotZW50aXRpZXMuZGVwZW5kcyA9ICQk
UFdEL21ha2UtaGFzaC10b29scy5wbAorZW50aXRpZXMuZGVwZW5kcyA9ICQkUFdELy4uL1dlYktp
dFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCiBhZGRFeHRyYUNvbXBpbGVy
KGVudGl0aWVzKQogCiAjIEdFTkVSQVRPUiA4LUI6CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA1ZmY0MjUwN2I2MmRkYzU2MGE4OTRhOWZlMmIyMjhjZjcxYzQzYmJjLi4y
ODY3NTEyNjA5ZjkwY2JiMzVhOGMzYjBjYTNkNDA2ZTdkYmI5Y2QwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQwOTA1LDYgKzQwOTA1LDE0IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFZpZXdT
b3VyY2VQYXJzZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5caHRtbFxIVE1MVmlld1NvdXJjZVBhcnNlci5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZURhdGEu
Y3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZjllZDFiNDMxMzk2YmUwYzFmZDg3ZTEwN2Q2NTFjMTcyYmYzMDI0
My4uNzUwZWQ0MDBhOGRlZmQ0MTRjZWE5NWNhY2UyMmYxZmI5ZjE0NTI0NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxODEsNiArMzE4MSw5IEBACiAJ
CUE4QTU2NEE2MTFEQzBFNTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTU2NEE0
MTFEQzBFNTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCAqLzsgfTsK
IAkJQThBOTA5QUMwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTkwOUFBMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmggKi87IH07CiAJCUE4QTkwOUFEMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4QTkwOUFCMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJQThCQzA0NEUxMjE0RUIyQTAwQjVGMTIyIC8qIEhU
TUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3Bw
ICovOyB9OworCQlBOEJDMDQ0RjEyMTRFQjJCMDBCNUYxMjIgLyogSFRNTEVudGl0eVNlYXJjaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGRTAx
MjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLzsgfTsKKwkJQThCQzA0OTIx
MjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyog
SFRNTEVudGl0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQThCQ0ZEMDUxMjBBMDQ2MTAwQjVGMTIyIC8q
IFNWR1BhdGhTZWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThCQ0ZEMDQxMjBBMDQ2MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwICovOyB9Owog
CQlBOEMyMjgwRTExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4MEQxMUQ0QTU5NzAw
RDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJQThDMjI4QTExMUQ1NzIyRTAw
RDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggKi87IH07CkBAIC04NDc2LDYgKzg0NzksMTAgQEAK
IAkJOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBB
N0MgLyogUG9saWN5Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
b2xpY3lDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkRGMTIx
MTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJj
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5U2VhcmNoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUxMTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTEVudGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcw
QzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTcxOUFFRkYxMUQwOUYyQzAwRDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MSW5wdXRTdHJlYW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERv
Y3VtZW50V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUYx
MTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04ODYxLDYgKzg4NjgsNyBAQAogCQlBOEE1NjRBNDExREMwRTU5MDAzQUMyRjAgLyogSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThBOTA5QUEwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE5MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QThCQzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MRW50aXR5VGFibGUuY3BwOyBwYXRoID0g
L2J1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcDsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQThCQ0ZEMDQxMjBBMDQ2MTAwQjVGMTIy
IC8qIFNWR1BhdGhTZWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHUGF0aFNlZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzIyODBEMTFE
NEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50
UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZWREYXRhRG9j
dW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTQxLDcgKzEw
OTQ5LDYgQEAKIAkJRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR2xvYmFsRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZGM0ZBMTE5ODMwNEQwMDlE
NTlENiAvKiBEb2NUeXBlU3RyaW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEb2NUeXBlU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MDZGM0ZCMTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTQwNkY0MDIxMTk4MzI5QTAwOUQ1OUQ2IC8qIEhUTUxFbnRpdHlOYW1lcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50aXR5TmFtZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE1RjEwQzBEOUEwNTg3MDAzM0NF
OTcgLyogRWxlbWVudFRpbWVDb250cm9sLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVt
ZW50VGltZUNvbnRyb2wuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE1RjE2
ODBEOUExNjVEMDAzM0NFOTcgLyogRE9NRWxlbWVudFRpbWVDb250cm9sLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUVsZW1lbnRUaW1lQ29udHJvbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNDE1RjE4MzBEOUExQTgzMDAzM0NFOTcgLyogRWxlbWVudFRp
bWVDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRUaW1l
Q29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyODgsNyArMTIyOTUs
NyBAQAogCQkJCUU0MDZGM0ZBMTE5ODMwNEQwMDlENTlENiAvKiBEb2NUeXBlU3RyaW5ncy5jcHAg
Ki8sCiAJCQkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5j
cHAgKi8sCiAJCQkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9y
eS5oICovLAotCQkJCUU0MDZGNDAyMTE5ODMyOUEwMDlENTlENiAvKiBIVE1MRW50aXR5TmFtZXMu
Y3BwICovLAorCQkJCUE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUu
Y3BwICovLAogCQkJCUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICov
LAogCQkJCUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLywKIAkJCQk5
MzhFNjVGNjA5RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNw
cCAqLywKQEAgLTEzOTg2LDYgKzEzOTkzLDEwIEBACiAJCQkJODU5MTI4NzkwQUIyMjJFQzAwMjAy
MjY1IC8qIEhUTUxFbWJlZEVsZW1lbnQuaWRsICovLAogCQkJCTk3NkU4OTVFMTFDMENBM0EwMEVB
OUNBOSAvKiBIVE1MRW50aXR5UGFyc2VyLmNwcCAqLywKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBF
QTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5oICovLAorCQkJCTk3MEM0RkRGMTIxMTI2NjIwMEMz
RDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLywKKwkJCQk5NzBDNEZFMDEyMTEyNjYyMDBD
M0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oICovLAorCQkJCTk3MEM0RkUxMTIxMTI2NjIwMEMz
RDM5MyAvKiBIVE1MRW50aXR5VGFibGUuY3BwICovLAorCQkJCTk3MEM0RkUyMTIxMTI2NjIwMEMz
RDM5MyAvKiBIVE1MRW50aXR5VGFibGUuaCAqLywKIAkJCQlBODEzNjlCOTA5NzM3NEY1MDBENzQ0
NjMgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxMzY5QjgwOTczNzRGNTAw
RDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQTlGNDBBMUNEQTU3
MDBCNDJCMjUgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgKi8sCkBAIC0yMDE1Niw2ICsyMDE2
Nyw3IEBACiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkVFRDU3RkUxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVC
bG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4QkMwNDRGMTIxNEVCMkIwMEI1RjEy
MiAvKiBIVE1MRW50aXR5U2VhcmNoLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTgyLDYgKzIyNTk0
LDggQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRp
dG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFRUQ1N0ZEMTIxNEE5QzIwMDc2NTZCQiAvKiBU
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4QkMwNDRFMTIx
NEVCMkEwMEI1RjEyMiAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE4QkMwNDkyMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmIGIv
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY2NWVmZWE1MjQwMWEyMDIzMzdjZjJlYTZiYjg4MDBiYmNiNzU0ZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEVudGl0eU5hbWVzLmdwZXJmCisrKyAvZGV2L251bGwKQEAgLTEsMzAzICswLDAgQEAKLSV7Ci0v
KgotICAgICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5k
ZSkKLSAgICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgCi0gICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAgCi0gICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAg
Ci0gICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gIAotICAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gIAotICAgIEhUTUxFbnRpdHlOYW1lcy5ncGVyZjogaW5wdXQgZmlsZSB0byBnZW5l
cmF0ZSBhIGhhc2ggdGFibGUgZm9yIGVudGl0aWVzCi0gICAgSFRNTEVudGl0eU5hbWVzLmNwcDog
RE8gTk9UIEVESVQhIGdlbmVyYXRlZCBieSBXZWJDb3JlL21ha2UtaGFzaC10b29scy5wbAotKi8K
LSV9Ci0lc3RydWN0LXR5cGUKLXN0cnVjdCBFbnRpdHkgewotICAgIGNvbnN0IGNoYXIgKm5hbWU7
Ci0gICAgaW50IGNvZGU7Ci19OwotJWxhbmd1YWdlPUFOU0ktQwotJXJlYWRvbmx5LXRhYmxlcwot
JWdsb2JhbC10YWJsZQotJWNvbXBhcmUtc3RybmNtcAotJWRlZmluZSBsb29rdXAtZnVuY3Rpb24t
bmFtZSBmaW5kRW50aXR5Ci0lZGVmaW5lIGhhc2gtZnVuY3Rpb24tbmFtZSBlbnRpdHlfaGFzaF9m
dW5jdGlvbgotJWluY2x1ZGVzCi0lZW51bQotJSUKLUFFbGlnLCAweDAwYzYKLUFNUCwgMzgKLUFh
Y3V0ZSwgMHgwMGMxCi1BY2lyYywgMHgwMGMyCi1BZ3JhdmUsIDB4MDBjMAotQWxwaGEsIDB4MDM5
MQotQXJpbmcsIDB4MDBjNQotQXRpbGRlLCAweDAwYzMKLUF1bWwsIDB4MDBjNAotQmV0YSwgMHgw
MzkyCi1DT1BZLCAweDAwYTkKLUNjZWRpbCwgMHgwMGM3Ci1DaGksIDB4MDNhNwotRGFnZ2VyLCAw
eDIwMjEKLURlbHRhLCAweDAzOTQKLUVUSCwgMHgwMGQwCi1FYWN1dGUsIDB4MDBjOQotRWNpcmMs
IDB4MDBjYQotRWdyYXZlLCAweDAwYzgKLUVwc2lsb24sIDB4MDM5NQotRXRhLCAweDAzOTcKLUV1
bWwsIDB4MDBjYgotR1QsIDYyCi1HYW1tYSwgMHgwMzkzCi1JYWN1dGUsIDB4MDBjZAotSWNpcmMs
IDB4MDBjZQotSWdyYXZlLCAweDAwY2MKLUlvdGEsIDB4MDM5OQotSXVtbCwgMHgwMGNmCi1LYXBw
YSwgMHgwMzlhCi1MVCwgNjAKLUxhbWJkYSwgMHgwMzliCi1NdSwgMHgwMzljCi1OdGlsZGUsIDB4
MDBkMQotTnUsIDB4MDM5ZAotT0VsaWcsIDB4MDE1MgotT2FjdXRlLCAweDAwZDMKLU9jaXJjLCAw
eDAwZDQKLU9ncmF2ZSwgMHgwMGQyCi1PbWVnYSwgMHgwM2E5Ci1PbWljcm9uLCAweDAzOWYKLU9z
bGFzaCwgMHgwMGQ4Ci1PdGlsZGUsIDB4MDBkNQotT3VtbCwgMHgwMGQ2Ci1QaGksIDB4MDNhNgot
UGksIDB4MDNhMAotUHJpbWUsIDB4MjAzMwotUHNpLCAweDAzYTgKLVFVT1QsIDM0Ci1SRUcsIDB4
MDBhZQotUmhvLCAweDAzYTEKLVNjYXJvbiwgMHgwMTYwCi1TaWdtYSwgMHgwM2EzCi1USE9STiwg
MHgwMGRlCi1UYXUsIDB4MDNhNAotVGhldGEsIDB4MDM5OAotVWFjdXRlLCAweDAwZGEKLVVjaXJj
LCAweDAwZGIKLVVncmF2ZSwgMHgwMGQ5Ci1VcHNpbG9uLCAweDAzYTUKLVV1bWwsIDB4MDBkYwot
WGksIDB4MDM5ZQotWWFjdXRlLCAweDAwZGQKLVl1bWwsIDB4MDE3OAotWmV0YSwgMHgwMzk2Ci1h
YWN1dGUsIDB4MDBlMQotYWNpcmMsIDB4MDBlMgotYWN1dGUsIDB4MDBiNAotYWVsaWcsIDB4MDBl
NgotYWdyYXZlLCAweDAwZTAKLWFsZWZzeW0sIDB4MjEzNQotYWxwaGEsIDB4MDNiMQotYW1wLCAz
OAotYW5kLCAweDIyMjcKLWFuZywgMHgyMjIwCi1hcG9zLCAweDAwMjcKLWFyaW5nLCAweDAwZTUK
LWFzeW1wLCAweDIyNDgKLWF0aWxkZSwgMHgwMGUzCi1hdW1sLCAweDAwZTQKLWJkcXVvLCAweDIw
MWUKLWJldGEsIDB4MDNiMgotYnJ2YmFyLCAweDAwYTYKLWJ1bGwsIDB4MjAyMgotY2FwLCAweDIy
MjkKLWNjZWRpbCwgMHgwMGU3Ci1jZWRpbCwgMHgwMGI4Ci1jZW50LCAweDAwYTIKLWNoaSwgMHgw
M2M3Ci1jaXJjLCAweDAyYzYKLWNsdWJzLCAweDI2NjMKLWNvbmcsIDB4MjI0NQotY29weSwgMHgw
MGE5Ci1jcmFyciwgMHgyMWI1Ci1jdXAsIDB4MjIyYQotY3VycmVuLCAweDAwYTQKLWRBcnIsIDB4
MjFkMwotZGFnZ2VyLCAweDIwMjAKLWRhcnIsIDB4MjE5MwotZGVnLCAweDAwYjAKLWRlbHRhLCAw
eDAzYjQKLWRpYW1zLCAweDI2NjYKLWRpdmlkZSwgMHgwMGY3Ci1lYWN1dGUsIDB4MDBlOQotZWNp
cmMsIDB4MDBlYQotZWdyYXZlLCAweDAwZTgKLWVtcHR5LCAweDIyMDUKLWVtc3AsIDB4MjAwMwot
ZW5zcCwgMHgyMDAyCi1lcHNpbG9uLCAweDAzYjUKLWVxdWl2LCAweDIyNjEKLWV0YSwgMHgwM2I3
Ci1ldGgsIDB4MDBmMAotZXVtbCwgMHgwMGViCi1ldXJvLCAweDIwYWMKLWV4aXN0LCAweDIyMDMK
LWZub2YsIDB4MDE5MgotZm9yYWxsLCAweDIyMDAKLWZyYWMxMiwgMHgwMGJkCi1mcmFjMTQsIDB4
MDBiYwotZnJhYzM0LCAweDAwYmUKLWZyYXNsLCAweDIwNDQKLWdhbW1hLCAweDAzYjMKLWdlLCAw
eDIyNjUKLWd0LCA2MgotaEFyciwgMHgyMWQ0Ci1oYXJyLCAweDIxOTQKLWhlYXJ0cywgMHgyNjY1
Ci1oZWxsaXAsIDB4MjAyNgotaWFjdXRlLCAweDAwZWQKLWljaXJjLCAweDAwZWUKLWlleGNsLCAw
eDAwYTEKLWlncmF2ZSwgMHgwMGVjCi1pbWFnZSwgMHgyMTExCi1pbmZpbiwgMHgyMjFlCi1pbnQs
IDB4MjIyYgotaW90YSwgMHgwM2I5Ci1pcXVlc3QsIDB4MDBiZgotaXNpbiwgMHgyMjA4Ci1pdW1s
LCAweDAwZWYKLWthcHBhLCAweDAzYmEKLWxBcnIsIDB4MjFkMAotbGFtYmRhLCAweDAzYmIKLWxh
bmcsIDB4MzAwOAotbGFxdW8sIDB4MDBhYgotbGFyciwgMHgyMTkwCi1sY2VpbCwgMHgyMzA4Ci1s
ZHF1bywgMHgyMDFjCi1sZSwgMHgyMjY0Ci1sZmxvb3IsIDB4MjMwYQotbG93YXN0LCAweDIyMTcK
LWxveiwgMHgyNWNhCi1scm0sIDB4MjAwZQotbHNhcXVvLCAweDIwMzkKLWxzcXVvLCAweDIwMTgK
LWx0LCA2MAotbWFjciwgMHgwMGFmCi1tZGFzaCwgMHgyMDE0Ci1taWNybywgMHgwMGI1Ci1taWRk
b3QsIDB4MDBiNwotbWludXMsIDB4MjIxMgotbXUsIDB4MDNiYwotbmFibGEsIDB4MjIwNwotbmJz
cCwgMHgwMGEwCi1uZGFzaCwgMHgyMDEzCi1uZSwgMHgyMjYwCi1uaSwgMHgyMjBiCi1ub3QsIDB4
MDBhYwotbm90aW4sIDB4MjIwOQotbnN1YiwgMHgyMjg0Ci1uc3VwLCAweDIyODUKLW50aWxkZSwg
MHgwMGYxCi1udSwgMHgwM2JkCi1vYWN1dGUsIDB4MDBmMwotb2NpcmMsIDB4MDBmNAotb2VsaWcs
IDB4MDE1Mwotb2dyYXZlLCAweDAwZjIKLW9saW5lLCAweDIwM2UKLW9tZWdhLCAweDAzYzkKLW9t
aWNyb24sIDB4MDNiZgotb3BsdXMsIDB4MjI5NQotb3IsIDB4MjIyOAotb3JkZiwgMHgwMGFhCi1v
cmRtLCAweDAwYmEKLW9zbGFzaCwgMHgwMGY4Ci1vdGlsZGUsIDB4MDBmNQotb3RpbWVzLCAweDIy
OTcKLW91bWwsIDB4MDBmNgotcGFyYSwgMHgwMGI2Ci1wYXJ0LCAweDIyMDIKLXBlcmNudCwgMHgw
MDI1Ci1wZXJtaWwsIDB4MjAzMAotcGVycCwgMHgyMmE1Ci1waGksIDB4MDNjNgotcGksIDB4MDNj
MAotcGl2LCAweDAzZDYKLXBsdXNtbiwgMHgwMGIxCi1wb3VuZCwgMHgwMGEzCi1wcmltZSwgMHgy
MDMyCi1wcm9kLCAweDIyMGYKLXByb3AsIDB4MjIxZAotcHNpLCAweDAzYzgKLXF1b3QsIDM0Ci1y
QXJyLCAweDIxZDIKLXJhZGljLCAweDIyMWEKLXJhbmcsIDB4MzAwOQotcmFxdW8sIDB4MDBiYgot
cmFyciwgMHgyMTkyCi1yY2VpbCwgMHgyMzA5Ci1yZHF1bywgMHgyMDFkCi1yZWFsLCAweDIxMWMK
LXJlZywgMHgwMGFlCi1yZmxvb3IsIDB4MjMwYgotcmhvLCAweDAzYzEKLXJsbSwgMHgyMDBmCi1y
c2FxdW8sIDB4MjAzYQotcnNxdW8sIDB4MjAxOQotc2JxdW8sIDB4MjAxYQotc2Nhcm9uLCAweDAx
NjEKLXNkb3QsIDB4MjJjNQotc2VjdCwgMHgwMGE3Ci1zaHksIDB4MDBhZAotc2lnbWEsIDB4MDNj
Mwotc2lnbWFmLCAweDAzYzIKLXNpbSwgMHgyMjNjCi1zcGFkZXMsIDB4MjY2MAotc3ViLCAweDIy
ODIKLXN1YmUsIDB4MjI4Ngotc3VtLCAweDIyMTEKLXN1cCwgMHgyMjgzCi1zdXAxLCAweDAwYjkK
LXN1cDIsIDB4MDBiMgotc3VwMywgMHgwMGIzCi1zdXBlLCAweDIyODcKLXN1cGwsIDB4MDBiOQot
c3psaWcsIDB4MDBkZgotdGF1LCAweDAzYzQKLXRoZXJlNCwgMHgyMjM0Ci10aGV0YSwgMHgwM2I4
Ci10aGV0YXN5bSwgMHgwM2QxCi10aGluc3AsIDB4MjAwOQotdGhvcm4sIDB4MDBmZQotdGlsZGUs
IDB4MDJkYwotdGltZXMsIDB4MDBkNwotdHJhZGUsIDB4MjEyMgotdUFyciwgMHgyMWQxCi11YWN1
dGUsIDB4MDBmYQotdWFyciwgMHgyMTkxCi11Y2lyYywgMHgwMGZiCi11Z3JhdmUsIDB4MDBmOQot
dW1sLCAweDAwYTgKLXVwc2loLCAweDAzZDIKLXVwc2lsb24sIDB4MDNjNQotdXVtbCwgMHgwMGZj
Ci13ZWllcnAsIDB4MjExOAoteGksIDB4MDNiZQoteWFjdXRlLCAweDAwZmQKLXllbiwgMHgwMGE1
Ci15dW1sLCAweDAwZmYKLXpldGEsIDB4MDNiNgotendqLCAweDIwMGQKLXp3bmosIDB4MjAwYwot
JSUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBiL1dlYkNv
cmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcAppbmRleCA2YmVjODE5MGRjODg2Y2MzZTY5ZGY3
MWVkMDQwNWZhMTA2YzBiZTAzLi40ODIyODI3Y2Y0M2M1NDgyMTRhNTQxZGE3ZjM5NjY4Yjg4ZjA5
MDAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVk
ZSAiSFRNTEVudGl0eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAiCkBA
IC0xMDIsNyArMTA0LDYgQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICBFbnRpdHlTdGF0
ZSBlbnRpdHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBW
ZWN0b3I8VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgVmVjdG9yPGNoYXIsIDEw
PiBlbnRpdHlOYW1lOwogCiAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFVDaGFyIGNjID0gKnNvdXJjZTsKQEAgLTE2Niw3ICsxNjcsNyBAQCB1bnNpZ25lZCBjb25zdW1l
SFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFj
dGVycywgVQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7CiAgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAgICAgIHJldHVy
biBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTgxLDQ4ICsxODIsNDggQEAgdW5z
aWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5v
dEVub3VnaENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgTmFtZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3Jv
bmcuIFdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBlbnRpdHkuCi0gICAgICAg
ICAgICAvLyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhlIHNwZWMgYXJlOgotICAgICAgICAg
ICAgLy8gICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwgeW91Ci0gICAgICAgICAgICAvLyAg
ICAgICAgICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICBJ
biB0aGUgZmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRpdHkuICBJbiB0aGUgc2Vjb25kCi0g
ICAgICAgICAgICAvLyAgICAgICAgY2FzZSwgIiZub3RpbjsiIGlzIHRoZSBlbnRpdHkuCi0gICAg
ICAgICAgICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBpcyBpbmNvbXBsZXRl
LgotICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIgOCBiZWxvdyBpcyBib2d1cy4KLSAg
ICAgICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAmJiBlbnRpdHlOYW1lLnNpemUoKSA8
PSA4KSB7CisgICAgICAgICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJjaDsKKyAgICAg
ICAgICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNjID0g
KnNvdXJjZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJzsnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVudGl0eShlbnRpdHlOYW1lLmRhdGEo
KSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnOycpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0
YSgpLCBlbnRpdHlOYW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9yZSB0
aGlzIGVudGl0eSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmIHRoZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFNvbWUgZW50aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hlcmVh
cyBvdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAgVGhl
IEhUTUw1IHNwZWMgaGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNl
cy5odG1sI25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAg
ICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2VlbXMg
dG8gYm9pbCBkb3duIHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGVudGl0eS0+Y29kZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbnRpdHlTZWFyY2guYWR2YW5jZShjYyk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2guaXNFbnRpdHlQcmVmaXgoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVudGl0eU5hbWUuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBjb25zdW1lZENoYXJhY3Rl
cnMuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChj
Yyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RFbm91Z2hDaGFyYWN0ZXJzID0gc291
cmNlLmlzRW1wdHkoKTsKKyAgICAgICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKSB7Cisg
ICAgICAgICAgICAgICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5IGJlY2F1c2UgdGhlcmUgbWlnaHQg
YmUgYSBsb25nZXIgZW50aXR5CisgICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSBjb3VsZCBtYXRj
aCBpZiB3ZSBoYWQgbW9yZSBkYXRhLgorICAgICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3Rl
cnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2gubGFzdE1hdGNo
KCkpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudGl0eVNlYXJjaC5jdXJyZW50VmFsdWUo
KSk7CisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVk
Q2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGggIT0gZW50aXR5
U2VhcmNoLmN1cnJlbnRMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN1
bWVkIHRvbyBtYW55IGNoYXJhY3RlcnMuICBXZSBuZWVkIHRvIHdhbGsgdGhlCisgICAgICAgICAg
ICAgICAgLy8gc291cmNlIGJhY2sgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHdlIGhhZCBjb25zdW1l
ZCBhbgorICAgICAgICAgICAgICAgIC8vIGFjdHVhbCBlbnRpdHkuCisgICAgICAgICAgICAgICAg
dW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAg
ICAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29u
c3QgaW50IGxlbmd0aCA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+bGVuZ3RoOworICAgICAg
ICAgICAgICAgIGNvbnN0IFVDaGFyKiByZWZlcmVuY2UgPSBlbnRpdHlTZWFyY2gubGFzdE1hdGNo
KCktPmVudGl0eTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUX1VOVVNFRChyZWZlcmVuY2UsIGNjID09ICpyZWZlcmVuY2UrKyk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghc291cmNlLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChl
bnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CisgICAgICAg
ICAgICBpZiAoIWFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyIHx8ICEoaXNBbHBoYU51bWVyaWMo
Y2MpIHx8IGNjID09ICc9JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5s
YXN0TWF0Y2goKS0+dmFsdWU7CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJj
ZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjZhM2Q2ZGU3ZmIyN2Vi
YjNjODNhYzM5YTFlYTdhNjZlYzE2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRW50aXR5U2VhcmNoLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIVE1MRW50aXR5U2VhcmNoLmgiCisKKyNpbmNsdWRlICJIVE1MRW50aXR5VGFibGUuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworICAgIAorY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIGhhbGZ3YXkoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQs
IGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCkKK3sKKyAgICByZXR1cm4gJmxlZnRb
KHJpZ2h0IC0gbGVmdCkgLyAyXTsKK30KKworfQorICAgIAorSFRNTEVudGl0eVNlYXJjaDo6SFRN
TEVudGl0eVNlYXJjaCgpCisgICAgOiBtX2N1cnJlbnRMZW5ndGgoMCkKKyAgICAsIG1fY3VycmVu
dFZhbHVlKDApCisgICAgLCBtX2xhc3RNYXRjaCgwKQorICAgICwgbV9zdGFydChIVE1MRW50aXR5
VGFibGU6OnN0YXJ0KCkpCisgICAgLCBtX2VuZChIVE1MRW50aXR5VGFibGU6OmVuZCgpKQorewor
fQorCitIVE1MRW50aXR5U2VhcmNoOjpDb21wYXJlUmVzdWx0IEhUTUxFbnRpdHlTZWFyY2g6OmNv
bXBhcmUoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVudHJ5LCBVQ2hhciBuZXh0Q2hhcmFj
dGVyKSBjb25zdAoreworICAgIGlmIChlbnRyeS0+bGVuZ3RoIDwgbV9jdXJyZW50TGVuZ3RoICsg
MSkKKyAgICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICBVQ2hhciBlbnRyeU5leHRDaGFyYWN0ZXIg
PSBlbnRyeS0+ZW50aXR5W21fY3VycmVudExlbmd0aF07CisgICAgaWYgKGVudHJ5TmV4dENoYXJh
Y3RlciA9PSBuZXh0Q2hhcmFjdGVyKQorICAgICAgICByZXR1cm4gUHJlZml4OworICAgIHJldHVy
biBlbnRyeU5leHRDaGFyYWN0ZXIgPCBuZXh0Q2hhcmFjdGVyID8gQmVmb3JlIDogQWZ0ZXI7Cit9
CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3Rh
cnQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkq
IHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgIHJldHVybiBs
ZWZ0OworICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCBuZXh0Q2hhcmFj
dGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7Cisg
ICAgaWYgKHJlc3VsdCA9PSBBZnRlcikKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIHdoaWxl
IChsZWZ0ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5
KiBwcm9iZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJl
KHByb2JlLCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisg
ICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNT
RVJUKHJlc3VsdCA9PSBBZnRlciB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAgICAgICAgIHJp
Z2h0ID0gcHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQgKyAxID09IHJp
Z2h0KTsKKyAgICByZXR1cm4gcmlnaHQ7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5
KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kRW5kKFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0Cit7
CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0OworICAgIGNv
bnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgQ29tcGFyZVJlc3VsdCByZXN1bHQg
PSBjb21wYXJlKHJpZ2h0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZp
eCkKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIGlmIChyZXN1bHQgPT0gQmVmb3JlKQorICAg
ICAgICByZXR1cm4gbGVmdDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkgeworICAgICAg
ICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0
KTsKKyAgICAgICAgcmVzdWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rlcik7CisgICAg
ICAgIGlmIChyZXN1bHQgPT0gQWZ0ZXIpCisgICAgICAgICAgICByaWdodCA9IHByb2JlOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVmb3JlIHx8IHJlc3Vs
dCA9PSBQcmVmaXgpOworICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAgICB9CisgICAg
fQorICAgIEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIGxlZnQ7Cit9CisK
K3ZvaWQgSFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZShVQ2hhciBuZXh0Q2hhcmFjdGVyKQorewor
ICAgIEFTU0VSVChpc0VudGl0eVByZWZpeCgpKTsKKyAgICBpZiAoIW1fY3VycmVudExlbmd0aCkg
eworICAgICAgICBtX3N0YXJ0ID0gSFRNTEVudGl0eVRhYmxlOjpzdGFydChuZXh0Q2hhcmFjdGVy
KTsKKyAgICAgICAgbV9lbmQgPSBIVE1MRW50aXR5VGFibGU6OmVuZChuZXh0Q2hhcmFjdGVyKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX3N0YXJ0ID0gZmluZFN0YXJ0KG5leHRDaGFyYWN0ZXIp
OworICAgICAgICBtX2VuZCA9IGZpbmRFbmQobmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmICht
X3N0YXJ0ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3RlcikgIT0gUHJl
Zml4KQorICAgICAgICAgICAgcmV0dXJuIGZhaWwoKTsKKyAgICB9CisgICAgKyttX2N1cnJlbnRM
ZW5ndGg7CisgICAgaWYgKG1fc3RhcnQtPmxlbmd0aCAhPSBtX2N1cnJlbnRMZW5ndGgpIHsKKyAg
ICAgICAgbV9jdXJyZW50VmFsdWUgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
bGFzdE1hdGNoID0gbV9zdGFydDsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IG1fbGFzdE1hdGNoLT52
YWx1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2gu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU3ODU5ZDRl
YmNjZDJhMTJiMDNiZGUwZjhjZjEyODIzOTRkYmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVNl
YXJjaF9oCisjZGVmaW5lIEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVudGl0eVRhYmxl
RW50cnk7CisKK2NsYXNzIEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAgIEhUTUxFbnRp
dHlTZWFyY2goKTsKKworICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisKKyAgICBib29sIGlzRW50
aXR5UHJlZml4KCkgY29uc3QgeyByZXR1cm4gISFtX3N0YXJ0OyB9CisgICAgaW50IGN1cnJlbnRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgaW50IGN1cnJlbnRM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRMZW5ndGg7IH0KKworICAgIGNvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBsYXN0TWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xhc3RNYXRj
aDsgfQorCitwcml2YXRlOgorICAgIGVudW0gQ29tcGFyZVJlc3VsdCB7CisgICAgICAgIEJlZm9y
ZSwKKyAgICAgICAgUHJlZml4LAorICAgICAgICBBZnRlciwKKyAgICB9OworCisgICAgQ29tcGFy
ZVJlc3VsdCBjb21wYXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiwgVUNoYXIpIGNvbnN0
OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kU3RhcnQoVUNoYXIpIGNvbnN0
OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kRW5kKFVDaGFyKSBjb25zdDsK
KworICAgIHZvaWQgZmFpbCgpCisgICAgeworICAgICAgICBtX2N1cnJlbnRWYWx1ZSA9IDA7Cisg
ICAgICAgIG1fc3RhcnQgPSAwOworICAgICAgICBtX2VuZCA9IDA7CisgICAgfQorCisgICAgaW50
IG1fY3VycmVudExlbmd0aDsKKyAgICBpbnQgbV9jdXJyZW50VmFsdWU7CisKKyAgICBjb25zdCBI
VE1MRW50aXR5VGFibGVFbnRyeSogbV9sYXN0TWF0Y2g7CisgICAgY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fZW5k
OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5
VGFibGUuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWEx
YWZkMzE2MWYwZGNhMzRjNTJkMzAxZGNhOWMzOTU5YzcyOTMxCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUxFbnRp
dHlUYWJsZV9oCisjZGVmaW5lIEhUTUxFbnRpdHlUYWJsZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBIVE1MRW50aXR5VGFi
bGVFbnRyeSB7CisgICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIGVudGl0
eVtsZW5ndGggLSAxXTsgfQorCisgICAgY29uc3QgVUNoYXIqIGVudGl0eTsKKyAgICBpbnQgbGVu
Z3RoOworICAgIGludCB2YWx1ZTsKK307CisKK2NsYXNzIEhUTUxFbnRpdHlUYWJsZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFydCgpOworICAg
IHN0YXRpYyBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW5kKCk7CisKKyAgICBzdGF0aWMg
Y29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHN0YXJ0KFVDaGFyKTsKKyAgICBzdGF0aWMgY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVuZChVQ2hhcik7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9tYWtlLWhhc2gtdG9vbHMucGwgYi9XZWJDb3JlL21ha2UtaGFz
aC10b29scy5wbAppbmRleCA0MmNiNmZkOTU4ZjEwNWFlNmFmYmY2ZWRlMzQ4YWMzNWI2ZjM5NjNl
Li44Y2M5OTUyYzE1NzJiMDAzMzgxYjBkODI3M2NiMWQ2NjVjMzBmZmU4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL21ha2UtaGFzaC10b29scy5wbAorKysgYi9XZWJDb3JlL21ha2UtaGFzaC10b29scy5w
bApAQCAtMjksMTYgKzI5LDYgQEAgbXkgJG9wdGlvbiA9IGJhc2VuYW1lKCRBUkdWWzBdLCIuZ3Bl
cmYiKTsKIAogc3dpdGNoICgkb3B0aW9uKSB7CiAKLWNhc2UgIkhUTUxFbnRpdHlOYW1lcyIgewot
Ci0gICAgbXkgJGh0bWxFbnRpdHlOYW1lc0dlbmVyYXRlZCAgID0gIiRvdXRkaXIvSFRNTEVudGl0
eU5hbWVzLmNwcCI7Ci0gICAgbXkgJGh0bWxFbnRpdHlOYW1lc0dwZXJmICAgICAgID0gJEFSR1Zb
MF07Ci0gICAgc2hpZnQ7Ci0KLSAgICBzeXN0ZW0oImdwZXJmIC0ta2V5LXBvc2l0aW9ucz1cIipc
IiAtRCAtcyAyICRodG1sRW50aXR5TmFtZXNHcGVyZiA+ICRodG1sRW50aXR5TmFtZXNHZW5lcmF0
ZWQiKSA9PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6ICQ/IjsKLQotfSAjIGNhc2Ug
IkhUTUxFbnRpdHlOYW1lcyIKLQogY2FzZSAiRG9jVHlwZVN0cmluZ3MiIHsKIAogICAgIG15ICRk
b2NUeXBlU3RyaW5nc0dlbmVyYXRlZCAgICA9ICIkb3V0ZGlyL0RvY1R5cGVTdHJpbmdzLmNwcCI7
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKaW5kZXggZjhkMWQ4OGMyYmQ4YWM5M2NmNjI4ZDA2MjNjNTg5NzgyNzRjMTk1My4uODUyMWVh
YmQ3Y2JhNTY1OWQyNGI0ZDMxMzE3MTRmNzgwYTA0N2VlZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDEwLTA4LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1h
dGhNTCBlbnRpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDM1OTUKKworICAgICAgICBBIHNjcmlwdCBmb3IgZ2VuZXJhdGluZyB0aGUgQysrIHN0
YXRlIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgYWxsIHRoZQorICAgICAgICBlbnRpdGllcyBm
cm9tIGEgSlNPTiBkZXNjcmlwdGlvbi4KKworICAgICAgICBOb3RlOiBUaGlzIHNjcmlwdCBpcyBu
b3QgeWV0IGludGVncmF0ZWQgd2l0aCB0aGUgYnVpbGQgc3lzdGVtLCBzbyB0aGlzCisgICAgICAg
ICAgICAgIHBhdGNoIHdpbGwgbm90IGJ1aWxkISAgT09QUyEKKworICAgICAgICAqIFNjcmlwdHMv
Y3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlOiBBZGRlZC4KKwogMjAxMC0wOC0xMiAgRGF2aWQgTGV2
aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQnVpbGQgYnJlYWsgZml4LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQpuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NTEzYjI5ZGE3OGIzZmI1ZWI4MGY4NDViYmIzNDgwMzMwYzMyMGI1Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKQEAgLTAsMCAr
MSwxNzMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1w
b3J0IG9zLnBhdGgKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKKworaW1wb3J0IHdlYmtpdHB5
LnRoaXJkcGFydHkuc2ltcGxlanNvbiBhcyBzaW1wbGVqc29uCisKKworZGVmIGNvbnZlcnRfZW50
aXR5X3RvX2NwcF9uYW1lKGVudGl0eSk6CisgICAgcG9zdGZpeCA9ICJFbnRpdHlOYW1lIgorICAg
IGlmIGVudGl0eVstMV0gPT0gIjsiOgorICAgICAgICByZXR1cm4gIiVzU2VtaWNvbG9uJXMiICUg
KGVudGl0eVs6LTFdLCBwb3N0Zml4KQorICAgIHJldHVybiAiJXMlcyIgJSAoZW50aXR5LCBwb3N0
Zml4KQorCisKK2RlZiBjb252ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRpdHkpOgorICAg
IHJldHVybiAieyclcyd9IiAlICInLCAnIi5qb2luKGVudGl0eSkKKworCitkZWYgY29udmVydF92
YWx1ZV90b19pbnQodmFsdWUpOgorICAgIGFzc2VydCh2YWx1ZVswXSA9PSAiVSIpCisgICAgYXNz
ZXJ0KHZhbHVlWzFdID09ICIrIikKKyAgICByZXR1cm4gIjB4IiArIHZhbHVlWzI6XQorCisKK2Rl
ZiBvZmZzZXRfdGFibGVfZW50cnkob2Zmc2V0KToKKyAgICByZXR1cm4gIiAgICAmc3RhdGljRW50
aXR5VGFibGVbJXNdLCIgJSBvZmZzZXQKKworCitwcm9ncmFtX25hbWUgPSBvcy5wYXRoLmJhc2Vu
YW1lKF9fZmlsZV9fKQoraWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgcHJpbnQgPj4gc3lzLnN0
ZGVyciwgIlVzYWdlOiAlcyBJTlBVVF9GSUxFIiAlIHByb2dyYW1fbmFtZQorICAgIGV4aXQoMSkK
KworaW5wdXRfZmlsZSA9IHN5cy5hcmd2WzFdCitodG1sX2VudGl0eV9uYW1lc19maWxlID0gb3Bl
bihpbnB1dF9maWxlKQorZW50cmllcyA9IHNpbXBsZWpzb24ubG9hZChodG1sX2VudGl0eV9uYW1l
c19maWxlKQoraHRtbF9lbnRpdHlfbmFtZXNfZmlsZS5jbG9zZSgpCisKK2VudHJpZXMgPSBzb3J0
ZWQoZW50cmllcywga2V5PWxhbWJkYSBlbnRyeTogZW50cnlbJ2VudGl0eSddKQorZW50aXR5X2Nv
dW50ID0gbGVuKGVudHJpZXMpCisKK3ByaW50ICIiIi8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisvLyBUSElTIEZJTEUgSVMgR0VORVJBVEVEIEJZIFdlYktp
dFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisvLyBETyBOT1QgRURJVCAo
dW5sZXNzIHlvdSBhcmUgYSBuaW5qYSkhCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJIVE1MRW50aXR5VGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2Ug
eworIiIiCisKK2ZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgIHByaW50ICJjb25zdCBVQ2hhciAl
c0VudGl0eU5hbWVbXSA9ICVzOyIgJSAoCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX2NwcF9u
YW1lKGVudHJ5WyJlbnRpdHkiXSksCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX3VjaGFyX2Fy
cmF5KGVudHJ5WyJlbnRpdHkiXSkpCisKK3ByaW50ICIiIgorSFRNTEVudGl0eVRhYmxlRW50cnkg
c3RhdGljRW50aXR5VGFibGVbJXNdID0geyIiIiAlIGVudGl0eV9jb3VudAorCitpbmRleCA9IHt9
CitvZmZzZXQgPSAwCitmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICBsZXR0ZXIgPSBlbnRyeVsi
ZW50aXR5Il1bMF0KKyAgICBpZiBub3QgaW5kZXguZ2V0KGxldHRlcik6CisgICAgICAgIGluZGV4
W2xldHRlcl0gPSBvZmZzZXQKKyAgICBwcmludCAnICAgIHsgJXNFbnRpdHlOYW1lLCAlcywgJXMg
fSwnICUgKAorICAgICAgICBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRyeVsiZW50aXR5
Il0pLAorICAgICAgICBsZW4oZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgY29udmVydF92YWx1
ZV90b19pbnQoZW50cnlbInZhbHVlIl0pKQorICAgIG9mZnNldCArPSAxCisKK3ByaW50ICIiIn07
CisiIiIKKworcHJpbnQgImNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiB1cHBlcmNhc2VPZmZz
ZXRbXSA9IHsiCitmb3IgbGV0dGVyIGluIHN0cmluZy51cHBlcmNhc2U6CisgICAgcHJpbnQgb2Zm
c2V0X3RhYmxlX2VudHJ5KGluZGV4W2xldHRlcl0pCitwcmludCBvZmZzZXRfdGFibGVfZW50cnko
aW5kZXhbJ2EnXSkKK3ByaW50ICIiIn07CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBs
b3dlcmNhc2VPZmZzZXRbXSA9IHsiIiIKK2ZvciBsZXR0ZXIgaW4gc3RyaW5nLmxvd2VyY2FzZToK
KyAgICBwcmludCBvZmZzZXRfdGFibGVfZW50cnkoaW5kZXhbbGV0dGVyXSkKK3ByaW50IG9mZnNl
dF90YWJsZV9lbnRyeShlbnRpdHlfY291bnQpCitwcmludCAiIiJ9OworCit9CisKK2NvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OnN0YXJ0KFVDaGFyIGMpCit7Cisg
ICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgICAgICByZXR1cm4gdXBwZXJjYXNlT2Zm
c2V0W2MgLSAnQSddOworICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgcmV0
dXJuIGxvd2VyY2FzZU9mZnNldFtjIC0gJ2EnXTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6ZW5kKFVDaGFyIGMpCit7Cisg
ICAgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgICAgICByZXR1cm4gdXBwZXJjYXNlT2Zm
c2V0W2MgLSAnQScgKyAxXSAtIDE7CisgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorICAg
ICAgICByZXR1cm4gbG93ZXJjYXNlT2Zmc2V0W2MgLSAnYScgKyAxXSAtIDE7CisgICAgcmV0dXJu
IDA7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OnN0
YXJ0KCkKK3sKKyAgICByZXR1cm4gJnN0YXRpY0VudGl0eVRhYmxlWzBdOworfQorCitjb25zdCBI
VE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjplbmQoKQoreworICAgIHJldHVy
biAmc3RhdGljRW50aXR5VGFibGVbJXMgLSAxXTsKK30KKworfQorIiIiICUgZW50aXR5X2NvdW50
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64298</attachid>
            <date>2010-08-12 21:58:03 -0700</date>
            <delta_ts>2010-08-12 22:30:21 -0700</delta_ts>
            <desc>Another attempt to fix Qt</desc>
            <filename>bug-43595-20100812215744.patch</filename>
            <type>text/plain</type>
            <size>49927</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTVhNjJmNjA5YzI4OWUzZjI1ZTMzN2YxNThkZTVkYjAxMzljZjgwLi42MmNhNjBm
MmEzZjhmYjM1YzUwYjBjYWVkM2I2OGMwOTY0Y2QxNTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0xMiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGxh
bmRpbmcgZ29vZ2xlLWNocm9tZSBsaW51eCA2NCB0ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAyZWIwMWI0Y2JmOGFh
NzYyMzg0YWI1ODEwZjJmMThmNzk5YTI1ZGNmLi44NGM3MjE3NGZkY2UxYmU1M2QxNjhkYTY4MjY2
ZWQyOTIzNGE5ODRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKQEAgLTExOCw5MiArMTE4LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0
OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3Vy
Y2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQot
VGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0
OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5Pgot
fCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwg
ICA8Ym9keT4KLXwgICAgICLihYgiCi0KLVRlc3QgMTAgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgot
fCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNvdXJjZXMvaHRtbDV0ZXN0
LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNv
bS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2VzL2VudGl0aWVzMDEu
ZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZh
aWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCityZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6
IFBBU1MKIAotVGVzdCA1IG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQu
IElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRl
bGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21t
ZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
aW5kZXggOGE4ZjdiZTM4YzY2ZTMxZjdkNWM5MWVhYTg5YjVmODM4ZmEzYTJhOS4uYzlhZTI0NTQ4
MGQ0OWZmNTAyZjcwMzA3MTJjMjRiOGMzMDU1ZTc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
dW5uZXItZXhwZWN0ZWQudHh0CkBAIC0xOTEsOTIgKzE5MSwxMCBAQCByZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMvc2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGlu
IHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7
Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6ji
n6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhl
YWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWIIgotCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRp
dGllczAxLmRhdDoKLTIKLTUKK3Jlc291cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0
IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08m
Z3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9P
Jmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAg
ICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQg
ZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4
cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxp
dDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9lbnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJj
ZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjA3NjA4ZThlZWZlMGY2M2NiODFkZDk1ZDBiODk5ZWU4
YmNjNTA4Ny4uZWViMTc2M2ZiZmZhY2I0Yjg2NTExMTE1MjZkZTRmNTVkM2FiMmVkMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTMwNjIs
NiArMzA2Miw3NCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAgICAgSW1wbGVtZW50aW5n
IHRoZSBIVE1MNSBlbnRpdHkgcGFyc2luZyBhbGdvcml0aG0gcmVxdWlyZSByZWZhY3RvcmluZyBo
b3cKKyAgICAgICAgd2Ugc2VhcmNoIGZvciBlbnRpdHkgbmFtZXMuICBJbnN0ZWFkIG9mIHVzaW5n
IGEgcGVyZmVjdCBoYXNoLCB3ZSBub3cKKyAgICAgICAgdXNlIGEgc29ydGVkIGxpc3QuICBBcyB3
ZSBhZHZhbmNlIHRocm91Z2ggdGhlIGlucHV0LCB3ZSB3YWxrIGRvd24gYQorICAgICAgICBiaW5h
cnkgc2VhcmNoIG9mIHRoZSB0YWJsZSBsb29raW5nIGZvciBhbiBlbnRpdHkuCisKKyAgICAgICAg
VXNpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSBsZXRzIHVzIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB0
aGUgY3VycmVudAorICAgICAgICBzdHJpbmcgaXMgYSBwcmVmaXggb2YgYW4gZXhpc3RpbmcgZW50
aXR5LCB3aGljaCB3ZSBuZWVkIGZvciB0aGUKKyAgICAgICAgYWxnb3JpdGhtLiAgSW4gYSBmdXR1
cmUgcGF0Y2gsIEkgcGxhbiB0byBhZGQgc29tZSBpbmRpY2llcyB0byB0aGUKKyAgICAgICAgdGFi
bGUsIHdoaWNoIHNob3VsZCBsZXQgdXMgbmFycm93IGRvd24gdGhlIHJhbmdlIG9mIGludGVyZXN0
aW5nIGVudHJpZXMKKyAgICAgICAgbW9yZSBxdWlja2x5LgorCisgICAgICAgIFRoZSBvbmUgbmFz
dHkgcGllY2Ugb2YgdGhlIGFsZ29yaXRobSBpcyBpZiB3ZSB3YWxrIHRvbyBmYXIgZG93biB0aGUK
KyAgICAgICAgaW5wdXQgYW5kIHdlIG5lZWQgdG8gYmFjayB1cCB0byBhIHByZXZpb3VzIG1hdGNo
LiAgSW4gdGhpcyBwYXRjaCwgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlzIGJ5IHJld2luZGlu
ZyB0aGUgaW5wdXQgYW5kIGNvbnN1bWluZyBhIGtub3duIG51bWJlciBvZgorICAgICAgICBjaGFy
YWN0ZXJzIHRvIHJlc3luYyB0aGUgc291cmNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSFRNTEVudGl0eSk6CisgICAgICAgICogaHRtbC9I
VE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50
aXR5U2VhcmNoOjpmaW5kRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmFkdmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVNlYXJjaC5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmN1cnJlbnRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpsYXN0TWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEVudGl0eVNlYXJjaDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6
OmZhaWwpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVRhYmxlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVRhYmxlRW50cnk6Omxhc3RDaGFyYWN0ZXIpOgorCisyMDEw
LTA4LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9ydCB2aWV3LXNvdXJjZSB0byBuZXcg
cGFyc2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Mzc0NgorCisgICAgICAgIFRoaXMgcGF0Y2ggaGFzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IHdv
cmtpbmcgaW4gdGhlIG9sZCBkZXNpZ24gb2YKKyAgICAgICAgY29uc3RydWN0aW5nIHRoZSB2aWV3
LXNvdXJjZSB2aWV3IGZyb20gdGhlIHRva2VuIHN0cmVhbS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIGh0bWwvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6CisgICAg
ICAgICogaHRtbC9IVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZURvY3VtZW50OjphZGRWaWV3U291cmNlVG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vzc0NoYXJhY3RlclRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxWaWV3U291cmNlRG9jdW1lbnQ6OnByb2Nlc3NDb21tZW50
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VEb2N1bWVudDo6cHJvY2Vz
c0RvY3R5cGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlld1NvdXJjZURvY3VtZW50
Ojpwcm9jZXNzVGFnVG9rZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFZpZXdTb3VyY2VEb2N1bWVu
dC5oOgorICAgICAgICAqIGh0bWwvTGVnYWN5SFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc1Rva2VuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeUhUTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc0RvY3R5cGVU
b2tlbik6CisKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBSZW1vdmUgdHJh
aWxpbmcgd2hpdGVzcGFjZSBpbiBIVE1MVmlld1NvdXJjZURvY3VtZW50LmNwcAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NDEKIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDM3YzJmMTBkMzNmOGRiZDkyMzhkYmI0ZTI0NWZlZWMzOWI2YzllZGYuLmM1ZGRm
ZjllYWIyYmQ3YTEwYzJhNWM0NzRiZGE1NjdhNWE4YzFiNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAg
LTUwNSw3ICs1MDUsNyBAQCBhbGwgOiBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRG9jVHlw
ZVN0cmluZ3MuY3BwIFwKICAgICBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKLSAgICBIVE1MRW50
aXR5TmFtZXMuY3BwIFwKKyAgICBIVE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMu
Y3BwIFwKICAgICBXTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogICAgIFdNTE5hbWVzLmNwcCBcCkBA
IC02MDAsOCArNjAwLDggQEAgRG9jVHlwZVN0cmluZ3MuY3BwIDogaHRtbC9Eb2NUeXBlU3RyaW5n
cy5ncGVyZiAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAogCiAjIEhUTUwgZW50aXR5IG5h
bWVzCiAKLUhUTUxFbnRpdHlOYW1lcy5jcHAgOiBodG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZiAk
KFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbAotCXBlcmwgJChXZWJDb3JlKS9tYWtlLWhhc2gt
dG9vbHMucGwgLiAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitIVE1MRW50
aXR5VGFibGUuY3BwIDogaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbiAkKFdlYkNvcmUpLy4uL1dl
YktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisJcHl0aG9uICQoV2Vi
Q29yZSkvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgJChX
ZWJDb3JlKS9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uID4gSFRNTEVudGl0eVRhYmxlLmNwcAog
CiAjIC0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJjYTJhYWUzMGZiOTA5NWY2OWYwZmVlMTg5NmI5ZWNi
ZjdhNDc5OTUuLmNkMDM1ZmU4MDU0N2RkNzJiZWU1MmI1Y2MzNTNlYjRkZWRkMDUyMzggMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtOTIsNyArOTIsNyBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvQ1NTVmFsdWVLZXl3b3Jkcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0hUTUxFbGVtZW50RmFjdG9yeS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRN
TEVsZW1lbnRGYWN0b3J5LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5h
bWVzLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSFRNTE5hbWVzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIuY3BwIFwKQEAgLTQzOTMsOCArNDM5Myw4IEBAIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvRG9jVHlwZVN0cmluZ3MuY3BwIDogJChXZWJDb3JlKS9odG1sL0RvY1R5cGVT
dHJpbmdzLmdwZXJmCiAJJChQRVJMKSAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbCAkKEdF
TlNPVVJDRVNfV0VCQ09SRSkgJChXZWJDb3JlKS9odG1sL0RvY1R5cGVTdHJpbmdzLmdwZXJmCiAK
ICMgSFRNTCBlbnRpdHkgbmFtZXMKLURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5h
bWVzLmNwcCA6ICQoV2ViQ29yZSkvaHRtbC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYgJChXZWJDb3Jl
KS9tYWtlLWhhc2gtdG9vbHMucGwKLQkkKFBFUkwpICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xz
LnBsICQoR0VOU09VUkNFU19XRUJDT1JFKSAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVz
LmdwZXJmCitEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgOiAkKFdl
YkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmpzb24gJChXZWJDb3JlKS8uLi9XZWJLaXRUb29s
cy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQorCSQoUFlUSE9OKSAkKFdlYkNvcmUp
Ly4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlICQoV2ViQ29y
ZSkvaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbiA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9IVE1M
RW50aXR5VGFibGUuY3BwCiAKICMgY29sb3IgbmFtZXMKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
Q29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJD
b3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGEyOGVl
NWQwNjEwNTlhYmZhNGVmOTE1ODJmM2Y1NzljYTgwZDI5NTQuLjg1ZmE1Yjg0NzY4ZTc3YmI2MDUx
NGFhNjIwZjU3OTNjYzc4YTQ3YWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cApAQCAtMjc2LDkg
KzI3NiwxMCBAQAogCiAgICAgICAgICMgZ3BlcmYgcnVsZQogICAgICAgICAnLi4vaHRtbC9Eb2NU
eXBlU3RyaW5ncy5ncGVyZicsCi0gICAgICAgICcuLi9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVy
ZicsCiAgICAgICAgICcuLi9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYnLAogCisgICAgICAgICcu
Li9odG1sL0hUTUxFbnRpdHlOYW1lcy5qc29uJywKKwogICAgICAgICAjIGlkbCBydWxlcwogICAg
ICAgICAnPEAoYmluZGluZ3NfaWRsX2ZpbGVzKScsCiAgICAgICBdLApAQCAtNjA5LDYgKzYxMCwy
NiBAQAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2Vz
JzogMCwKICAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICdydWxlX25hbWUnOiAnanNv
bicsCisgICAgICAgICAgJ2V4dGVuc2lvbic6ICdqc29uJywKKyAgICAgICAgICAjCisgICAgICAg
ICAgIyBqc29uIGlzIGZlZCBpbnRvIFdlYktpdFRvb2xzL1NjcmlwdHMvL21ha2UtaGFzaC10b29s
cy5wbAorICAgICAgICAgICMKKyAgICAgICAgICAnb3V0cHV0cyc6IFsKKyAgICAgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvPChSVUxFX0lOUFVUX1JPT1QpLmNwcCcs
CisgICAgICAgICAgXSwKKyAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWworICAgICAgICAgICAg
Jy4uL21ha2UtaGFzaC10b29scy5wbCcsCisgICAgICAgICAgXSwKKyAgICAgICAgICAnYWN0aW9u
JzogWworICAgICAgICAgICAgJ3BlcmwnLAorICAgICAgICAgICAgJy4uL21ha2UtaGFzaC10b29s
cy5wbCcsCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0JywK
KyAgICAgICAgICAgICc8KFJVTEVfSU5QVVRfUEFUSCknLAorICAgICAgICAgIF0sCisgICAgICAg
ICAgJ3Byb2Nlc3Nfb3V0cHV0c19hc19zb3VyY2VzJzogMCwKKyAgICAgICAgfSwKICAgICAgICAg
IyBSdWxlIHRvIGJ1aWxkIGdlbmVyYXRlZCBKYXZhU2NyaXB0IChWOCkgYmluZGluZ3MgZnJvbSAu
aWRsIHNvdXJjZS4KICAgICAgICAgewogICAgICAgICAgICdydWxlX25hbWUnOiAnYmluZGluZycs
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvV2ViQ29yZS9XZWJDb3JlLnByaQpp
bmRleCBiMGVmZmVlN2ViNmVlMmIxZWI3ZWI0ZmI1ZGU2Njk5ZmU4YTg0ZWM4Li4xMzdjM2IwM2Zl
MTBjZGJiNzZiMGRjYTc2NzljYjc2MjEwMWE0MTczIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUucHJpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTI5LDcgKzI5LDcgQEAgWE1MX05B
TUVTID0gJCRQV0QveG1sL3htbGF0dHJzLmluCiAKIFhNTE5TX05BTUVTID0gJCRQV0QveG1sL3ht
bG5zYXR0cnMuaW4KIAotRU5USVRJRVNfR1BFUkYgPSAkJFBXRC9odG1sL0hUTUxFbnRpdHlOYW1l
cy5ncGVyZgorSFRNTF9FTlRJVElFUyA9ICQkUFdEL2h0bWwvSFRNTEVudGl0eU5hbWVzLmpzb24K
IAogQ09MT1JEQVRBX0dQRVJGID0gJCRQV0QvcGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmCiAKQEAg
LTU5MCwxMiArNTkwLDEyIEBAIHhtbG5hbWVzLmNvbW1hbmRzID0gcGVybCAtSSQkUFdEL2JpbmRp
bmdzL3NjcmlwdHMgJCR4bWxuYW1lcy53a1NjcmlwdCAtLWF0dHJzICQkCiBhZGRFeHRyYUNvbXBp
bGVyKHhtbG5hbWVzKQogCiAjIEdFTkVSQVRPUiA4LUE6Ci1lbnRpdGllcy5vdXRwdXQgPSAkJHtX
Q19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxFbnRpdHlOYW1lcy5jcHAKLWVudGl0aWVzLmlu
cHV0ID0gRU5USVRJRVNfR1BFUkYKLWVudGl0aWVzLndrU2NyaXB0ID0gJCRQV0QvbWFrZS1oYXNo
LXRvb2xzLnBsCi1lbnRpdGllcy5jb21tYW5kcyA9IHBlcmwgJCRlbnRpdGllcy53a1NjcmlwdCAk
JHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9ICQkRU5USVRJRVNfR1BFUkYKK2VudGl0aWVzLm91
dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vSFRNTEVudGl0eVRhYmxlLmNwcAor
ZW50aXRpZXMuaW5wdXQgPSBIVE1MX0VOVElUSUVTCitlbnRpdGllcy53a1NjcmlwdCA9ICQkUFdE
Ly4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCitlbnRpdGll
cy5jb21tYW5kcyA9IHB5dGhvbiAkJGVudGl0aWVzLndrU2NyaXB0ICQkSFRNTF9FTlRJVElFUyA+
ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUn0vSFRNTEVudGl0eVRhYmxlLmNwcAogZW50aXRp
ZXMuY2xlYW4gPSAke1FNQUtFX0ZJTEVfT1VUfQotZW50aXRpZXMuZGVwZW5kcyA9ICQkUFdEL21h
a2UtaGFzaC10b29scy5wbAorZW50aXRpZXMuZGVwZW5kcyA9ICQkUFdELy4uL1dlYktpdFRvb2xz
L1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCiBhZGRFeHRyYUNvbXBpbGVyKGVudGl0
aWVzKQogCiAjIEdFTkVSQVRPUiA4LUI6CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agppbmRleCA1ZmY0MjUwN2I2MmRkYzU2MGE4OTRhOWZlMmIyMjhjZjcxYzQzYmJjLi4yODY3NTEy
NjA5ZjkwY2JiMzVhOGMzYjBjYTNkNDA2ZTdkYmI5Y2QwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKQEAgLTQwOTA1LDYgKzQwOTA1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTFZpZXdTb3VyY2VQ
YXJzZXIuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5caHRtbFxIVE1MVmlld1NvdXJjZVBhcnNlci5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxJbWFnZURhdGEuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjllZDFiNDMxMzk2YmUwYzFmZDg3ZTEwN2Q2NTFjMTcyYmYzMDI0My4uNzUw
ZWQ0MDBhOGRlZmQ0MTRjZWE5NWNhY2UyMmYxZmI5ZjE0NTI0NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxODEsNiArMzE4MSw5IEBACiAJCUE4QTU2
NEE2MTFEQzBFNTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTU2NEE0MTFEQzBF
NTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcCAqLzsgfTsKIAkJQThB
OTA5QUMwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTkwOUFB
MENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi87
IH07CiAJCUE4QTkwOUFEMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTkwOUFCMENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcCAqLzsgfTsKKwkJQThCQzA0NEUxMjE0RUIyQTAwQjVGMTIyIC8qIEhUTUxFbnRp
dHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwICovOyB9
OworCQlBOEJDMDQ0RjEyMTRFQjJCMDBCNUYxMjIgLyogSFRNTEVudGl0eVNlYXJjaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwQzRGRTAxMjExMjY2
MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLzsgfTsKKwkJQThCQzA0OTIxMjE0RjY5
NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEJDMDQ5MTEyMTRGNjk2MDBCNUYxMjIgLyogSFRNTEVu
dGl0eVRhYmxlLmNwcCAqLzsgfTsKIAkJQThCQ0ZEMDUxMjBBMDQ2MTAwQjVGMTIyIC8qIFNWR1Bh
dGhTZWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThCQ0ZEMDQxMjBBMDQ2MTAwQjVGMTIyIC8qIFNWR1BhdGhTZWcuY3BwICovOyB9OwogCQlBOEMy
MjgwRTExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0Qz
IC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsKIAkJQThDMjI4QTExMUQ1NzIyRTAwRDVBN0Qz
IC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmggKi87IH07CkBAIC04NDc2LDYgKzg0NzksMTAgQEAKIAkJOTcw
NTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkRGMTIxMTI2NjIw
MEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5U2VhcmNoLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUxMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1M
RW50aXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TEVudGl0eVRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTIx
MjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MRW50aXR5VGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTcxOUFFRkYxMUQwOUYyQzAwRDQ1ODMxIC8qIEhUTUxJbnB1dFN0cmVhbS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MSW5wdXRTdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50
V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50
V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUYxMTZFQTlE
QzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
ODYxLDYgKzg4NjgsNyBAQAogCQlBOEE1NjRBNDExREMwRTU5MDAzQUMyRjAgLyogSFRNTEZvcm1h
dHRpbmdFbGVtZW50TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQThBOTA5QUEwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE5
MDlBQjBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThCQzA0
OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIVE1MRW50aXR5VGFibGUuY3BwOyBwYXRoID0gL2J1aWxk
L0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eVRhYmxlLmNwcDsgc291cmNl
VHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJQThCQ0ZEMDQxMjBBMDQ2MTAwQjVGMTIyIC8qIFNW
R1BhdGhTZWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0
aFNlZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzIyODBEMTFENEE1OTcw
MEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZWREYXRhRG9jdW1lbnRQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwOTQxLDcgKzEwOTQ5LDYg
QEAKIAkJRTFGRjU3QTUwRjAxMjU2QjAwODkxRUJCIC8qIFRocmVhZEdsb2JhbERhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR2xvYmFsRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZGM0ZBMTE5ODMwNEQwMDlENTlENiAv
KiBEb2NUeXBlU3RyaW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEb2NUeXBlU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDZG
M0ZCMTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRTQwNkY0MDIxMTk4MzI5QTAwOUQ1OUQ2IC8qIEhUTUxFbnRpdHlOYW1lcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50aXR5TmFtZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE1RjEwQzBEOUEwNTg3MDAzM0NFOTcgLyog
RWxlbWVudFRpbWVDb250cm9sLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50VGlt
ZUNvbnRyb2wuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDE1RjE2ODBEOUEx
NjVEMDAzM0NFOTcgLyogRE9NRWxlbWVudFRpbWVDb250cm9sLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTUVsZW1lbnRUaW1lQ29udHJvbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDE1RjE4MzBEOUExQTgzMDAzM0NFOTcgLyogRWxlbWVudFRpbWVDb250
cm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRUaW1lQ29udHJv
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIyODgsNyArMTIyOTUsNyBAQAog
CQkJCUU0MDZGM0ZBMTE5ODMwNEQwMDlENTlENiAvKiBEb2NUeXBlU3RyaW5ncy5jcHAgKi8sCiAJ
CQkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8s
CiAJCQkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICov
LAotCQkJCUU0MDZGNDAyMTE5ODMyOUEwMDlENTlENiAvKiBIVE1MRW50aXR5TmFtZXMuY3BwICov
LAorCQkJCUE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwICov
LAogCQkJCUE4RDA2QjM4MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuY3BwICovLAogCQkJ
CUE4RDA2QjM3MEEyNjVEQ0QwMDVFNzIwMyAvKiBIVE1MTmFtZXMuaCAqLywKIAkJCQk5MzhFNjVG
NjA5RjA5ODVEMDA4QTQ4RUMgLyogSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCAqLywK
QEAgLTEzOTg2LDYgKzEzOTkzLDEwIEBACiAJCQkJODU5MTI4NzkwQUIyMjJFQzAwMjAyMjY1IC8q
IEhUTUxFbWJlZEVsZW1lbnQuaWRsICovLAogCQkJCTk3NkU4OTVFMTFDMENBM0EwMEVBOUNBOSAv
KiBIVE1MRW50aXR5UGFyc2VyLmNwcCAqLywKIAkJCQk5NzZFODk1RjExQzBDQTNBMDBFQTlDQTkg
LyogSFRNTEVudGl0eVBhcnNlci5oICovLAorCQkJCTk3MEM0RkRGMTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLywKKwkJCQk5NzBDNEZFMDEyMTEyNjYyMDBDM0QzOTMg
LyogSFRNTEVudGl0eVNlYXJjaC5oICovLAorCQkJCTk3MEM0RkUxMTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5VGFibGUuY3BwICovLAorCQkJCTk3MEM0RkUyMTIxMTI2NjIwMEMzRDM5MyAv
KiBIVE1MRW50aXR5VGFibGUuaCAqLywKIAkJCQlBODEzNjlCOTA5NzM3NEY1MDBENzQ0NjMgLyog
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgKi8sCiAJCQkJQTgxMzY5QjgwOTczNzRGNTAwRDc0NDYz
IC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuaCAqLywKIAkJCQkxQUUyQTlGNDBBMUNEQTU3MDBCNDJC
MjUgLyogSFRNTEZpZWxkU2V0RWxlbWVudC5pZGwgKi8sCkBAIC0yMDE1Niw2ICsyMDE2Nyw3IEBA
CiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkVFRDU3RkUxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVCbG9iUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE4QkMwNDRGMTIxNEVCMkIwMEI1RjEyMiAvKiBI
VE1MRW50aXR5U2VhcmNoLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIyNTgyLDYgKzIyNTk0LDggQEAK
IAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJFRUQ1N0ZEMTIxNEE5QzIwMDc2NTZCQiAvKiBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4QkMwNDRFMTIxNEVCMkEw
MEI1RjEyMiAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4QkMw
NDkyMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzY2NWVmZWE1MjQwMWEyMDIzMzdjZjJlYTZiYjg4MDBiYmNiNzU0ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0
eU5hbWVzLmdwZXJmCisrKyAvZGV2L251bGwKQEAgLTEsMzAzICswLDAgQEAKLSV7Ci0vKgotICAg
ICBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAbXBpLWhkLm1wZy5kZSkKLSAg
ICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAgCi0gICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAgCi0gICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAgCi0gICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gIAotICAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0gIAotICAgIEhUTUxFbnRpdHlOYW1lcy5ncGVyZjogaW5wdXQgZmlsZSB0byBnZW5lcmF0ZSBh
IGhhc2ggdGFibGUgZm9yIGVudGl0aWVzCi0gICAgSFRNTEVudGl0eU5hbWVzLmNwcDogRE8gTk9U
IEVESVQhIGdlbmVyYXRlZCBieSBXZWJDb3JlL21ha2UtaGFzaC10b29scy5wbAotKi8KLSV9Ci0l
c3RydWN0LXR5cGUKLXN0cnVjdCBFbnRpdHkgewotICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAg
aW50IGNvZGU7Ci19OwotJWxhbmd1YWdlPUFOU0ktQwotJXJlYWRvbmx5LXRhYmxlcwotJWdsb2Jh
bC10YWJsZQotJWNvbXBhcmUtc3RybmNtcAotJWRlZmluZSBsb29rdXAtZnVuY3Rpb24tbmFtZSBm
aW5kRW50aXR5Ci0lZGVmaW5lIGhhc2gtZnVuY3Rpb24tbmFtZSBlbnRpdHlfaGFzaF9mdW5jdGlv
bgotJWluY2x1ZGVzCi0lZW51bQotJSUKLUFFbGlnLCAweDAwYzYKLUFNUCwgMzgKLUFhY3V0ZSwg
MHgwMGMxCi1BY2lyYywgMHgwMGMyCi1BZ3JhdmUsIDB4MDBjMAotQWxwaGEsIDB4MDM5MQotQXJp
bmcsIDB4MDBjNQotQXRpbGRlLCAweDAwYzMKLUF1bWwsIDB4MDBjNAotQmV0YSwgMHgwMzkyCi1D
T1BZLCAweDAwYTkKLUNjZWRpbCwgMHgwMGM3Ci1DaGksIDB4MDNhNwotRGFnZ2VyLCAweDIwMjEK
LURlbHRhLCAweDAzOTQKLUVUSCwgMHgwMGQwCi1FYWN1dGUsIDB4MDBjOQotRWNpcmMsIDB4MDBj
YQotRWdyYXZlLCAweDAwYzgKLUVwc2lsb24sIDB4MDM5NQotRXRhLCAweDAzOTcKLUV1bWwsIDB4
MDBjYgotR1QsIDYyCi1HYW1tYSwgMHgwMzkzCi1JYWN1dGUsIDB4MDBjZAotSWNpcmMsIDB4MDBj
ZQotSWdyYXZlLCAweDAwY2MKLUlvdGEsIDB4MDM5OQotSXVtbCwgMHgwMGNmCi1LYXBwYSwgMHgw
MzlhCi1MVCwgNjAKLUxhbWJkYSwgMHgwMzliCi1NdSwgMHgwMzljCi1OdGlsZGUsIDB4MDBkMQot
TnUsIDB4MDM5ZAotT0VsaWcsIDB4MDE1MgotT2FjdXRlLCAweDAwZDMKLU9jaXJjLCAweDAwZDQK
LU9ncmF2ZSwgMHgwMGQyCi1PbWVnYSwgMHgwM2E5Ci1PbWljcm9uLCAweDAzOWYKLU9zbGFzaCwg
MHgwMGQ4Ci1PdGlsZGUsIDB4MDBkNQotT3VtbCwgMHgwMGQ2Ci1QaGksIDB4MDNhNgotUGksIDB4
MDNhMAotUHJpbWUsIDB4MjAzMwotUHNpLCAweDAzYTgKLVFVT1QsIDM0Ci1SRUcsIDB4MDBhZQot
UmhvLCAweDAzYTEKLVNjYXJvbiwgMHgwMTYwCi1TaWdtYSwgMHgwM2EzCi1USE9STiwgMHgwMGRl
Ci1UYXUsIDB4MDNhNAotVGhldGEsIDB4MDM5OAotVWFjdXRlLCAweDAwZGEKLVVjaXJjLCAweDAw
ZGIKLVVncmF2ZSwgMHgwMGQ5Ci1VcHNpbG9uLCAweDAzYTUKLVV1bWwsIDB4MDBkYwotWGksIDB4
MDM5ZQotWWFjdXRlLCAweDAwZGQKLVl1bWwsIDB4MDE3OAotWmV0YSwgMHgwMzk2Ci1hYWN1dGUs
IDB4MDBlMQotYWNpcmMsIDB4MDBlMgotYWN1dGUsIDB4MDBiNAotYWVsaWcsIDB4MDBlNgotYWdy
YXZlLCAweDAwZTAKLWFsZWZzeW0sIDB4MjEzNQotYWxwaGEsIDB4MDNiMQotYW1wLCAzOAotYW5k
LCAweDIyMjcKLWFuZywgMHgyMjIwCi1hcG9zLCAweDAwMjcKLWFyaW5nLCAweDAwZTUKLWFzeW1w
LCAweDIyNDgKLWF0aWxkZSwgMHgwMGUzCi1hdW1sLCAweDAwZTQKLWJkcXVvLCAweDIwMWUKLWJl
dGEsIDB4MDNiMgotYnJ2YmFyLCAweDAwYTYKLWJ1bGwsIDB4MjAyMgotY2FwLCAweDIyMjkKLWNj
ZWRpbCwgMHgwMGU3Ci1jZWRpbCwgMHgwMGI4Ci1jZW50LCAweDAwYTIKLWNoaSwgMHgwM2M3Ci1j
aXJjLCAweDAyYzYKLWNsdWJzLCAweDI2NjMKLWNvbmcsIDB4MjI0NQotY29weSwgMHgwMGE5Ci1j
cmFyciwgMHgyMWI1Ci1jdXAsIDB4MjIyYQotY3VycmVuLCAweDAwYTQKLWRBcnIsIDB4MjFkMwot
ZGFnZ2VyLCAweDIwMjAKLWRhcnIsIDB4MjE5MwotZGVnLCAweDAwYjAKLWRlbHRhLCAweDAzYjQK
LWRpYW1zLCAweDI2NjYKLWRpdmlkZSwgMHgwMGY3Ci1lYWN1dGUsIDB4MDBlOQotZWNpcmMsIDB4
MDBlYQotZWdyYXZlLCAweDAwZTgKLWVtcHR5LCAweDIyMDUKLWVtc3AsIDB4MjAwMwotZW5zcCwg
MHgyMDAyCi1lcHNpbG9uLCAweDAzYjUKLWVxdWl2LCAweDIyNjEKLWV0YSwgMHgwM2I3Ci1ldGgs
IDB4MDBmMAotZXVtbCwgMHgwMGViCi1ldXJvLCAweDIwYWMKLWV4aXN0LCAweDIyMDMKLWZub2Ys
IDB4MDE5MgotZm9yYWxsLCAweDIyMDAKLWZyYWMxMiwgMHgwMGJkCi1mcmFjMTQsIDB4MDBiYwot
ZnJhYzM0LCAweDAwYmUKLWZyYXNsLCAweDIwNDQKLWdhbW1hLCAweDAzYjMKLWdlLCAweDIyNjUK
LWd0LCA2MgotaEFyciwgMHgyMWQ0Ci1oYXJyLCAweDIxOTQKLWhlYXJ0cywgMHgyNjY1Ci1oZWxs
aXAsIDB4MjAyNgotaWFjdXRlLCAweDAwZWQKLWljaXJjLCAweDAwZWUKLWlleGNsLCAweDAwYTEK
LWlncmF2ZSwgMHgwMGVjCi1pbWFnZSwgMHgyMTExCi1pbmZpbiwgMHgyMjFlCi1pbnQsIDB4MjIy
YgotaW90YSwgMHgwM2I5Ci1pcXVlc3QsIDB4MDBiZgotaXNpbiwgMHgyMjA4Ci1pdW1sLCAweDAw
ZWYKLWthcHBhLCAweDAzYmEKLWxBcnIsIDB4MjFkMAotbGFtYmRhLCAweDAzYmIKLWxhbmcsIDB4
MzAwOAotbGFxdW8sIDB4MDBhYgotbGFyciwgMHgyMTkwCi1sY2VpbCwgMHgyMzA4Ci1sZHF1bywg
MHgyMDFjCi1sZSwgMHgyMjY0Ci1sZmxvb3IsIDB4MjMwYQotbG93YXN0LCAweDIyMTcKLWxveiwg
MHgyNWNhCi1scm0sIDB4MjAwZQotbHNhcXVvLCAweDIwMzkKLWxzcXVvLCAweDIwMTgKLWx0LCA2
MAotbWFjciwgMHgwMGFmCi1tZGFzaCwgMHgyMDE0Ci1taWNybywgMHgwMGI1Ci1taWRkb3QsIDB4
MDBiNwotbWludXMsIDB4MjIxMgotbXUsIDB4MDNiYwotbmFibGEsIDB4MjIwNwotbmJzcCwgMHgw
MGEwCi1uZGFzaCwgMHgyMDEzCi1uZSwgMHgyMjYwCi1uaSwgMHgyMjBiCi1ub3QsIDB4MDBhYwot
bm90aW4sIDB4MjIwOQotbnN1YiwgMHgyMjg0Ci1uc3VwLCAweDIyODUKLW50aWxkZSwgMHgwMGYx
Ci1udSwgMHgwM2JkCi1vYWN1dGUsIDB4MDBmMwotb2NpcmMsIDB4MDBmNAotb2VsaWcsIDB4MDE1
Mwotb2dyYXZlLCAweDAwZjIKLW9saW5lLCAweDIwM2UKLW9tZWdhLCAweDAzYzkKLW9taWNyb24s
IDB4MDNiZgotb3BsdXMsIDB4MjI5NQotb3IsIDB4MjIyOAotb3JkZiwgMHgwMGFhCi1vcmRtLCAw
eDAwYmEKLW9zbGFzaCwgMHgwMGY4Ci1vdGlsZGUsIDB4MDBmNQotb3RpbWVzLCAweDIyOTcKLW91
bWwsIDB4MDBmNgotcGFyYSwgMHgwMGI2Ci1wYXJ0LCAweDIyMDIKLXBlcmNudCwgMHgwMDI1Ci1w
ZXJtaWwsIDB4MjAzMAotcGVycCwgMHgyMmE1Ci1waGksIDB4MDNjNgotcGksIDB4MDNjMAotcGl2
LCAweDAzZDYKLXBsdXNtbiwgMHgwMGIxCi1wb3VuZCwgMHgwMGEzCi1wcmltZSwgMHgyMDMyCi1w
cm9kLCAweDIyMGYKLXByb3AsIDB4MjIxZAotcHNpLCAweDAzYzgKLXF1b3QsIDM0Ci1yQXJyLCAw
eDIxZDIKLXJhZGljLCAweDIyMWEKLXJhbmcsIDB4MzAwOQotcmFxdW8sIDB4MDBiYgotcmFyciwg
MHgyMTkyCi1yY2VpbCwgMHgyMzA5Ci1yZHF1bywgMHgyMDFkCi1yZWFsLCAweDIxMWMKLXJlZywg
MHgwMGFlCi1yZmxvb3IsIDB4MjMwYgotcmhvLCAweDAzYzEKLXJsbSwgMHgyMDBmCi1yc2FxdW8s
IDB4MjAzYQotcnNxdW8sIDB4MjAxOQotc2JxdW8sIDB4MjAxYQotc2Nhcm9uLCAweDAxNjEKLXNk
b3QsIDB4MjJjNQotc2VjdCwgMHgwMGE3Ci1zaHksIDB4MDBhZAotc2lnbWEsIDB4MDNjMwotc2ln
bWFmLCAweDAzYzIKLXNpbSwgMHgyMjNjCi1zcGFkZXMsIDB4MjY2MAotc3ViLCAweDIyODIKLXN1
YmUsIDB4MjI4Ngotc3VtLCAweDIyMTEKLXN1cCwgMHgyMjgzCi1zdXAxLCAweDAwYjkKLXN1cDIs
IDB4MDBiMgotc3VwMywgMHgwMGIzCi1zdXBlLCAweDIyODcKLXN1cGwsIDB4MDBiOQotc3psaWcs
IDB4MDBkZgotdGF1LCAweDAzYzQKLXRoZXJlNCwgMHgyMjM0Ci10aGV0YSwgMHgwM2I4Ci10aGV0
YXN5bSwgMHgwM2QxCi10aGluc3AsIDB4MjAwOQotdGhvcm4sIDB4MDBmZQotdGlsZGUsIDB4MDJk
YwotdGltZXMsIDB4MDBkNwotdHJhZGUsIDB4MjEyMgotdUFyciwgMHgyMWQxCi11YWN1dGUsIDB4
MDBmYQotdWFyciwgMHgyMTkxCi11Y2lyYywgMHgwMGZiCi11Z3JhdmUsIDB4MDBmOQotdW1sLCAw
eDAwYTgKLXVwc2loLCAweDAzZDIKLXVwc2lsb24sIDB4MDNjNQotdXVtbCwgMHgwMGZjCi13ZWll
cnAsIDB4MjExOAoteGksIDB4MDNiZQoteWFjdXRlLCAweDAwZmQKLXllbiwgMHgwMGE1Ci15dW1s
LCAweDAwZmYKLXpldGEsIDB4MDNiNgotendqLCAweDIwMGQKLXp3bmosIDB4MjAwYwotJSUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MRW50aXR5UGFyc2VyLmNwcAppbmRleCA2YmVjODE5MGRjODg2Y2MzZTY5ZGY3MWVkMDQw
NWZhMTA2YzBiZTAzLi40ODIyODI3Y2Y0M2M1NDgyMTRhNTQxZGE3ZjM5NjY4Yjg4ZjA5MDAwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTEVudGl0eVBhcnNlci5oIgogCisjaW5jbHVkZSAiSFRN
TEVudGl0eVNlYXJjaC5oIgorI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2luY2x1ZGUgIkhUTUxFbnRpdHlOYW1lcy5jcHAiCkBAIC0xMDIs
NyArMTA0LDYgQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICBFbnRpdHlTdGF0ZSBlbnRp
dHlTdGF0ZSA9IEluaXRpYWw7CiAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICBWZWN0b3I8
VUNoYXIsIDEwPiBjb25zdW1lZENoYXJhY3RlcnM7Ci0gICAgVmVjdG9yPGNoYXIsIDEwPiBlbnRp
dHlOYW1lOwogCiAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CiAgICAgICAgIFVDaGFy
IGNjID0gKnNvdXJjZTsKQEAgLTE2Niw3ICsxNjcsNyBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVu
dGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywg
VQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzsnKSB7CiAgICAgICAgICAgICAgICAgc291
cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBsZWdh
bEVudGl0eUZvcihyZXN1bHQpOwotICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTgxLDQ4ICsxODIsNDggQEAgdW5zaWduZWQg
Y29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3Vn
aENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgTmFtZWQ6IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgd3JvbmcuIFdl
IG5lZWQgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBlbnRpdHkuCi0gICAgICAgICAgICAv
LyAgICAgICAgVGhlIGV4YW1wbGVzIGZyb20gdGhlIHNwZWMgYXJlOgotICAgICAgICAgICAgLy8g
ICAgICAgICAgICBJJ20gJm5vdGl0OyBJIHRlbGwgeW91Ci0gICAgICAgICAgICAvLyAgICAgICAg
ICAgIEknbSAmbm90aW47IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICBJbiB0aGUg
Zmlyc3QgY2FzZSwgIiZub3QiIGlzIHRoZSBlbnRpdHkuICBJbiB0aGUgc2Vjb25kCi0gICAgICAg
ICAgICAvLyAgICAgICAgY2FzZSwgIiZub3RpbjsiIGlzIHRoZSBlbnRpdHkuCi0gICAgICAgICAg
ICAvLyBGSVhNRTogT3VyIGxpc3Qgb2YgSFRNTCBlbnRpdGllcyBpcyBpbmNvbXBsZXRlLgotICAg
ICAgICAgICAgLy8gRklYTUU6IFRoZSBudW1iZXIgOCBiZWxvdyBpcyBib2d1cy4KLSAgICAgICAg
ICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSAmJiBlbnRpdHlOYW1lLnNpemUoKSA8PSA4KSB7
CisgICAgICAgICAgICBIVE1MRW50aXR5U2VhcmNoIGVudGl0eVNlYXJjaDsKKyAgICAgICAgICAg
IHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIGNjID0gKnNvdXJj
ZTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVudGl0eSogZW50aXR5ID0gZmluZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50
aXR5TmFtZS5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnOycpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpc0FscGhhTnVtZXJpYyhjYykpIHsKLSAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBl
bnRpdHlOYW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEhUTUw1IHRlbGxzIHVzIHRvIGlnbm9yZSB0aGlzIGVu
dGl0eSwgZm9yIGhpc3RvcmljYWwgcmVhc29ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlmIHRoZSBsb29raGVhZCBjaGFyYWN0ZXIgaXMgJz0nLgotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyICYmIGNjID09ICc9JykKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNv
bWUgZW50aXRpZXMgcmVxdWlyZSBhIHRlcm1pbmF0aW5nIHNlbWljb2xvbiwgd2hlcmVhcyBvdGhl
cgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZW50aXRpZXMgZG8gbm90LiAgVGhlIEhUTUw1
IHNwZWMgaGFzIGEgZ2lhbnQgbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFw
cHMvY3VycmVudC13b3JrL211bHRpcGFnZS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1s
I25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLwot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhlIGxpc3Qgc2VlbXMgdG8gYm9p
bCBkb3duIHRvIHRoaXMgYnJhbmNoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0
eS0+Y29kZSA+IDI1NSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBlbnRpdHlTZWFyY2guYWR2YW5jZShjYyk7CisgICAgICAg
ICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2guaXNFbnRpdHlQcmVmaXgoKSkKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVudGl0
eU5hbWUuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBjb25zdW1lZENoYXJhY3RlcnMuYXBw
ZW5kKGNjKTsKICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBub3RFbm91Z2hDaGFyYWN0ZXJzID0gc291cmNlLmlz
RW1wdHkoKTsKKyAgICAgICAgICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuJ3QgYW4gZW50aXR5IGJlY2F1c2UgdGhlcmUgbWlnaHQgYmUgYSBs
b25nZXIgZW50aXR5CisgICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSBjb3VsZCBtYXRjaCBpZiB3
ZSBoYWQgbW9yZSBkYXRhLgorICAgICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291
cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCkpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoIWVudGl0eVNlYXJjaC5jdXJyZW50VmFsdWUoKSk7Cisg
ICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFj
dGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGggIT0gZW50aXR5U2VhcmNo
LmN1cnJlbnRMZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbnN1bWVkIHRv
byBtYW55IGNoYXJhY3RlcnMuICBXZSBuZWVkIHRvIHdhbGsgdGhlCisgICAgICAgICAgICAgICAg
Ly8gc291cmNlIGJhY2sgdG8gdGhlIHBvaW50IGF0IHdoaWNoIHdlIGhhZCBjb25zdW1lZCBhbgor
ICAgICAgICAgICAgICAgIC8vIGFjdHVhbCBlbnRpdHkuCisgICAgICAgICAgICAgICAgdW5jb25z
dW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAg
ICAgY29uc3VtZWRDaGFyYWN0ZXJzLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY29uc3QgaW50
IGxlbmd0aCA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+bGVuZ3RoOworICAgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiByZWZlcmVuY2UgPSBlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmVu
dGl0eTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRChyZWZlcmVuY2UsIGNjID09ICpyZWZlcmVuY2UrKyk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQoY2MpOworICAgICAgICAgICAgICAg
ICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVChjYyk7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghc291cmNlLmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGNjID0gKnNvdXJjZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbnRpdHlT
ZWFyY2gubGFzdE1hdGNoKCktPmxhc3RDaGFyYWN0ZXIoKSA9PSAnOycpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+dmFsdWU7CisgICAgICAgICAgICBp
ZiAoIWFkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyIHx8ICEoaXNBbHBoYU51bWVyaWMoY2MpIHx8
IGNjID09ICc9JykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eVNlYXJjaC5sYXN0TWF0
Y2goKS0+dmFsdWU7CiAgICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29u
c3VtZWRDaGFyYWN0ZXJzKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTEVudGl0eVNlYXJjaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA1MjZhM2Q2ZGU3ZmIyN2ViYjNjODNh
YzM5YTFlYTdhNjZlYzE2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50
aXR5U2VhcmNoLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
VE1MRW50aXR5U2VhcmNoLmgiCisKKyNpbmNsdWRlICJIVE1MRW50aXR5VGFibGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworICAgIAorY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIGhhbGZ3YXkoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQsIGNvbnN0
IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCkKK3sKKyAgICByZXR1cm4gJmxlZnRbKHJpZ2h0
IC0gbGVmdCkgLyAyXTsKK30KKworfQorICAgIAorSFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0
eVNlYXJjaCgpCisgICAgOiBtX2N1cnJlbnRMZW5ndGgoMCkKKyAgICAsIG1fY3VycmVudFZhbHVl
KDApCisgICAgLCBtX2xhc3RNYXRjaCgwKQorICAgICwgbV9zdGFydChIVE1MRW50aXR5VGFibGU6
OnN0YXJ0KCkpCisgICAgLCBtX2VuZChIVE1MRW50aXR5VGFibGU6OmVuZCgpKQoreworfQorCitI
VE1MRW50aXR5U2VhcmNoOjpDb21wYXJlUmVzdWx0IEhUTUxFbnRpdHlTZWFyY2g6OmNvbXBhcmUo
Y29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGVudHJ5LCBVQ2hhciBuZXh0Q2hhcmFjdGVyKSBj
b25zdAoreworICAgIGlmIChlbnRyeS0+bGVuZ3RoIDwgbV9jdXJyZW50TGVuZ3RoICsgMSkKKyAg
ICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICBVQ2hhciBlbnRyeU5leHRDaGFyYWN0ZXIgPSBlbnRy
eS0+ZW50aXR5W21fY3VycmVudExlbmd0aF07CisgICAgaWYgKGVudHJ5TmV4dENoYXJhY3RlciA9
PSBuZXh0Q2hhcmFjdGVyKQorICAgICAgICByZXR1cm4gUHJlZml4OworICAgIHJldHVybiBlbnRy
eU5leHRDaGFyYWN0ZXIgPCBuZXh0Q2hhcmFjdGVyID8gQmVmb3JlIDogQWZ0ZXI7Cit9CisKK2Nv
bnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQoVUNo
YXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRy
eSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0
ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgIHJldHVybiBsZWZ0Owor
ICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShsZWZ0LCBuZXh0Q2hhcmFjdGVyKTsK
KyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgaWYg
KHJlc3VsdCA9PSBBZnRlcikKKyAgICAgICAgcmV0dXJuIHJpZ2h0OworICAgIHdoaWxlIChsZWZ0
ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9i
ZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAgICAgICByZXN1bHQgPSBjb21wYXJlKHByb2Jl
LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAg
ICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdCA9PSBBZnRlciB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAgICAgICAgIHJpZ2h0ID0g
cHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKGxlZnQgKyAxID09IHJpZ2h0KTsK
KyAgICByZXR1cm4gcmlnaHQ7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1M
RW50aXR5U2VhcmNoOjpmaW5kRW5kKFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0Cit7CisgICAg
Y29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0OworICAgIGNvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlmIChsZWZ0ID09IHJpZ2h0
KQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgQ29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21w
YXJlKHJpZ2h0LCBuZXh0Q2hhcmFjdGVyKTsKKyAgICBpZiAocmVzdWx0ID09IFByZWZpeCkKKyAg
ICAgICAgcmV0dXJuIHJpZ2h0OworICAgIGlmIChyZXN1bHQgPT0gQmVmb3JlKQorICAgICAgICBy
ZXR1cm4gbGVmdDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkgeworICAgICAgICBjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsKKyAg
ICAgICAgcmVzdWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlm
IChyZXN1bHQgPT0gQWZ0ZXIpCisgICAgICAgICAgICByaWdodCA9IHByb2JlOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQmVmb3JlIHx8IHJlc3VsdCA9PSBQ
cmVmaXgpOworICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAgICB9CisgICAgfQorICAg
IEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIGxlZnQ7Cit9CisKK3ZvaWQg
SFRNTEVudGl0eVNlYXJjaDo6YWR2YW5jZShVQ2hhciBuZXh0Q2hhcmFjdGVyKQoreworICAgIEFT
U0VSVChpc0VudGl0eVByZWZpeCgpKTsKKyAgICBpZiAoIW1fY3VycmVudExlbmd0aCkgeworICAg
ICAgICBtX3N0YXJ0ID0gSFRNTEVudGl0eVRhYmxlOjpzdGFydChuZXh0Q2hhcmFjdGVyKTsKKyAg
ICAgICAgbV9lbmQgPSBIVE1MRW50aXR5VGFibGU6OmVuZChuZXh0Q2hhcmFjdGVyKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBtX3N0YXJ0ID0gZmluZFN0YXJ0KG5leHRDaGFyYWN0ZXIpOworICAg
ICAgICBtX2VuZCA9IGZpbmRFbmQobmV4dENoYXJhY3Rlcik7CisgICAgICAgIGlmIChtX3N0YXJ0
ID09IG1fZW5kICYmIGNvbXBhcmUobV9zdGFydCwgbmV4dENoYXJhY3RlcikgIT0gUHJlZml4KQor
ICAgICAgICAgICAgcmV0dXJuIGZhaWwoKTsKKyAgICB9CisgICAgKyttX2N1cnJlbnRMZW5ndGg7
CisgICAgaWYgKG1fc3RhcnQtPmxlbmd0aCAhPSBtX2N1cnJlbnRMZW5ndGgpIHsKKyAgICAgICAg
bV9jdXJyZW50VmFsdWUgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbGFzdE1h
dGNoID0gbV9zdGFydDsKKyAgICBtX2N1cnJlbnRWYWx1ZSA9IG1fbGFzdE1hdGNoLT52YWx1ZTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guaCBiL1dl
YkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU3ODU5ZDRlYmNjZDJh
MTJiMDNiZGUwZjhjZjEyODIzOTRkYmNjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRW50aXR5U2VhcmNoLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVNlYXJjaF9o
CisjZGVmaW5lIEhUTUxFbnRpdHlTZWFyY2hfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSFRNTEVudGl0eVRhYmxlRW50cnk7
CisKK2NsYXNzIEhUTUxFbnRpdHlTZWFyY2ggeworcHVibGljOgorICAgIEhUTUxFbnRpdHlTZWFy
Y2goKTsKKworICAgIHZvaWQgYWR2YW5jZShVQ2hhcik7CisKKyAgICBib29sIGlzRW50aXR5UHJl
Zml4KCkgY29uc3QgeyByZXR1cm4gISFtX3N0YXJ0OyB9CisgICAgaW50IGN1cnJlbnRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlOyB9CisgICAgaW50IGN1cnJlbnRMZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRMZW5ndGg7IH0KKworICAgIGNvbnN0IEhUTUxFbnRp
dHlUYWJsZUVudHJ5KiBsYXN0TWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2xhc3RNYXRjaDsgfQor
Citwcml2YXRlOgorICAgIGVudW0gQ29tcGFyZVJlc3VsdCB7CisgICAgICAgIEJlZm9yZSwKKyAg
ICAgICAgUHJlZml4LAorICAgICAgICBBZnRlciwKKyAgICB9OworCisgICAgQ29tcGFyZVJlc3Vs
dCBjb21wYXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiwgVUNoYXIpIGNvbnN0OworICAg
IGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kU3RhcnQoVUNoYXIpIGNvbnN0OworICAg
IGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBmaW5kRW5kKFVDaGFyKSBjb25zdDsKKworICAg
IHZvaWQgZmFpbCgpCisgICAgeworICAgICAgICBtX2N1cnJlbnRWYWx1ZSA9IDA7CisgICAgICAg
IG1fc3RhcnQgPSAwOworICAgICAgICBtX2VuZCA9IDA7CisgICAgfQorCisgICAgaW50IG1fY3Vy
cmVudExlbmd0aDsKKyAgICBpbnQgbV9jdXJyZW50VmFsdWU7CisKKyAgICBjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogbV9sYXN0TWF0Y2g7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fZW5kOworfTsK
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUu
aCBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWExYWZkMzE2
MWYwZGNhMzRjNTJkMzAxZGNhOWMzOTU5YzcyOTMxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhUTUxFbnRpdHlUYWJs
ZV9oCisjZGVmaW5lIEhUTUxFbnRpdHlUYWJsZV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBIVE1MRW50aXR5VGFibGVFbnRy
eSB7CisgICAgVUNoYXIgbGFzdENoYXJhY3RlcigpIGNvbnN0IHsgcmV0dXJuIGVudGl0eVtsZW5n
dGggLSAxXTsgfQorCisgICAgY29uc3QgVUNoYXIqIGVudGl0eTsKKyAgICBpbnQgbGVuZ3RoOwor
ICAgIGludCB2YWx1ZTsKK307CisKK2NsYXNzIEhUTUxFbnRpdHlUYWJsZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFydCgpOworICAgIHN0YXRp
YyBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW5kKCk7CisKKyAgICBzdGF0aWMgY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIHN0YXJ0KFVDaGFyKTsKKyAgICBzdGF0aWMgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIGVuZChVQ2hhcik7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9tYWtlLWhhc2gtdG9vbHMucGwgYi9XZWJDb3JlL21ha2UtaGFzaC10b29s
cy5wbAppbmRleCA0MmNiNmZkOTU4ZjEwNWFlNmFmYmY2ZWRlMzQ4YWMzNWI2ZjM5NjNlLi44Y2M5
OTUyYzE1NzJiMDAzMzgxYjBkODI3M2NiMWQ2NjVjMzBmZmU4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L21ha2UtaGFzaC10b29scy5wbAorKysgYi9XZWJDb3JlL21ha2UtaGFzaC10b29scy5wbApAQCAt
MjksMTYgKzI5LDYgQEAgbXkgJG9wdGlvbiA9IGJhc2VuYW1lKCRBUkdWWzBdLCIuZ3BlcmYiKTsK
IAogc3dpdGNoICgkb3B0aW9uKSB7CiAKLWNhc2UgIkhUTUxFbnRpdHlOYW1lcyIgewotCi0gICAg
bXkgJGh0bWxFbnRpdHlOYW1lc0dlbmVyYXRlZCAgID0gIiRvdXRkaXIvSFRNTEVudGl0eU5hbWVz
LmNwcCI7Ci0gICAgbXkgJGh0bWxFbnRpdHlOYW1lc0dwZXJmICAgICAgID0gJEFSR1ZbMF07Ci0g
ICAgc2hpZnQ7Ci0KLSAgICBzeXN0ZW0oImdwZXJmIC0ta2V5LXBvc2l0aW9ucz1cIipcIiAtRCAt
cyAyICRodG1sRW50aXR5TmFtZXNHcGVyZiA+ICRodG1sRW50aXR5TmFtZXNHZW5lcmF0ZWQiKSA9
PSAwIHx8IGRpZSAiY2FsbGluZyBncGVyZiBmYWlsZWQ6ICQ/IjsKLQotfSAjIGNhc2UgIkhUTUxF
bnRpdHlOYW1lcyIKLQogY2FzZSAiRG9jVHlwZVN0cmluZ3MiIHsKIAogICAgIG15ICRkb2NUeXBl
U3RyaW5nc0dlbmVyYXRlZCAgICA9ICIkb3V0ZGlyL0RvY1R5cGVTdHJpbmdzLmNwcCI7CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKaW5k
ZXggZjhkMWQ4OGMyYmQ4YWM5M2NmNjI4ZDA2MjNjNTg5NzgyNzRjMTk1My4uODUyMWVhYmQ3Y2Jh
NTY1OWQyNGI0ZDMxMzE3MTRmNzgwYTA0N2VlZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEw
LTA4LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIE1hdGhNTCBl
bnRpdGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDM1OTUKKworICAgICAgICBBIHNjcmlwdCBmb3IgZ2VuZXJhdGluZyB0aGUgQysrIHN0YXRlIGRh
dGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgYWxsIHRoZQorICAgICAgICBlbnRpdGllcyBmcm9tIGEg
SlNPTiBkZXNjcmlwdGlvbi4KKworICAgICAgICBOb3RlOiBUaGlzIHNjcmlwdCBpcyBub3QgeWV0
IGludGVncmF0ZWQgd2l0aCB0aGUgYnVpbGQgc3lzdGVtLCBzbyB0aGlzCisgICAgICAgICAgICAg
IHBhdGNoIHdpbGwgbm90IGJ1aWxkISAgT09QUyEKKworICAgICAgICAqIFNjcmlwdHMvY3JlYXRl
LWh0bWwtZW50aXR5LXRhYmxlOiBBZGRlZC4KKwogMjAxMC0wOC0xMiAgRGF2aWQgTGV2aW4gIDxs
ZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQnVpbGQgYnJlYWsgZml4LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQpuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTEzYjI5
ZGE3OGIzZmI1ZWI4MGY4NDViYmIzNDgwMzMwYzMyMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKQEAgLTAsMCArMSwxNzMg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IG9z
LnBhdGgKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKKworaW1wb3J0IHdlYmtpdHB5LnRoaXJk
cGFydHkuc2ltcGxlanNvbiBhcyBzaW1wbGVqc29uCisKKworZGVmIGNvbnZlcnRfZW50aXR5X3Rv
X2NwcF9uYW1lKGVudGl0eSk6CisgICAgcG9zdGZpeCA9ICJFbnRpdHlOYW1lIgorICAgIGlmIGVu
dGl0eVstMV0gPT0gIjsiOgorICAgICAgICByZXR1cm4gIiVzU2VtaWNvbG9uJXMiICUgKGVudGl0
eVs6LTFdLCBwb3N0Zml4KQorICAgIHJldHVybiAiJXMlcyIgJSAoZW50aXR5LCBwb3N0Zml4KQor
CisKK2RlZiBjb252ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRpdHkpOgorICAgIHJldHVy
biAieyclcyd9IiAlICInLCAnIi5qb2luKGVudGl0eSkKKworCitkZWYgY29udmVydF92YWx1ZV90
b19pbnQodmFsdWUpOgorICAgIGFzc2VydCh2YWx1ZVswXSA9PSAiVSIpCisgICAgYXNzZXJ0KHZh
bHVlWzFdID09ICIrIikKKyAgICByZXR1cm4gIjB4IiArIHZhbHVlWzI6XQorCisKK2RlZiBvZmZz
ZXRfdGFibGVfZW50cnkob2Zmc2V0KToKKyAgICByZXR1cm4gIiAgICAmc3RhdGljRW50aXR5VGFi
bGVbJXNdLCIgJSBvZmZzZXQKKworCitwcm9ncmFtX25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKF9f
ZmlsZV9fKQoraWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwg
IlVzYWdlOiAlcyBJTlBVVF9GSUxFIiAlIHByb2dyYW1fbmFtZQorICAgIGV4aXQoMSkKKworaW5w
dXRfZmlsZSA9IHN5cy5hcmd2WzFdCitodG1sX2VudGl0eV9uYW1lc19maWxlID0gb3BlbihpbnB1
dF9maWxlKQorZW50cmllcyA9IHNpbXBsZWpzb24ubG9hZChodG1sX2VudGl0eV9uYW1lc19maWxl
KQoraHRtbF9lbnRpdHlfbmFtZXNfZmlsZS5jbG9zZSgpCisKK2VudHJpZXMgPSBzb3J0ZWQoZW50
cmllcywga2V5PWxhbWJkYSBlbnRyeTogZW50cnlbJ2VudGl0eSddKQorZW50aXR5X2NvdW50ID0g
bGVuKGVudHJpZXMpCisKK3ByaW50ICIiIi8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisvLyBUSElTIEZJTEUgSVMgR0VORVJBVEVEIEJZIFdlYktpdFRvb2xz
L1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCisvLyBETyBOT1QgRURJVCAodW5sZXNz
IHlvdSBhcmUgYSBuaW5qYSkhCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1M
RW50aXR5VGFibGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworIiIi
CisKK2ZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgIHByaW50ICJjb25zdCBVQ2hhciAlc0VudGl0
eU5hbWVbXSA9ICVzOyIgJSAoCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX2NwcF9uYW1lKGVu
dHJ5WyJlbnRpdHkiXSksCisgICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX3VjaGFyX2FycmF5KGVu
dHJ5WyJlbnRpdHkiXSkpCisKK3ByaW50ICIiIgorSFRNTEVudGl0eVRhYmxlRW50cnkgc3RhdGlj
RW50aXR5VGFibGVbJXNdID0geyIiIiAlIGVudGl0eV9jb3VudAorCitpbmRleCA9IHt9CitvZmZz
ZXQgPSAwCitmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICBsZXR0ZXIgPSBlbnRyeVsiZW50aXR5
Il1bMF0KKyAgICBpZiBub3QgaW5kZXguZ2V0KGxldHRlcik6CisgICAgICAgIGluZGV4W2xldHRl
cl0gPSBvZmZzZXQKKyAgICBwcmludCAnICAgIHsgJXNFbnRpdHlOYW1lLCAlcywgJXMgfSwnICUg
KAorICAgICAgICBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRyeVsiZW50aXR5Il0pLAor
ICAgICAgICBsZW4oZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgY29udmVydF92YWx1ZV90b19p
bnQoZW50cnlbInZhbHVlIl0pKQorICAgIG9mZnNldCArPSAxCisKK3ByaW50ICIiIn07CisiIiIK
KworcHJpbnQgImNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiB1cHBlcmNhc2VPZmZzZXRbXSA9
IHsiCitmb3IgbGV0dGVyIGluIHN0cmluZy51cHBlcmNhc2U6CisgICAgcHJpbnQgb2Zmc2V0X3Rh
YmxlX2VudHJ5KGluZGV4W2xldHRlcl0pCitwcmludCBvZmZzZXRfdGFibGVfZW50cnkoaW5kZXhb
J2EnXSkKK3ByaW50ICIiIn07CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBsb3dlcmNh
c2VPZmZzZXRbXSA9IHsiIiIKK2ZvciBsZXR0ZXIgaW4gc3RyaW5nLmxvd2VyY2FzZToKKyAgICBw
cmludCBvZmZzZXRfdGFibGVfZW50cnkoaW5kZXhbbGV0dGVyXSkKK3ByaW50IG9mZnNldF90YWJs
ZV9lbnRyeShlbnRpdHlfY291bnQpCitwcmludCAiIiJ9OworCit9CisKK2NvbnN0IEhUTUxFbnRp
dHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OnN0YXJ0KFVDaGFyIGMpCit7CisgICAgaWYg
KGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgICAgICByZXR1cm4gdXBwZXJjYXNlT2Zmc2V0W2Mg
LSAnQSddOworICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgcmV0dXJuIGxv
d2VyY2FzZU9mZnNldFtjIC0gJ2EnXTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6ZW5kKFVDaGFyIGMpCit7CisgICAgaWYg
KGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgICAgICByZXR1cm4gdXBwZXJjYXNlT2Zmc2V0W2Mg
LSAnQScgKyAxXSAtIDE7CisgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorICAgICAgICBy
ZXR1cm4gbG93ZXJjYXNlT2Zmc2V0W2MgLSAnYScgKyAxXSAtIDE7CisgICAgcmV0dXJuIDA7Cit9
CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OnN0YXJ0KCkK
K3sKKyAgICByZXR1cm4gJnN0YXRpY0VudGl0eVRhYmxlWzBdOworfQorCitjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjplbmQoKQoreworICAgIHJldHVybiAmc3Rh
dGljRW50aXR5VGFibGVbJXMgLSAxXTsKK30KKworfQorIiIiICUgZW50aXR5X2NvdW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64299</attachid>
            <date>2010-08-12 22:17:59 -0700</date>
            <delta_ts>2010-08-12 22:30:34 -0700</delta_ts>
            <desc>Now with all build systems including HTMLEntitySearch.*</desc>
            <filename>bug-43595-20100812221752.patch</filename>
            <type>text/plain</type>
            <size>50585</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTVhNjJmNjA5YzI4OWUzZjI1ZTMzN2YxNThkZTVkYjAxMzljZjgwLi42MmNhNjBm
MmEzZjhmYjM1YzUwYjBjYWVkM2I2OGMwOTY0Y2QxNTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0xMiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGxh
bmRpbmcgZ29vZ2xlLWNocm9tZSBsaW51eCA2NCB0ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAyZWIwMWI0Y2JmOGFh
NzYyMzg0YWI1ODEwZjJmMThmNzk5YTI1ZGNmLi44NGM3MjE3NGZkY2UxYmU1M2QxNjhkYTY4MjY2
ZWQyOTIzNGE5ODRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKQEAgLTExOCw5MiArMTE4LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0
OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3Vy
Y2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQot
VGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0
OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5Pgot
fCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwg
ICA8Ym9keT4KLXwgICAgICLihYgiCi0KLVRlc3QgMTAgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgot
fCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNvdXJjZXMvaHRtbDV0ZXN0
LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNv
bS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2VzL2VudGl0aWVzMDEu
ZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZh
aWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCityZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6
IFBBU1MKIAotVGVzdCA1IG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQu
IElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRl
bGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21t
ZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
aW5kZXggOGE4ZjdiZTM4YzY2ZTMxZjdkNWM5MWVhYTg5YjVmODM4ZmEzYTJhOS4uYzlhZTI0NTQ4
MGQ0OWZmNTAyZjcwMzA3MTJjMjRiOGMzMDU1ZTc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
dW5uZXItZXhwZWN0ZWQudHh0CkBAIC0xOTEsOTIgKzE5MSwxMCBAQCByZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMvc2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGlu
IHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7
Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6ji
n6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhl
YWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWIIgotCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRp
dGllczAxLmRhdDoKLTIKLTUKK3Jlc291cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0
IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08m
Z3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9P
Jmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAg
ICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQg
ZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4
cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxp
dDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9lbnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJj
ZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFjNjRmNjZmYzVlZjMzZDU3YzQyMmJm
MjZkMWM0N2I3MTZjMmQxNjguLjA0MTM0ZDI1Mzc4ODk0ZTdjNmRjYjMyYTljNzAxZDJhMTIzZGQ3
OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtOTczLDYgKzk3Myw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBo
dG1sL0hUTUxEb2N1bWVudC5jcHAKICAgICBodG1sL0hUTUxFbGVtZW50LmNwcAogICAgIGh0bWwv
SFRNTEVsZW1lbnRTdGFjay5jcHAKKyAgICBodG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwCiAgICAg
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIwNzYwOGU4ZWVmZTBm
NjNjYjgxZGQ5NWQwYjg5OWVlOGJjYzUwODcuLmE3NTEzYmI3YTQ0NTgyMTgyNzBhYWM5NmJjY2Q4
MzAwNmJiZjA3MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU5NQorCisgICAgICAgIEltcGxlbWVu
dGluZyB0aGUgSFRNTDUgZW50aXR5IHBhcnNpbmcgYWxnb3JpdGhtIHJlcXVpcmUgcmVmYWN0b3Jp
bmcgaG93CisgICAgICAgIHdlIHNlYXJjaCBmb3IgZW50aXR5IG5hbWVzLiAgSW5zdGVhZCBvZiB1
c2luZyBhIHBlcmZlY3QgaGFzaCwgd2Ugbm93CisgICAgICAgIHVzZSBhIHNvcnRlZCBsaXN0LiAg
QXMgd2UgYWR2YW5jZSB0aHJvdWdoIHRoZSBpbnB1dCwgd2Ugd2FsayBkb3duIGEKKyAgICAgICAg
YmluYXJ5IHNlYXJjaCBvZiB0aGUgdGFibGUgbG9va2luZyBmb3IgYW4gZW50aXR5LgorCisgICAg
ICAgIFVzaW5nIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgbGV0cyB1cyBrZWVwIHRyYWNrIG9mIHdoZXRo
ZXIgdGhlIGN1cnJlbnQKKyAgICAgICAgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFuIGV4aXN0aW5n
IGVudGl0eSwgd2hpY2ggd2UgbmVlZCBmb3IgdGhlCisgICAgICAgIGFsZ29yaXRobS4gIEluIGEg
ZnV0dXJlIHBhdGNoLCBJIHBsYW4gdG8gYWRkIHNvbWUgaW5kaWNpZXMgdG8gdGhlCisgICAgICAg
IHRhYmxlLCB3aGljaCBzaG91bGQgbGV0IHVzIG5hcnJvdyBkb3duIHRoZSByYW5nZSBvZiBpbnRl
cmVzdGluZyBlbnRyaWVzCisgICAgICAgIG1vcmUgcXVpY2tseS4KKworICAgICAgICBUaGUgb25l
IG5hc3R5IHBpZWNlIG9mIHRoZSBhbGdvcml0aG0gaXMgaWYgd2Ugd2FsayB0b28gZmFyIGRvd24g
dGhlCisgICAgICAgIGlucHV0IGFuZCB3ZSBuZWVkIHRvIGJhY2sgdXAgdG8gYSBwcmV2aW91cyBt
YXRjaC4gIEluIHRoaXMgcGF0Y2gsIHdlCisgICAgICAgIGFjY29tcGxpc2ggdGhpcyBieSByZXdp
bmRpbmcgdGhlIGlucHV0IGFuZCBjb25zdW1pbmcgYSBrbm93biBudW1iZXIgb2YKKyAgICAgICAg
Y2hhcmFjdGVycyB0byByZXN5bmMgdGhlIHNvdXJjZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUhUTUxFbnRpdHkpOgorICAgICAgICAqIGh0
bWwvSFRNTEVudGl0eVNlYXJjaC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OkhUTUxFbnRpdHlTZWFyY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6Y29tcGFyZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRW50aXR5U2VhcmNoOjpmaW5kU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVudGl0eVNlYXJjaDo6ZmluZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2Vh
cmNoOjphZHZhbmNlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlTZWFyY2guaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjppc0VudGl0eVByZWZpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjdXJyZW50VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6bGFzdE1hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbnRpdHlTZWFyY2g6Oik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2Vh
cmNoOjpmYWlsKToKKyAgICAgICAgKiBodG1sL0hUTUxFbnRpdHlUYWJsZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlUYWJsZUVudHJ5OjpsYXN0Q2hhcmFjdGVyKToKKwog
MjAxMC0wOC0xMiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBUb255IENoYW5nLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDM3YzJmMTBkMzNm
OGRiZDkyMzhkYmI0ZTI0NWZlZWMzOWI2YzllZGYuLmM1ZGRmZjllYWIyYmQ3YTEwYzJhNWM0NzRi
ZGE1NjdhNWE4YzFiNDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQor
KysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTUwNSw3ICs1MDUsNyBAQCBhbGwg
OiBcCiAgICAgQ29sb3JEYXRhLmNwcCBcCiAgICAgRG9jVHlwZVN0cmluZ3MuY3BwIFwKICAgICBI
VE1MRWxlbWVudEZhY3RvcnkuY3BwIFwKLSAgICBIVE1MRW50aXR5TmFtZXMuY3BwIFwKKyAgICBI
VE1MRW50aXR5VGFibGUuY3BwIFwKICAgICBIVE1MTmFtZXMuY3BwIFwKICAgICBXTUxFbGVtZW50
RmFjdG9yeS5jcHAgXAogICAgIFdNTE5hbWVzLmNwcCBcCkBAIC02MDAsOCArNjAwLDggQEAgRG9j
VHlwZVN0cmluZ3MuY3BwIDogaHRtbC9Eb2NUeXBlU3RyaW5ncy5ncGVyZiAkKFdlYkNvcmUpL21h
a2UtaGFzaC10b29scy5wbAogCiAjIEhUTUwgZW50aXR5IG5hbWVzCiAKLUhUTUxFbnRpdHlOYW1l
cy5jcHAgOiBodG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZiAkKFdlYkNvcmUpL21ha2UtaGFzaC10
b29scy5wbAotCXBlcmwgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwgLiAkKFdlYkNvcmUp
L2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitIVE1MRW50aXR5VGFibGUuY3BwIDogaHRtbC9I
VE1MRW50aXR5TmFtZXMuanNvbiAkKFdlYkNvcmUpLy4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3Jl
YXRlLWh0bWwtZW50aXR5LXRhYmxlCisJcHl0aG9uICQoV2ViQ29yZSkvLi4vV2ViS2l0VG9vbHMv
U2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUgJChXZWJDb3JlKS9odG1sL0hUTUxFbnRp
dHlOYW1lcy5qc29uID4gSFRNTEVudGl0eVRhYmxlLmNwcAogCiAjIC0tLS0tLS0tCiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmlu
ZGV4IGJjYTJhYWUzMGZiOTA5NWY2OWYwZmVlMTg5NmI5ZWNiZjdhNDc5OTUuLjcyMGNiYzJiNTFh
Y2YxMTJjMTk0Mjk5ZWZmNzVjNWIyODUyNTAxOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtOTIsNyArOTIsNyBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ1NTVmFs
dWVLZXl3b3Jkcy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbGVtZW50RmFjdG9y
eS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5LmggXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5hbWVzLmNwcCBcCisJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0hUTUxOYW1lcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTE5hbWVzLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3Bw
IFwKQEAgLTE0MjcsNiArMTQyNyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudFN0YWNrLmNwcCBc
CiAJV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suaCBcCisJV2ViQ29yZS9odG1sL0hUTUxF
bnRpdHlTZWFyY2guY3BwIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5oIFwKIAlX
ZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgXAogCVdlYkNvcmUvaHRtbC9IVE1MRW1i
ZWRFbGVtZW50LmggXAogCVdlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBcCkBA
IC00MzkzLDggKzQzOTUsOCBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0RvY1R5cGVTdHJpbmdz
LmNwcCA6ICQoV2ViQ29yZSkvaHRtbC9Eb2NUeXBlU3RyaW5ncy5ncGVyZgogCSQoUEVSTCkgJChX
ZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwgJChHRU5TT1VSQ0VTX1dFQkNPUkUpICQoV2ViQ29y
ZSkvaHRtbC9Eb2NUeXBlU3RyaW5ncy5ncGVyZgogCiAjIEhUTUwgZW50aXR5IG5hbWVzCi1EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlOYW1lcy5jcHAgOiAkKFdlYkNvcmUpL2h0bWwv
SFRNTEVudGl0eU5hbWVzLmdwZXJmICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xzLnBsCi0JJChQ
RVJMKSAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkg
JChXZWJDb3JlKS9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZgorRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9IVE1MRW50aXR5VGFibGUuY3BwIDogJChXZWJDb3JlKS9odG1sL0hUTUxFbnRpdHlOYW1l
cy5qc29uICQoV2ViQ29yZSkvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1lbnRp
dHktdGFibGUKKwkkKFBZVEhPTikgJChXZWJDb3JlKS8uLi9XZWJLaXRUb29scy9TY3JpcHRzL2Ny
ZWF0ZS1odG1sLWVudGl0eS10YWJsZSAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmpz
b24gPiAkKEdFTlNPVVJDRVNfV0VCQ09SRSkvSFRNTEVudGl0eVRhYmxlLmNwcAogCiAjIGNvbG9y
IG5hbWVzCiBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0NvbG9yRGF0YS5jcHA6ICQoV2ViQ29yZSkv
cGxhdGZvcm0vQ29sb3JEYXRhLmdwZXJmICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xzLnBsCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCBhMjhlZTVkMDYxMDU5YWJmYTRlZjkxNTgyZjNmNTc5
Y2E4MGQyOTU0Li44NWZhNWI4NDc2OGU3N2JiNjA1MTRhYTYyMGY1NzkzY2M3OGE0N2FjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTI3Niw5ICsyNzYsMTAgQEAKIAogICAgICAgICAjIGdw
ZXJmIHJ1bGUKICAgICAgICAgJy4uL2h0bWwvRG9jVHlwZVN0cmluZ3MuZ3BlcmYnLAotICAgICAg
ICAnLi4vaHRtbC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYnLAogICAgICAgICAnLi4vcGxhdGZvcm0v
Q29sb3JEYXRhLmdwZXJmJywKIAorICAgICAgICAnLi4vaHRtbC9IVE1MRW50aXR5TmFtZXMuanNv
bicsCisKICAgICAgICAgIyBpZGwgcnVsZXMKICAgICAgICAgJzxAKGJpbmRpbmdzX2lkbF9maWxl
cyknLAogICAgICAgXSwKQEAgLTYwOSw2ICs2MTAsMjYgQEAKICAgICAgICAgICBdLAogICAgICAg
ICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291cmNlcyc6IDAsCiAgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAncnVsZV9uYW1lJzogJ2pzb24nLAorICAgICAgICAgICdleHRlbnNpb24n
OiAnanNvbicsCisgICAgICAgICAgIworICAgICAgICAgICMganNvbiBpcyBmZWQgaW50byBXZWJL
aXRUb29scy9TY3JpcHRzLy9tYWtlLWhhc2gtdG9vbHMucGwKKyAgICAgICAgICAjCisgICAgICAg
ICAgJ291dHB1dHMnOiBbCisgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikv
d2Via2l0LzwoUlVMRV9JTlBVVF9ST09UKS5jcHAnLAorICAgICAgICAgIF0sCisgICAgICAgICAg
J2RlcGVuZGVuY2llcyc6IFsKKyAgICAgICAgICAgICcuLi9tYWtlLWhhc2gtdG9vbHMucGwnLAor
ICAgICAgICAgIF0sCisgICAgICAgICAgJ2FjdGlvbic6IFsKKyAgICAgICAgICAgICdwZXJsJywK
KyAgICAgICAgICAgICcuLi9tYWtlLWhhc2gtdG9vbHMucGwnLAorICAgICAgICAgICAgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmtpdCcsCisgICAgICAgICAgICAnPChSVUxFX0lOUFVU
X1BBVEgpJywKKyAgICAgICAgICBdLAorICAgICAgICAgICdwcm9jZXNzX291dHB1dHNfYXNfc291
cmNlcyc6IDAsCisgICAgICAgIH0sCiAgICAgICAgICMgUnVsZSB0byBidWlsZCBnZW5lcmF0ZWQg
SmF2YVNjcmlwdCAoVjgpIGJpbmRpbmdzIGZyb20gLmlkbCBzb3VyY2UuCiAgICAgICAgIHsKICAg
ICAgICAgICAncnVsZV9uYW1lJzogJ2JpbmRpbmcnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA3NGU4MTI2OWJiNTdiNzdkNGUz
MWRlZTQ0ZjFlMjY1Nzg5NDE0MThkLi4wMTljYjJjMDIyMzM0ODAyODJiMmQwMGRlYTVhZjBlZmY4
YWEzNmEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTU4OCw2ICsxNTg4LDggQEAKICAgICAgICAgICAgICdodG1sL0hUTUxF
bGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEVsZW1lbnRTdGFjay5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvSFRNTEVsZW1lbnRTdGFjay5oJywKKyAgICAgICAgICAgICdodG1sL0hU
TUxFbnRpdHlTZWFyY2guY3BwJywKKyAgICAgICAgICAgICdodG1sL0hUTUxFbnRpdHlTZWFyY2gu
aCcsCiAgICAgICAgICAgICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1dlYkNv
cmUvV2ViQ29yZS5wcmkKaW5kZXggYjBlZmZlZTdlYjZlZTJiMWViN2ViNGZiNWRlNjY5OWZlOGE4
NGVjOC4uMTM3YzNiMDNmZTEwY2RiYjc2YjBkY2E3Njc5Y2I3NjIxMDFhNDE3MyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnByaQorKysgYi9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0yOSw3
ICsyOSw3IEBAIFhNTF9OQU1FUyA9ICQkUFdEL3htbC94bWxhdHRycy5pbgogCiBYTUxOU19OQU1F
UyA9ICQkUFdEL3htbC94bWxuc2F0dHJzLmluCiAKLUVOVElUSUVTX0dQRVJGID0gJCRQV0QvaHRt
bC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYKK0hUTUxfRU5USVRJRVMgPSAkJFBXRC9odG1sL0hUTUxF
bnRpdHlOYW1lcy5qc29uCiAKIENPTE9SREFUQV9HUEVSRiA9ICQkUFdEL3BsYXRmb3JtL0NvbG9y
RGF0YS5ncGVyZgogCkBAIC01OTAsMTIgKzU5MCwxMiBAQCB4bWxuYW1lcy5jb21tYW5kcyA9IHBl
cmwgLUkkJFBXRC9iaW5kaW5ncy9zY3JpcHRzICQkeG1sbmFtZXMud2tTY3JpcHQgLS1hdHRycyAk
JAogYWRkRXh0cmFDb21waWxlcih4bWxuYW1lcykKIAogIyBHRU5FUkFUT1IgOC1BOgotZW50aXRp
ZXMub3V0cHV0ID0gJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfS9IVE1MRW50aXR5TmFtZXMu
Y3BwCi1lbnRpdGllcy5pbnB1dCA9IEVOVElUSUVTX0dQRVJGCi1lbnRpdGllcy53a1NjcmlwdCA9
ICQkUFdEL21ha2UtaGFzaC10b29scy5wbAotZW50aXRpZXMuY29tbWFuZHMgPSBwZXJsICQkZW50
aXRpZXMud2tTY3JpcHQgJCR7V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSfSAkJEVOVElUSUVTX0dQ
RVJGCitlbnRpdGllcy5vdXRwdXQgPSAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxF
bnRpdHlUYWJsZS5jcHAKK2VudGl0aWVzLmlucHV0ID0gSFRNTF9FTlRJVElFUworZW50aXRpZXMu
d2tTY3JpcHQgPSAkJFBXRC8uLi9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0
eS10YWJsZQorZW50aXRpZXMuY29tbWFuZHMgPSBweXRob24gJCRlbnRpdGllcy53a1NjcmlwdCAk
JEhUTUxfRU5USVRJRVMgPiAkJHtXQ19HRU5FUkFURURfU09VUkNFU19ESVJ9L0hUTUxFbnRpdHlU
YWJsZS5jcHAKIGVudGl0aWVzLmNsZWFuID0gJHtRTUFLRV9GSUxFX09VVH0KLWVudGl0aWVzLmRl
cGVuZHMgPSAkJFBXRC9tYWtlLWhhc2gtdG9vbHMucGwKK2VudGl0aWVzLmRlcGVuZHMgPSAkJFBX
RC8uLi9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQogYWRkRXh0
cmFDb21waWxlcihlbnRpdGllcykKIAogIyBHRU5FUkFUT1IgOC1COgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNGNhOWZkMGM4ZTdh
OTFkMDc3OGY2NTRhMDcwYWEyYWJiYTAxYmY5MS4uNjk0YjY1MzExMjExMzdlYjM0YTcxZGI3MmMw
Y2Q2NzYzMGU1YzBhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC02NzcsNiArNjc3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaHRt
bC9IVE1MRG9jdW1lbnQuY3BwIFwKICAgICBodG1sL0hUTUxFbGVtZW50LmNwcCBcCiAgICAgaHRt
bC9IVE1MRWxlbWVudFN0YWNrLmNwcCBcCisgICAgaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcCBc
CiAgICAgaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDVmZjQyNTA3YjYyZGRjNTYwYTg5NGE5ZmUyYjIy
OGNmNzFjNDNiYmMuLjI4NWMwYTNiZDVkNjA0MjAxYWRjZjIyNTA5ZjlmNWVkN2JkMzhlMWUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzc2MzcsNiArMzc2MzcsMTQg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aHRtbFxIVE1MRW50aXR5U2VhcmNoLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEVudGl0eVNlYXJjaC5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxIVE1M
RW1iZWRFbGVtZW50LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY5ZWQxYjQzMTM5NmJl
MGMxZmQ4N2UxMDdkNjUxYzE3MmJmMzAyNDMuLjc1MGVkNDAwYThkZWZkNDE0Y2VhOTVjYWNlMjJm
MWZiOWYxNDUyNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0zMTgxLDYgKzMxODEsOSBAQAogCQlBOEE1NjRBNjExREMwRTU5MDAzQUMyRjAgLyogSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEE1NjRBNDExREMwRTU5MDAzQUMyRjAgLyogSFRNTEZvcm1hdHRp
bmdFbGVtZW50TGlzdC5jcHAgKi87IH07CiAJCUE4QTkwOUFDMENCQ0Q2QjUwMDI5QjgwNyAvKiBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oICovOyB9OwogCQlBOEE5MDlBRDBDQkNENkI1MDAy
OUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE5MDlBQjBDQkNENkI1MDAyOUI4
MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgKi87IH07CisJCUE4QkMw
NDRFMTIxNEVCMkEwMEI1RjEyMiAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MEM0RkRGMTIxMTI2NjIwMEMzRDM5
MyAvKiBIVE1MRW50aXR5U2VhcmNoLmNwcCAqLzsgfTsKKwkJQThCQzA0NEYxMjE0RUIyQjAwQjVG
MTIyIC8qIEhUTUxFbnRpdHlTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MEM0RkUwMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5U2Vh
cmNoLmggKi87IH07CisJCUE4QkMwNDkyMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5VGFi
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThC
QzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi87IH07CiAJCUE4
QkNGRDA1MTIwQTA0NjEwMEI1RjEyMiAvKiBTVkdQYXRoU2VnLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QkNGRDA0MTIwQTA0NjEwMEI1RjEyMiAv
KiBTVkdQYXRoU2VnLmNwcCAqLzsgfTsKIAkJQThDMjI4MEUxMUQ0QTU5NzAwRDVBN0QzIC8qIERv
Y3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi87
IH07CiAJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFy
c2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMy
Mjg5RjExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oICovOyB9
OwpAQCAtODQ3Niw2ICs4NDc5LDEwIEBACiAJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJj
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50aXR5U2Vh
cmNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTAxMjExMjY2MjAw
QzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTEVudGl0eVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlUYWJsZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MEM0RkUyMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50
aXR5VGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEVudGl0eVRh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MTlBRUZGMTFEMDlGMkMwMEQ0
NTgzMSAvKiBIVE1MSW5wdXRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTElucHV0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3Mzg4
OTlFMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3Mzg4OTlGMTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudFdyaXRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg2MSw2ICs4ODY4LDcgQEAKIAkJQThBNTY0
QTQxMURDMEU1OTAwM0FDMkYwIC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFBMENCQ0Q2QjUwMDI5
QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1M
RW50aXR5VGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSFRN
TEVudGl0eVRhYmxlLmNwcDsgcGF0aCA9IC9idWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0hUTUxFbnRpdHlUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJ
CUE4QkNGRDA0MTIwQTA0NjEwMEI1RjEyMiAvKiBTVkdQYXRoU2VnLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1BhdGhTZWcuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRQYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEMyMjg5RjExRDU3MjJFMDBENUE3
RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDk0MSw3ICsxMDk0OSw2IEBACiAJCUUxRkY1N0E1MEYwMTI1NkIwMDg5
MUVCQiAvKiBUaHJlYWRHbG9iYWxEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRocmVhZEdsb2JhbERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNDA2RjNGQTExOTgzMDREMDA5RDU5RDYgLyogRG9jVHlwZVN0cmluZ3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jVHlwZVN0cmluZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDA2RjNGQjExOTgzMDdEMDA5RDU5RDYgLyogQ29s
b3JEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yRGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0MDZGNDAyMTE5ODMyOUEwMDlE
NTlENiAvKiBIVE1MRW50aXR5TmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEVudGl0eU5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQxNUYxMEMwRDlBMDU4NzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWxlbWVudFRpbWVDb250cm9sLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQxNUYxNjgwRDlBMTY1RDAwMzNDRTk3IC8qIERPTUVsZW1lbnRU
aW1lQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01FbGVtZW50
VGltZUNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxNUYxODMwRDlB
MUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFbGVtZW50VGltZUNvbnRyb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEyMjg4LDcgKzEyMjk1LDcgQEAKIAkJCQlFNDA2RjNGQTExOTgzMDREMDA5RDU5
RDYgLyogRG9jVHlwZVN0cmluZ3MuY3BwICovLAogCQkJCUExN0M4MTIwMEYyQTVDRjcwMDVEQUFF
QiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovLAogCQkJCUExN0M4MTIxMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLywKLQkJCQlFNDA2RjQwMjExOTgzMjlBMDA5
RDU5RDYgLyogSFRNTEVudGl0eU5hbWVzLmNwcCAqLywKKwkJCQlBOEJDMDQ5MTEyMTRGNjk2MDBC
NUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywKIAkJCQlBOEQwNkIzODBBMjY1RENEMDA1
RTcyMDMgLyogSFRNTE5hbWVzLmNwcCAqLywKIAkJCQlBOEQwNkIzNzBBMjY1RENEMDA1RTcyMDMg
LyogSFRNTE5hbWVzLmggKi8sCiAJCQkJOTM4RTY1RjYwOUYwOTg1RDAwOEE0OEVDIC8qIEpTSFRN
TEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgKi8sCkBAIC0xMzk4Niw2ICsxMzk5MywxMCBAQAog
CQkJCTg1OTEyODc5MEFCMjIyRUMwMDIwMjI2NSAvKiBIVE1MRW1iZWRFbGVtZW50LmlkbCAqLywK
IAkJCQk5NzZFODk1RTExQzBDQTNBMDBFQTlDQTkgLyogSFRNTEVudGl0eVBhcnNlci5jcHAgKi8s
CiAJCQkJOTc2RTg5NUYxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhUTUxFbnRpdHlQYXJzZXIuaCAqLywK
KwkJCQk5NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5jcHAgKi8s
CisJCQkJOTcwQzRGRTAxMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guaCAqLywK
KwkJCQk5NzBDNEZFMTEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLywK
KwkJCQk5NzBDNEZFMjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmggKi8sCiAJ
CQkJQTgxMzY5QjkwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxGaWVsZFNldEVsZW1lbnQuY3BwICov
LAogCQkJCUE4MTM2OUI4MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MRmllbGRTZXRFbGVtZW50Lmgg
Ki8sCiAJCQkJMUFFMkE5RjQwQTFDREE1NzAwQjQyQjI1IC8qIEhUTUxGaWVsZFNldEVsZW1lbnQu
aWRsICovLApAQCAtMjAxNTYsNiArMjAxNjcsNyBAQAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENF
MDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFRUQ1N0ZFMTIxNEE5
QzIwMDc2NTZCQiAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBOEJDMDQ0RjEyMTRFQjJCMDBCNUYxMjIgLyogSFRNTEVudGl0eVNlYXJjaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMjU4Miw2ICsyMjU5NCw4IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRUVE
NTdGRDEyMTRBOUMyMDA3NjU2QkIgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBOEJDMDQ0RTEyMTRFQjJBMDBCNUYxMjIgLyogSFRNTEVudGl0eVNlYXJj
aC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOEJDMDQ5MjEyMTRGNjk2MDBCNUYxMjIgLyogSFRN
TEVudGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxFbnRpdHlOYW1lcy5ncGVyZiBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5TmFtZXMuZ3Bl
cmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjVlZmVhNTI0MDFhMjAyMzM3Y2Yy
ZWE2YmI4ODAwYmJjYjc1NGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlOYW1lcy5ncGVyZgorKysgL2Rldi9udWxs
CkBAIC0xLDMwMyArMCwwIEBACi0lewotLyoKLSAgICAgQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQG1waS1oZC5tcGcuZGUpCi0gICAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAw
MywgMjAwNCwgMjAwNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gIAotICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gIAotICAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKLSAgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gIAotICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICAKLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAKLSAgICBIVE1MRW50aXR5TmFtZXMu
Z3BlcmY6IGlucHV0IGZpbGUgdG8gZ2VuZXJhdGUgYSBoYXNoIHRhYmxlIGZvciBlbnRpdGllcwot
ICAgIEhUTUxFbnRpdHlOYW1lcy5jcHA6IERPIE5PVCBFRElUISBnZW5lcmF0ZWQgYnkgV2ViQ29y
ZS9tYWtlLWhhc2gtdG9vbHMucGwKLSovCi0lfQotJXN0cnVjdC10eXBlCi1zdHJ1Y3QgRW50aXR5
IHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIGludCBjb2RlOwotfTsKLSVsYW5ndWFnZT1B
TlNJLUMKLSVyZWFkb25seS10YWJsZXMKLSVnbG9iYWwtdGFibGUKLSVjb21wYXJlLXN0cm5jbXAK
LSVkZWZpbmUgbG9va3VwLWZ1bmN0aW9uLW5hbWUgZmluZEVudGl0eQotJWRlZmluZSBoYXNoLWZ1
bmN0aW9uLW5hbWUgZW50aXR5X2hhc2hfZnVuY3Rpb24KLSVpbmNsdWRlcwotJWVudW0KLSUlCi1B
RWxpZywgMHgwMGM2Ci1BTVAsIDM4Ci1BYWN1dGUsIDB4MDBjMQotQWNpcmMsIDB4MDBjMgotQWdy
YXZlLCAweDAwYzAKLUFscGhhLCAweDAzOTEKLUFyaW5nLCAweDAwYzUKLUF0aWxkZSwgMHgwMGMz
Ci1BdW1sLCAweDAwYzQKLUJldGEsIDB4MDM5MgotQ09QWSwgMHgwMGE5Ci1DY2VkaWwsIDB4MDBj
NwotQ2hpLCAweDAzYTcKLURhZ2dlciwgMHgyMDIxCi1EZWx0YSwgMHgwMzk0Ci1FVEgsIDB4MDBk
MAotRWFjdXRlLCAweDAwYzkKLUVjaXJjLCAweDAwY2EKLUVncmF2ZSwgMHgwMGM4Ci1FcHNpbG9u
LCAweDAzOTUKLUV0YSwgMHgwMzk3Ci1FdW1sLCAweDAwY2IKLUdULCA2MgotR2FtbWEsIDB4MDM5
MwotSWFjdXRlLCAweDAwY2QKLUljaXJjLCAweDAwY2UKLUlncmF2ZSwgMHgwMGNjCi1Jb3RhLCAw
eDAzOTkKLUl1bWwsIDB4MDBjZgotS2FwcGEsIDB4MDM5YQotTFQsIDYwCi1MYW1iZGEsIDB4MDM5
YgotTXUsIDB4MDM5YwotTnRpbGRlLCAweDAwZDEKLU51LCAweDAzOWQKLU9FbGlnLCAweDAxNTIK
LU9hY3V0ZSwgMHgwMGQzCi1PY2lyYywgMHgwMGQ0Ci1PZ3JhdmUsIDB4MDBkMgotT21lZ2EsIDB4
MDNhOQotT21pY3JvbiwgMHgwMzlmCi1Pc2xhc2gsIDB4MDBkOAotT3RpbGRlLCAweDAwZDUKLU91
bWwsIDB4MDBkNgotUGhpLCAweDAzYTYKLVBpLCAweDAzYTAKLVByaW1lLCAweDIwMzMKLVBzaSwg
MHgwM2E4Ci1RVU9ULCAzNAotUkVHLCAweDAwYWUKLVJobywgMHgwM2ExCi1TY2Fyb24sIDB4MDE2
MAotU2lnbWEsIDB4MDNhMwotVEhPUk4sIDB4MDBkZQotVGF1LCAweDAzYTQKLVRoZXRhLCAweDAz
OTgKLVVhY3V0ZSwgMHgwMGRhCi1VY2lyYywgMHgwMGRiCi1VZ3JhdmUsIDB4MDBkOQotVXBzaWxv
biwgMHgwM2E1Ci1VdW1sLCAweDAwZGMKLVhpLCAweDAzOWUKLVlhY3V0ZSwgMHgwMGRkCi1ZdW1s
LCAweDAxNzgKLVpldGEsIDB4MDM5NgotYWFjdXRlLCAweDAwZTEKLWFjaXJjLCAweDAwZTIKLWFj
dXRlLCAweDAwYjQKLWFlbGlnLCAweDAwZTYKLWFncmF2ZSwgMHgwMGUwCi1hbGVmc3ltLCAweDIx
MzUKLWFscGhhLCAweDAzYjEKLWFtcCwgMzgKLWFuZCwgMHgyMjI3Ci1hbmcsIDB4MjIyMAotYXBv
cywgMHgwMDI3Ci1hcmluZywgMHgwMGU1Ci1hc3ltcCwgMHgyMjQ4Ci1hdGlsZGUsIDB4MDBlMwot
YXVtbCwgMHgwMGU0Ci1iZHF1bywgMHgyMDFlCi1iZXRhLCAweDAzYjIKLWJydmJhciwgMHgwMGE2
Ci1idWxsLCAweDIwMjIKLWNhcCwgMHgyMjI5Ci1jY2VkaWwsIDB4MDBlNwotY2VkaWwsIDB4MDBi
OAotY2VudCwgMHgwMGEyCi1jaGksIDB4MDNjNwotY2lyYywgMHgwMmM2Ci1jbHVicywgMHgyNjYz
Ci1jb25nLCAweDIyNDUKLWNvcHksIDB4MDBhOQotY3JhcnIsIDB4MjFiNQotY3VwLCAweDIyMmEK
LWN1cnJlbiwgMHgwMGE0Ci1kQXJyLCAweDIxZDMKLWRhZ2dlciwgMHgyMDIwCi1kYXJyLCAweDIx
OTMKLWRlZywgMHgwMGIwCi1kZWx0YSwgMHgwM2I0Ci1kaWFtcywgMHgyNjY2Ci1kaXZpZGUsIDB4
MDBmNwotZWFjdXRlLCAweDAwZTkKLWVjaXJjLCAweDAwZWEKLWVncmF2ZSwgMHgwMGU4Ci1lbXB0
eSwgMHgyMjA1Ci1lbXNwLCAweDIwMDMKLWVuc3AsIDB4MjAwMgotZXBzaWxvbiwgMHgwM2I1Ci1l
cXVpdiwgMHgyMjYxCi1ldGEsIDB4MDNiNwotZXRoLCAweDAwZjAKLWV1bWwsIDB4MDBlYgotZXVy
bywgMHgyMGFjCi1leGlzdCwgMHgyMjAzCi1mbm9mLCAweDAxOTIKLWZvcmFsbCwgMHgyMjAwCi1m
cmFjMTIsIDB4MDBiZAotZnJhYzE0LCAweDAwYmMKLWZyYWMzNCwgMHgwMGJlCi1mcmFzbCwgMHgy
MDQ0Ci1nYW1tYSwgMHgwM2IzCi1nZSwgMHgyMjY1Ci1ndCwgNjIKLWhBcnIsIDB4MjFkNAotaGFy
ciwgMHgyMTk0Ci1oZWFydHMsIDB4MjY2NQotaGVsbGlwLCAweDIwMjYKLWlhY3V0ZSwgMHgwMGVk
Ci1pY2lyYywgMHgwMGVlCi1pZXhjbCwgMHgwMGExCi1pZ3JhdmUsIDB4MDBlYwotaW1hZ2UsIDB4
MjExMQotaW5maW4sIDB4MjIxZQotaW50LCAweDIyMmIKLWlvdGEsIDB4MDNiOQotaXF1ZXN0LCAw
eDAwYmYKLWlzaW4sIDB4MjIwOAotaXVtbCwgMHgwMGVmCi1rYXBwYSwgMHgwM2JhCi1sQXJyLCAw
eDIxZDAKLWxhbWJkYSwgMHgwM2JiCi1sYW5nLCAweDMwMDgKLWxhcXVvLCAweDAwYWIKLWxhcnIs
IDB4MjE5MAotbGNlaWwsIDB4MjMwOAotbGRxdW8sIDB4MjAxYwotbGUsIDB4MjI2NAotbGZsb29y
LCAweDIzMGEKLWxvd2FzdCwgMHgyMjE3Ci1sb3osIDB4MjVjYQotbHJtLCAweDIwMGUKLWxzYXF1
bywgMHgyMDM5Ci1sc3F1bywgMHgyMDE4Ci1sdCwgNjAKLW1hY3IsIDB4MDBhZgotbWRhc2gsIDB4
MjAxNAotbWljcm8sIDB4MDBiNQotbWlkZG90LCAweDAwYjcKLW1pbnVzLCAweDIyMTIKLW11LCAw
eDAzYmMKLW5hYmxhLCAweDIyMDcKLW5ic3AsIDB4MDBhMAotbmRhc2gsIDB4MjAxMwotbmUsIDB4
MjI2MAotbmksIDB4MjIwYgotbm90LCAweDAwYWMKLW5vdGluLCAweDIyMDkKLW5zdWIsIDB4MjI4
NAotbnN1cCwgMHgyMjg1Ci1udGlsZGUsIDB4MDBmMQotbnUsIDB4MDNiZAotb2FjdXRlLCAweDAw
ZjMKLW9jaXJjLCAweDAwZjQKLW9lbGlnLCAweDAxNTMKLW9ncmF2ZSwgMHgwMGYyCi1vbGluZSwg
MHgyMDNlCi1vbWVnYSwgMHgwM2M5Ci1vbWljcm9uLCAweDAzYmYKLW9wbHVzLCAweDIyOTUKLW9y
LCAweDIyMjgKLW9yZGYsIDB4MDBhYQotb3JkbSwgMHgwMGJhCi1vc2xhc2gsIDB4MDBmOAotb3Rp
bGRlLCAweDAwZjUKLW90aW1lcywgMHgyMjk3Ci1vdW1sLCAweDAwZjYKLXBhcmEsIDB4MDBiNgot
cGFydCwgMHgyMjAyCi1wZXJjbnQsIDB4MDAyNQotcGVybWlsLCAweDIwMzAKLXBlcnAsIDB4MjJh
NQotcGhpLCAweDAzYzYKLXBpLCAweDAzYzAKLXBpdiwgMHgwM2Q2Ci1wbHVzbW4sIDB4MDBiMQot
cG91bmQsIDB4MDBhMwotcHJpbWUsIDB4MjAzMgotcHJvZCwgMHgyMjBmCi1wcm9wLCAweDIyMWQK
LXBzaSwgMHgwM2M4Ci1xdW90LCAzNAotckFyciwgMHgyMWQyCi1yYWRpYywgMHgyMjFhCi1yYW5n
LCAweDMwMDkKLXJhcXVvLCAweDAwYmIKLXJhcnIsIDB4MjE5MgotcmNlaWwsIDB4MjMwOQotcmRx
dW8sIDB4MjAxZAotcmVhbCwgMHgyMTFjCi1yZWcsIDB4MDBhZQotcmZsb29yLCAweDIzMGIKLXJo
bywgMHgwM2MxCi1ybG0sIDB4MjAwZgotcnNhcXVvLCAweDIwM2EKLXJzcXVvLCAweDIwMTkKLXNi
cXVvLCAweDIwMWEKLXNjYXJvbiwgMHgwMTYxCi1zZG90LCAweDIyYzUKLXNlY3QsIDB4MDBhNwot
c2h5LCAweDAwYWQKLXNpZ21hLCAweDAzYzMKLXNpZ21hZiwgMHgwM2MyCi1zaW0sIDB4MjIzYwot
c3BhZGVzLCAweDI2NjAKLXN1YiwgMHgyMjgyCi1zdWJlLCAweDIyODYKLXN1bSwgMHgyMjExCi1z
dXAsIDB4MjI4Mwotc3VwMSwgMHgwMGI5Ci1zdXAyLCAweDAwYjIKLXN1cDMsIDB4MDBiMwotc3Vw
ZSwgMHgyMjg3Ci1zdXBsLCAweDAwYjkKLXN6bGlnLCAweDAwZGYKLXRhdSwgMHgwM2M0Ci10aGVy
ZTQsIDB4MjIzNAotdGhldGEsIDB4MDNiOAotdGhldGFzeW0sIDB4MDNkMQotdGhpbnNwLCAweDIw
MDkKLXRob3JuLCAweDAwZmUKLXRpbGRlLCAweDAyZGMKLXRpbWVzLCAweDAwZDcKLXRyYWRlLCAw
eDIxMjIKLXVBcnIsIDB4MjFkMQotdWFjdXRlLCAweDAwZmEKLXVhcnIsIDB4MjE5MQotdWNpcmMs
IDB4MDBmYgotdWdyYXZlLCAweDAwZjkKLXVtbCwgMHgwMGE4Ci11cHNpaCwgMHgwM2QyCi11cHNp
bG9uLCAweDAzYzUKLXV1bWwsIDB4MDBmYwotd2VpZXJwLCAweDIxMTgKLXhpLCAweDAzYmUKLXlh
Y3V0ZSwgMHgwMGZkCi15ZW4sIDB4MDBhNQoteXVtbCwgMHgwMGZmCi16ZXRhLCAweDAzYjYKLXp3
aiwgMHgyMDBkCi16d25qLCAweDIwMGMKLSUlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TEVudGl0eVBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKaW5k
ZXggNmJlYzgxOTBkYzg4NmNjM2U2OWRmNzFlZDA0MDVmYTEwNmMwYmUwMy4uNDgyMjgyN2NmNDNj
NTQ4MjE0YTU0MWRhN2YzOTY2OGI4OGYwOTAwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNw
cApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxF
bnRpdHlQYXJzZXIuaCIKIAorI2luY2x1ZGUgIkhUTUxFbnRpdHlTZWFyY2guaCIKKyNpbmNsdWRl
ICJIVE1MRW50aXR5VGFibGUuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpbmNsdWRl
ICJIVE1MRW50aXR5TmFtZXMuY3BwIgpAQCAtMTAyLDcgKzEwNCw2IEBAIHVuc2lnbmVkIGNvbnN1
bWVIVE1MRW50aXR5KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sJiBub3RFbm91Z2hDaGFy
YWN0ZXJzLCBVCiAgICAgRW50aXR5U3RhdGUgZW50aXR5U3RhdGUgPSBJbml0aWFsOwogICAgIHVu
c2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgVmVjdG9yPFVDaGFyLCAxMD4gY29uc3VtZWRDaGFyYWN0
ZXJzOwotICAgIFZlY3RvcjxjaGFyLCAxMD4gZW50aXR5TmFtZTsKIAogICAgIHdoaWxlICghc291
cmNlLmlzRW1wdHkoKSkgewogICAgICAgICBVQ2hhciBjYyA9ICpzb3VyY2U7CkBAIC0xNjYsNyAr
MTY3LDcgQEAgdW5zaWduZWQgY29uc3VtZUhUTUxFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3Vy
Y2UsIGJvb2wmIG5vdEVub3VnaENoYXJhY3RlcnMsIFUKICAgICAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc7JykgewogICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlUGFzdE5vbk5ld2xpbmUo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKLSAgICAg
ICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJldHVy
biBsZWdhbEVudGl0eUZvcihyZXN1bHQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTE4MSw0OCArMTgyLDQ4IEBAIHVuc2lnbmVkIGNvbnN1bWVIVE1MRW50aXR5KFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzLCBVCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIE5hbWVkOiB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyBjb2RlIGlzIHdyb25nLiBXZSBuZWVkIHRvIGZpbmQgdGhlIGxvbmdlc3Qg
bWF0Y2hpbmcgZW50aXR5LgotICAgICAgICAgICAgLy8gICAgICAgIFRoZSBleGFtcGxlcyBmcm9t
IHRoZSBzcGVjIGFyZToKLSAgICAgICAgICAgIC8vICAgICAgICAgICAgSSdtICZub3RpdDsgSSB0
ZWxsIHlvdQotICAgICAgICAgICAgLy8gICAgICAgICAgICBJJ20gJm5vdGluOyBJIHRlbGwgeW91
Ci0gICAgICAgICAgICAvLyAgICAgICAgSW4gdGhlIGZpcnN0IGNhc2UsICImbm90IiBpcyB0aGUg
ZW50aXR5LiAgSW4gdGhlIHNlY29uZAotICAgICAgICAgICAgLy8gICAgICAgIGNhc2UsICImbm90
aW47IiBpcyB0aGUgZW50aXR5LgotICAgICAgICAgICAgLy8gRklYTUU6IE91ciBsaXN0IG9mIEhU
TUwgZW50aXRpZXMgaXMgaW5jb21wbGV0ZS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgbnVt
YmVyIDggYmVsb3cgaXMgYm9ndXMuCi0gICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5
KCkgJiYgZW50aXR5TmFtZS5zaXplKCkgPD0gOCkgeworICAgICAgICAgICAgSFRNTEVudGl0eVNl
YXJjaCBlbnRpdHlTZWFyY2g7CisgICAgICAgICAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgICAgICBjYyA9ICpzb3VyY2U7Ci0gICAgICAgICAgICAgICAgaWYgKGNj
ID09ICc7JykgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBFbnRpdHkqIGVudGl0eSA9IGZp
bmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCksIGVudGl0eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGVudGl0eSkgewotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNl
LmFkdmFuY2VBbmRBU1NFUlQoJzsnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bnRpdHktPmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghaXNBbHBoYU51
bWVyaWMoY2MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IEVudGl0eSogZW50aXR5ID0g
ZmluZEVudGl0eShlbnRpdHlOYW1lLmRhdGEoKSwgZW50aXR5TmFtZS5zaXplKCkpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoZW50aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBI
VE1MNSB0ZWxscyB1cyB0byBpZ25vcmUgdGhpcyBlbnRpdHksIGZvciBoaXN0b3JpY2FsIHJlYXNv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgbG9va2hlYWQgY2hhcmFjdGVy
IGlzICc9Jy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsQWxsb3dlZENo
YXJhY3RlciAmJiBjYyA9PSAnPScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTb21lIGVudGl0aWVzIHJlcXVpcmUgYSB0ZXJt
aW5hdGluZyBzZW1pY29sb24sIHdoZXJlYXMgb3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGVudGl0aWVzIGRvIG5vdC4gIFRoZSBIVE1MNSBzcGVjIGhhcyBhIGdpYW50IGxpc3Q6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
bmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMuaHRtbCNuYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNl
cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IEhvd2V2ZXIsIHRoZSBsaXN0IHNlZW1zIHRvIGJvaWwgZG93biB0byB0aGlzIGJyYW5jaDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHktPmNvZGUgPiAyNTUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZW50aXR5LT5jb2RlOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZW50
aXR5U2VhcmNoLmFkdmFuY2UoY2MpOworICAgICAgICAgICAgICAgIGlmICghZW50aXR5U2VhcmNo
LmlzRW50aXR5UHJlZml4KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbnRpdHlOYW1lLmFwcGVuZChjYyk7CiAgICAgICAg
ICAgICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVuZChjYyk7CiAgICAgICAgICAgICAgICAg
c291cmNlLmFkdmFuY2VBbmRBU1NFUlQoY2MpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bm90RW5vdWdoQ2hhcmFjdGVycyA9IHNvdXJjZS5pc0VtcHR5KCk7CisgICAgICAgICAgICBpZiAo
bm90RW5vdWdoQ2hhcmFjdGVycykgeworICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGFuIGVu
dGl0eSBiZWNhdXNlIHRoZXJlIG1pZ2h0IGJlIGEgbG9uZ2VyIGVudGl0eQorICAgICAgICAgICAg
ICAgIC8vIHRoYXQgd2UgY291bGQgbWF0Y2ggaWYgd2UgaGFkIG1vcmUgZGF0YS4KKyAgICAgICAg
ICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKCFl
bnRpdHlTZWFyY2guY3VycmVudFZhbHVlKCkpOworICAgICAgICAgICAgICAgIHVuY29uc3VtZUNo
YXJhY3RlcnMoc291cmNlLCBjb25zdW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVudGl0eVNlYXJjaC5sYXN0
TWF0Y2goKS0+bGVuZ3RoICE9IGVudGl0eVNlYXJjaC5jdXJyZW50TGVuZ3RoKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXZSd2ZSBjb25zdW1lZCB0b28gbWFueSBjaGFyYWN0ZXJzLiAgV2UgbmVl
ZCB0byB3YWxrIHRoZQorICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBiYWNrIHRvIHRoZSBwb2lu
dCBhdCB3aGljaCB3ZSBoYWQgY29uc3VtZWQgYW4KKyAgICAgICAgICAgICAgICAvLyBhY3R1YWwg
ZW50aXR5LgorICAgICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25z
dW1lZENoYXJhY3RlcnMpOworICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5jbGVh
cigpOworICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBlbnRpdHlTZWFyY2gubGFz
dE1hdGNoKCktPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogcmVmZXJlbmNl
ID0gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5lbnRpdHk7CisgICAgICAgICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBjYyA9
ICpzb3VyY2U7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVmZXJlbmNlLCBj
YyA9PSAqcmVmZXJlbmNlKyspOworICAgICAgICAgICAgICAgICAgICBjb25zdW1lZENoYXJhY3Rl
cnMuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NF
UlQoY2MpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXNvdXJjZS5pc0VtcHR5KCkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYyA9ICpzb3VyY2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sYXN0Q2hh
cmFjdGVyKCkgPT0gJzsnKQorICAgICAgICAgICAgICAgIHJldHVybiBlbnRpdHlTZWFyY2gubGFz
dE1hdGNoKCktPnZhbHVlOworICAgICAgICAgICAgaWYgKCFhZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciB8fCAhKGlzQWxwaGFOdW1lcmljKGNjKSB8fCBjYyA9PSAnPScpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPnZhbHVlOwogICAgICAgICAgICAg
dW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2UsIGNvbnN1bWVkQ2hhcmFjdGVycyk7CiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxF
bnRpdHlTZWFyY2guY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMwNTI2YTNkNmRlN2ZiMjdlYmIzYzgzYWMzOWExZWE3YTY2ZWMxNjkKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5jcHAKQEAgLTAsMCArMSwx
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVNlYXJjaC5oIgorCisjaW5j
bHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNw
YWNlIHsKKyAgICAKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBoYWxmd2F5KGNvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBsZWZ0LCBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcmln
aHQpCit7CisgICAgcmV0dXJuICZsZWZ0WyhyaWdodCAtIGxlZnQpIC8gMl07Cit9CisKK30KKyAg
ICAKK0hUTUxFbnRpdHlTZWFyY2g6OkhUTUxFbnRpdHlTZWFyY2goKQorICAgIDogbV9jdXJyZW50
TGVuZ3RoKDApCisgICAgLCBtX2N1cnJlbnRWYWx1ZSgwKQorICAgICwgbV9sYXN0TWF0Y2goMCkK
KyAgICAsIG1fc3RhcnQoSFRNTEVudGl0eVRhYmxlOjpzdGFydCgpKQorICAgICwgbV9lbmQoSFRN
TEVudGl0eVRhYmxlOjplbmQoKSkKK3sKK30KKworSFRNTEVudGl0eVNlYXJjaDo6Q29tcGFyZVJl
c3VsdCBIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5
KiBlbnRyeSwgVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBpZiAoZW50cnktPmxl
bmd0aCA8IG1fY3VycmVudExlbmd0aCArIDEpCisgICAgICAgIHJldHVybiBCZWZvcmU7CisgICAg
VUNoYXIgZW50cnlOZXh0Q2hhcmFjdGVyID0gZW50cnktPmVudGl0eVttX2N1cnJlbnRMZW5ndGhd
OworICAgIGlmIChlbnRyeU5leHRDaGFyYWN0ZXIgPT0gbmV4dENoYXJhY3RlcikKKyAgICAgICAg
cmV0dXJuIFByZWZpeDsKKyAgICByZXR1cm4gZW50cnlOZXh0Q2hhcmFjdGVyIDwgbmV4dENoYXJh
Y3RlciA/IEJlZm9yZSA6IEFmdGVyOworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSog
SFRNTEVudGl0eVNlYXJjaDo6ZmluZFN0YXJ0KFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0Cit7
CisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxlZnQgPSBtX3N0YXJ0OworICAgIGNv
bnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiByaWdodCA9IG1fZW5kOworICAgIGlmIChsZWZ0ID09
IHJpZ2h0KQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICBDb21wYXJlUmVzdWx0IHJlc3VsdCA9
IGNvbXBhcmUobGVmdCwgbmV4dENoYXJhY3Rlcik7CisgICAgaWYgKHJlc3VsdCA9PSBQcmVmaXgp
CisgICAgICAgIHJldHVybiBsZWZ0OworICAgIGlmIChyZXN1bHQgPT0gQWZ0ZXIpCisgICAgICAg
IHJldHVybiByaWdodDsKKyAgICB3aGlsZSAobGVmdCArIDEgPCByaWdodCkgeworICAgICAgICBj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcHJvYmUgPSBoYWxmd2F5KGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgcmVzdWx0ID0gY29tcGFyZShwcm9iZSwgbmV4dENoYXJhY3Rlcik7CisgICAgICAg
IGlmIChyZXN1bHQgPT0gQmVmb3JlKQorICAgICAgICAgICAgbGVmdCA9IHByb2JlOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gQWZ0ZXIgfHwgcmVzdWx0ID09
IFByZWZpeCk7CisgICAgICAgICAgICByaWdodCA9IHByb2JlOworICAgICAgICB9CisgICAgfQor
ICAgIEFTU0VSVChsZWZ0ICsgMSA9PSByaWdodCk7CisgICAgcmV0dXJuIHJpZ2h0OworfQorCitj
b25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVNlYXJjaDo6ZmluZEVuZChVQ2hh
ciBuZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5
KiBsZWZ0ID0gbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcmlnaHQg
PSBtX2VuZDsKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgcmV0dXJuIHJpZ2h0Owor
ICAgIENvbXBhcmVSZXN1bHQgcmVzdWx0ID0gY29tcGFyZShyaWdodCwgbmV4dENoYXJhY3Rlcik7
CisgICAgaWYgKHJlc3VsdCA9PSBQcmVmaXgpCisgICAgICAgIHJldHVybiByaWdodDsKKyAgICBp
ZiAocmVzdWx0ID09IEJlZm9yZSkKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgd2hpbGUgKGxl
ZnQgKyAxIDwgcmlnaHQpIHsKKyAgICAgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHBy
b2JlID0gaGFsZndheShsZWZ0LCByaWdodCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmUocHJv
YmUsIG5leHRDaGFyYWN0ZXIpOworICAgICAgICBpZiAocmVzdWx0ID09IEFmdGVyKQorICAgICAg
ICAgICAgcmlnaHQgPSBwcm9iZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IEJlZm9yZSB8fCByZXN1bHQgPT0gUHJlZml4KTsKKyAgICAgICAgICAgIGxlZnQg
PSBwcm9iZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQobGVmdCArIDEgPT0gcmlnaHQp
OworICAgIHJldHVybiBsZWZ0OworfQorCit2b2lkIEhUTUxFbnRpdHlTZWFyY2g6OmFkdmFuY2Uo
VUNoYXIgbmV4dENoYXJhY3RlcikKK3sKKyAgICBBU1NFUlQoaXNFbnRpdHlQcmVmaXgoKSk7Cisg
ICAgaWYgKCFtX2N1cnJlbnRMZW5ndGgpIHsKKyAgICAgICAgbV9zdGFydCA9IEhUTUxFbnRpdHlU
YWJsZTo6c3RhcnQobmV4dENoYXJhY3Rlcik7CisgICAgICAgIG1fZW5kID0gSFRNTEVudGl0eVRh
YmxlOjplbmQobmV4dENoYXJhY3Rlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9zdGFydCA9
IGZpbmRTdGFydChuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgbV9lbmQgPSBmaW5kRW5kKG5leHRD
aGFyYWN0ZXIpOworICAgICAgICBpZiAobV9zdGFydCA9PSBtX2VuZCAmJiBjb21wYXJlKG1fc3Rh
cnQsIG5leHRDaGFyYWN0ZXIpICE9IFByZWZpeCkKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCk7
CisgICAgfQorICAgICsrbV9jdXJyZW50TGVuZ3RoOworICAgIGlmIChtX3N0YXJ0LT5sZW5ndGgg
IT0gbV9jdXJyZW50TGVuZ3RoKSB7CisgICAgICAgIG1fY3VycmVudFZhbHVlID0gMDsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBtX2xhc3RNYXRjaCA9IG1fc3RhcnQ7CisgICAgbV9jdXJy
ZW50VmFsdWUgPSBtX2xhc3RNYXRjaC0+dmFsdWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmggYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJj
aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU1Nzg1OWQ0ZWJjY2QyYTEyYjAzYmRlMGY4Y2YxMjgyMzk0ZGJjYzkK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5oCkBAIC0w
LDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlLCBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhUTUxFbnRpdHlTZWFyY2hfaAorI2RlZmluZSBIVE1MRW50aXR5U2VhcmNo
X2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5OworCitjbGFzcyBIVE1MRW50aXR5U2VhcmNo
IHsKK3B1YmxpYzoKKyAgICBIVE1MRW50aXR5U2VhcmNoKCk7CisKKyAgICB2b2lkIGFkdmFuY2Uo
VUNoYXIpOworCisgICAgYm9vbCBpc0VudGl0eVByZWZpeCgpIGNvbnN0IHsgcmV0dXJuICEhbV9z
dGFydDsgfQorICAgIGludCBjdXJyZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRW
YWx1ZTsgfQorICAgIGludCBjdXJyZW50TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50
TGVuZ3RoOyB9CisKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGFzdE1hdGNoKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0TWF0Y2g7IH0KKworcHJpdmF0ZToKKyAgICBlbnVtIENvbXBh
cmVSZXN1bHQgeworICAgICAgICBCZWZvcmUsCisgICAgICAgIFByZWZpeCwKKyAgICAgICAgQWZ0
ZXIsCisgICAgfTsKKworICAgIENvbXBhcmVSZXN1bHQgY29tcGFyZShjb25zdCBIVE1MRW50aXR5
VGFibGVFbnRyeSosIFVDaGFyKSBjb25zdDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRy
eSogZmluZFN0YXJ0KFVDaGFyKSBjb25zdDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRy
eSogZmluZEVuZChVQ2hhcikgY29uc3Q7CisKKyAgICB2b2lkIGZhaWwoKQorICAgIHsKKyAgICAg
ICAgbV9jdXJyZW50VmFsdWUgPSAwOworICAgICAgICBtX3N0YXJ0ID0gMDsKKyAgICAgICAgbV9l
bmQgPSAwOworICAgIH0KKworICAgIGludCBtX2N1cnJlbnRMZW5ndGg7CisgICAgaW50IG1fY3Vy
cmVudFZhbHVlOworCisgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIG1fbGFzdE1hdGNo
OworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBtX3N0YXJ0OworICAgIGNvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBtX2VuZDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVRhYmxlLmggYi9XZWJDb3JlL2h0bWwvSFRNTEVudGl0
eVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhMWFmZDMxNjFmMGRjYTM0YzUyZDMwMWRjYTljMzk1OWM3
MjkzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5VGFibGUuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBIVE1MRW50aXR5VGFibGVfaAorI2RlZmluZSBIVE1MRW50aXR5VGFi
bGVfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgSFRNTEVudGl0eVRhYmxlRW50cnkgeworICAgIFVDaGFyIGxhc3RDaGFyYWN0
ZXIoKSBjb25zdCB7IHJldHVybiBlbnRpdHlbbGVuZ3RoIC0gMV07IH0KKworICAgIGNvbnN0IFVD
aGFyKiBlbnRpdHk7CisgICAgaW50IGxlbmd0aDsKKyAgICBpbnQgdmFsdWU7Cit9OworCitjbGFz
cyBIVE1MRW50aXR5VGFibGUgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBIVE1MRW50aXR5
VGFibGVFbnRyeSogc3RhcnQoKTsKKyAgICBzdGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50
cnkqIGVuZCgpOworCisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBzdGFy
dChVQ2hhcik7CisgICAgc3RhdGljIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBlbmQoVUNo
YXIpOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFrZS1oYXNoLXRv
b2xzLnBsIGIvV2ViQ29yZS9tYWtlLWhhc2gtdG9vbHMucGwKaW5kZXggNDJjYjZmZDk1OGYxMDVh
ZTZhZmJmNmVkZTM0OGFjMzViNmYzOTYzZS4uOGNjOTk1MmMxNTcyYjAwMzM4MWIwZDgyNzNjYjFk
NjY1YzMwZmZlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9tYWtlLWhhc2gtdG9vbHMucGwKKysrIGIv
V2ViQ29yZS9tYWtlLWhhc2gtdG9vbHMucGwKQEAgLTI5LDE2ICsyOSw2IEBAIG15ICRvcHRpb24g
PSBiYXNlbmFtZSgkQVJHVlswXSwiLmdwZXJmIik7CiAKIHN3aXRjaCAoJG9wdGlvbikgewogCi1j
YXNlICJIVE1MRW50aXR5TmFtZXMiIHsKLQotICAgIG15ICRodG1sRW50aXR5TmFtZXNHZW5lcmF0
ZWQgICA9ICIkb3V0ZGlyL0hUTUxFbnRpdHlOYW1lcy5jcHAiOwotICAgIG15ICRodG1sRW50aXR5
TmFtZXNHcGVyZiAgICAgICA9ICRBUkdWWzBdOwotICAgIHNoaWZ0OwotCi0gICAgc3lzdGVtKCJn
cGVyZiAtLWtleS1wb3NpdGlvbnM9XCIqXCIgLUQgLXMgMiAkaHRtbEVudGl0eU5hbWVzR3BlcmYg
PiAkaHRtbEVudGl0eU5hbWVzR2VuZXJhdGVkIikgPT0gMCB8fCBkaWUgImNhbGxpbmcgZ3BlcmYg
ZmFpbGVkOiAkPyI7Ci0KLX0gIyBjYXNlICJIVE1MRW50aXR5TmFtZXMiCi0KIGNhc2UgIkRvY1R5
cGVTdHJpbmdzIiB7CiAKICAgICBteSAkZG9jVHlwZVN0cmluZ3NHZW5lcmF0ZWQgICAgPSAiJG91
dGRpci9Eb2NUeXBlU3RyaW5ncy5jcHAiOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY4ZDFkODhjMmJkOGFjOTNjZjYyOGQw
NjIzYzU4OTc4Mjc0YzE5NTMuLjg1MjFlYWJkN2NiYTU2NTlkMjRiNGQzMTMxNzE0Zjc4MGEwNDdl
ZWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciBNYXRoTUwgZW50aXRpZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzNTk1CisKKyAgICAgICAgQSBzY3JpcHQg
Zm9yIGdlbmVyYXRpbmcgdGhlIEMrKyBzdGF0ZSBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGFs
bCB0aGUKKyAgICAgICAgZW50aXRpZXMgZnJvbSBhIEpTT04gZGVzY3JpcHRpb24uCisKKyAgICAg
ICAgTm90ZTogVGhpcyBzY3JpcHQgaXMgbm90IHlldCBpbnRlZ3JhdGVkIHdpdGggdGhlIGJ1aWxk
IHN5c3RlbSwgc28gdGhpcworICAgICAgICAgICAgICBwYXRjaCB3aWxsIG5vdCBidWlsZCEgIE9P
UFMhCisKKyAgICAgICAgKiBTY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZTogQWRkZWQu
CisKIDIwMTAtMDgtMTIgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEJ1aWxkIGJyZWFrIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY3Jl
YXRlLWh0bWwtZW50aXR5LXRhYmxlIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRtbC1l
bnRpdHktdGFibGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUxM2IyOWRhNzhiM2ZiNWViODBmODQ1YmJiMzQ4MDMz
MGMzMjBiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY3JlYXRlLWh0
bWwtZW50aXR5LXRhYmxlCkBAIC0wLDAgKzEsMTczIEBACisjIS91c3IvYmluL2VudiBweXRob24K
KyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9u
LgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3RyaW5nCitpbXBv
cnQgc3lzCisKK2ltcG9ydCB3ZWJraXRweS50aGlyZHBhcnR5LnNpbXBsZWpzb24gYXMgc2ltcGxl
anNvbgorCisKK2RlZiBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRpdHkpOgorICAgIHBv
c3RmaXggPSAiRW50aXR5TmFtZSIKKyAgICBpZiBlbnRpdHlbLTFdID09ICI7IjoKKyAgICAgICAg
cmV0dXJuICIlc1NlbWljb2xvbiVzIiAlIChlbnRpdHlbOi0xXSwgcG9zdGZpeCkKKyAgICByZXR1
cm4gIiVzJXMiICUgKGVudGl0eSwgcG9zdGZpeCkKKworCitkZWYgY29udmVydF9lbnRpdHlfdG9f
dWNoYXJfYXJyYXkoZW50aXR5KToKKyAgICByZXR1cm4gInsnJXMnfSIgJSAiJywgJyIuam9pbihl
bnRpdHkpCisKKworZGVmIGNvbnZlcnRfdmFsdWVfdG9faW50KHZhbHVlKToKKyAgICBhc3NlcnQo
dmFsdWVbMF0gPT0gIlUiKQorICAgIGFzc2VydCh2YWx1ZVsxXSA9PSAiKyIpCisgICAgcmV0dXJu
ICIweCIgKyB2YWx1ZVsyOl0KKworCitkZWYgb2Zmc2V0X3RhYmxlX2VudHJ5KG9mZnNldCk6Cisg
ICAgcmV0dXJuICIgICAgJnN0YXRpY0VudGl0eVRhYmxlWyVzXSwiICUgb2Zmc2V0CisKKworcHJv
Z3JhbV9uYW1lID0gb3MucGF0aC5iYXNlbmFtZShfX2ZpbGVfXykKK2lmIGxlbihzeXMuYXJndikg
PCAyOgorICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJVc2FnZTogJXMgSU5QVVRfRklMRSIgJSBw
cm9ncmFtX25hbWUKKyAgICBleGl0KDEpCisKK2lucHV0X2ZpbGUgPSBzeXMuYXJndlsxXQoraHRt
bF9lbnRpdHlfbmFtZXNfZmlsZSA9IG9wZW4oaW5wdXRfZmlsZSkKK2VudHJpZXMgPSBzaW1wbGVq
c29uLmxvYWQoaHRtbF9lbnRpdHlfbmFtZXNfZmlsZSkKK2h0bWxfZW50aXR5X25hbWVzX2ZpbGUu
Y2xvc2UoKQorCitlbnRyaWVzID0gc29ydGVkKGVudHJpZXMsIGtleT1sYW1iZGEgZW50cnk6IGVu
dHJ5WydlbnRpdHknXSkKK2VudGl0eV9jb3VudCA9IGxlbihlbnRyaWVzKQorCitwcmludCAiIiIv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworLy8gVEhJUyBG
SUxFIElTIEdFTkVSQVRFRCBCWSBXZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0
eS10YWJsZQorLy8gRE8gTk9UIEVESVQgKHVubGVzcyB5b3UgYXJlIGEgbmluamEpIQorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworbmFtZXNwYWNlIHsKKyIiIgorCitmb3IgZW50cnkgaW4gZW50cmllczoK
KyAgICBwcmludCAiY29uc3QgVUNoYXIgJXNFbnRpdHlOYW1lW10gPSAlczsiICUgKAorICAgICAg
ICBjb252ZXJ0X2VudGl0eV90b19jcHBfbmFtZShlbnRyeVsiZW50aXR5Il0pLAorICAgICAgICBj
b252ZXJ0X2VudGl0eV90b191Y2hhcl9hcnJheShlbnRyeVsiZW50aXR5Il0pKQorCitwcmludCAi
IiIKK0hUTUxFbnRpdHlUYWJsZUVudHJ5IHN0YXRpY0VudGl0eVRhYmxlWyVzXSA9IHsiIiIgJSBl
bnRpdHlfY291bnQKKworaW5kZXggPSB7fQorb2Zmc2V0ID0gMAorZm9yIGVudHJ5IGluIGVudHJp
ZXM6CisgICAgbGV0dGVyID0gZW50cnlbImVudGl0eSJdWzBdCisgICAgaWYgbm90IGluZGV4Lmdl
dChsZXR0ZXIpOgorICAgICAgICBpbmRleFtsZXR0ZXJdID0gb2Zmc2V0CisgICAgcHJpbnQgJyAg
ICB7ICVzRW50aXR5TmFtZSwgJXMsICVzIH0sJyAlICgKKyAgICAgICAgY29udmVydF9lbnRpdHlf
dG9fY3BwX25hbWUoZW50cnlbImVudGl0eSJdKSwKKyAgICAgICAgbGVuKGVudHJ5WyJlbnRpdHki
XSksCisgICAgICAgIGNvbnZlcnRfdmFsdWVfdG9faW50KGVudHJ5WyJ2YWx1ZSJdKSkKKyAgICBv
ZmZzZXQgKz0gMQorCitwcmludCAiIiJ9OworIiIiCisKK3ByaW50ICJjb25zdCBIVE1MRW50aXR5
VGFibGVFbnRyeSogdXBwZXJjYXNlT2Zmc2V0W10gPSB7IgorZm9yIGxldHRlciBpbiBzdHJpbmcu
dXBwZXJjYXNlOgorICAgIHByaW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFtsZXR0ZXJdKQor
cHJpbnQgb2Zmc2V0X3RhYmxlX2VudHJ5KGluZGV4WydhJ10pCitwcmludCAiIiJ9OworCitjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogbG93ZXJjYXNlT2Zmc2V0W10gPSB7IiIiCitmb3IgbGV0
dGVyIGluIHN0cmluZy5sb3dlcmNhc2U6CisgICAgcHJpbnQgb2Zmc2V0X3RhYmxlX2VudHJ5KGlu
ZGV4W2xldHRlcl0pCitwcmludCBvZmZzZXRfdGFibGVfZW50cnkoZW50aXR5X2NvdW50KQorcHJp
bnQgIiIifTsKKworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogSFRNTEVudGl0eVRh
YmxlOjpzdGFydChVQ2hhciBjKQoreworICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyAg
ICAgICAgcmV0dXJuIHVwcGVyY2FzZU9mZnNldFtjIC0gJ0EnXTsKKyAgICBpZiAoYyA+PSAnYScg
JiYgYyA8PSAneicpCisgICAgICAgIHJldHVybiBsb3dlcmNhc2VPZmZzZXRbYyAtICdhJ107Cisg
ICAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBIVE1MRW50aXR5
VGFibGU6OmVuZChVQ2hhciBjKQoreworICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykKKyAg
ICAgICAgcmV0dXJuIHVwcGVyY2FzZU9mZnNldFtjIC0gJ0EnICsgMV0gLSAxOworICAgIGlmIChj
ID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgcmV0dXJuIGxvd2VyY2FzZU9mZnNldFtjIC0g
J2EnICsgMV0gLSAxOworICAgIHJldHVybiAwOworfQorCitjb25zdCBIVE1MRW50aXR5VGFibGVF
bnRyeSogSFRNTEVudGl0eVRhYmxlOjpzdGFydCgpCit7CisgICAgcmV0dXJuICZzdGF0aWNFbnRp
dHlUYWJsZVswXTsKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlU
YWJsZTo6ZW5kKCkKK3sKKyAgICByZXR1cm4gJnN0YXRpY0VudGl0eVRhYmxlWyVzIC0gMV07Cit9
CisKK30KKyIiIiAlIGVudGl0eV9jb3VudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64302</attachid>
            <date>2010-08-12 22:30:53 -0700</date>
            <delta_ts>2010-08-12 22:32:35 -0700</delta_ts>
            <desc>Now with all build systems including HTMLEntitySearch.*</desc>
            <filename>bug-43595-20100812223047.patch</filename>
            <type>text/plain</type>
            <size>49239</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MTVhNjJmNjA5YzI4OWUzZjI1ZTMzN2YxNThkZTVkYjAxMzljZjgwLi42MmNhNjBm
MmEzZjhmYjM1YzUwYjBjYWVkM2I2OGMwOTY0Y2QxNTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDgtMTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0
aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MzU5NQorCisgICAgICAgIFRlc3QgcHJvZ3Jlc3Npb24gZm9yIHByb3BlciBlbnRpdHkg
c3VwcG9ydC4KKworICAgICAgICAqIGh0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQ6
CisgICAgICAgICogaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0wOC0xMiAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGxh
bmRpbmcgZ29vZ2xlLWNocm9tZSBsaW51eCA2NCB0ZXN0IHJlc3VsdHMuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAppbmRleCAyZWIwMWI0Y2JmOGFh
NzYyMzg0YWI1ODEwZjJmMThmNzk5YTI1ZGNmLi44NGM3MjE3NGZkY2UxYmU1M2QxNjhkYTY4MjY2
ZWQyOTIzNGE5ODRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3Rl
ZC1odG1sNS50eHQKQEAgLTExOCw5MiArMTE4LDEwIEBAIHJlc291cmNlcy9kb2N0eXBlMDEuZGF0
OiBQQVNTCiAKIHJlc291cmNlcy9zY3JpcHRkYXRhMDEuZGF0OiBQQVNTCiAKLXJlc291cmNlcy9o
dG1sNXRlc3QtY29tLmRhdDoKLTcKLTkKLTEwCi0xMQotCi1UZXN0IDcgb2YgMjQgaW4gcmVzb3Vy
Y2VzL2h0bWw1dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbGFuZzsmcmFuZzsKLUdvdDoK
LXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi44CI44CJIgotRXhwZWN0
ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKfqOKfqSIKLQot
VGVzdCA5IG9mIDI0IGluIHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0
OgotJkltYWdpbmFyeUk7Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5Pgot
fCAgICAgIiZJbWFnaW5hcnlJOyIKLUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwg
ICA8Ym9keT4KLXwgICAgICLihYgiCi0KLVRlc3QgMTAgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mS29wZjsKLUdvdDoKLXwgPGh0bWw+Ci18ICAg
PGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJktvcGY7IgotRXhwZWN0ZWQ6Ci18IDxodG1sPgot
fCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIvCdlYIiCityZXNvdXJjZXMvaHRtbDV0ZXN0
LWNvbS5kYXQ6IFBBU1MKIAotVGVzdCAxMSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNv
bS5kYXQgZmFpbGVkLiBJbnB1dDoKLSZub3RpbnZhOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICImbm90aW52YTsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oiJIgotcmVzb3VyY2VzL2VudGl0aWVzMDEu
ZGF0OgotMgotNQotCi1UZXN0IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZh
aWxlZC4gSW5wdXQ6Ci1GT08mZ3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAg
PGJvZHk+Ci18ICAgICAiRk9PJmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFk
PgotfCAgIDxib2R5PgotfCAgICAgIkZPTz5CQVIiCityZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQ6
IFBBU1MKIAotVGVzdCA1IG9mIDY4IGluIHJlc291cmNlcy9lbnRpdGllczAxLmRhdCBmYWlsZWQu
IElucHV0OgotSSdtICZub3RpdDsgSSB0ZWxsIHlvdQotR290OgotfCA8aHRtbD4KLXwgICA8aGVh
ZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gJm5vdGl0OyBJIHRlbGwgeW91IgotRXhwZWN0ZWQ6
Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIkknbSDCrGl0OyBJIHRl
bGwgeW91IgogcmVzb3VyY2VzL2VudGl0aWVzMDIuZGF0OiBQQVNTCiAKIHJlc291cmNlcy9jb21t
ZW50czAxLmRhdDogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC50eHQK
aW5kZXggOGE4ZjdiZTM4YzY2ZTMxZjdkNWM5MWVhYTg5YjVmODM4ZmEzYTJhOS4uYzlhZTI0NTQ4
MGQ0OWZmNTAyZjcwMzA3MTJjMjRiOGMzMDU1ZTc2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9y
dW5uZXItZXhwZWN0ZWQudHh0CkBAIC0xOTEsOTIgKzE5MSwxMCBAQCByZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdDogUEFTUwogCiByZXNvdXJjZXMvc2NyaXB0ZGF0YTAxLmRhdDogUEFTUwogCi1yZXNv
dXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQ6Ci03Ci05Ci0xMAotMTEKLQotVGVzdCA3IG9mIDI0IGlu
IHJlc291cmNlcy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJmxhbmc7JnJhbmc7
Ci1Hb3Q6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuOAiOOAiSIK
LUV4cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLin6ji
n6kiCi0KLVRlc3QgOSBvZiAyNCBpbiByZXNvdXJjZXMvaHRtbDV0ZXN0LWNvbS5kYXQgZmFpbGVk
LiBJbnB1dDoKLSZJbWFnaW5hcnlJOwotR290OgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8
Ym9keT4KLXwgICAgICImSW1hZ2luYXJ5STsiCi1FeHBlY3RlZDoKLXwgPGh0bWw+Ci18ICAgPGhl
YWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAi4oWIIgotCi1UZXN0IDEwIG9mIDI0IGluIHJlc291cmNl
cy9odG1sNXRlc3QtY29tLmRhdCBmYWlsZWQuIElucHV0OgotJktvcGY7Ci1Hb3Q6Ci18IDxodG1s
PgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIiZLb3BmOyIKLUV4cGVjdGVkOgotfCA8
aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICLwnZWCIgorcmVzb3VyY2VzL2h0
bWw1dGVzdC1jb20uZGF0OiBQQVNTCiAKLVRlc3QgMTEgb2YgMjQgaW4gcmVzb3VyY2VzL2h0bWw1
dGVzdC1jb20uZGF0IGZhaWxlZC4gSW5wdXQ6Ci0mbm90aW52YTsKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiJm5vdGludmE7IgotRXhwZWN0ZWQ6Ci18IDxo
dG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAgICAgIuKIiSIKLXJlc291cmNlcy9lbnRp
dGllczAxLmRhdDoKLTIKLTUKK3Jlc291cmNlcy9lbnRpdGllczAxLmRhdDogUEFTUwogCi1UZXN0
IDIgb2YgNjggaW4gcmVzb3VyY2VzL2VudGl0aWVzMDEuZGF0IGZhaWxlZC4gSW5wdXQ6Ci1GT08m
Z3RCQVIKLUdvdDoKLXwgPGh0bWw+Ci18ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiRk9P
Jmd0QkFSIgotRXhwZWN0ZWQ6Ci18IDxodG1sPgotfCAgIDxoZWFkPgotfCAgIDxib2R5PgotfCAg
ICAgIkZPTz5CQVIiCi0KLVRlc3QgNSBvZiA2OCBpbiByZXNvdXJjZXMvZW50aXRpZXMwMS5kYXQg
ZmFpbGVkLiBJbnB1dDoKLUknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLUdvdDoKLXwgPGh0bWw+Ci18
ICAgPGhlYWQ+Ci18ICAgPGJvZHk+Ci18ICAgICAiSSdtICZub3RpdDsgSSB0ZWxsIHlvdSIKLUV4
cGVjdGVkOgotfCA8aHRtbD4KLXwgICA8aGVhZD4KLXwgICA8Ym9keT4KLXwgICAgICJJJ20gwqxp
dDsgSSB0ZWxsIHlvdSIKIHJlc291cmNlcy9lbnRpdGllczAyLmRhdDogUEFTUwogCiByZXNvdXJj
ZXMvY29tbWVudHMwMS5kYXQ6IFBBU1MKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFjNjRmNjZmYzVlZjMzZDU3YzQyMmJm
MjZkMWM0N2I3MTZjMmQxNjguLjA0MTM0ZDI1Mzc4ODk0ZTdjNmRjYjMyYTljNzAxZDJhMTIzZGQ3
OTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtOTczLDYgKzk3Myw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBo
dG1sL0hUTUxEb2N1bWVudC5jcHAKICAgICBodG1sL0hUTUxFbGVtZW50LmNwcAogICAgIGh0bWwv
SFRNTEVsZW1lbnRTdGFjay5jcHAKKyAgICBodG1sL0hUTUxFbnRpdHlTZWFyY2guY3BwCiAgICAg
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAogICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIwNzYwOGU4ZWVmZTBm
NjNjYjgxZGQ5NWQwYjg5OWVlOGJjYzUwODcuLjI2YjgzYjk2M2FmNDFjZGUyMmVjMWI0NzZjMTIy
NWE5OTdhNjg0NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTAtMDgtMDkgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0aE1MIGVudGl0aWVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Mzk0OQorCisgICAgICAgIEltcGxlbWVu
dGluZyB0aGUgSFRNTDUgZW50aXR5IHBhcnNpbmcgYWxnb3JpdGhtIHJlcXVpcmUgcmVmYWN0b3Jp
bmcgaG93CisgICAgICAgIHdlIHNlYXJjaCBmb3IgZW50aXR5IG5hbWVzLiAgSW5zdGVhZCBvZiB1
c2luZyBhIHBlcmZlY3QgaGFzaCwgd2Ugbm93CisgICAgICAgIHVzZSBhIHNvcnRlZCBsaXN0LiAg
QXMgd2UgYWR2YW5jZSB0aHJvdWdoIHRoZSBpbnB1dCwgd2Ugd2FsayBkb3duIGEKKyAgICAgICAg
YmluYXJ5IHNlYXJjaCBvZiB0aGUgdGFibGUgbG9va2luZyBmb3IgYW4gZW50aXR5LgorCisgICAg
ICAgIFVzaW5nIHRoaXMgZGF0YSBzdHJ1Y3R1cmUgbGV0cyB1cyBrZWVwIHRyYWNrIG9mIHdoZXRo
ZXIgdGhlIGN1cnJlbnQKKyAgICAgICAgc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFuIGV4aXN0aW5n
IGVudGl0eSwgd2hpY2ggd2UgbmVlZCBmb3IgdGhlCisgICAgICAgIGFsZ29yaXRobS4gIEluIGEg
ZnV0dXJlIHBhdGNoLCBJIHBsYW4gdG8gYWRkIHNvbWUgaW5kaWNlcyB0byB0aGUKKyAgICAgICAg
dGFibGUsIHdoaWNoIHNob3VsZCBsZXQgdXMgbmFycm93IGRvd24gdGhlIHJhbmdlIG9mIGludGVy
ZXN0aW5nIGVudHJpZXMKKyAgICAgICAgbW9yZSBxdWlja2x5LgorCisgICAgICAgIFRoZSBvbmUg
bmFzdHkgcGllY2Ugb2YgdGhlIGFsZ29yaXRobSBpcyBpZiB3ZSB3YWxrIHRvbyBmYXIgZG93biB0
aGUKKyAgICAgICAgaW5wdXQgYW5kIHdlIG5lZWQgdG8gYmFjayB1cCB0byBhIHByZXZpb3VzIG1h
dGNoLiAgSW4gdGhpcyBwYXRjaCwgd2UKKyAgICAgICAgYWNjb21wbGlzaCB0aGlzIGJ5IHJld2lu
ZGluZyB0aGUgaW5wdXQgYW5kIGNvbnN1bWluZyBhIGtub3duIG51bWJlciBvZgorICAgICAgICBj
aGFyYWN0ZXJzIHRvIHJlc3luYyB0aGUgc291cmNlLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSFRNTEVudGl0eSk6CisgICAgICAgICogaHRt
bC9IVE1MRW50aXR5U2VhcmNoLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVNlYXJjaDo6SFRNTEVudGl0eVNlYXJjaCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RW50aXR5U2VhcmNoOjpmaW5kRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFy
Y2g6OmFkdmFuY2UpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVNlYXJjaC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmlzRW50aXR5UHJlZml4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFyY2g6OmN1cnJlbnRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRW50aXR5U2VhcmNoOjpsYXN0TWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVudGl0eVNlYXJjaDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbnRpdHlTZWFy
Y2g6OmZhaWwpOgorICAgICAgICAqIGh0bWwvSFRNTEVudGl0eVRhYmxlLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEVudGl0eVRhYmxlRW50cnk6Omxhc3RDaGFyYWN0ZXIpOgorCiAy
MDEwLTA4LTEyICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzdjMmYxMGQzM2Y4
ZGJkOTIzOGRiYjRlMjQ1ZmVlYzM5YjZjOWVkZi4uYzVkZGZmOWVhYjJiZDdhMTBjMmE1YzQ3NGJk
YTU2N2E1YThjMWI0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtNTA1LDcgKzUwNSw3IEBAIGFsbCA6
IFwKICAgICBDb2xvckRhdGEuY3BwIFwKICAgICBEb2NUeXBlU3RyaW5ncy5jcHAgXAogICAgIEhU
TUxFbGVtZW50RmFjdG9yeS5jcHAgXAotICAgIEhUTUxFbnRpdHlOYW1lcy5jcHAgXAorICAgIEhU
TUxFbnRpdHlUYWJsZS5jcHAgXAogICAgIEhUTUxOYW1lcy5jcHAgXAogICAgIFdNTEVsZW1lbnRG
YWN0b3J5LmNwcCBcCiAgICAgV01MTmFtZXMuY3BwIFwKQEAgLTYwMCw4ICs2MDAsOCBAQCBEb2NU
eXBlU3RyaW5ncy5jcHAgOiBodG1sL0RvY1R5cGVTdHJpbmdzLmdwZXJmICQoV2ViQ29yZSkvbWFr
ZS1oYXNoLXRvb2xzLnBsCiAKICMgSFRNTCBlbnRpdHkgbmFtZXMKIAotSFRNTEVudGl0eU5hbWVz
LmNwcCA6IGh0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRv
b2xzLnBsCi0JcGVybCAkKFdlYkNvcmUpL21ha2UtaGFzaC10b29scy5wbCAuICQoV2ViQ29yZSkv
aHRtbC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYKK0hUTUxFbnRpdHlUYWJsZS5jcHAgOiBodG1sL0hU
TUxFbnRpdHlOYW1lcy5qc29uICQoV2ViQ29yZSkvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVh
dGUtaHRtbC1lbnRpdHktdGFibGUKKwlweXRob24gJChXZWJDb3JlKS8uLi9XZWJLaXRUb29scy9T
Y3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZSAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0
eU5hbWVzLmpzb24gPiBIVE1MRW50aXR5VGFibGUuY3BwCiAKICMgLS0tLS0tLS0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggYmNhMmFhZTMwZmI5MDk1ZjY5ZjBmZWUxODk2YjllY2JmN2E0Nzk5NS4uNzIwY2JjMmI1MWFj
ZjExMmMxOTQyOTllZmY3NWM1YjI4NTI1MDE5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC05Miw3ICs5Miw3IEBAIHdl
YmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9DU1NWYWx1
ZUtleXdvcmRzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVsZW1lbnRGYWN0b3J5
LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRWxlbWVudEZhY3RvcnkuaCBcCi0J
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5TmFtZXMuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSFRNTE5hbWVzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MTmFtZXMuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAg
XApAQCAtMTQyNyw2ICsxNDI3LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50U3RhY2suY3BwIFwK
IAlXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnRTdGFjay5oIFwKKwlXZWJDb3JlL2h0bWwvSFRNTEVu
dGl0eVNlYXJjaC5jcHAgXAorCVdlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmggXAogCVdl
YkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBcCiAJV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuaCBcCiAJV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIFwKQEAg
LTQzOTMsOCArNDM5NSw4IEBAIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRG9jVHlwZVN0cmluZ3Mu
Y3BwIDogJChXZWJDb3JlKS9odG1sL0RvY1R5cGVTdHJpbmdzLmdwZXJmCiAJJChQRVJMKSAkKFdl
YkNvcmUpL21ha2UtaGFzaC10b29scy5wbCAkKEdFTlNPVVJDRVNfV0VCQ09SRSkgJChXZWJDb3Jl
KS9odG1sL0RvY1R5cGVTdHJpbmdzLmdwZXJmCiAKICMgSFRNTCBlbnRpdHkgbmFtZXMKLURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSFRNTEVudGl0eU5hbWVzLmNwcCA6ICQoV2ViQ29yZSkvaHRtbC9I
VE1MRW50aXR5TmFtZXMuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKLQkkKFBF
UkwpICQoV2ViQ29yZSkvbWFrZS1oYXNoLXRvb2xzLnBsICQoR0VOU09VUkNFU19XRUJDT1JFKSAk
KFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0hUTUxFbnRpdHlUYWJsZS5jcHAgOiAkKFdlYkNvcmUpL2h0bWwvSFRNTEVudGl0eU5hbWVz
Lmpzb24gJChXZWJDb3JlKS8uLi9XZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0
eS10YWJsZQorCSQoUFlUSE9OKSAkKFdlYkNvcmUpLy4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY3Jl
YXRlLWh0bWwtZW50aXR5LXRhYmxlICQoV2ViQ29yZSkvaHRtbC9IVE1MRW50aXR5TmFtZXMuanNv
biA+ICQoR0VOU09VUkNFU19XRUJDT1JFKS9IVE1MRW50aXR5VGFibGUuY3BwCiAKICMgY29sb3Ig
bmFtZXMKIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvQ29sb3JEYXRhLmNwcDogJChXZWJDb3JlKS9w
bGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYgJChXZWJDb3JlKS9tYWtlLWhhc2gtdG9vbHMucGwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggNzRlODEyNjliYjU3Yjc3ZDRlMzFkZWU0NGYxZTI2NTc4OTQxNDE4ZC4uMDE5Y2IyYzAyMjMz
NDgwMjgyYjJkMDBkZWE1YWYwZWZmOGFhMzZhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE1ODgsNiArMTU4OCw4IEBACiAg
ICAgICAgICAgICAnaHRtbC9IVE1MRWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL0hUTUxF
bGVtZW50U3RhY2suY3BwJywKICAgICAgICAgICAgICdodG1sL0hUTUxFbGVtZW50U3RhY2suaCcs
CisgICAgICAgICAgICAnaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcCcsCisgICAgICAgICAgICAn
aHRtbC9IVE1MRW50aXR5U2VhcmNoLmgnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEVtYmVkRWxl
bWVudC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oJywKICAgICAg
ICAgICAgICdodG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5wcmkgYi9XZWJDb3JlL1dlYkNvcmUucHJpCmluZGV4IGIwZWZmZWU3ZWI2ZWUy
YjFlYjdlYjRmYjVkZTY2OTlmZThhODRlYzguLjEzN2MzYjAzZmUxMGNkYmI3NmIwZGNhNzY3OWNi
NzYyMTAxYTQxNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnByaQpAQCAtMjksNyArMjksNyBAQCBYTUxfTkFNRVMgPSAkJFBXRC94bWwveG1s
YXR0cnMuaW4KIAogWE1MTlNfTkFNRVMgPSAkJFBXRC94bWwveG1sbnNhdHRycy5pbgogCi1FTlRJ
VElFU19HUEVSRiA9ICQkUFdEL2h0bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCitIVE1MX0VOVElU
SUVTID0gJCRQV0QvaHRtbC9IVE1MRW50aXR5TmFtZXMuanNvbgogCiBDT0xPUkRBVEFfR1BFUkYg
PSAkJFBXRC9wbGF0Zm9ybS9Db2xvckRhdGEuZ3BlcmYKIApAQCAtNTkwLDEyICs1OTAsMTIgQEAg
eG1sbmFtZXMuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAkJHhtbG5h
bWVzLndrU2NyaXB0IC0tYXR0cnMgJCQKIGFkZEV4dHJhQ29tcGlsZXIoeG1sbmFtZXMpCiAKICMg
R0VORVJBVE9SIDgtQToKLWVudGl0aWVzLm91dHB1dCA9ICQke1dDX0dFTkVSQVRFRF9TT1VSQ0VT
X0RJUn0vSFRNTEVudGl0eU5hbWVzLmNwcAotZW50aXRpZXMuaW5wdXQgPSBFTlRJVElFU19HUEVS
RgotZW50aXRpZXMud2tTY3JpcHQgPSAkJFBXRC9tYWtlLWhhc2gtdG9vbHMucGwKLWVudGl0aWVz
LmNvbW1hbmRzID0gcGVybCAkJGVudGl0aWVzLndrU2NyaXB0ICQke1dDX0dFTkVSQVRFRF9TT1VS
Q0VTX0RJUn0gJCRFTlRJVElFU19HUEVSRgorZW50aXRpZXMub3V0cHV0ID0gJCR7V0NfR0VORVJB
VEVEX1NPVVJDRVNfRElSfS9IVE1MRW50aXR5VGFibGUuY3BwCitlbnRpdGllcy5pbnB1dCA9IEhU
TUxfRU5USVRJRVMKK2VudGl0aWVzLndrU2NyaXB0ID0gJCRQV0QvLi4vV2ViS2l0VG9vbHMvU2Ny
aXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKK2VudGl0aWVzLmNvbW1hbmRzID0gcHl0aG9u
ICQkZW50aXRpZXMud2tTY3JpcHQgJCRIVE1MX0VOVElUSUVTID4gJCR7V0NfR0VORVJBVEVEX1NP
VVJDRVNfRElSfS9IVE1MRW50aXR5VGFibGUuY3BwCiBlbnRpdGllcy5jbGVhbiA9ICR7UU1BS0Vf
RklMRV9PVVR9Ci1lbnRpdGllcy5kZXBlbmRzID0gJCRQV0QvbWFrZS1oYXNoLXRvb2xzLnBsCitl
bnRpdGllcy5kZXBlbmRzID0gJCRQV0QvLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9jcmVhdGUtaHRt
bC1lbnRpdHktdGFibGUKIGFkZEV4dHJhQ29tcGlsZXIoZW50aXRpZXMpCiAKICMgR0VORVJBVE9S
IDgtQjoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUu
cHJvCmluZGV4IDRjYTlmZDBjOGU3YTkxZDA3NzhmNjU0YTA3MGFhMmFiYmEwMWJmOTEuLjY5NGI2
NTMxMTIxMTM3ZWIzNGE3MWRiNzJjMGNkNjc2MzBlNWMwYTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjc3LDYgKzY3Nyw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGh0bWwvSFRNTERvY3VtZW50LmNwcCBcCiAgICAgaHRtbC9IVE1M
RWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTEVsZW1lbnRTdGFjay5jcHAgXAorICAgIGh0bWwv
SFRNTEVudGl0eVNlYXJjaC5jcHAgXAogICAgIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAgXAog
ICAgIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgXAogICAgIGh0bWwvSFRNTEZvbnRFbGVt
ZW50LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1ZmY0MjUw
N2I2MmRkYzU2MGE4OTRhOWZlMmIyMjhjZjcxYzQzYmJjLi4yODVjMGEzYmQ1ZDYwNDIwMWFkY2Yy
MjUwOWY5ZjVlZDdiZDM4ZTFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTM3NjM3LDYgKzM3NjM3LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEVudGl0eVNlYXJjaC5jcHAiDQorCQkJCT4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXEhUTUxF
bnRpdHlTZWFyY2guaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGh0bWxcSFRNTEVtYmVkRWxlbWVudC5jcHAiDQogCQkJCT4NCiAJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBmOWVkMWI0MzEzOTZiZTBjMWZkODdlMTA3ZDY1MWMxNzJiZjMwMjQzLi43NTBlZDQw
MGE4ZGVmZDQxNGNlYTk1Y2FjZTIyZjFmYjlmMTQ1MjQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4MSw2ICszMTgxLDkgQEAKIAkJQThBNTY0QTYx
MURDMEU1OTAwM0FDMkYwIC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNTY0QTQxMURDMEU1OTAw
M0FDMkYwIC8qIEhUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwICovOyB9OwogCQlBOEE5MDlB
QzBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBOTA5QUEwQ0JD
RDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCAqLzsgfTsK
IAkJQThBOTA5QUQwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThBOTA5QUIwQ0JDRDZCNTAwMjlCODA3IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXIuY3BwICovOyB9OworCQlBOEJDMDQ0RTEyMTRFQjJBMDBCNUYxMjIgLyogSFRNTEVudGl0eVNl
YXJjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzBDNEZERjEyMTEyNjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5jcHAgKi87IH07CisJ
CUE4QkMwNDRGMTIxNEVCMkIwMEI1RjEyMiAvKiBIVE1MRW50aXR5U2VhcmNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBDNEZFMDEyMTEyNjYyMDBD
M0QzOTMgLyogSFRNTEVudGl0eVNlYXJjaC5oICovOyB9OworCQlBOEJDMDQ5MjEyMTRGNjk2MDBC
NUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4QkMwNDkxMTIxNEY2OTYwMEI1RjEyMiAvKiBIVE1MRW50aXR5
VGFibGUuY3BwICovOyB9OwogCQlBOEJDRkQwNTEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNl
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEJD
RkQwNDEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0aFNlZy5jcHAgKi87IH07CiAJCUE4QzIyODBF
MTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyog
RG9jdW1lbnRQYXJzZXIuY3BwICovOyB9OwogCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyog
RGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRh
RG9jdW1lbnRQYXJzZXIuaCAqLzsgfTsKQEAgLTg0NzYsNiArODQ3OSwxMCBAQAogCQk5NzA1OTk3
NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGREYxMjExMjY2MjAwQzNE
MzkzIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTEVudGl0eVNlYXJjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk3MEM0RkUwMTIxMTI2NjIwMEMzRDM5MyAvKiBIVE1MRW50aXR5U2VhcmNoLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbnRpdHlTZWFyY2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTcwQzRGRTExMjExMjY2MjAwQzNEMzkzIC8qIEhUTUxFbnRp
dHlUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRW50
aXR5VGFibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzBDNEZFMjEyMTEy
NjYyMDBDM0QzOTMgLyogSFRNTEVudGl0eVRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhUTUxFbnRpdHlUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NzE5QUVGRjExRDA5RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxJbnB1dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRXcml0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzM4ODk5RjExNkVBOURDMDBB
REYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRG9jdW1lbnRXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4NjEs
NiArODg2OCw3IEBACiAJCUE4QTU2NEE0MTFEQzBFNTkwMDNBQzJGMCAvKiBIVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUxGb3JtYXR0aW5nRWxlbWVudExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBOEE5MDlBQTBDQkNENkI1MDAyOUI4MDcgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTkwOUFC
MENCQ0Q2QjUwMDI5QjgwNyAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEJDMDQ5MTEy
MTRGNjk2MDBCNUYxMjIgLyogSFRNTEVudGl0eVRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxFbnRpdHlUYWJsZS5jcHA7IHBhdGggPSAvYnVpbGQvRGVi
dWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9IVE1MRW50aXR5VGFibGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OwogCQlBOEJDRkQwNDEyMEEwNDYxMDBCNUYxMjIgLyogU1ZHUGF0
aFNlZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQYXRoU2Vn
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4MEQxMUQ0QTU5NzAwRDVB
N0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QThDMjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVudFBhcnNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA5NDEsNyArMTA5NDksNiBAQAog
CQlFMUZGNTdBNTBGMDEyNTZCMDA4OTFFQkIgLyogVGhyZWFkR2xvYmFsRGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHbG9iYWxEYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwNkYzRkExMTk4MzA0RDAwOUQ1OUQ2IC8qIERv
Y1R5cGVTdHJpbmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y1R5cGVTdHJpbmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQwNkYzRkIx
MTk4MzA3RDAwOUQ1OUQ2IC8qIENvbG9yRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb2xvckRhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlFNDA2RjQwMjExOTgzMjlBMDA5RDU5RDYgLyogSFRNTEVudGl0eU5hbWVzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbnRpdHlOYW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTBDMEQ5QTA1ODcwMDMzQ0U5NyAvKiBFbGVt
ZW50VGltZUNvbnRyb2wuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRUaW1lQ29u
dHJvbC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTVGMTY4MEQ5QTE2NUQw
MDMzQ0U5NyAvKiBET01FbGVtZW50VGltZUNvbnRyb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRWxlbWVudFRpbWVDb250cm9sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0MTVGMTgzMEQ5QTFBODMwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudFRpbWVDb250cm9sLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjI4OCw3ICsxMjI5NSw3IEBACiAJCQkJ
RTQwNkYzRkExMTk4MzA0RDAwOUQ1OUQ2IC8qIERvY1R5cGVTdHJpbmdzLmNwcCAqLywKIAkJCQlB
MTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLywKIAkJ
CQlBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8sCi0J
CQkJRTQwNkY0MDIxMTk4MzI5QTAwOUQ1OUQ2IC8qIEhUTUxFbnRpdHlOYW1lcy5jcHAgKi8sCisJ
CQkJQThCQzA0OTExMjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgKi8sCiAJ
CQkJQThEMDZCMzgwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5jcHAgKi8sCiAJCQkJQThE
MDZCMzcwQTI2NURDRDAwNUU3MjAzIC8qIEhUTUxOYW1lcy5oICovLAogCQkJCTkzOEU2NUY2MDlG
MDk4NUQwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwICovLApAQCAt
MTM5ODYsNiArMTM5OTMsMTAgQEAKIAkJCQk4NTkxMjg3OTBBQjIyMkVDMDAyMDIyNjUgLyogSFRN
TEVtYmVkRWxlbWVudC5pZGwgKi8sCiAJCQkJOTc2RTg5NUUxMUMwQ0EzQTAwRUE5Q0E5IC8qIEhU
TUxFbnRpdHlQYXJzZXIuY3BwICovLAogCQkJCTk3NkU4OTVGMTFDMENBM0EwMEVBOUNBOSAvKiBI
VE1MRW50aXR5UGFyc2VyLmggKi8sCisJCQkJOTcwQzRGREYxMjExMjY2MjAwQzNEMzkzIC8qIEhU
TUxFbnRpdHlTZWFyY2guY3BwICovLAorCQkJCTk3MEM0RkUwMTIxMTI2NjIwMEMzRDM5MyAvKiBI
VE1MRW50aXR5U2VhcmNoLmggKi8sCisJCQkJOTcwQzRGRTExMjExMjY2MjAwQzNEMzkzIC8qIEhU
TUxFbnRpdHlUYWJsZS5jcHAgKi8sCisJCQkJOTcwQzRGRTIxMjExMjY2MjAwQzNEMzkzIC8qIEhU
TUxFbnRpdHlUYWJsZS5oICovLAogCQkJCUE4MTM2OUI5MDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1M
RmllbGRTZXRFbGVtZW50LmNwcCAqLywKIAkJCQlBODEzNjlCODA5NzM3NEY1MDBENzQ0NjMgLyog
SFRNTEZpZWxkU2V0RWxlbWVudC5oICovLAogCQkJCTFBRTJBOUY0MEExQ0RBNTcwMEI0MkIyNSAv
KiBIVE1MRmllbGRTZXRFbGVtZW50LmlkbCAqLywKQEAgLTIwMTU2LDYgKzIwMTY3LDcgQEAKIAkJ
CQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRUVENTdGRTEyMTRBOUMyMDA3NjU2QkIgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThCQzA0NEYxMjE0RUIyQjAwQjVGMTIyIC8qIEhUTUxF
bnRpdHlTZWFyY2guaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjI1ODIsNiArMjI1OTQsOCBAQAogCQkJ
CUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkVFRDU3RkQxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThCQzA0NEUxMjE0RUIyQTAwQjVG
MTIyIC8qIEhUTUxFbnRpdHlTZWFyY2guY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQThCQzA0OTIx
MjE0RjY5NjAwQjVGMTIyIC8qIEhUTUxFbnRpdHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5TmFtZXMuZ3BlcmYgYi9XZWJDb3JlL2h0
bWwvSFRNTEVudGl0eU5hbWVzLmdwZXJmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NjY1ZWZlYTUyNDAxYTIwMjMzN2NmMmVhNmJiODgwMGJiY2I3NTRkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5TmFt
ZXMuZ3BlcmYKKysrIC9kZXYvbnVsbApAQCAtMSwzMDMgKzAsMCBAQAotJXsKLS8qCi0gICAgIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBtcGktaGQubXBnLmRlKQotICAgICBD
b3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICAKLSAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICAKLSAgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICAKLSAgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAgCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
Ci0gICAgSFRNTEVudGl0eU5hbWVzLmdwZXJmOiBpbnB1dCBmaWxlIHRvIGdlbmVyYXRlIGEgaGFz
aCB0YWJsZSBmb3IgZW50aXRpZXMKLSAgICBIVE1MRW50aXR5TmFtZXMuY3BwOiBETyBOT1QgRURJ
VCEgZ2VuZXJhdGVkIGJ5IFdlYkNvcmUvbWFrZS1oYXNoLXRvb2xzLnBsCi0qLwotJX0KLSVzdHJ1
Y3QtdHlwZQotc3RydWN0IEVudGl0eSB7Ci0gICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICBpbnQg
Y29kZTsKLX07Ci0lbGFuZ3VhZ2U9QU5TSS1DCi0lcmVhZG9ubHktdGFibGVzCi0lZ2xvYmFsLXRh
YmxlCi0lY29tcGFyZS1zdHJuY21wCi0lZGVmaW5lIGxvb2t1cC1mdW5jdGlvbi1uYW1lIGZpbmRF
bnRpdHkKLSVkZWZpbmUgaGFzaC1mdW5jdGlvbi1uYW1lIGVudGl0eV9oYXNoX2Z1bmN0aW9uCi0l
aW5jbHVkZXMKLSVlbnVtCi0lJQotQUVsaWcsIDB4MDBjNgotQU1QLCAzOAotQWFjdXRlLCAweDAw
YzEKLUFjaXJjLCAweDAwYzIKLUFncmF2ZSwgMHgwMGMwCi1BbHBoYSwgMHgwMzkxCi1BcmluZywg
MHgwMGM1Ci1BdGlsZGUsIDB4MDBjMwotQXVtbCwgMHgwMGM0Ci1CZXRhLCAweDAzOTIKLUNPUFks
IDB4MDBhOQotQ2NlZGlsLCAweDAwYzcKLUNoaSwgMHgwM2E3Ci1EYWdnZXIsIDB4MjAyMQotRGVs
dGEsIDB4MDM5NAotRVRILCAweDAwZDAKLUVhY3V0ZSwgMHgwMGM5Ci1FY2lyYywgMHgwMGNhCi1F
Z3JhdmUsIDB4MDBjOAotRXBzaWxvbiwgMHgwMzk1Ci1FdGEsIDB4MDM5NwotRXVtbCwgMHgwMGNi
Ci1HVCwgNjIKLUdhbW1hLCAweDAzOTMKLUlhY3V0ZSwgMHgwMGNkCi1JY2lyYywgMHgwMGNlCi1J
Z3JhdmUsIDB4MDBjYwotSW90YSwgMHgwMzk5Ci1JdW1sLCAweDAwY2YKLUthcHBhLCAweDAzOWEK
LUxULCA2MAotTGFtYmRhLCAweDAzOWIKLU11LCAweDAzOWMKLU50aWxkZSwgMHgwMGQxCi1OdSwg
MHgwMzlkCi1PRWxpZywgMHgwMTUyCi1PYWN1dGUsIDB4MDBkMwotT2NpcmMsIDB4MDBkNAotT2dy
YXZlLCAweDAwZDIKLU9tZWdhLCAweDAzYTkKLU9taWNyb24sIDB4MDM5ZgotT3NsYXNoLCAweDAw
ZDgKLU90aWxkZSwgMHgwMGQ1Ci1PdW1sLCAweDAwZDYKLVBoaSwgMHgwM2E2Ci1QaSwgMHgwM2Ew
Ci1QcmltZSwgMHgyMDMzCi1Qc2ksIDB4MDNhOAotUVVPVCwgMzQKLVJFRywgMHgwMGFlCi1SaG8s
IDB4MDNhMQotU2Nhcm9uLCAweDAxNjAKLVNpZ21hLCAweDAzYTMKLVRIT1JOLCAweDAwZGUKLVRh
dSwgMHgwM2E0Ci1UaGV0YSwgMHgwMzk4Ci1VYWN1dGUsIDB4MDBkYQotVWNpcmMsIDB4MDBkYgot
VWdyYXZlLCAweDAwZDkKLVVwc2lsb24sIDB4MDNhNQotVXVtbCwgMHgwMGRjCi1YaSwgMHgwMzll
Ci1ZYWN1dGUsIDB4MDBkZAotWXVtbCwgMHgwMTc4Ci1aZXRhLCAweDAzOTYKLWFhY3V0ZSwgMHgw
MGUxCi1hY2lyYywgMHgwMGUyCi1hY3V0ZSwgMHgwMGI0Ci1hZWxpZywgMHgwMGU2Ci1hZ3JhdmUs
IDB4MDBlMAotYWxlZnN5bSwgMHgyMTM1Ci1hbHBoYSwgMHgwM2IxCi1hbXAsIDM4Ci1hbmQsIDB4
MjIyNwotYW5nLCAweDIyMjAKLWFwb3MsIDB4MDAyNwotYXJpbmcsIDB4MDBlNQotYXN5bXAsIDB4
MjI0OAotYXRpbGRlLCAweDAwZTMKLWF1bWwsIDB4MDBlNAotYmRxdW8sIDB4MjAxZQotYmV0YSwg
MHgwM2IyCi1icnZiYXIsIDB4MDBhNgotYnVsbCwgMHgyMDIyCi1jYXAsIDB4MjIyOQotY2NlZGls
LCAweDAwZTcKLWNlZGlsLCAweDAwYjgKLWNlbnQsIDB4MDBhMgotY2hpLCAweDAzYzcKLWNpcmMs
IDB4MDJjNgotY2x1YnMsIDB4MjY2MwotY29uZywgMHgyMjQ1Ci1jb3B5LCAweDAwYTkKLWNyYXJy
LCAweDIxYjUKLWN1cCwgMHgyMjJhCi1jdXJyZW4sIDB4MDBhNAotZEFyciwgMHgyMWQzCi1kYWdn
ZXIsIDB4MjAyMAotZGFyciwgMHgyMTkzCi1kZWcsIDB4MDBiMAotZGVsdGEsIDB4MDNiNAotZGlh
bXMsIDB4MjY2NgotZGl2aWRlLCAweDAwZjcKLWVhY3V0ZSwgMHgwMGU5Ci1lY2lyYywgMHgwMGVh
Ci1lZ3JhdmUsIDB4MDBlOAotZW1wdHksIDB4MjIwNQotZW1zcCwgMHgyMDAzCi1lbnNwLCAweDIw
MDIKLWVwc2lsb24sIDB4MDNiNQotZXF1aXYsIDB4MjI2MQotZXRhLCAweDAzYjcKLWV0aCwgMHgw
MGYwCi1ldW1sLCAweDAwZWIKLWV1cm8sIDB4MjBhYwotZXhpc3QsIDB4MjIwMwotZm5vZiwgMHgw
MTkyCi1mb3JhbGwsIDB4MjIwMAotZnJhYzEyLCAweDAwYmQKLWZyYWMxNCwgMHgwMGJjCi1mcmFj
MzQsIDB4MDBiZQotZnJhc2wsIDB4MjA0NAotZ2FtbWEsIDB4MDNiMwotZ2UsIDB4MjI2NQotZ3Qs
IDYyCi1oQXJyLCAweDIxZDQKLWhhcnIsIDB4MjE5NAotaGVhcnRzLCAweDI2NjUKLWhlbGxpcCwg
MHgyMDI2Ci1pYWN1dGUsIDB4MDBlZAotaWNpcmMsIDB4MDBlZQotaWV4Y2wsIDB4MDBhMQotaWdy
YXZlLCAweDAwZWMKLWltYWdlLCAweDIxMTEKLWluZmluLCAweDIyMWUKLWludCwgMHgyMjJiCi1p
b3RhLCAweDAzYjkKLWlxdWVzdCwgMHgwMGJmCi1pc2luLCAweDIyMDgKLWl1bWwsIDB4MDBlZgot
a2FwcGEsIDB4MDNiYQotbEFyciwgMHgyMWQwCi1sYW1iZGEsIDB4MDNiYgotbGFuZywgMHgzMDA4
Ci1sYXF1bywgMHgwMGFiCi1sYXJyLCAweDIxOTAKLWxjZWlsLCAweDIzMDgKLWxkcXVvLCAweDIw
MWMKLWxlLCAweDIyNjQKLWxmbG9vciwgMHgyMzBhCi1sb3dhc3QsIDB4MjIxNwotbG96LCAweDI1
Y2EKLWxybSwgMHgyMDBlCi1sc2FxdW8sIDB4MjAzOQotbHNxdW8sIDB4MjAxOAotbHQsIDYwCi1t
YWNyLCAweDAwYWYKLW1kYXNoLCAweDIwMTQKLW1pY3JvLCAweDAwYjUKLW1pZGRvdCwgMHgwMGI3
Ci1taW51cywgMHgyMjEyCi1tdSwgMHgwM2JjCi1uYWJsYSwgMHgyMjA3Ci1uYnNwLCAweDAwYTAK
LW5kYXNoLCAweDIwMTMKLW5lLCAweDIyNjAKLW5pLCAweDIyMGIKLW5vdCwgMHgwMGFjCi1ub3Rp
biwgMHgyMjA5Ci1uc3ViLCAweDIyODQKLW5zdXAsIDB4MjI4NQotbnRpbGRlLCAweDAwZjEKLW51
LCAweDAzYmQKLW9hY3V0ZSwgMHgwMGYzCi1vY2lyYywgMHgwMGY0Ci1vZWxpZywgMHgwMTUzCi1v
Z3JhdmUsIDB4MDBmMgotb2xpbmUsIDB4MjAzZQotb21lZ2EsIDB4MDNjOQotb21pY3JvbiwgMHgw
M2JmCi1vcGx1cywgMHgyMjk1Ci1vciwgMHgyMjI4Ci1vcmRmLCAweDAwYWEKLW9yZG0sIDB4MDBi
YQotb3NsYXNoLCAweDAwZjgKLW90aWxkZSwgMHgwMGY1Ci1vdGltZXMsIDB4MjI5Nwotb3VtbCwg
MHgwMGY2Ci1wYXJhLCAweDAwYjYKLXBhcnQsIDB4MjIwMgotcGVyY250LCAweDAwMjUKLXBlcm1p
bCwgMHgyMDMwCi1wZXJwLCAweDIyYTUKLXBoaSwgMHgwM2M2Ci1waSwgMHgwM2MwCi1waXYsIDB4
MDNkNgotcGx1c21uLCAweDAwYjEKLXBvdW5kLCAweDAwYTMKLXByaW1lLCAweDIwMzIKLXByb2Qs
IDB4MjIwZgotcHJvcCwgMHgyMjFkCi1wc2ksIDB4MDNjOAotcXVvdCwgMzQKLXJBcnIsIDB4MjFk
MgotcmFkaWMsIDB4MjIxYQotcmFuZywgMHgzMDA5Ci1yYXF1bywgMHgwMGJiCi1yYXJyLCAweDIx
OTIKLXJjZWlsLCAweDIzMDkKLXJkcXVvLCAweDIwMWQKLXJlYWwsIDB4MjExYwotcmVnLCAweDAw
YWUKLXJmbG9vciwgMHgyMzBiCi1yaG8sIDB4MDNjMQotcmxtLCAweDIwMGYKLXJzYXF1bywgMHgy
MDNhCi1yc3F1bywgMHgyMDE5Ci1zYnF1bywgMHgyMDFhCi1zY2Fyb24sIDB4MDE2MQotc2RvdCwg
MHgyMmM1Ci1zZWN0LCAweDAwYTcKLXNoeSwgMHgwMGFkCi1zaWdtYSwgMHgwM2MzCi1zaWdtYWYs
IDB4MDNjMgotc2ltLCAweDIyM2MKLXNwYWRlcywgMHgyNjYwCi1zdWIsIDB4MjI4Mgotc3ViZSwg
MHgyMjg2Ci1zdW0sIDB4MjIxMQotc3VwLCAweDIyODMKLXN1cDEsIDB4MDBiOQotc3VwMiwgMHgw
MGIyCi1zdXAzLCAweDAwYjMKLXN1cGUsIDB4MjI4Nwotc3VwbCwgMHgwMGI5Ci1zemxpZywgMHgw
MGRmCi10YXUsIDB4MDNjNAotdGhlcmU0LCAweDIyMzQKLXRoZXRhLCAweDAzYjgKLXRoZXRhc3lt
LCAweDAzZDEKLXRoaW5zcCwgMHgyMDA5Ci10aG9ybiwgMHgwMGZlCi10aWxkZSwgMHgwMmRjCi10
aW1lcywgMHgwMGQ3Ci10cmFkZSwgMHgyMTIyCi11QXJyLCAweDIxZDEKLXVhY3V0ZSwgMHgwMGZh
Ci11YXJyLCAweDIxOTEKLXVjaXJjLCAweDAwZmIKLXVncmF2ZSwgMHgwMGY5Ci11bWwsIDB4MDBh
OAotdXBzaWgsIDB4MDNkMgotdXBzaWxvbiwgMHgwM2M1Ci11dW1sLCAweDAwZmMKLXdlaWVycCwg
MHgyMTE4Ci14aSwgMHgwM2JlCi15YWN1dGUsIDB4MDBmZAoteWVuLCAweDAwYTUKLXl1bWwsIDB4
MDBmZgotemV0YSwgMHgwM2I2Ci16d2osIDB4MjAwZAotenduaiwgMHgyMDBjCi0lJQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlQYXJzZXIuY3BwCmluZGV4IDZiZWM4MTkwZGM4ODZjYzNlNjlkZjcxZWQwNDA1ZmEx
MDZjMGJlMDMuLjQ4MjI4MjdjZjQzYzU0ODIxNGE1NDFkYTdmMzk2NjhiODhmMDkwMDAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTEVudGl0eVBhcnNlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJIVE1MRW50aXR5UGFyc2VyLmgiCiAKKyNpbmNsdWRlICJIVE1MRW50
aXR5U2VhcmNoLmgiCisjaW5jbHVkZSAiSFRNTEVudGl0eVRhYmxlLmgiCiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiAjaW5jbHVkZSAiSFRNTEVudGl0eU5hbWVzLmNwcCIKQEAgLTEwMiw3ICsx
MDQsNiBAQCB1bnNpZ25lZCBjb25zdW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJj
ZSwgYm9vbCYgbm90RW5vdWdoQ2hhcmFjdGVycywgVQogICAgIEVudGl0eVN0YXRlIGVudGl0eVN0
YXRlID0gSW5pdGlhbDsKICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIFZlY3RvcjxVQ2hh
ciwgMTA+IGNvbnN1bWVkQ2hhcmFjdGVyczsKLSAgICBWZWN0b3I8Y2hhciwgMTA+IGVudGl0eU5h
bWU7CiAKICAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKICAgICAgICAgVUNoYXIgY2Mg
PSAqc291cmNlOwpAQCAtMTY2LDcgKzE2Nyw3IEBAIHVuc2lnbmVkIGNvbnN1bWVIVE1MRW50aXR5
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzLCBVCiAg
ICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnOycpIHsKICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZVBhc3ROb25OZXdsaW5lKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZ2FsRW50
aXR5Rm9yKHJlc3VsdCk7Ci0gICAgICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xODEsNDggKzE4Miw0OCBAQCB1bnNpZ25lZCBjb25z
dW1lSFRNTEVudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgYm9vbCYgbm90RW5vdWdoQ2hh
cmFjdGVycywgVQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBO
YW1lZDogewotICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyB3cm9uZy4gV2UgbmVl
ZCB0byBmaW5kIHRoZSBsb25nZXN0IG1hdGNoaW5nIGVudGl0eS4KLSAgICAgICAgICAgIC8vICAg
ICAgICBUaGUgZXhhbXBsZXMgZnJvbSB0aGUgc3BlYyBhcmU6Ci0gICAgICAgICAgICAvLyAgICAg
ICAgICAgIEknbSAmbm90aXQ7IEkgdGVsbCB5b3UKLSAgICAgICAgICAgIC8vICAgICAgICAgICAg
SSdtICZub3RpbjsgSSB0ZWxsIHlvdQotICAgICAgICAgICAgLy8gICAgICAgIEluIHRoZSBmaXJz
dCBjYXNlLCAiJm5vdCIgaXMgdGhlIGVudGl0eS4gIEluIHRoZSBzZWNvbmQKLSAgICAgICAgICAg
IC8vICAgICAgICBjYXNlLCAiJm5vdGluOyIgaXMgdGhlIGVudGl0eS4KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBPdXIgbGlzdCBvZiBIVE1MIGVudGl0aWVzIGlzIGluY29tcGxldGUuCi0gICAgICAg
ICAgICAvLyBGSVhNRTogVGhlIG51bWJlciA4IGJlbG93IGlzIGJvZ3VzLgotICAgICAgICAgICAg
d2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpICYmIGVudGl0eU5hbWUuc2l6ZSgpIDw9IDgpIHsKKyAg
ICAgICAgICAgIEhUTUxFbnRpdHlTZWFyY2ggZW50aXR5U2VhcmNoOworICAgICAgICAgICAgd2hp
bGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOwot
ICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnOycpIHsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgRW50aXR5KiBlbnRpdHkgPSBmaW5kRW50aXR5KGVudGl0eU5hbWUuZGF0YSgpLCBlbnRpdHlO
YW1lLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCc7Jyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZW50aXR5LT5jb2RlOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBpZiAoIWlzQWxwaGFOdW1lcmljKGNjKSkgewotICAgICAgICAgICAgICAgICAgICBj
b25zdCBFbnRpdHkqIGVudGl0eSA9IGZpbmRFbnRpdHkoZW50aXR5TmFtZS5kYXRhKCksIGVudGl0
eU5hbWUuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSFRNTDUgdGVsbHMgdXMgdG8gaWdub3JlIHRoaXMgZW50aXR5
LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg
dGhlIGxvb2toZWFkIGNoYXJhY3RlciBpcyAnPScuCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgJiYgY2MgPT0gJz0nKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBl
bnRpdGllcyByZXF1aXJlIGEgdGVybWluYXRpbmcgc2VtaWNvbG9uLCB3aGVyZWFzIG90aGVyCi0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBlbnRpdGllcyBkbyBub3QuICBUaGUgSFRNTDUgc3Bl
YyBoYXMgYSBnaWFudCBsaXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VzLmh0bWwjbmFt
ZWQtY2hhcmFjdGVyLXJlZmVyZW5jZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgICAgICAgICAvLyBIb3dldmVyLCB0aGUgbGlzdCBzZWVtcyB0byBib2lsIGRv
d24gdG8gdGhpcyBicmFuY2g6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LT5j
b2RlID4gMjU1KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGVudGl0eS0+Y29kZTsKLSAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVudGl0eVNlYXJjaC5hZHZhbmNlKGNjKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWVudGl0eVNlYXJjaC5pc0VudGl0eVByZWZpeCgpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW50aXR5TmFt
ZS5hcHBlbmQoY2MpOwogICAgICAgICAgICAgICAgIGNvbnN1bWVkQ2hhcmFjdGVycy5hcHBlbmQo
Y2MpOwogICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG5vdEVub3VnaENoYXJhY3RlcnMgPSBzb3VyY2UuaXNFbXB0
eSgpOworICAgICAgICAgICAgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXZSBjYW4ndCBhbiBlbnRpdHkgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBhIGxvbmdl
ciBlbnRpdHkKKyAgICAgICAgICAgICAgICAvLyB0aGF0IHdlIGNvdWxkIG1hdGNoIGlmIHdlIGhh
ZCBtb3JlIGRhdGEuCisgICAgICAgICAgICAgICAgdW5jb25zdW1lQ2hhcmFjdGVycyhzb3VyY2Us
IGNvbnN1bWVkQ2hhcmFjdGVycyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIWVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVCghZW50aXR5U2VhcmNoLmN1cnJlbnRWYWx1ZSgpKTsKKyAgICAg
ICAgICAgICAgICB1bmNvbnN1bWVDaGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChlbnRpdHlTZWFyY2gubGFzdE1hdGNoKCktPmxlbmd0aCAhPSBlbnRpdHlTZWFyY2guY3Vy
cmVudExlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UndmUgY29uc3VtZWQgdG9vIG1h
bnkgY2hhcmFjdGVycy4gIFdlIG5lZWQgdG8gd2FsayB0aGUKKyAgICAgICAgICAgICAgICAvLyBz
b3VyY2UgYmFjayB0byB0aGUgcG9pbnQgYXQgd2hpY2ggd2UgaGFkIGNvbnN1bWVkIGFuCisgICAg
ICAgICAgICAgICAgLy8gYWN0dWFsIGVudGl0eS4KKyAgICAgICAgICAgICAgICB1bmNvbnN1bWVD
aGFyYWN0ZXJzKHNvdXJjZSwgY29uc3VtZWRDaGFyYWN0ZXJzKTsKKyAgICAgICAgICAgICAgICBj
b25zdW1lZENoYXJhY3RlcnMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVu
Z3RoID0gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT5sZW5ndGg7CisgICAgICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHJlZmVyZW5jZSA9IGVudGl0eVNlYXJjaC5sYXN0TWF0Y2goKS0+ZW50aXR5
OworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlZmVyZW5jZSwgY2MgPT0gKnJlZmVyZW5jZSsrKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29uc3VtZWRDaGFyYWN0ZXJzLmFwcGVuZChjYyk7CisgICAgICAgICAgICAgICAgICAg
IHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKGNjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFzb3VyY2UuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2MgPSAqc291cmNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVudGl0eVNlYXJj
aC5sYXN0TWF0Y2goKS0+bGFzdENoYXJhY3RlcigpID09ICc7JykKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgpLT52YWx1ZTsKKyAgICAgICAgICAgIGlmICgh
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgfHwgIShpc0FscGhhTnVtZXJpYyhjYykgfHwgY2Mg
PT0gJz0nKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50aXR5U2VhcmNoLmxhc3RNYXRjaCgp
LT52YWx1ZTsKICAgICAgICAgICAgIHVuY29uc3VtZUNoYXJhY3RlcnMoc291cmNlLCBjb25zdW1l
ZENoYXJhY3RlcnMpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9IVE1MRW50aXR5U2VhcmNoLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1M
RW50aXR5U2VhcmNoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDUyNmEzZDZkZTdmYjI3ZWJiM2M4M2FjMzlh
MWVhN2E2NmVjMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlT
ZWFyY2guY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxF
bnRpdHlTZWFyY2guaCIKKworI2luY2x1ZGUgIkhUTUxFbnRpdHlUYWJsZS5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisgICAgCitjb25zdCBIVE1MRW50aXR5VGFibGVF
bnRyeSogaGFsZndheShjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCwgY29uc3QgSFRN
TEVudGl0eVRhYmxlRW50cnkqIHJpZ2h0KQoreworICAgIHJldHVybiAmbGVmdFsocmlnaHQgLSBs
ZWZ0KSAvIDJdOworfQorCit9CisgICAgCitIVE1MRW50aXR5U2VhcmNoOjpIVE1MRW50aXR5U2Vh
cmNoKCkKKyAgICA6IG1fY3VycmVudExlbmd0aCgwKQorICAgICwgbV9jdXJyZW50VmFsdWUoMCkK
KyAgICAsIG1fbGFzdE1hdGNoKDApCisgICAgLCBtX3N0YXJ0KEhUTUxFbnRpdHlUYWJsZTo6c3Rh
cnQoKSkKKyAgICAsIG1fZW5kKEhUTUxFbnRpdHlUYWJsZTo6ZW5kKCkpCit7Cit9CisKK0hUTUxF
bnRpdHlTZWFyY2g6OkNvbXBhcmVSZXN1bHQgSFRNTEVudGl0eVNlYXJjaDo6Y29tcGFyZShjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogZW50cnksIFVDaGFyIG5leHRDaGFyYWN0ZXIpIGNvbnN0
Cit7CisgICAgaWYgKGVudHJ5LT5sZW5ndGggPCBtX2N1cnJlbnRMZW5ndGggKyAxKQorICAgICAg
ICByZXR1cm4gQmVmb3JlOworICAgIFVDaGFyIGVudHJ5TmV4dENoYXJhY3RlciA9IGVudHJ5LT5l
bnRpdHlbbV9jdXJyZW50TGVuZ3RoXTsKKyAgICBpZiAoZW50cnlOZXh0Q2hhcmFjdGVyID09IG5l
eHRDaGFyYWN0ZXIpCisgICAgICAgIHJldHVybiBQcmVmaXg7CisgICAgcmV0dXJuIGVudHJ5TmV4
dENoYXJhY3RlciA8IG5leHRDaGFyYWN0ZXIgPyBCZWZvcmUgOiBBZnRlcjsKK30KKworY29uc3Qg
SFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlTZWFyY2g6OmZpbmRTdGFydChVQ2hhciBu
ZXh0Q2hhcmFjdGVyKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBs
ZWZ0ID0gbV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogcmlnaHQgPSBt
X2VuZDsKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAg
Q29tcGFyZVJlc3VsdCByZXN1bHQgPSBjb21wYXJlKGxlZnQsIG5leHRDaGFyYWN0ZXIpOworICAg
IGlmIChyZXN1bHQgPT0gUHJlZml4KQorICAgICAgICByZXR1cm4gbGVmdDsKKyAgICBpZiAocmVz
dWx0ID09IEFmdGVyKQorICAgICAgICByZXR1cm4gcmlnaHQ7CisgICAgd2hpbGUgKGxlZnQgKyAx
IDwgcmlnaHQpIHsKKyAgICAgICAgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHByb2JlID0g
aGFsZndheShsZWZ0LCByaWdodCk7CisgICAgICAgIHJlc3VsdCA9IGNvbXBhcmUocHJvYmUsIG5l
eHRDaGFyYWN0ZXIpOworICAgICAgICBpZiAocmVzdWx0ID09IEJlZm9yZSkKKyAgICAgICAgICAg
IGxlZnQgPSBwcm9iZTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBU1NFUlQocmVzdWx0
ID09IEFmdGVyIHx8IHJlc3VsdCA9PSBQcmVmaXgpOworICAgICAgICAgICAgcmlnaHQgPSBwcm9i
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQobGVmdCArIDEgPT0gcmlnaHQpOworICAg
IHJldHVybiByaWdodDsKK30KKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRp
dHlTZWFyY2g6OmZpbmRFbmQoVUNoYXIgbmV4dENoYXJhY3RlcikgY29uc3QKK3sKKyAgICBjb25z
dCBIVE1MRW50aXR5VGFibGVFbnRyeSogbGVmdCA9IG1fc3RhcnQ7CisgICAgY29uc3QgSFRNTEVu
dGl0eVRhYmxlRW50cnkqIHJpZ2h0ID0gbV9lbmQ7CisgICAgaWYgKGxlZnQgPT0gcmlnaHQpCisg
ICAgICAgIHJldHVybiByaWdodDsKKyAgICBDb21wYXJlUmVzdWx0IHJlc3VsdCA9IGNvbXBhcmUo
cmlnaHQsIG5leHRDaGFyYWN0ZXIpOworICAgIGlmIChyZXN1bHQgPT0gUHJlZml4KQorICAgICAg
ICByZXR1cm4gcmlnaHQ7CisgICAgaWYgKHJlc3VsdCA9PSBCZWZvcmUpCisgICAgICAgIHJldHVy
biBsZWZ0OworICAgIHdoaWxlIChsZWZ0ICsgMSA8IHJpZ2h0KSB7CisgICAgICAgIGNvbnN0IEhU
TUxFbnRpdHlUYWJsZUVudHJ5KiBwcm9iZSA9IGhhbGZ3YXkobGVmdCwgcmlnaHQpOworICAgICAg
ICByZXN1bHQgPSBjb21wYXJlKHByb2JlLCBuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKHJl
c3VsdCA9PSBBZnRlcikKKyAgICAgICAgICAgIHJpZ2h0ID0gcHJvYmU7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBCZWZvcmUgfHwgcmVzdWx0ID09IFByZWZp
eCk7CisgICAgICAgICAgICBsZWZ0ID0gcHJvYmU7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNT
RVJUKGxlZnQgKyAxID09IHJpZ2h0KTsKKyAgICByZXR1cm4gbGVmdDsKK30KKwordm9pZCBIVE1M
RW50aXR5U2VhcmNoOjphZHZhbmNlKFVDaGFyIG5leHRDaGFyYWN0ZXIpCit7CisgICAgQVNTRVJU
KGlzRW50aXR5UHJlZml4KCkpOworICAgIGlmICghbV9jdXJyZW50TGVuZ3RoKSB7CisgICAgICAg
IG1fc3RhcnQgPSBIVE1MRW50aXR5VGFibGU6OnN0YXJ0KG5leHRDaGFyYWN0ZXIpOworICAgICAg
ICBtX2VuZCA9IEhUTUxFbnRpdHlUYWJsZTo6ZW5kKG5leHRDaGFyYWN0ZXIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIG1fc3RhcnQgPSBmaW5kU3RhcnQobmV4dENoYXJhY3Rlcik7CisgICAgICAg
IG1fZW5kID0gZmluZEVuZChuZXh0Q2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKG1fc3RhcnQgPT0g
bV9lbmQgJiYgY29tcGFyZShtX3N0YXJ0LCBuZXh0Q2hhcmFjdGVyKSAhPSBQcmVmaXgpCisgICAg
ICAgICAgICByZXR1cm4gZmFpbCgpOworICAgIH0KKyAgICArK21fY3VycmVudExlbmd0aDsKKyAg
ICBpZiAobV9zdGFydC0+bGVuZ3RoICE9IG1fY3VycmVudExlbmd0aCkgeworICAgICAgICBtX2N1
cnJlbnRWYWx1ZSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9sYXN0TWF0Y2gg
PSBtX3N0YXJ0OworICAgIG1fY3VycmVudFZhbHVlID0gbV9sYXN0TWF0Y2gtPnZhbHVlOworfQor
Cit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVudGl0eVNlYXJjaC5oIGIvV2ViQ29y
ZS9odG1sL0hUTUxFbnRpdHlTZWFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTc4NTlkNGViY2NkMmExMmIw
M2JkZTBmOGNmMTI4MjM5NGRiY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxFbnRpdHlTZWFyY2guaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIVE1MRW50aXR5U2VhcmNoX2gKKyNk
ZWZpbmUgSFRNTEVudGl0eVNlYXJjaF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBIVE1MRW50aXR5VGFibGVFbnRyeTsKKwor
Y2xhc3MgSFRNTEVudGl0eVNlYXJjaCB7CitwdWJsaWM6CisgICAgSFRNTEVudGl0eVNlYXJjaCgp
OworCisgICAgdm9pZCBhZHZhbmNlKFVDaGFyKTsKKworICAgIGJvb2wgaXNFbnRpdHlQcmVmaXgo
KSBjb25zdCB7IHJldHVybiAhIW1fc3RhcnQ7IH0KKyAgICBpbnQgY3VycmVudFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50VmFsdWU7IH0KKyAgICBpbnQgY3VycmVudExlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudExlbmd0aDsgfQorCisgICAgY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIGxhc3RNYXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE1hdGNoOyB9CisKK3By
aXZhdGU6CisgICAgZW51bSBDb21wYXJlUmVzdWx0IHsKKyAgICAgICAgQmVmb3JlLAorICAgICAg
ICBQcmVmaXgsCisgICAgICAgIEFmdGVyLAorICAgIH07CisKKyAgICBDb21wYXJlUmVzdWx0IGNv
bXBhcmUoY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqLCBVQ2hhcikgY29uc3Q7CisgICAgY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGZpbmRTdGFydChVQ2hhcikgY29uc3Q7CisgICAgY29u
c3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGZpbmRFbmQoVUNoYXIpIGNvbnN0OworCisgICAgdm9p
ZCBmYWlsKCkKKyAgICB7CisgICAgICAgIG1fY3VycmVudFZhbHVlID0gMDsKKyAgICAgICAgbV9z
dGFydCA9IDA7CisgICAgICAgIG1fZW5kID0gMDsKKyAgICB9CisKKyAgICBpbnQgbV9jdXJyZW50
TGVuZ3RoOworICAgIGludCBtX2N1cnJlbnRWYWx1ZTsKKworICAgIGNvbnN0IEhUTUxFbnRpdHlU
YWJsZUVudHJ5KiBtX2xhc3RNYXRjaDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSog
bV9zdGFydDsKKyAgICBjb25zdCBIVE1MRW50aXR5VGFibGVFbnRyeSogbV9lbmQ7Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oIGIv
V2ViQ29yZS9odG1sL0hUTUxFbnRpdHlUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YTFhZmQzMTYxZjBk
Y2EzNGM1MmQzMDFkY2E5YzM5NTljNzI5MzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTEVudGl0eVRhYmxlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSFRNTEVudGl0eVRhYmxlX2gK
KyNkZWZpbmUgSFRNTEVudGl0eVRhYmxlX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5IHsK
KyAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyKCkgY29uc3QgeyByZXR1cm4gZW50aXR5W2xlbmd0aCAt
IDFdOyB9CisKKyAgICBjb25zdCBVQ2hhciogZW50aXR5OworICAgIGludCBsZW5ndGg7CisgICAg
aW50IHZhbHVlOworfTsKKworY2xhc3MgSFRNTEVudGl0eVRhYmxlIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHN0YXJ0KCk7CisgICAgc3RhdGljIGNv
bnN0IEhUTUxFbnRpdHlUYWJsZUVudHJ5KiBlbmQoKTsKKworICAgIHN0YXRpYyBjb25zdCBIVE1M
RW50aXR5VGFibGVFbnRyeSogc3RhcnQoVUNoYXIpOworICAgIHN0YXRpYyBjb25zdCBIVE1MRW50
aXR5VGFibGVFbnRyeSogZW5kKFVDaGFyKTsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJDb3JlL21ha2UtaGFzaC10b29scy5wbCBiL1dlYkNvcmUvbWFrZS1oYXNoLXRvb2xzLnBs
CmluZGV4IDQyY2I2ZmQ5NThmMTA1YWU2YWZiZjZlZGUzNDhhYzM1YjZmMzk2M2UuLjhjYzk5NTJj
MTU3MmIwMDMzODFiMGQ4MjczY2IxZDY2NWMzMGZmZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbWFr
ZS1oYXNoLXRvb2xzLnBsCisrKyBiL1dlYkNvcmUvbWFrZS1oYXNoLXRvb2xzLnBsCkBAIC0yOSwx
NiArMjksNiBAQCBteSAkb3B0aW9uID0gYmFzZW5hbWUoJEFSR1ZbMF0sIi5ncGVyZiIpOwogCiBz
d2l0Y2ggKCRvcHRpb24pIHsKIAotY2FzZSAiSFRNTEVudGl0eU5hbWVzIiB7Ci0KLSAgICBteSAk
aHRtbEVudGl0eU5hbWVzR2VuZXJhdGVkICAgPSAiJG91dGRpci9IVE1MRW50aXR5TmFtZXMuY3Bw
IjsKLSAgICBteSAkaHRtbEVudGl0eU5hbWVzR3BlcmYgICAgICAgPSAkQVJHVlswXTsKLSAgICBz
aGlmdDsKLQotICAgIHN5c3RlbSgiZ3BlcmYgLS1rZXktcG9zaXRpb25zPVwiKlwiIC1EIC1zIDIg
JGh0bWxFbnRpdHlOYW1lc0dwZXJmID4gJGh0bWxFbnRpdHlOYW1lc0dlbmVyYXRlZCIpID09IDAg
fHwgZGllICJjYWxsaW5nIGdwZXJmIGZhaWxlZDogJD8iOwotCi19ICMgY2FzZSAiSFRNTEVudGl0
eU5hbWVzIgotCiBjYXNlICJEb2NUeXBlU3RyaW5ncyIgewogCiAgICAgbXkgJGRvY1R5cGVTdHJp
bmdzR2VuZXJhdGVkICAgID0gIiRvdXRkaXIvRG9jVHlwZVN0cmluZ3MuY3BwIjsKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCBm
OGQxZDg4YzJiZDhhYzkzY2Y2MjhkMDYyM2M1ODk3ODI3NGMxOTUzLi44NTIxZWFiZDdjYmE1NjU5
ZDI0YjRkMzEzMTcxNGY3ODBhMDQ3ZWVkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDgt
MTIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgTWF0aE1MIGVudGl0
aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzU5
NQorCisgICAgICAgIEEgc2NyaXB0IGZvciBnZW5lcmF0aW5nIHRoZSBDKysgc3RhdGUgZGF0YSBz
dHJ1Y3R1cmUgZGVzY3JpYmluZyBhbGwgdGhlCisgICAgICAgIGVudGl0aWVzIGZyb20gYSBKU09O
IGRlc2NyaXB0aW9uLgorCisgICAgICAgIE5vdGU6IFRoaXMgc2NyaXB0IGlzIG5vdCB5ZXQgaW50
ZWdyYXRlZCB3aXRoIHRoZSBidWlsZCBzeXN0ZW0sIHNvIHRoaXMKKyAgICAgICAgICAgICAgcGF0
Y2ggd2lsbCBub3QgYnVpbGQhICBPT1BTIQorCisgICAgICAgICogU2NyaXB0cy9jcmVhdGUtaHRt
bC1lbnRpdHktdGFibGU6IEFkZGVkLgorCiAyMDEwLTA4LTEyICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBCdWlsZCBicmVhayBmaXguCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvY3JlYXRlLWh0bWwtZW50aXR5LXRhYmxlCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTNiMjlkYTc4
YjNmYjVlYjgwZjg0NWJiYjM0ODAzMzBjMzIwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2NyZWF0ZS1odG1sLWVudGl0eS10YWJsZQpAQCAtMCwwICsxLDE3MyBAQAor
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgb3MucGF0
aAoraW1wb3J0IHN0cmluZworaW1wb3J0IHN5cworCitpbXBvcnQgd2Via2l0cHkudGhpcmRwYXJ0
eS5zaW1wbGVqc29uIGFzIHNpbXBsZWpzb24KKworCitkZWYgY29udmVydF9lbnRpdHlfdG9fY3Bw
X25hbWUoZW50aXR5KToKKyAgICBwb3N0Zml4ID0gIkVudGl0eU5hbWUiCisgICAgaWYgZW50aXR5
Wy0xXSA9PSAiOyI6CisgICAgICAgIHJldHVybiAiJXNTZW1pY29sb24lcyIgJSAoZW50aXR5Wzot
MV0sIHBvc3RmaXgpCisgICAgcmV0dXJuICIlcyVzIiAlIChlbnRpdHksIHBvc3RmaXgpCisKKwor
ZGVmIGNvbnZlcnRfZW50aXR5X3RvX3VjaGFyX2FycmF5KGVudGl0eSk6CisgICAgcmV0dXJuICJ7
JyVzJ30iICUgIicsICciLmpvaW4oZW50aXR5KQorCisKK2RlZiBjb252ZXJ0X3ZhbHVlX3RvX2lu
dCh2YWx1ZSk6CisgICAgYXNzZXJ0KHZhbHVlWzBdID09ICJVIikKKyAgICBhc3NlcnQodmFsdWVb
MV0gPT0gIisiKQorICAgIHJldHVybiAiMHgiICsgdmFsdWVbMjpdCisKKworZGVmIG9mZnNldF90
YWJsZV9lbnRyeShvZmZzZXQpOgorICAgIHJldHVybiAiICAgICZzdGF0aWNFbnRpdHlUYWJsZVsl
c10sIiAlIG9mZnNldAorCisKK3Byb2dyYW1fbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoX19maWxl
X18pCitpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiVXNh
Z2U6ICVzIElOUFVUX0ZJTEUiICUgcHJvZ3JhbV9uYW1lCisgICAgZXhpdCgxKQorCitpbnB1dF9m
aWxlID0gc3lzLmFyZ3ZbMV0KK2h0bWxfZW50aXR5X25hbWVzX2ZpbGUgPSBvcGVuKGlucHV0X2Zp
bGUpCitlbnRyaWVzID0gc2ltcGxlanNvbi5sb2FkKGh0bWxfZW50aXR5X25hbWVzX2ZpbGUpCito
dG1sX2VudGl0eV9uYW1lc19maWxlLmNsb3NlKCkKKworZW50cmllcyA9IHNvcnRlZChlbnRyaWVz
LCBrZXk9bGFtYmRhIGVudHJ5OiBlbnRyeVsnZW50aXR5J10pCitlbnRpdHlfY291bnQgPSBsZW4o
ZW50cmllcykKKworcHJpbnQgIiIiLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKy8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgQlkgV2ViS2l0VG9vbHMvU2Ny
aXB0cy9jcmVhdGUtaHRtbC1lbnRpdHktdGFibGUKKy8vIERPIE5PVCBFRElUICh1bmxlc3MgeW91
IGFyZSBhIG5pbmphKSEKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxFbnRp
dHlUYWJsZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSB7CisiIiIKKwor
Zm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgcHJpbnQgImNvbnN0IFVDaGFyICVzRW50aXR5TmFt
ZVtdID0gJXM7IiAlICgKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fY3BwX25hbWUoZW50cnlb
ImVudGl0eSJdKSwKKyAgICAgICAgY29udmVydF9lbnRpdHlfdG9fdWNoYXJfYXJyYXkoZW50cnlb
ImVudGl0eSJdKSkKKworcHJpbnQgIiIiCitIVE1MRW50aXR5VGFibGVFbnRyeSBzdGF0aWNFbnRp
dHlUYWJsZVslc10gPSB7IiIiICUgZW50aXR5X2NvdW50CisKK2luZGV4ID0ge30KK29mZnNldCA9
IDAKK2ZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgIGxldHRlciA9IGVudHJ5WyJlbnRpdHkiXVsw
XQorICAgIGlmIG5vdCBpbmRleC5nZXQobGV0dGVyKToKKyAgICAgICAgaW5kZXhbbGV0dGVyXSA9
IG9mZnNldAorICAgIHByaW50ICcgICAgeyAlc0VudGl0eU5hbWUsICVzLCAlcyB9LCcgJSAoCisg
ICAgICAgIGNvbnZlcnRfZW50aXR5X3RvX2NwcF9uYW1lKGVudHJ5WyJlbnRpdHkiXSksCisgICAg
ICAgIGxlbihlbnRyeVsiZW50aXR5Il0pLAorICAgICAgICBjb252ZXJ0X3ZhbHVlX3RvX2ludChl
bnRyeVsidmFsdWUiXSkpCisgICAgb2Zmc2V0ICs9IDEKKworcHJpbnQgIiIifTsKKyIiIgorCitw
cmludCAiY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIHVwcGVyY2FzZU9mZnNldFtdID0geyIK
K2ZvciBsZXR0ZXIgaW4gc3RyaW5nLnVwcGVyY2FzZToKKyAgICBwcmludCBvZmZzZXRfdGFibGVf
ZW50cnkoaW5kZXhbbGV0dGVyXSkKK3ByaW50IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFsnYSdd
KQorcHJpbnQgIiIifTsKKworY29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIGxvd2VyY2FzZU9m
ZnNldFtdID0geyIiIgorZm9yIGxldHRlciBpbiBzdHJpbmcubG93ZXJjYXNlOgorICAgIHByaW50
IG9mZnNldF90YWJsZV9lbnRyeShpbmRleFtsZXR0ZXJdKQorcHJpbnQgb2Zmc2V0X3RhYmxlX2Vu
dHJ5KGVudGl0eV9jb3VudCkKK3ByaW50ICIiIn07CisKK30KKworY29uc3QgSFRNTEVudGl0eVRh
YmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6c3RhcnQoVUNoYXIgYykKK3sKKyAgICBpZiAoYyA+
PSAnQScgJiYgYyA8PSAnWicpCisgICAgICAgIHJldHVybiB1cHBlcmNhc2VPZmZzZXRbYyAtICdB
J107CisgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKQorICAgICAgICByZXR1cm4gbG93ZXJj
YXNlT2Zmc2V0W2MgLSAnYSddOworICAgIHJldHVybiAwOworfQorCitjb25zdCBIVE1MRW50aXR5
VGFibGVFbnRyeSogSFRNTEVudGl0eVRhYmxlOjplbmQoVUNoYXIgYykKK3sKKyAgICBpZiAoYyA+
PSAnQScgJiYgYyA8PSAnWicpCisgICAgICAgIHJldHVybiB1cHBlcmNhc2VPZmZzZXRbYyAtICdB
JyArIDFdIC0gMTsKKyAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAneicpCisgICAgICAgIHJldHVy
biBsb3dlcmNhc2VPZmZzZXRbYyAtICdhJyArIDFdIC0gMTsKKyAgICByZXR1cm4gMDsKK30KKwor
Y29uc3QgSFRNTEVudGl0eVRhYmxlRW50cnkqIEhUTUxFbnRpdHlUYWJsZTo6c3RhcnQoKQorewor
ICAgIHJldHVybiAmc3RhdGljRW50aXR5VGFibGVbMF07Cit9CisKK2NvbnN0IEhUTUxFbnRpdHlU
YWJsZUVudHJ5KiBIVE1MRW50aXR5VGFibGU6OmVuZCgpCit7CisgICAgcmV0dXJuICZzdGF0aWNF
bnRpdHlUYWJsZVslcyAtIDFdOworfQorCit9CisiIiIgJSBlbnRpdHlfY291bnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>