<?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>28703</bug_id>
          
          <creation_ts>2009-08-24 23:23:12 -0700</creation_ts>
          <short_desc>Refactoring placeholder-related code</short_desc>
          <delta_ts>2009-09-27 09:31:13 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://bugs.webkit.org/show_bug.cgi?id=21248</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29782</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142521</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-24 23:23:12 -0700</bug_when>
    <thetext>As Eric wrote in bug#21248, we should unify placeholder-related code in InputElement and HTMLTextAreaElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142527</commentid>
    <comment_count>1</comment_count>
      <attachid>38532</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-24 23:39:34 -0700</bug_when>
    <thetext>Created attachment 38532
Proposed patch

No new tests because this patch is just a refactoring.
I confirmed run-webkit-tests passed on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142540</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-25 00:34:16 -0700</bug_when>
    <thetext>Ideally adele should see this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142644</commentid>
    <comment_count>3</comment_count>
      <attachid>38532</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-08-25 11:02:09 -0700</bug_when>
    <thetext>Comment on attachment 38532
Proposed patch

I wish HTMLFormControlElementWithState were a more descriptive name.  Its not obvious why this stuff goes in there and not in the HTMLFormControlElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143028</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-26 18:56:54 -0700</bug_when>
    <thetext>HTMLFormControlElementWithState is used by HTMLSelectElement too, which has no placeholder.  So we had better
 - move the placeholder methods to HTMLFormControlElement, or
 - introduce another subclass.  HTMLFormControlElementWithPlaceholder?

Which do you like?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143039</commentid>
    <comment_count>5</comment_count>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-08-26 21:07:30 -0700</bug_when>
    <thetext>I think I&apos;d like another subclass.  The common thread is that these are both text controls, so the subclass name should say something about that.  I think its likely that there are other bits of code we&apos;ll want to share between all text controls in the future.  In fact, there may be other bits of duplicated code already.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143056</commentid>
    <comment_count>6</comment_count>
      <attachid>38657</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-26 22:43:45 -0700</bug_when>
    <thetext>Created attachment 38657
Proposed patch (rev.2)

Intoduces HTMLTextFormControlElement class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143837</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 03:43:02 -0700</bug_when>
    <thetext>Alternatively we could share via composition instead of inheritance.  (This looks OK though.)  I think this patch is best reviewed by Adele.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147457</commentid>
    <comment_count>8</comment_count>
      <attachid>39631</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-15 20:02:44 -0700</bug_when>
    <thetext>Created attachment 39631
Proposed patch (rev.3)

Resolved conflict with today&apos;s WebKit source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149444</commentid>
    <comment_count>9</comment_count>
      <attachid>39631</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:39:50 -0700</bug_when>
    <thetext>Comment on attachment 39631
Proposed patch (rev.3)

No comment from Adele in a month.  Looks like you&apos;re just moving code, and that&apos;s OK with me.  r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149557</commentid>
    <comment_count>10</comment_count>
      <attachid>39631</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-23 17:15:11 -0700</bug_when>
    <thetext>Comment on attachment 39631
Proposed patch (rev.3)

Rejecting patch 39631 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=39631 from bug 28703 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149647</commentid>
    <comment_count>11</comment_count>
      <attachid>40043</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 21:04:12 -0700</bug_when>
    <thetext>Created attachment 40043
Proposed patch (rev.4)

Resolved a patch conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149648</commentid>
    <comment_count>12</comment_count>
      <attachid>40043</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 21:09:33 -0700</bug_when>
    <thetext>Comment on attachment 40043
Proposed patch (rev.4)

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149649</commentid>
    <comment_count>13</comment_count>
      <attachid>40043</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-23 21:24:07 -0700</bug_when>
    <thetext>Comment on attachment 40043
Proposed patch (rev.4)

Rejecting patch 40043 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=40043 from bug 28703 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149661</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 22:34:52 -0700</bug_when>
    <thetext>&gt; Rejecting patch 40043 from commit-queue.
&gt; 
&gt; Patch https://bugs.webkit.org/attachment.cgi?id=40043 from bug 28703 failed to
&gt; download and apply.

I have no idea about the failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149663</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 22:40:25 -0700</bug_when>
    <thetext>I need to fix bugzilla-tool to post failure messages for patch application failures too.

patching file WebCore/html/HTMLTextAreaElement.h
Hunk #1 succeeded at 31 with fuzz 1 (offset 1 line).
Hunk #2 FAILED at 95.
1 out of 2 hunks FAILED -- saving rejects to file WebCore/html/HTMLTextAreaElement.h.rej</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149666</commentid>
    <comment_count>16</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 22:52:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; patching file WebCore/html/HTMLTextAreaElement.h
&gt; Hunk #1 succeeded at 31 with fuzz 1 (offset 1 line).
&gt; Hunk #2 FAILED at 95.
&gt; 1 out of 2 hunks FAILED -- saving rejects to file
&gt; WebCore/html/HTMLTextAreaElement.h.rej

Ah, it conflicted with my latest landed patch :-)
Thank you for the information.  I&apos;ll update the patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149667</commentid>
    <comment_count>17</comment_count>
      <attachid>40046</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 22:53:12 -0700</bug_when>
    <thetext>Created attachment 40046
Proposed patch (rev.5)

Resolved another conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149670</commentid>
    <comment_count>18</comment_count>
      <attachid>40046</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 22:57:15 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149674</commentid>
    <comment_count>19</comment_count>
      <attachid>40046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-23 23:04:55 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

Rejecting patch 40046 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
compilers.gcc.4_2
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/InputElement.o /Users/eseidel/Projects/CommitQueue/WebCore/dom/InputElement.cpp normal i386 c++ com.apple.compilers.gcc.4_2
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/XMLHttpRequest.o /Users/eseidel/Projects/CommitQueue/WebCore/xml/XMLHttpRequest.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(3 failures)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149675</commentid>
    <comment_count>20</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 23:09:21 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 40046 [details])
&gt; Rejecting patch 40046 from commit-queue.
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; compilers.gcc.4_2
&gt;     Distributed-CompileC
&gt; /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/InputElement.o
&gt; /Users/eseidel/Projects/CommitQueue/WebCore/dom/InputElement.cpp normal i386
&gt; c++ com.apple.compilers.gcc.4_2
&gt;     Distributed-CompileC
&gt; /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/XMLHttpRequest.o
&gt; /Users/eseidel/Projects/CommitQueue/WebCore/xml/XMLHttpRequest.cpp normal i386
&gt; c++ com.apple.compilers.gcc.4_2
&gt; (3 failures)

Oops, a huge patch modifying many files was committed some minutes ago....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149693</commentid>
    <comment_count>21</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-24 01:14:38 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 40046 [details] [details])
&gt; &gt; Rejecting patch 40046 from commit-queue.
&gt; &gt; 
&gt; &gt; Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
&gt; 
&gt; Oops, a huge patch modifying many files was committed some minutes ago....

It was caused by r48701 build break.
I think It&apos;s safe to commit this patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149697</commentid>
    <comment_count>22</comment_count>
      <attachid>40046</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2009-09-24 01:29:44 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

Adding cq+ per tkent&apos;s request and eric&apos;s review+ .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149711</commentid>
    <comment_count>23</comment_count>
      <attachid>40046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-24 03:33:45 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

Rejecting patch 40046 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
ts/build/Release/DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp -o /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/JSCanvasRenderingContext2D.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/InputElement.o /Users/eseidel/Projects/CommitQueue/WebCore/dom/InputElement.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149727</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-24 04:42:14 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 40046 [details])
&gt; Rejecting patch 40046 from commit-queue.
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
&gt; Last 500 characters of output:
&gt; ts/build/Release/DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp -o
&gt; /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/JSCanvasRenderingContext2D.o
&gt; ** BUILD FAILED **
&gt; 
&gt; The following build commands failed:
&gt; WebCore:
&gt;     Distributed-CompileC
&gt; /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/InputElement.o
&gt; /Users/eseidel/Projects/CommitQueue/WebCore/dom/InputElement.cpp normal i386
&gt; c++ com.apple.compilers.gcc.4_2
&gt; (1 failure)

I couldn&apos;t reproduce the build problem.
WebKit r48714, the latest revision for now, and svn-apply for the download patch 40046 were successfully built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150198</commentid>
    <comment_count>25</comment_count>
      <attachid>40046</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-25 16:54:32 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

I confirmed patching, building, testing with r48775.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150201</commentid>
    <comment_count>26</comment_count>
      <attachid>40046</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-25 17:08:49 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

OK.  We&apos;ll try again.  I probably had something screwed up on that machine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150222</commentid>
    <comment_count>27</comment_count>
      <attachid>40046</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-25 18:54:05 -0700</bug_when>
    <thetext>Comment on attachment 40046
Proposed patch (rev.5)

Rejecting patch 40046 from commit-queue.

Failed to run &quot;WebKitTools/Scripts/build-webkit&quot; exit_code: 1
Last 500 characters of output:
itQueue/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp -o /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/JSCanvasRenderingContext2DCustom.o
** BUILD FAILED **

The following build commands failed:
WebCore:
	Distributed-CompileC /Users/eseidel/Projects/build/WebCore.build/Release/WebCore.build/Objects-normal/i386/InputElement.o /Users/eseidel/Projects/CommitQueue/WebCore/dom/InputElement.cpp normal i386 c++ com.apple.compilers.gcc.4_2
(1 failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150223</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-25 19:00:36 -0700</bug_when>
    <thetext>Are you sure you tried building Release?  It&apos;s possible that your patch works in Debug mode but not Release...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150237</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-25 19:51:17 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Are you sure you tried building Release?  It&apos;s possible that your patch works
&gt; in Debug mode but not Release...

Oh I didn&apos;t check Release.

&gt;&gt; WebCore/dom/InputElement.cpp:119: warning: unused parameter ‘inputElement’

This is the error with --release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150239</commentid>
    <comment_count>30</comment_count>
      <attachid>40160</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-25 20:01:48 -0700</bug_when>
    <thetext>Created attachment 40160
Proposed patch (rev.6)

Add UNUSED_PARAM(inputElement) to build Release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150241</commentid>
    <comment_count>31</comment_count>
      <attachid>40160</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-25 21:01:56 -0700</bug_when>
    <thetext>Comment on attachment 40160
Proposed patch (rev.6)

&gt;      // Renderer and our event handler are responsible for sanitizing values.
&gt;      ASSERT(value == inputElement-&gt;sanitizeValue(value) || inputElement-&gt;sanitizeValue(value).isEmpty());
&gt; -
&gt; -    if (inputElement-&gt;isTextField())
&gt; -        updatePlaceholderVisibility(inputElement, element);
&gt; +    UNUSED_PARAM(inputElement);

Instead of UNUSED_PARAM you should be using ASSERT_UNUSED, which is the assert macro that identifies an argument used only for the assertion and not in release versions.

    ASSERT_UNUSED(inputElement, value == inputElement-&gt;sanitizeValue(value) || inputElement-&gt;sanitizeValue(value).isEmpty());

That&apos;s how you do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150248</commentid>
    <comment_count>32</comment_count>
      <attachid>40162</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-25 22:35:13 -0700</bug_when>
    <thetext>Created attachment 40162
Proposed patch (rev.7)

ASSERT + UNUSED_PARAM -&gt; ASSERT_UNUSED</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150249</commentid>
    <comment_count>33</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-25 22:35:50 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Instead of UNUSED_PARAM you should be using ASSERT_UNUSED, which is the assert
&gt; macro that identifies an argument used only for the assertion and not in
&gt; release versions.
&gt; 
&gt;     ASSERT_UNUSED(inputElement, value == inputElement-&gt;sanitizeValue(value) ||
&gt; inputElement-&gt;sanitizeValue(value).isEmpty());

Thank you.  I changed so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150306</commentid>
    <comment_count>34</comment_count>
      <attachid>40162</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-09-26 10:02:01 -0700</bug_when>
    <thetext>Comment on attachment 40162
Proposed patch (rev.7)

r=me

Interdiff is cool!  &lt;https://bugs.webkit.org/attachment.cgi?oldid=40160&amp;action=interdiff&amp;newid=40162&amp;headers=1&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150312</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-26 11:04:02 -0700</bug_when>
    <thetext>I did not realize bugzilla could do that. :)  Interdiff is one of the things I miss about rietveld.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150326</commentid>
    <comment_count>36</comment_count>
      <attachid>40162</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-26 11:56:13 -0700</bug_when>
    <thetext>Comment on attachment 40162
Proposed patch (rev.7)

Clearing flags on attachment: 40162

Committed r48792: &lt;http://trac.webkit.org/changeset/48792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150327</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-26 11:56:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38532</attachid>
            <date>2009-08-24 23:39:34 -0700</date>
            <delta_ts>2009-08-26 22:43:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>unify-placeholder-1.diff</filename>
            <type>text/plain</type>
            <size>23113</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWJiMTU2MS4uZjM3ZDQ4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAwOS0wOC0yNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBwbGFjZWhvbGRlci1yZWxhdGVkIGNvZGUgdG8gSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZSBmcm9tCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQsIFdN
TElucHV0RWxlbWVudCwgSW5wdXRFbGVtZW50LCBhbmQKKyAgICAgICAgSFRNTFRleHRBcmVhRWxl
bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
NzAzCisKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
cHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRF
bGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcik6CisgICAgICAgICogZG9tL0lucHV0RWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3Vz
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6dXBkYXRlUGxhY2Vob2xk
ZXJWaXNpYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnN1cHBv
cnRzUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGU6OmhhbmRsZUZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6aGFuZGxlQmx1ckV2ZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c3VwcG9ydHNQbGFjZWhv
bGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUp
OgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJc0luZGV4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzdXBw
b3J0c1BsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJv
bCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIHdt
bC9XTUxJbnB1dEVsZW1lbnQuaDoKKwogMjAwOS0wOC0yNCAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0lucHV0RWxl
bWVudC5jcHAKaW5kZXggYWUwYTY1MC4uZjU3MTY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCkBAIC01
Nyw4ICs1Nyw2IEBAIHZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoSW5wdXRF
bGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lCiAgICAgaWYgKCFpbnB1dEVsZW1l
bnQtPmlzVGV4dEZpZWxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwotCiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQoKTsKICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1Bh
c3N3b3JkRmllbGQoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQtPnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKHRydWUpOwpAQCAtNzQsMjkgKzcyLDEy
IEBAIHZvaWQgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVuCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxl
bWVudCk7Ci0KICAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAg
ICAgZG9jdW1lbnQtPnNldFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGZhbHNlKTsK
IAogICAgIGZyYW1lLT50ZXh0RmllbGREaWRFbmRFZGl0aW5nKGVsZW1lbnQpOwogfQogCi1ib29s
IElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoY29uc3QgSW5wdXRFbGVt
ZW50KiBpbnB1dEVsZW1lbnQsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJu
IGlucHV0RWxlbWVudC0+dmFsdWUoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSBlbGVtZW50Ci0gICAgICAgICYmICFpbnB1dEVsZW1l
bnQtPnBsYWNlaG9sZGVyKCkuaXNFbXB0eSgpOwotfQotCi12b2lkIElucHV0RWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVt
ZW50KiBlbGVtZW50LCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKQotewotICAgIEFTU0VS
VChpbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkpOwotICAgIGJvb2wgcGxhY2Vob2xkZXJWaXNp
YmxlID0gaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpOwotICAgIGlm
IChlbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICB0b1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZShlbGVtZW50LT5yZW5kZXJlcigpKS0+dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHBs
YWNlaG9sZGVyVmlzaWJsZSwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOwotfQotCiB2b2lkIElu
cHV0RWxlbWVudDo6dXBkYXRlRm9jdXNBcHBlYXJhbmNlKElucHV0RWxlbWVudERhdGEmIGRhdGEs
IElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50KiBlbGVtZW50LCBib29sIHJlc3Rv
cmVQcmV2aW91c1NlbGVjdGlvbikKIHsKICAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1RleHRG
aWVsZCgpKTsKQEAgLTE0MSw5ICsxMjIsNiBAQCB2b2lkIElucHV0RWxlbWVudDo6c2V0VmFsdWVG
cm9tUmVuZGVyZXIoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbgogICAg
IC8vIFJlbmRlcmVyIGFuZCBvdXIgZXZlbnQgaGFuZGxlciBhcmUgcmVzcG9uc2libGUgZm9yIGNv
bnN0cmFpbmluZyB2YWx1ZXMuCiAgICAgQVNTRVJUKHZhbHVlID09IGlucHV0RWxlbWVudC0+Y29u
c3RyYWluVmFsdWUodmFsdWUpIHx8IGlucHV0RWxlbWVudC0+Y29uc3RyYWluVmFsdWUodmFsdWUp
LmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQotICAg
ICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsK
LQogICAgIC8vIFdvcmthcm91bmQgZm9yIGJ1ZyB3aGVyZSB0cmFpbGluZyBcbiBpcyBpbmNsdWRl
ZCBpbiB0aGUgcmVzdWx0IG9mIHRleHRDb250ZW50LgogICAgIC8vIFRoZSBhc3NlcnQgbWFjcm8g
YWJvdmUgbWF5IGFsc28gYmUgc2ltcGxpZmllZCB0bzogIHZhbHVlID09IGNvbnN0cmFpblZhbHVl
KHZhbHVlKQogICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2
NjEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmgKaW5kZXggMGJkMTAyZS4uMDdhYzU2NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKQEAg
LTQ0LDE2ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgPSAwOwog
Ci0gICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzZWFyY2hFdmVudHNTaG91bGRCZURpc3BhdGNoZWQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIGludCBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
U3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vob2xkZXIoY29uc3QgU3RyaW5nJikgPSAw
OwotCiAgICAgdmlydHVhbCBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29uc3QgU3RyaW5nJikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJp
bmcmKSA9IDA7CiAKQEAgLTY2LDggKzYyLDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7CiAg
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCop
OwotICAgIHN0YXRpYyBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGNvbnN0IElucHV0
RWxlbWVudCosIGNvbnN0IEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGJvb2wgcGxhY2Vob2xkZXJW
YWx1ZUNoYW5nZWQgPSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJh
bmNlKElucHV0RWxlbWVudERhdGEmLCBJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvblJh
bmdlKElucHV0RWxlbWVudCosIEVsZW1lbnQqLCBpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIHN0
YXRpYyB2b2lkIGFib3V0VG9VbmxvYWQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDMwMDJiMzUuLmRhNzAwMDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlZhbGlkaXR5U3RhdGUuaCIKIApAQCAtMzY2LDQg
KzM2NywzNCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpCiAgICAgfQogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpCit7CisgICAgaWYgKHN1cHBvcnRzUGxhY2Vo
b2xkZXIoKSkKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKKyAg
ICBoYW5kbGVGb2N1c0V2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9sZGVyKCkp
CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CisgICAgaGFuZGxl
Qmx1ckV2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQoKTsKK30KKworYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1cHBvcnRzUGxhY2Vo
b2xkZXIoKQorICAgICAgICAmJiBpc0VtcHR5VmFsdWUoKQorICAgICAgICAmJiBkb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpICE9IHRoaXMKKyAgICAgICAgJiYgIWdldEF0dHJpYnV0ZShwbGFjZWhv
bGRlckF0dHIpLmlzRW1wdHkoKTsKK30KKwordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVl
Q2hhbmdlZCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpICYmIHJlbmRlcmVyKCkp
CisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZh
bHVlQ2hhbmdlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYmNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCmluZGV4IGVlN2Q3NzIuLmYxZTE5YzQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTM3LDEwICsxMzcsMjQgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgfkhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CiAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIGJv
b2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVBs
YWNlaG9sZGVyVmlzaWJpbGl0eShib29sKTsKKworcHJpdmF0ZToKKyAgICAvLyBBIHN1YmNsYXNz
IHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBwbGFjZWhvbGRlciBwcm9jZXNzaW5nIGlzIG5lZWRlZC4K
KyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVzZXItZWRpdGFibGUgdmFsdWUgaXMgZW1w
dHkuICBUaGlzIGlzIHVzZWQgdG8gY2hlY2sgcGxhY2Vob2xkZXIgdmlzaWJpbGl0eS4KKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAv
LyBDYWxsZWQgaW4gZGlzcGF0Y2hGb2N1c0V2ZW50KCksIGFmdGVyIHBsYWNlaG9sZGVyIHByb2Nl
c3MsIGJlZm9yZSBjYWxsaW5nIHBhcmVudCdzIGRpc3BhdGNoRm9jdXNFdmVudCgpLgorICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KCkgeyB9CisgICAgLy8gQ2FsbGVkIGluIGRpc3Bh
dGNoQmx1ckV2ZW50KCksIGFmdGVyIHBsYWNlaG9sZGVyIHByb2Nlc3MsIGJlZm9yZSBjYWxsaW5n
IHBhcmVudCdzIGRpc3BhdGNoQmx1ckV2ZW50KCkuCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJs
dXJFdmVudCgpIHsgfQogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IGIzNDhkM2EuLjc2NzgwMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
QEAgLTI1MSwyMCArMjUxLDE3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5w
dXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gVEVYVCB8fCBtX3R5cGUgPT0g
U0VBUkNIIHx8IG1fdHlwZSA9PSBJU0lOREVYOwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUZvY3Vz
RXZlbnQoKQogewogICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KHRoaXMsIHRo
aXMpOwogCiAgICAgaWYgKGlzVGV4dEZpZWxkKCkpCiAgICAgICAgIG1fYXV0b2ZpbGxlZCA9IGZh
bHNlOwotCi0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1
c0V2ZW50KCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQo
KQordm9pZCBIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZlbnQoKQogewogICAgIElucHV0
RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQodGhpcywgdGhpcyk7Ci0gICAgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIH0KIAogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYgdCkKQEAgLTcyNiw4ICs3MjMsNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKICAgICAgICAgfQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKSB7Ci0gICAgICAg
IGlmIChpc1RleHRGaWVsZCgpKQotICAgICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KCk7CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0cnVlKTsKICAgICB9
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvc2F2ZUF0dHIgfHwKICAgICAgICAgICAgICBh
dHRyLT5uYW1lKCkgPT0gaW5jcmVtZW50YWxBdHRyIHx8CiAgICAgICAgICAgICAgYXR0ci0+bmFt
ZSgpID09IG1pbkF0dHIgfHwKQEAgLTc5Miw3ICs3ODgsNyBAQCBSZW5kZXJPYmplY3QgKkhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5
bGUgKgogICAgICAgICBjYXNlIFRFTEVQSE9ORToKICAgICAgICAgY2FzZSBURVhUOgogICAgICAg
ICBjYXNlIFVSTDoKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KCkpOwogICAgIH0KICAgICBBU1NFUlQoZmFsc2UpOwogICAgIHJldHVybiAwOwpAQCAtMTA4Nyw3
ICsxMDgzLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZGF0YS5zZXRWYWx1ZShjb25z
dHJhaW5WYWx1ZSh2YWx1ZSkpOwogICAgICAgICAgICAgaWYgKGlzVGV4dEZpZWxkKCkpIHsKLSAg
ICAgICAgICAgICAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0
aGlzLCB0aGlzKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
ZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChpbkRvY3VtZW50KCkpCiAgICAgICAgICAgICAg
ICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIH0K
QEAgLTExMjcsNiArMTEyMyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9t
UmVuZGVyZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGaWxlIHVwbG9hZCBjb250
cm9scyB3aWxsIGFsd2F5cyB1c2Ugc2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIuCiAgICAgQVNTRVJU
KGlucHV0VHlwZSgpICE9IEZJTEUpOworICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShm
YWxzZSk7CiAgICAgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihtX2RhdGEsIHRo
aXMsIHRoaXMsIHZhbHVlKTsKIH0KIApAQCAtMTc2MCw5ICsxNzU3LDQgQEAgYm9vbCBIVE1MSW5w
dXRFbGVtZW50Ojp3aWxsVmFsaWRhdGUoKSBjb25zdAogICAgICAgICAgICBpbnB1dFR5cGUoKSAh
PSBCVVRUT04gJiYgaW5wdXRUeXBlKCkgIT0gUkVTRVQ7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxl
bWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAotewotICAgIHJldHVybiBJ
bnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKHRoaXMsIHRoaXMpOwotfQot
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggY2NiMzdlMC4uN2Rh
MTE1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC03Miw4ICs3Miw2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVybiBpbnB1dFR5cGUoKSAhPSBJ
TUFHRTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9j
dXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICB2aXJ0dWFs
IHZvaWQgYWJvdXRUb1VubG9hZCgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1l
dGhvZCgpIGNvbnN0OwpAQCAtMjIyLDE3ICsyMjAsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZp
cnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBwbGFj
ZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwotICAgIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAKLSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eSgpCi0gICAgewotICAgICAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzLCB0cnVlKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAg
ICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0y
NDAsNiArMjMxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWdpc3RlckZvckFjdGl2YXRpb25D
YWxsYmFja0lmTmVlZGVkKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxi
YWNrSWZOZWVkZWQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkg
Y29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5
VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVu
dCgpOworCiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hU
TUxJc0luZGV4RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNw
cAppbmRleCBiY2ZhNjIzLi4zMWZhZmE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElz
SW5kZXhFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNw
cApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEhUTUxJc0luZGV4RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0g
cHJvbXB0QXR0cikKICAgICAgICAgc2V0VmFsdWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHBsYWNlaG9sZGVyQXR0cikKLSAgICAgICAgdXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KCk7CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0
cnVlKTsKICAgICBlbHNlCiAgICAgICAgIC8vIGRvbid0IGNhbGwgSFRNTElucHV0RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUgaGVyZSwgYXMgaXQgd291bGQKICAgICAgICAgLy8gYWNjZXB0
IGF0dHJpYnV0ZXMgdGhpcyBlbGVtZW50IGRvZXMgbm90IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCBkM2ZjODk3Li43ZTQ2YjQ5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAKIFJl
bmRlck9iamVjdCogSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lKHRoaXMpOworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZSh0aGlzLCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgp
KTsKIH0KIAogYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0
YUxpc3QmIGVuY29kaW5nLCBib29sKQpAQCAtNDExLDI5ICs0MTEsNCBAQCBib29sIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHZhbHVlKCkuaXNFbXB0eSgpCi0gICAgICAgICYm
IGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgIT0gdGhpcwotICAgICAgICAmJiAhZ2V0QXR0cmli
dXRlKHBsYWNlaG9sZGVyQXR0cikuaXNFbXB0eSgpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVD
aGFuZ2VkKQotewotICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICB0b1JlbmRlclRleHRDb250
cm9sKHJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUoKSwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOwotfQotCi12b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCi17Ci0gICAgdXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKLX0KLQotdm9pZCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCi17Ci0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KGZhbHNlKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRj
aEJsdXJFdmVudCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKaW5kZXggZGIxMmU5Yy4uMDk3ODAzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCkBAIC05MywxNSArOTMsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CiAKLSAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFw
LCBTb2Z0V3JhcCwgSGFyZFdyYXAgfTsKIAogICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsK
LSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFs
dWVDaGFuZ2VkKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAh
aXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDcyNDQ0YmUuLmQwZWE4YTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIENv
bG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ28KICAgICByZXR1cm4gZGlzYWJsZWRDb2xvcjsKIH0KIAotUmVuZGVyVGV4
dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCitSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUp
CiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQotICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFs
c2UpCisgICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShwbGFjZWhvbGRlclZpc2libGUpCiAgICAg
LCBtX2VkaXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDMyMTJhMWIuLmNkZDg3MTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCwgYm9vbCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJUZXh0Q29udHJvbChOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRy
b2woTm9kZSosIGJvb2wpOwogCiAgICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0Owog
ICAgIHZvaWQgYWRqdXN0SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5
bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggOGRmYjg1OC4uMWM3
MzE5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcApAQCAtMzAsMTAgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSog
bm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFj
ZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBwbGFjZWhvbGRl
clZpc2libGUpCiB7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4obm9kZSktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9
CiAKIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgK
aW5kZXggMzMzY2ZhOC4uMzM3MWE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4
dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUq
KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiwgYm9vbCk7CiAgICAgdmly
dHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIHZvaWQgZm9yd2FyZEV2
ZW50KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcAppbmRleCBiYzk4YjhhLi4xOTIzNmE3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTQ4LDE0ICs0OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KE5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQorUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSwg
Ym9vbCBwbGFjZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBw
bGFjZWhvbGRlclZpc2libGUpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQog
ICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX3NlYXJj
aEV2ZW50VGltZXIodGhpcywgJlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2VhcmNoRXZl
bnRUaW1lckZpcmVkKQogICAgICwgbV9zZWFyY2hQb3B1cCgwKQogewotICAgIG1fcGxhY2Vob2xk
ZXJWaXNpYmxlID0gaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7
CiB9CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZSgpCkBAIC00NTgsNyArNDU3LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogICAgIGlmIChtX3BsYWNlaG9sZGVyVmlzaWJs
ZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgaW5uZXJUZXh0RWxl
bWVudCgpLT5zZXRJbm5lclRleHQoaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsK
KyAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQoc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIpLCBlYyk7CiAgICAg
ICAgIEFTU0VSVCghZWMpOwogICAgIH0gZWxzZQogICAgICAgICBzZXRJbm5lclRleHRWYWx1ZShp
bnB1dEVsZW1lbnQoKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4IGNlOGYwYzguLmM1N2RmOGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wsIHByaXZhdGUgUG9w
dXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUo
Tm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiwgYm9vbCk7CiAg
ICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAKICAgICBib29sIHBs
YWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGZlZWQ1YTUuLjdkNmMxZDEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTM0LDcgKzEzNCw2IEBAIFN0cmluZyBXTUxJbnB1dEVsZW1l
bnQ6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkodGhpcywgdGhpcyk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5k
ZXJlcihmYWxzZSk7CiAgICAgbV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7
CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKQEAgLTIyMSw3ICsyMjAsNyBAQCB2b2lkIFdNTElucHV0
RWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNl
KQogCiBSZW5kZXJPYmplY3QqIFdNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBXTUxJ
bnB1dEVsZW1lbnQ6OmRldGFjaCgpCkBAIC0zMTgsMTEgKzMxNyw2IEBAIHZvaWQgV01MSW5wdXRF
bGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotYm9v
bCBXTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlz
LCB0aGlzKTsKLX0KLQogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCkKIHsKICAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tz
IHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtl
IHRvIGJlIHJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVu
dC5oIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKaW5kZXggNzUyOTk2OC4uOWI4NDli
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS93bWwvV01MSW5wdXRFbGVtZW50LmgKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25z
dCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJp
bmcmIHZhbHVlKSBjb25zdDsKQEAgLTgyLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnN0cmFpblZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38657</attachid>
            <date>2009-08-26 22:43:45 -0700</date>
            <delta_ts>2009-09-15 20:02:44 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>unify-placeholder-2.diff</filename>
            <type>text/plain</type>
            <size>24942</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzJhMTIwNi4uMDI0OGZhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAwOS0wOC0yNiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBwbGFjZWhvbGRlci1yZWxhdGVkIGNvZGUgdG8gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQgZnJvbQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50LCBXTUxJbnB1
dEVsZW1lbnQsIElucHV0RWxlbWVudCwgYW5kCisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcwMwor
CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVs
ZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVu
dDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmhhbmRsZUZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlRm9j
dXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVy
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c3VwcG9ydHNQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTElz
SW5kZXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFy
ZWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6aXNFbXB0eVZhbHVlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVs
ZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aDoKKyAgICAgICAgKiB3bWwvV01MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5o
OgorCiAyMDA5LTA4LTI2ICBEYXZlIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lu
cHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGFlMGE2
NTAuLmY1NzE2OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcApAQCAtNTcsOCArNTcsNiBAQCB2b2lkIElu
cHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
LCBFbGVtZW50KiBlbGVtZQogICAgIGlmICghaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoaW5wdXRF
bGVtZW50LCBlbGVtZW50KTsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgZG9j
dW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVu
dHJ5V2hlbkFjdGl2ZSh0cnVlKTsKQEAgLTc0LDI5ICs3MiwxMiBAQCB2b2lkIElucHV0RWxlbWVu
dDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQq
IGVsZW1lbgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVBs
YWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwotCiAgICAgaWYgKGlu
cHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CiAKICAgICBmcmFtZS0+dGV4dEZp
ZWxkRGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotYm9vbCBJbnB1dEVsZW1lbnQ6OnBsYWNl
aG9sZGVyU2hvdWxkQmVWaXNpYmxlKGNvbnN0IElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBj
b25zdCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnZhbHVl
KCkuaXNFbXB0eSgpCi0gICAgICAgICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvY3VzZWROb2Rl
KCkgIT0gZWxlbWVudAotICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlcigpLmlz
RW1wdHkoKTsKLX0KLQotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eShJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBw
bGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKLXsKLSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1Rl
eHRGaWVsZCgpKTsKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSA9IGlucHV0RWxlbWVudC0+
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKLSAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIo
KSkKLSAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudC0+cmVuZGVy
ZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclZpc2libGUsIHBs
YWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKLX0KLQogdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZUZv
Y3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0
RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24p
CiB7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7CkBAIC0xNDEsOSAr
MTIyLDYgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKElucHV0RWxl
bWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW4KICAgICAvLyBSZW5kZXJlciBhbmQgb3Vy
IGV2ZW50IGhhbmRsZXIgYXJlIHJlc3BvbnNpYmxlIGZvciBjb25zdHJhaW5pbmcgdmFsdWVzLgog
ICAgIEFTU0VSVCh2YWx1ZSA9PSBpbnB1dEVsZW1lbnQtPmNvbnN0cmFpblZhbHVlKHZhbHVlKSB8
fCBpbnB1dEVsZW1lbnQtPmNvbnN0cmFpblZhbHVlKHZhbHVlKS5pc0VtcHR5KCkpOwogCi0gICAg
aWYgKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKLSAgICAgICAgdXBkYXRlUGxhY2Vob2xk
ZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7Ci0KICAgICAvLyBXb3JrYXJvdW5k
IGZvciBidWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBvZiB0
ZXh0Q29udGVudC4KICAgICAvLyBUaGUgYXNzZXJ0IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJlIHNp
bXBsaWZpZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJhaW5WYWx1ZSh2YWx1ZSkKICAgICAvLyBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjYxCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCmluZGV4
IDBiZDEwMmUuLjA3YWM1NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMTIgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
c2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVh
bCBpbnQgc2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOwogCi0g
ICAgdmlydHVhbCBTdHJpbmcgcGxhY2Vob2xkZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpID0gMDsKLQogICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbnN0cmFpblZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJikgPSAwOwogCkBAIC02Niw4
ICs2Miw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEZv
Y3VzRXZlbnQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoQmx1ckV2ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgYm9vbCBw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqLCBjb25zdCBFbGVt
ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0
RWxlbWVudCosIEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkID0gZmFsc2Up
OwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRh
JiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
KTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1dEVsZW1lbnQqLCBF
bGVtZW50KiwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5s
b2FkKElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCAzMDAyYjM1Li5mMTkxNGU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFwcGVkQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2lu
Y2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNp
bmNsdWRlICJWYWxpZGl0eVN0YXRlLmgiCiAKQEAgLTM2Niw0ICszNjcsNDMgQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAg
IH0KIH0KIAorSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxG
b3JtRWxlbWVudCogZm9ybSkKKyAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUo
dGFnTmFtZSwgZG9jLCBmb3JtKQoreworfQorCitIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6
fkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkKK3sKK30KKwordm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQ
bGFjZWhvbGRlcigpKQorICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2Up
OworICAgIGhhbmRsZUZvY3VzRXZlbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKK30KKwordm9pZCBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNl
aG9sZGVyKCkpCisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7Cisg
ICAgaGFuZGxlQmx1ckV2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKK30KKworYm9vbCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAoreworICAgIHJldHVybiBz
dXBwb3J0c1BsYWNlaG9sZGVyKCkKKyAgICAgICAgJiYgaXNFbXB0eVZhbHVlKCkKKyAgICAgICAg
JiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFnZXRBdHRy
aWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9s
ZGVyVmFsdWVDaGFuZ2VkKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9sZGVyKCkgJiYgcmVu
ZGVyZXIoKSkKKyAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKS0+dXBkYXRl
UGxhY2Vob2xkZXJWaXNpYmlsaXR5KHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCksIHBsYWNl
aG9sZGVyVmFsdWVDaGFuZ2VkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uN2IzY2ZiZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNDMsNiArMTQzLDI4IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfTsK
IAorY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZSB7CitwdWJsaWM6CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7
CisgICAgdmlydHVhbCB+SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1
ckV2ZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCk7
CisKK3ByaXZhdGU6CisgICAgLy8gQSBzdWJjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxh
Y2Vob2xkZXIgcHJvY2Vzc2luZyBpcyBuZWVkZWQuCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UGxhY2Vob2xkZXIoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVzZXItZWRp
dGFibGUgdmFsdWUgaXMgZW1wdHkuICBUaGlzIGlzIHVzZWQgdG8gY2hlY2sgcGxhY2Vob2xkZXIg
dmlzaWJpbGl0eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgPSAwOwor
ICAgIC8vIENhbGxlZCBpbiBkaXNwYXRjaEZvY3VzRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIg
cHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hGb2N1c0V2ZW50KCkuCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoKSB7IH0KKyAgICAvLyBDYWxsZWQgaW4g
ZGlzcGF0Y2hCbHVyRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3JlIGNh
bGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hCbHVyRXZlbnQoKS4KKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlQmx1ckV2ZW50KCkgeyB9Cit9OworCiB9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDVmZmU0YmYuLmI4MTI1YmMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIGNvbnN0IGludCBtYXhTYXZlZFJlc3VsdHMgPSAyNTY7CiAKIEhUTUxJbnB1dEVsZW1lbnQ6
OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYywgSFRNTEZvcm1FbGVtZW50KiBmKQotICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZSh0YWdOYW1lLCBkb2MsIGYpCisgICAgOiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCh0YWdOYW1lLCBkb2MsIGYpCiAgICAgLCBtX3hQb3MoMCkKICAgICAsIG1feVBvcygwKQogICAg
ICwgbV9tYXhSZXN1bHRzKC0xKQpAQCAtMjUzLDIwICsyNTMsMTcgQEAgYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9
PSBURVhUIHx8IG1fdHlwZSA9PSBTRUFSQ0ggfHwgbV90eXBlID09IElTSU5ERVg7CiB9CiAKLXZv
aWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3ZvaWQgSFRNTElucHV0
RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCgpCiB7CiAgICAgSW5wdXRFbGVtZW50OjpkaXNwYXRj
aEZvY3VzRXZlbnQodGhpcywgdGhpcyk7CiAKICAgICBpZiAoaXNUZXh0RmllbGQoKSkKICAgICAg
ICAgbV9hdXRvZmlsbGVkID0gZmFsc2U7Ci0KLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpkaXNwYXRjaEJsdXJFdmVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJsdXJF
dmVudCgpCiB7CiAgICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCh0aGlzLCB0aGlz
KTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJFdmVu
dCgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0
KQpAQCAtNzI4LDggKzcyNSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICB9CiAgICAgICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwbGFjZWhv
bGRlckF0dHIpIHsKLSAgICAgICAgaWYgKGlzVGV4dEZpZWxkKCkpCi0gICAgICAgICAgICB1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1dG9zYXZlQXR0
ciB8fAogICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBpbmNyZW1lbnRhbEF0dHIgfHwKICAg
ICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbWluQXR0ciB8fApAQCAtNzk5LDcgKzc5NSw3IEBA
IFJlbmRlck9iamVjdCAqSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqCiAgICAgICAgIGNhc2UgVEVMRVBIT05FOgogICAgICAg
ICBjYXNlIFRFWFQ6CiAgICAgICAgIGNhc2UgVVJMOgotICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgcGxhY2Vo
b2xkZXJTaG91bGRCZVZpc2libGUoKSk7CiAgICAgfQogICAgIEFTU0VSVChmYWxzZSk7CiAgICAg
cmV0dXJuIDA7CkBAIC0xMDk0LDcgKzEwOTAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
bV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAgICAgICAgICAgICBpZiAo
aXNUZXh0RmllbGQoKSkgewotICAgICAgICAgICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMpOworICAgICAgICAgICAgICAgIHVwZGF0ZVBs
YWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluRG9jdW1l
bnQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOwogICAgICAgICAgICAgfQpAQCAtMTEzNCw2ICsxMTMwLDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IC8vIEZpbGUgdXBsb2FkIGNvbnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBzZXRGaWxlTGlzdEZyb21S
ZW5kZXJlci4KICAgICBBU1NFUlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7CisgICAgdXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJv
bVJlbmRlcmVyKG1fZGF0YSwgdGhpcywgdGhpcywgdmFsdWUpOwogfQogCkBAIC0xNzY3LDExICsx
NzY0LDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsVmFsaWRhdGUoKSBjb25zdAogICAg
ICAgICAgICBpbnB1dFR5cGUoKSAhPSBCVVRUT04gJiYgaW5wdXRUeXBlKCkgIT0gUkVTRVQ7CiB9
CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBj
b25zdAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlKHRoaXMsIHRoaXMpOwotfQotCiAjaWYgRU5BQkxFKERBVEFMSVNUKQogSFRNTERhdGFMaXN0
RWxlbWVudCogSFRNTElucHV0RWxlbWVudDo6bGlzdCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aAppbmRleCA2MTU0Y2ZjLi5kMzAxZTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3
LDcgKzM3LDcgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBLVVJMOwogY2xhc3Mg
VmlzaWJsZVNlbGVjdGlvbjsKIAotY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwdWJsaWMgSW5wdXRFbGVtZW50IHsKK2NsYXNz
IEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQsIHB1
YmxpYyBJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIGVudW0gSW5wdXRUeXBlIHsKICAgICAg
ICAgVEVYVCwKQEAgLTc0LDggKzc0LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0tl
eWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJs
ZSgpIGNvbnN0IHsgcmV0dXJuIGlucHV0VHlwZSgpICE9IElNQUdFOyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJF
dmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0
b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvVW5sb2FkKCk7
CiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CkBAIC0yMjks
MTcgKzIyNywxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0
ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KCkgY29uc3Q7Ci0gICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9O
ZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKIAotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKLSAgICB7
Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMs
IHRoaXMsIHRydWUpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBib29sIHN0b3Jlc1ZhbHVlU2Vw
YXJhdGVGcm9tQXR0cmlidXRlKCkgY29uc3Q7CiAKQEAgLTI0Nyw2ICsyMzgsMTEgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAg
ICB2b2lkIHVucmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCisgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiBpc1RleHRG
aWVsZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlKCkuaXNFbXB0eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCk7CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3Jt
Q29udHJvbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCmluZGV4IGJjZmE2MjMuLjMxZmFm
YTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZv
aWQgSFRNTElzSW5kZXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBwcm9tcHRBdHRyKQogICAgICAgICBz
ZXRWYWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGxh
Y2Vob2xkZXJBdHRyKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKKyAg
ICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRydWUpOwogICAgIGVsc2UKICAgICAg
ICAgLy8gZG9uJ3QgY2FsbCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSBo
ZXJlLCBhcyBpdCB3b3VsZAogICAgICAgICAvLyBhY2NlcHQgYXR0cmlidXRlcyB0aGlzIGVsZW1l
bnQgZG9lcyBub3Qgc3VwcG9ydApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IGQzZmM4OTcuLjcwOThhMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQo
Y29uc3QgSFRNTFRleHRBcmVhRWxlbWVudCogZWxlbWVudCkKIH0KIAogSFRNTFRleHRBcmVhRWxl
bWVudDo6SFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCisgICAgOiBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKICAgICAs
IG1fcm93cyhkZWZhdWx0Um93cykKICAgICAsIG1fY29scyhkZWZhdWx0Q29scykKICAgICAsIG1f
d3JhcChTb2Z0V3JhcCkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIAogUmVuZGVy
T2JqZWN0KiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUodGhpcyk7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpOwog
fQogCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlz
dCYgZW5jb2RpbmcsIGJvb2wpCkBAIC00MTEsMjkgKzQxMSw0IEBAIGJvb2wgSFRNTFRleHRBcmVh
RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYgZG9j
dW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCi0gICAgICAgICYmICFnZXRBdHRyaWJ1dGUo
cGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5n
ZWQpCi17Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wo
cmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3Vs
ZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgSFRNTFRl
eHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OmRpc3BhdGNoQmx1ckV2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
ZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1
ckV2ZW50KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aAppbmRleCBkYjEyZTljLi42NzQ1M2E2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgK
QEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWaXNpYmxlU2Vs
ZWN0aW9uOwogCi1jbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGUgeworY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudCA6IHB1Ymxp
YyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFRleHRBcmVh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQq
ID0gMCk7CiAKQEAgLTkzLDE1ICs5MywxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAotICAgIGJvb2wgcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGUoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBO
b1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNv
bnN0OwotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xk
ZXJWYWx1ZUNoYW5nZWQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1wdHkoKTsg
fQogCiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVp
cmVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiByZXF1aXJlZCgpOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggNzI0NDRiZS4uZDBlYThhNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtNjcsOSArNjcsOSBAQCBzdGF0
aWMgQ29sb3IgZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDbwogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCi1SZW5k
ZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSkKK1JlbmRlclRleHRD
b250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlLCBib29sIHBsYWNlaG9sZGVyVmlz
aWJsZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJs
ZShmYWxzZSkKKyAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKHBsYWNlaG9sZGVyVmlzaWJsZSkK
ICAgICAsIG1fZWRpdGVkKGZhbHNlKQogICAgICwgbV91c2VyRWRpdGVkKGZhbHNlKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggMzIxMmExYi4uY2RkODcxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sLCBib29sKTsKIAog
cHJvdGVjdGVkOgotICAgIFJlbmRlclRleHRDb250cm9sKE5vZGUqKTsKKyAgICBSZW5kZXJUZXh0
Q29udHJvbChOb2RlKiwgYm9vbCk7CiAKICAgICBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKCkgY29u
c3Q7CiAgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3Rh
cnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4ZGZiODU4
Li4xYzczMTkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuY3BwCkBAIC0zMCwxMCArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShO
b2RlKiBub2RlKQotICAgIDogUmVuZGVyVGV4dENvbnRyb2wobm9kZSkKK1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiBub2RlLCBib29s
IHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUsIHBsYWNl
aG9sZGVyVmlzaWJsZSkKIHsKLSAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHN0YXRpY19jYXN0
PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
KTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAppbmRleCAzMzNjZmE4Li4zMzcxYThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSA6IHB1YmxpYyBSZW5k
ZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUo
Tm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqLCBib29sKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSgpOwogCiAgICAgdm9pZCBmb3J3
YXJkRXZlbnQoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGJjOThiOGEuLjE5MjM2YTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNDgsMTQg
KzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiBu
b2RlLCBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9sKG5v
ZGUsIHBsYWNlaG9sZGVyVmlzaWJsZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAsIG1f
c2VhcmNoRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzZWFy
Y2hFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7Ci0gICAgbV9wbGFj
ZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUoKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKCkKQEAgLTQ1OCw3ICs0NTcsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJW
aXNpYmxlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5lclRl
eHRFbGVtZW50KCktPnNldElubmVyVGV4dChpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXIoKSwg
ZWMpOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dChzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmlidXRlKHBsYWNlaG9sZGVyQXR0ciksIGVjKTsK
ICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVyVGV4dFZh
bHVlKGlucHV0RWxlbWVudCgpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggY2U4ZjBjOC4uYzU3ZGY4YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTM2
LDcgKzM2LDcgQEAgY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCwgcHJpdmF0
ZSBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZShOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5vZGUqLCBib29s
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAogICAgIGJv
b2wgcGxhY2Vob2xkZXJJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3BsYWNlaG9sZGVyVmlz
aWJsZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZmVlZDVhNS4uN2Q2YzFkMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3dt
bC9XTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgU3RyaW5nIFdNTElucHV0
RWxlbWVudDo6dmFsdWUoKSBjb25zdAogCiB2b2lkIFdNTElucHV0RWxlbWVudDo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKICAgICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUodmFs
dWUpKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQpAQCAtMjIxLDcgKzIyMCw3IEBAIHZvaWQgV01M
SW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBz
b3VyY2UpCiAKIFJlbmRlck9iamVjdCogV01MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMpOworICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgZmFsc2UpOwogfQogCiB2b2lk
IFdNTElucHV0RWxlbWVudDo6ZGV0YWNoKCkKQEAgLTMxOCwxMSArMzE3LDYgQEAgdm9pZCBXTUxJ
bnB1dEVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKICAgICByZXNldCgpOwogfQog
Ci1ib29sIFdNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25z
dAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KHRoaXMsIHRoaXMpOwotfQotCiB2b2lkIFdNTElucHV0RWxlbWVudDo6d2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKQogewogICAgIC8vIEFsd2F5cyB1bnJlZ2lzdGVyIGZvciBjYWNoZSBjYWxs
YmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9jdW1lbnQsIGV2ZW4gaWYgd2Ugd291bGQgb3RoZXJ3aXNl
IGxpa2UgdG8gYmUgcmVnaXN0ZXJlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRF
bGVtZW50LmggYi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAppbmRleCA3NTI5OTY4Li45
Yjg0OWIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vob2xkZXIo
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRnJvbVJlbmRlcmVy
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRl
KFN0cmluZyYgdmFsdWUpIGNvbnN0OwpAQCAtODIsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBj
b25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwotICAg
IHZpcnR1YWwgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwogCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39631</attachid>
            <date>2009-09-15 20:02:44 -0700</date>
            <delta_ts>2009-09-23 21:04:12 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>unify-placeholder-3.diff</filename>
            <type>text/plain</type>
            <size>25287</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTQxOWQ1Ny4uOGM5Y2RlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAwOS0wOC0yNiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBwbGFjZWhvbGRlci1yZWxhdGVkIGNvZGUgdG8gSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQgZnJvbQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50LCBXTUxJbnB1
dEVsZW1lbnQsIElucHV0RWxlbWVudCwgYW5kCisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcwMwor
CisgICAgICAgICogZG9tL0lucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVs
ZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVu
dDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmhhbmRsZUZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlRm9j
dXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVy
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c3VwcG9ydHNQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTElz
SW5kZXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFy
ZWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0
ZVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6aXNFbXB0eVZhbHVlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVs
ZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aDoKKyAgICAgICAgKiB3bWwvV01MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5o
OgorCiAyMDA5LTA5LTE1ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQmV0aCBEYWtpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L0lucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IGIy
OWNiNDUuLmYzM2I4YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAK
KysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcApAQCAtNTcsOCArNTcsNiBAQCB2b2lk
IElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudCogaW5wdXRFbGVt
ZW50LCBFbGVtZW50KiBlbGVtZQogICAgIGlmICghaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoaW5w
dXRFbGVtZW50LCBlbGVtZW50KTsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQt
PmRvY3VtZW50KCk7CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYg
ZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXlib2Fy
ZEVudHJ5V2hlbkFjdGl2ZSh0cnVlKTsKQEAgLTc0LDI5ICs3MiwxMiBAQCB2b2lkIElucHV0RWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1l
bnQqIGVsZW1lbgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwotCiAgICAgaWYg
KGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRV
c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CiAKICAgICBmcmFtZS0+dGV4
dEZpZWxkRGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotYm9vbCBJbnB1dEVsZW1lbnQ6OnBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGNvbnN0IElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnZh
bHVlKCkuaXNFbXB0eSgpCi0gICAgICAgICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvY3VzZWRO
b2RlKCkgIT0gZWxlbWVudAotICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlcigp
LmlzRW1wdHkoKTsKLX0KLQotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlz
aWJpbGl0eShJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9v
bCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKLXsKLSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5p
c1RleHRGaWVsZCgpKTsKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSA9IGlucHV0RWxlbWVu
dC0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKLSAgICBpZiAoZWxlbWVudC0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudC0+cmVu
ZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclZpc2libGUs
IHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKLX0KLQogdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0
ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlu
cHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rp
b24pCiB7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7CkBAIC0xNDEs
OSArMTIyLDYgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKElucHV0
RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW4KICAgICAvLyBSZW5kZXJlciBhbmQg
b3VyIGV2ZW50IGhhbmRsZXIgYXJlIHJlc3BvbnNpYmxlIGZvciBjb25zdHJhaW5pbmcgdmFsdWVz
LgogICAgIEFTU0VSVCh2YWx1ZSA9PSBpbnB1dEVsZW1lbnQtPmNvbnN0cmFpblZhbHVlKHZhbHVl
KSB8fCBpbnB1dEVsZW1lbnQtPmNvbnN0cmFpblZhbHVlKHZhbHVlKS5pc0VtcHR5KCkpOwogCi0g
ICAgaWYgKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKLSAgICAgICAgdXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7Ci0KICAgICAvLyBXb3JrYXJv
dW5kIGZvciBidWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBv
ZiB0ZXh0Q29udGVudC4KICAgICAvLyBUaGUgYXNzZXJ0IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJl
IHNpbXBsaWZpZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJhaW5WYWx1ZSh2YWx1ZSkKICAgICAvLyBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjYxCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCmlu
ZGV4IGNkNWY0ZTkuLjMxNGY2NmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVu
dC5oCisrKyBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9v
bCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QgPSAwOwogCiAgICAgdmly
dHVhbCBpbnQgc2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOwog
Ci0gICAgdmlydHVhbCBTdHJpbmcgcGxhY2Vob2xkZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpID0gMDsKLQogICAgIHZpcnR1YWwg
U3RyaW5nIGNvbnN0cmFpblZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJikgPSAwOwogCkBAIC02
Niw4ICs2Miw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRj
aEZvY3VzRXZlbnQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgYm9v
bCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqLCBjb25zdCBF
bGVtZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElu
cHV0RWxlbWVudCosIEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkID0gZmFs
c2UpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnRE
YXRhJiwgSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0
aW9uKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1dEVsZW1lbnQq
LCBFbGVtZW50KiwgaW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9pZCBhYm91dFRv
VW5sb2FkKElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcAppbmRleCA2MWUxMTJjLi40NTUwMjAxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTWFwcGVk
QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgor
I2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
ICNpbmNsdWRlICJWYWxpZGl0eVN0YXRlLmgiCiAKQEAgLTM2Nyw0ICszNjgsNDMgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQog
ICAgIH0KIH0KIAorSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKKyAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGUodGFnTmFtZSwgZG9jLCBmb3JtKQoreworfQorCitIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6fkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkKK3sKK30KKwordm9pZCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3sKKyAgICBpZiAoc3VwcG9y
dHNQbGFjZWhvbGRlcigpKQorICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFs
c2UpOworICAgIGhhbmRsZUZvY3VzRXZlbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKK30KKwordm9pZCBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQoreworICAgIGlmIChzdXBwb3J0c1Bs
YWNlaG9sZGVyKCkpCisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7
CisgICAgaGFuZGxlQmx1ckV2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhT
dGF0ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKK30KKworYm9vbCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAoreworICAgIHJldHVy
biBzdXBwb3J0c1BsYWNlaG9sZGVyKCkKKyAgICAgICAgJiYgaXNFbXB0eVZhbHVlKCkKKyAgICAg
ICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFnZXRB
dHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNl
aG9sZGVyVmFsdWVDaGFuZ2VkKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9sZGVyKCkgJiYg
cmVuZGVyZXIoKSkKKyAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKS0+dXBk
YXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCksIHBs
YWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uN2IzY2ZiZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNDMsNiArMTQzLDI4IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwog
fTsKIAorY2xhc3MgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZSB7CitwdWJsaWM6CisgICAgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50
Kik7CisgICAgdmlydHVhbCB+SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
Qmx1ckV2ZW50KCk7CisKK3Byb3RlY3RlZDoKKyAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9v
bCk7CisKK3ByaXZhdGU6CisgICAgLy8gQSBzdWJjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYg
cGxhY2Vob2xkZXIgcHJvY2Vzc2luZyBpcyBuZWVkZWQuCisgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzUGxhY2Vob2xkZXIoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVzZXIt
ZWRpdGFibGUgdmFsdWUgaXMgZW1wdHkuICBUaGlzIGlzIHVzZWQgdG8gY2hlY2sgcGxhY2Vob2xk
ZXIgdmlzaWJpbGl0eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgPSAw
OworICAgIC8vIENhbGxlZCBpbiBkaXNwYXRjaEZvY3VzRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xk
ZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hGb2N1c0V2ZW50KCku
CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoKSB7IH0KKyAgICAvLyBDYWxsZWQg
aW4gZGlzcGF0Y2hCbHVyRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3Jl
IGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hCbHVyRXZlbnQoKS4KKyAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlQmx1ckV2ZW50KCkgeyB9Cit9OworCiB9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDBlOThhNDYuLjY4YmI3N2EgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIGNvbnN0IGludCBtYXhTYXZlZFJlc3VsdHMgPSAyNTY7CiAKIEhUTUxJbnB1dEVsZW1l
bnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvYywgSFRNTEZvcm1FbGVtZW50KiBmKQotICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSh0YWdOYW1lLCBkb2MsIGYpCisgICAgOiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCh0YWdOYW1lLCBkb2MsIGYpCiAgICAgLCBtX3hQb3MoMCkKICAgICAsIG1feVBvcygwKQog
ICAgICwgbV9tYXhSZXN1bHRzKC0xKQpAQCAtMjU3LDIwICsyNTcsMTcgQEAgYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBURVhUIHx8IG1fdHlwZSA9PSBTRUFSQ0ggfHwgbV90eXBlID09IElTSU5ERVg7CiB9CiAK
LXZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3ZvaWQgSFRNTElu
cHV0RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCgpCiB7CiAgICAgSW5wdXRFbGVtZW50OjpkaXNw
YXRjaEZvY3VzRXZlbnQodGhpcywgdGhpcyk7CiAKICAgICBpZiAoaXNUZXh0RmllbGQoKSkKICAg
ICAgICAgbV9hdXRvZmlsbGVkID0gZmFsc2U7Ci0KLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50
V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJs
dXJFdmVudCgpCiB7CiAgICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCh0aGlzLCB0
aGlzKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJF
dmVudCgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5n
JiB0KQpAQCAtNzQxLDggKzczOCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICB9CiAgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwbGFj
ZWhvbGRlckF0dHIpIHsKLSAgICAgICAgaWYgKGlzVGV4dEZpZWxkKCkpCi0gICAgICAgICAgICB1
cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KHRydWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1dG9zYXZl
QXR0ciB8fAogICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBpbmNyZW1lbnRhbEF0dHIgfHwK
ICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbWluQXR0ciB8fApAQCAtODE0LDcgKzgxMCw3
IEBAIFJlbmRlck9iamVjdCAqSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEgKmFyZW5hLCBSZW5kZXJTdHlsZSAqCiAgICAgICAgIGNhc2UgVEVMRVBIT05FOgogICAg
ICAgICBjYXNlIFRFWFQ6CiAgICAgICAgIGNhc2UgVVJMOgotICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgcGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSk7CiAgICAgfQogICAgIEFTU0VSVChmYWxzZSk7CiAg
ICAgcmV0dXJuIDA7CkBAIC0xMTExLDcgKzExMDcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgbV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAgICAgICAgICAgICBp
ZiAoaXNUZXh0RmllbGQoKSkgewotICAgICAgICAgICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRl
UGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMpOworICAgICAgICAgICAgICAgIHVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluRG9j
dW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogICAgICAgICAgICAgfQpAQCAtMTE1MSw2ICsxMTQ3LDcgQEAgdm9pZCBIVE1MSW5w
dXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIEZpbGUgdXBsb2FkIGNvbnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBzZXRGaWxlTGlzdEZy
b21SZW5kZXJlci4KICAgICBBU1NFUlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7CisgICAgdXBkYXRl
UGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBJbnB1dEVsZW1lbnQ6OnNldFZhbHVl
RnJvbVJlbmRlcmVyKG1fZGF0YSwgdGhpcywgdGhpcywgdmFsdWUpOwogfQogCkBAIC0xNzg4LDEx
ICsxNzg1LDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsVmFsaWRhdGUoKSBjb25zdAog
ICAgICAgICAgICBpbnB1dFR5cGUoKSAhPSBCVVRUT04gJiYgaW5wdXRUeXBlKCkgIT0gUkVTRVQ7
CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
KSBjb25zdAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKHRoaXMsIHRoaXMpOwotfQotCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJp
bmdUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlKiBvdXQpCiB7CiAgICAgLy8gU2Vl
IEhUTUw1IDIuNC40LjMgYFJlYWwgbnVtYmVycy4nCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCBiYTNlNWE0Li4zN2Q2NTVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3LDcgKzM3
LDcgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBLVVJMOwogY2xhc3MgVmlzaWJs
ZVNlbGVjdGlvbjsKIAotY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwdWJsaWMgSW5wdXRFbGVtZW50IHsKK2NsYXNzIEhUTUxJ
bnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQsIHB1YmxpYyBJ
bnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIGVudW0gSW5wdXRUeXBlIHsKICAgICAgICAgVEVY
VCwKQEAgLTc1LDggKzc1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJk
Rm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3Vz
ZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNv
bnN0IHsgcmV0dXJuIGlucHV0VHlwZSgpICE9IElNQUdFOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRm9jdXNFdmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgp
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJl
dmlvdXNTZWxlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvVW5sb2FkKCk7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CkBAIC0yMzAsOCArMjI4
LDYgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0
OwotCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBmbG9hdGluZyBu
dW1iZXIuCiAgICAgLy8gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUg
aXMgZmFsc2UuIFRha2UgY2FyZSB0aGF0IGxlYWRpbmcgb3IgdHJhaWxpbmcgdW5uZWNlc3Nhcnkg
Y2hhcmFjdGVycyBtYWtlIGZhaWx1cmVzLiAgVGhpcyByZXR1cm5zIGZhbHNlIGZvciBhbiBlbXB0
eSBzdHJpbmcgaW5wdXQuCiAgICAgLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwLgpA
QCAtMjQxLDExICsyMzcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3Zl
VG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKIAotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKLSAg
ICB7Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRo
aXMsIHRoaXMsIHRydWUpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBib29sIHN0b3Jlc1ZhbHVl
U2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgY29uc3Q7CiAKQEAgLTI1Myw2ICsyNDQsMTEgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiBpc1Rl
eHRGaWVsZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIHZhbHVlKCkuaXNFbXB0eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZl
bnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCk7CisKICAgICB2aXJ0dWFs
IGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWlyZWRG
b3JtQ29udHJvbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNw
cCBiL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCmluZGV4IGJjZmE2MjMuLjMx
ZmFmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBA
IHZvaWQgSFRNTElzSW5kZXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIpCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBwcm9tcHRBdHRyKQogICAgICAg
ICBzZXRWYWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
cGxhY2Vob2xkZXJBdHRyKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsK
KyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRydWUpOwogICAgIGVsc2UKICAg
ICAgICAgLy8gZG9uJ3QgY2FsbCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSBoZXJlLCBhcyBpdCB3b3VsZAogICAgICAgICAvLyBhY2NlcHQgYXR0cmlidXRlcyB0aGlzIGVs
ZW1lbnQgZG9lcyBub3Qgc3VwcG9ydApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmlu
ZGV4IGQzZmM4OTcuLjcwOThhMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5n
ZWQoY29uc3QgSFRNTFRleHRBcmVhRWxlbWVudCogZWxlbWVudCkKIH0KIAogSFRNTFRleHRBcmVh
RWxlbWVudDo6SFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxG
b3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCisgICAg
OiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKICAg
ICAsIG1fcm93cyhkZWZhdWx0Um93cykKICAgICAsIG1fY29scyhkZWZhdWx0Q29scykKICAgICAs
IG1fd3JhcChTb2Z0V3JhcCkKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIAogUmVu
ZGVyT2JqZWN0KiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVu
YSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUodGhpcyk7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkp
OwogfQogCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRh
TGlzdCYgZW5jb2RpbmcsIGJvb2wpCkBAIC00MTEsMjkgKzQxMSw0IEBAIGJvb2wgSFRNTFRleHRB
cmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYg
ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCi0gICAgICAgICYmICFnZXRBdHRyaWJ1
dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxl
bWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNo
YW5nZWQpCi17Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRy
b2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNo
b3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNo
Qmx1ckV2ZW50KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuaAppbmRleCAxZjVjYjkxLi41YTU4MjMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBWaXNpYmxl
U2VsZWN0aW9uOwogCi1jbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50IDogcHVibGljIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUgeworY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudCA6IHB1
YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFRleHRB
cmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1l
bnQqID0gMCk7CiAKQEAgLTk0LDE1ICs5NCwxMyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAotICAgIGJvb2wgcGxhY2Vob2xkZXJT
aG91bGRCZVZpc2libGUoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2Qg
eyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgp
IGNvbnN0OwotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vo
b2xkZXJWYWx1ZUNoYW5nZWQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1wdHko
KTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsg
cmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiByZXF1aXJlZCgpOyB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggNGY0YjU3MC4uN2Q4MzhmYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtNjcsOSArNjcsOSBAQCBz
dGF0aWMgQ29sb3IgZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29u
c3QgQ29sb3ImIGJhY2tncm91bmRDbwogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCi1S
ZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSkKK1JlbmRlclRl
eHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlLCBib29sIHBsYWNlaG9sZGVy
VmlzaWJsZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlz
aWJsZShmYWxzZSkKKyAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKHBsYWNlaG9sZGVyVmlzaWJs
ZSkKICAgICAsIG1fZWRpdGVkKGZhbHNlKQogICAgICwgbV91c2VyRWRpdGVkKGZhbHNlKQogewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggMzIxMmExYi4uY2RkODcxNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sLCBib29sKTsK
IAogcHJvdGVjdGVkOgotICAgIFJlbmRlclRleHRDb250cm9sKE5vZGUqKTsKKyAgICBSZW5kZXJU
ZXh0Q29udHJvbChOb2RlKiwgYm9vbCk7CiAKICAgICBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKCkg
Y29uc3Q7CiAgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSog
c3RhcnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4ZGZi
ODU4Li4xYzczMTkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwCkBAIC0zMCwxMCArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZShOb2RlKiBub2RlKQotICAgIDogUmVuZGVyVGV4dENvbnRyb2wobm9kZSkKK1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiBub2RlLCBi
b29sIHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUsIHBs
YWNlaG9sZGVyVmlzaWJsZSkKIHsKLSAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHN0YXRpY19j
YXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUoKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuaAppbmRleCAzMzNjZmE4Li4zMzcxYThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSA6IHB1YmxpYyBS
ZW5kZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoTm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqLCBib29sKTsK
ICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSgpOwogCiAgICAgdm9pZCBm
b3J3YXJkRXZlbnQoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGQwNTVhMjAuLjdmNjY2MjcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNDgs
MTQgKzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2Rl
KiBub2RlLCBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9s
KG5vZGUsIHBsYWNlaG9sZGVyVmlzaWJsZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUo
ZmFsc2UpCiAgICAgLCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAs
IG1fc2VhcmNoRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpz
ZWFyY2hFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7Ci0gICAgbV9w
bGFjZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lKCkKQEAgLTQ1Niw3ICs0NTUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiAgICAgaWYgKG1fcGxhY2Vob2xk
ZXJWaXNpYmxlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5l
clRleHRFbGVtZW50KCktPnNldElubmVyVGV4dChpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXIo
KSwgZWMpOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dChzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmlidXRlKHBsYWNlaG9sZGVyQXR0ciksIGVj
KTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVyVGV4
dFZhbHVlKGlucHV0RWxlbWVudCgpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggODE3ZWZiMi4uNGExNzkxOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAg
LTM2LDcgKzM2LDcgQEAgY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ7CiAKIGNsYXNzIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCwgcHJp
dmF0ZSBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZShOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5vZGUqLCBi
b29sKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAogICAg
IGJvb2wgcGxhY2Vob2xkZXJJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3BsYWNlaG9sZGVy
VmlzaWJsZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcCBi
L1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMmM1YTk5My4uZTYzMjAyNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgU3RyaW5nIFdNTElu
cHV0RWxlbWVudDo6dmFsdWUoKSBjb25zdAogCiB2b2lkIFdNTElucHV0RWxlbWVudDo6c2V0VmFs
dWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0
Y2hlc1JlbmRlcmVyKGZhbHNlKTsKICAgICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUo
dmFsdWUpKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQpAQCAtMjIxLDcgKzIyMCw3IEBAIHZvaWQg
V01MSW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50
KiBzb3VyY2UpCiAKIFJlbmRlck9iamVjdCogV01MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMpOworICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgZmFsc2UpOwogfQogCiB2
b2lkIFdNTElucHV0RWxlbWVudDo6ZGV0YWNoKCkKQEAgLTMxOCwxMSArMzE3LDYgQEAgdm9pZCBX
TUxJbnB1dEVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKICAgICByZXNldCgpOwog
fQogCi1ib29sIFdNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBj
b25zdAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlKHRoaXMsIHRoaXMpOwotfQotCiB2b2lkIFdNTElucHV0RWxlbWVudDo6d2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQogewogICAgIC8vIEFsd2F5cyB1bnJlZ2lzdGVyIGZvciBjYWNoZSBj
YWxsYmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9jdW1lbnQsIGV2ZW4gaWYgd2Ugd291bGQgb3RoZXJ3
aXNlIGxpa2UgdG8gYmUgcmVnaXN0ZXJlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5w
dXRFbGVtZW50LmggYi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAppbmRleCA3NTI5OTY4
Li45Yjg0OWIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkg
Y29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vob2xk
ZXIoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRnJvbVJlbmRl
cmVyKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0
YXRlKFN0cmluZyYgdmFsdWUpIGNvbnN0OwpAQCAtODIsNyArODAsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBTdHJpbmcgY29uc3RyYWluVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVl
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpOwot
ICAgIHZpcnR1YWwgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsK
</data>
<flag name="review"
          id="20738"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="21183"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40043</attachid>
            <date>2009-09-23 21:04:12 -0700</date>
            <delta_ts>2009-09-23 22:53:12 -0700</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>0001-refactor-placeholder-code.patch</filename>
            <type>text/plain</type>
            <size>26754</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSBkNjE4NjgwMzc2ZTc1ZDU5MDNkODE1ZmRiNGYzYmQ3OTUyNjgwMjVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDI1IEF1ZyAyMDA5IDE1OjA5OjEwICswOTAwClN1YmplY3Q6IFtQQVRDSF0gcmVmYWN0
b3IgcGxhY2Vob2xkZXIgY29kZQoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUv
ZG9tL0lucHV0RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyIC0tLS0tLS0t
CiBXZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NiAtLQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwICAgICAgICAgICB8
ICAgNDAgKysrKysrKysrKysrKysKIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmggICAgICAgICAgICAgfCAgIDIyICsrKysrKysrCiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgICAgICAgICAgICAgICAgIHwgICAyMiArKystLS0tLQogV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICB8ICAgMTYgKystLS0tCiBXZWJDb3Jl
L2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcCAgICAgICAgICAgICAgIHwgICAgMiArLQogV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwICAgICAgICAgICAgICB8ICAgMjkgKy0t
LS0tLS0tLS0KIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggICAgICAgICAgICAg
ICAgfCAgIDEwICsrLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCAg
ICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
ICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmggICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIHwgICAgNyArLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oICAgfCAgICAyICstCiBXZWJDb3JlL3dtbC9XTUxJ
bnB1dEVsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOCArLS0tCiBXZWJDb3JlL3dt
bC9XTUxJbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAtCiAxOCBmaWxl
cyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY3YjgxZS4u
Y2ZlMDRlYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAwOS0wOC0yNiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBwbGFjZWhvbGRlci1yZWxhdGVkIGNvZGUgdG8gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgZnJvbQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50LCBXTUxJbnB1dEVsZW1lbnQs
IElucHV0RWxlbWVudCwgYW5kCisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcwMworCisgICAgICAg
ICogZG9tL0lucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6c2V0VmFs
dWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmhhbmRs
ZUZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c3VwcG9ydHNQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAg
ICAgKiB3bWwvV01MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0
RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5oOgorCiAyMDA5
LTA5LTIzICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1
dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCA5Nzc5M2Uy
Li4wY2RhYzY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKQEAgLTU3LDggKzU3LDYgQEAgdm9pZCBJbnB1
dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudChJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwg
RWxlbWVudCogZWxlbWUKICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxl
bWVudCwgZWxlbWVudCk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1
bWVudCgpOwogICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGRvY3Vt
ZW50LT5mcmFtZSgpKQogICAgICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eVdoZW5BY3RpdmUodHJ1ZSk7CkBAIC03NCwyOSArNzIsMTIgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoQmx1ckV2ZW50KElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50KiBl
bGVtZW4KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsKLQogICAgIGlmIChpbnB1
dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICBkb2N1bWVudC0+c2V0VXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUoZmFsc2UpOwogCiAgICAgZnJhbWUtPnRleHRGaWVs
ZERpZEVuZEVkaXRpbmcoZWxlbWVudCk7CiB9CiAKLWJvb2wgSW5wdXRFbGVtZW50OjpwbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29u
c3QgRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT52YWx1ZSgp
LmlzRW1wdHkoKQotICAgICAgICAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgp
ICE9IGVsZW1lbnQKLSAgICAgICAgJiYgIWlucHV0RWxlbWVudC0+cGxhY2Vob2xkZXIoKS5pc0Vt
cHR5KCk7Ci19Ci0KLXZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcGxh
Y2Vob2xkZXJWYWx1ZUNoYW5nZWQpCi17Ci0gICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0
RmllbGQoKSk7Ci0gICAgYm9vbCBwbGFjZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQtPnBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7Ci0gICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVy
KCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJWaXNpYmxlLCBwbGFj
ZWhvbGRlclZhbHVlQ2hhbmdlZCk7Ci19Ci0KIHZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1
c0FwcGVhcmFuY2UoSW5wdXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQog
ewogICAgIEFTU0VSVChpbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkpOwpAQCAtMTQxLDkgKzEy
Miw2IEBAIHZvaWQgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihJbnB1dEVsZW1l
bnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGluCiAgICAgLy8gUmVuZGVyZXIgYW5kIG91ciBl
dmVudCBoYW5kbGVyIGFyZSByZXNwb25zaWJsZSBmb3Igc2FuaXRpemluZyB2YWx1ZXMuCiAgICAg
QVNTRVJUKHZhbHVlID09IGlucHV0RWxlbWVudC0+c2FuaXRpemVWYWx1ZSh2YWx1ZSkgfHwgaW5w
dXRFbGVtZW50LT5zYW5pdGl6ZVZhbHVlKHZhbHVlKS5pc0VtcHR5KCkpOwogCi0gICAgaWYgKGlu
cHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKLSAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7Ci0KICAgICAvLyBXb3JrYXJvdW5kIGZvciBi
dWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdCBvZiB0ZXh0Q29u
dGVudC4KICAgICAvLyBUaGUgYXNzZXJ0IG1hY3JvIGFib3ZlIG1heSBhbHNvIGJlIHNpbXBsaWZp
ZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJhaW5WYWx1ZSh2YWx1ZSkKICAgICAvLyBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjYxCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9JbnB1dEVsZW1lbnQuaCBiL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCmluZGV4IDc0NmU0
ZjIuLmUwZTcxMTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oCkBAIC00NCwxNiArNDQsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1RleHRGaWVsZCgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBwbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2VhcmNo
RXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBpbnQg
c2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgPSAwOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgcGxhY2Vob2xkZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpID0gMDsKLQogICAgIHZpcnR1YWwgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmKSA9IDA7CiAKQEAgLTY2LDggKzYyLDYg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoRm9jdXNFdmVu
dChJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hCbHVy
RXZlbnQoSW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwotICAgIHN0YXRpYyBib29sIHBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKGNvbnN0IElucHV0RWxlbWVudCosIGNvbnN0IEVsZW1lbnQqKTsK
LSAgICBzdGF0aWMgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoSW5wdXRFbGVtZW50
KiwgRWxlbWVudCosIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQgPSBmYWxzZSk7CiAgICAg
c3RhdGljIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKElucHV0RWxlbWVudERhdGEmLCBJbnB1
dEVsZW1lbnQqLCBFbGVtZW50KiwgYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAg
IHN0YXRpYyB2b2lkIHVwZGF0ZVNlbGVjdGlvblJhbmdlKElucHV0RWxlbWVudCosIEVsZW1lbnQq
LCBpbnQgc3RhcnQsIGludCBlbmQpOwogICAgIHN0YXRpYyB2b2lkIGFib3V0VG9VbmxvYWQoSW5w
dXRFbGVtZW50KiwgRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCmluZGV4IDYxZTExMmMuLjQ1NTAyMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAi
UmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUg
IlZhbGlkaXR5U3RhdGUuaCIKIApAQCAtMzY3LDQgKzM2OCw0MyBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnRXaXRoU3RhdGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgfQogfQog
CitIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYywgSFRNTEZvcm1FbGVt
ZW50KiBmb3JtKQorICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSh0YWdOYW1l
LCBkb2MsIGZvcm0pCit7Cit9CisKK0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQoKQoreworfQorCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9s
ZGVyKCkpCisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CisgICAg
aGFuZGxlRm9jdXNFdmVudCgpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6
OmRpc3BhdGNoRm9jdXNFdmVudCgpOworfQorCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpkaXNwYXRjaEJsdXJFdmVudCgpCit7CisgICAgaWYgKHN1cHBvcnRzUGxhY2Vob2xkZXIo
KSkKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKKyAgICBoYW5k
bGVCbHVyRXZlbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNw
YXRjaEJsdXJFdmVudCgpOworfQorCitib29sIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN1cHBvcnRz
UGxhY2Vob2xkZXIoKQorICAgICAgICAmJiBpc0VtcHR5VmFsdWUoKQorICAgICAgICAmJiBkb2N1
bWVudCgpLT5mb2N1c2VkTm9kZSgpICE9IHRoaXMKKyAgICAgICAgJiYgIWdldEF0dHJpYnV0ZShw
bGFjZWhvbGRlckF0dHIpLmlzRW1wdHkoKTsKK30KKwordm9pZCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1
ZUNoYW5nZWQpCit7CisgICAgaWYgKHN1cHBvcnRzUGxhY2Vob2xkZXIoKSAmJiByZW5kZXJlcigp
KQorICAgICAgICB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVyKCkpLT51cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSwgcGxhY2Vob2xkZXJW
YWx1ZUNoYW5nZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJjb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCBlZTdkNzcyLi43YjNjZmJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTE0Myw2ICsxNDMsMjggQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiB9OwogCitjbGFz
cyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlIHsKK3B1YmxpYzoKKyAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIH5IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQo
KTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBj
b25zdDsKKyAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sKTsKKworcHJp
dmF0ZToKKyAgICAvLyBBIHN1YmNsYXNzIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiBwbGFjZWhvbGRl
ciBwcm9jZXNzaW5nIGlzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhv
bGRlcigpIGNvbnN0ID0gMDsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdXNlci1lZGl0YWJsZSB2
YWx1ZSBpcyBlbXB0eS4gIFRoaXMgaXMgdXNlZCB0byBjaGVjayBwbGFjZWhvbGRlciB2aXNpYmls
aXR5LgorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCA9IDA7CisgICAgLy8g
Q2FsbGVkIGluIGRpc3BhdGNoRm9jdXNFdmVudCgpLCBhZnRlciBwbGFjZWhvbGRlciBwcm9jZXNz
LCBiZWZvcmUgY2FsbGluZyBwYXJlbnQncyBkaXNwYXRjaEZvY3VzRXZlbnQoKS4KKyAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRm9jdXNFdmVudCgpIHsgfQorICAgIC8vIENhbGxlZCBpbiBkaXNwYXRj
aEJsdXJFdmVudCgpLCBhZnRlciBwbGFjZWhvbGRlciBwcm9jZXNzLCBiZWZvcmUgY2FsbGluZyBw
YXJlbnQncyBkaXNwYXRjaEJsdXJFdmVudCgpLgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVy
RXZlbnQoKSB7IH0KK307CisKIH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5jcHAKaW5kZXggOGI4ODRjZi4uZWFmZDI4MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcApAQCAtNzEsNyArNzEsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogY29u
c3QgaW50IG1heFNhdmVkUmVzdWx0cyA9IDI1NjsKIAogSFRNTElucHV0RWxlbWVudDo6SFRNTElu
cHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jLCBI
VE1MRm9ybUVsZW1lbnQqIGYpCi0gICAgOiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
KHRhZ05hbWUsIGRvYywgZikKKyAgICA6IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KHRhZ05h
bWUsIGRvYywgZikKICAgICAsIG1feFBvcygwKQogICAgICwgbV95UG9zKDApCiAgICAgLCBtX21h
eFJlc3VsdHMoLTEpCkBAIC0yNTcsMjAgKzI1NywxNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKICAgICByZXR1cm4gbV90eXBlID09IFRFWFQg
fHwgbV90eXBlID09IFNFQVJDSCB8fCBtX3R5cGUgPT0gSVNJTkRFWDsKIH0KIAotdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQordm9pZCBIVE1MSW5wdXRFbGVtZW50
OjpoYW5kbGVGb2N1c0V2ZW50KCkKIHsKICAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNF
dmVudCh0aGlzLCB0aGlzKTsKIAogICAgIGlmIChpc1RleHRGaWVsZCgpKQogICAgICAgICBtX2F1
dG9maWxsZWQgPSBmYWxzZTsKLQotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6
OmRpc3BhdGNoRm9jdXNFdmVudCgpOwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpc3Bh
dGNoQmx1ckV2ZW50KCkKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50KCkK
IHsKICAgICBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KHRoaXMsIHRoaXMpOwotICAg
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7CiB9
CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHQpCkBAIC03
NDEsOCArNzM4LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIH0KICAgICAgICAgc2V0TmVlZHNTdHls
ZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBsYWNlaG9sZGVyQXR0
cikgewotICAgICAgICBpZiAoaXNUZXh0RmllbGQoKSkKLSAgICAgICAgICAgIHVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eSgpOworICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
dHJ1ZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b3NhdmVBdHRyIHx8CiAg
ICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IGluY3JlbWVudGFsQXR0ciB8fAogICAgICAgICAg
ICAgIGF0dHItPm5hbWUoKSA9PSBtaW5BdHRyIHx8CkBAIC04MTQsNyArODEwLDcgQEAgUmVuZGVy
T2JqZWN0ICpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSAqYXJl
bmEsIFJlbmRlclN0eWxlICoKICAgICAgICAgY2FzZSBURUxFUEhPTkU6CiAgICAgICAgIGNhc2Ug
VEVYVDoKICAgICAgICAgY2FzZSBVUkw6Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzLCBwbGFjZWhvbGRlclNo
b3VsZEJlVmlzaWJsZSgpKTsKICAgICB9CiAgICAgQVNTRVJUKGZhbHNlKTsKICAgICByZXR1cm4g
MDsKQEAgLTExMTEsNyArMTEwNyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBtX2RhdGEu
c2V0VmFsdWUoc2FuaXRpemVWYWx1ZSh2YWx1ZSkpOwogICAgICAgICAgICAgaWYgKGlzVGV4dEZp
ZWxkKCkpIHsKLSAgICAgICAgICAgICAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkoZmFsc2UpOwogICAgICAgICAgICAgICAgIGlmIChpbkRvY3VtZW50KCkpCiAg
ICAgICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAg
ICAgICAgICAgIH0KQEAgLTExNTEsNiArMTE0Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGaWxl
IHVwbG9hZCBjb250cm9scyB3aWxsIGFsd2F5cyB1c2Ugc2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIu
CiAgICAgQVNTRVJUKGlucHV0VHlwZSgpICE9IEZJTEUpOworICAgIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShmYWxzZSk7CiAgICAgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJl
cihtX2RhdGEsIHRoaXMsIHRoaXMsIHZhbHVlKTsKIH0KIApAQCAtMTc5MCwxMSArMTc4Nyw2IEBA
IGJvb2wgSFRNTElucHV0RWxlbWVudDo6d2lsbFZhbGlkYXRlKCkgY29uc3QKICAgICAgICAgICAg
aW5wdXRUeXBlKCkgIT0gQlVUVE9OICYmIGlucHV0VHlwZSgpICE9IFJFU0VUOwogfQogCi1ib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlz
LCB0aGlzKTsKLX0KLQogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpmb3JtU3RyaW5nVG9Eb3VibGUo
Y29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSogb3V0KQogewogICAgIC8vIFNlZSBIVE1MNSAyLjQu
NC4zIGBSZWFsIG51bWJlcnMuJwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggOGYyNzNjYi4u
NjNkMTYzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IEhUTUxPcHRpb25FbGVtZW50OwogY2xhc3MgS1VSTDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247
CiAKLWNsYXNzIEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSwgcHVibGljIElucHV0RWxlbWVudCB7CitjbGFzcyBIVE1MSW5wdXRFbGVtZW50
IDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LCBwdWJsaWMgSW5wdXRFbGVtZW50
IHsKIHB1YmxpYzoKICAgICBlbnVtIElucHV0VHlwZSB7CiAgICAgICAgIFRFWFQsCkBAIC03NSw4
ICs3NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShL
ZXlib2FyZEV2ZW50KikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCB7IHJldHVy
biBpbnB1dFR5cGUoKSAhPSBJTUFHRTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3Vz
RXZlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0
aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgYWJvdXRUb1VubG9hZCgpOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwpAQCAtMjMwLDggKzIyOCw2IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKLQogICAgIC8v
IENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHRvIGEgZmxvYXRpbmcgbnVtYmVyLgogICAg
IC8vIElmIHRoZSBjb252ZXJzaW9uIGZhaWxzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZhbHNlLiBU
YWtlIGNhcmUgdGhhdCBsZWFkaW5nIG9yIHRyYWlsaW5nIHVubmVjZXNzYXJ5IGNoYXJhY3RlcnMg
bWFrZSBmYWlsdXJlcy4gIFRoaXMgcmV0dXJucyBmYWxzZSBmb3IgYW4gZW1wdHkgc3RyaW5nIGlu
cHV0LgogICAgIC8vIFRoZSBkb3VibGUqIHBhcmFtZXRlciBtYXkgYmUgMC4KQEAgLTI0MSwxMSAr
MjM3LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7
CiAKLSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpCi0gICAgewotICAgICAg
ICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzLCB0
cnVlKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJv
bUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0yNTMsNiArMjQ0LDExIEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZWdpc3RlckZvckFjdGl2YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKTsKIAorICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgp
LmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KCk7CisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVudCgpOworCiAgICAgdmlydHVhbCBib29sIGlzT3B0
aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2wo
KTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcAppbmRleCBiY2ZhNjIzLi4zMWZhZmE2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIEhUTUxJ
c0luZGV4RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gcHJvbXB0QXR0cikKICAgICAgICAgc2V0VmFsdWUo
YXR0ci0+dmFsdWUoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBsYWNlaG9sZGVy
QXR0cikKLSAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CisgICAgICAgIHVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0cnVlKTsKICAgICBlbHNlCiAgICAgICAgIC8vIGRv
bid0IGNhbGwgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUgaGVyZSwgYXMg
aXQgd291bGQKICAgICAgICAgLy8gYWNjZXB0IGF0dHJpYnV0ZXMgdGhpcyBlbGVtZW50IGRvZXMg
bm90IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBkM2ZjODk3
Li43MDk4YTM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKGNvbnN0IEhU
TUxUZXh0QXJlYUVsZW1lbnQqIGVsZW1lbnQpCiB9CiAKIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OkhU
TUxUZXh0QXJlYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCi0gICAgOiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlKHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQorICAgIDogSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCiAgICAgLCBtX3Jvd3Mo
ZGVmYXVsdFJvd3MpCiAgICAgLCBtX2NvbHMoZGVmYXVsdENvbHMpCiAgICAgLCBtX3dyYXAoU29m
dFdyYXApCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAKIFJlbmRlck9iamVjdCog
SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lKHRoaXMpOworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZSh0aGlzLCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpKTsKIH0KIAogYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29k
aW5nLCBib29sKQpAQCAtNDExLDI5ICs0MTEsNCBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHZhbHVlKCkuaXNFbXB0eSgpCi0gICAgICAgICYmIGRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkgIT0gdGhpcwotICAgICAgICAmJiAhZ2V0QXR0cmlidXRlKHBsYWNlaG9s
ZGVyQXR0cikuaXNFbXB0eSgpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKQotewot
ICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICB0b1JlbmRlclRleHRDb250cm9sKHJlbmRlcmVy
KCkpLT51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUoKSwgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCi17Ci0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KGZhbHNlKTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNw
YXRjaEZvY3VzRXZlbnQoKTsKLX0KLQotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpkaXNwYXRj
aEJsdXJFdmVudCgpCi17Ci0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsK
LSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJFdmVudCgp
OwotfQotCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXgg
MWY1Y2I5MS4uNWE1ODIzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC0zMCw3
ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsK
IAotY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlIHsKK2NsYXNzIEhUTUxUZXh0QXJlYUVsZW1lbnQgOiBwdWJsaWMgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQgewogcHVibGljOgogICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOwog
CkBAIC05NCwxNSArOTQsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVz
ZUlucHV0TWV0aG9kKCkgY29uc3Q7CiAKLSAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBT
b2Z0V3JhcCwgSGFyZFdyYXAgfTsKIAogICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsKLSAg
ICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVD
aGFuZ2VkKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDRmNGI1NzAuLjdkODM4ZmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIENvbG9y
IGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBi
YWNrZ3JvdW5kQ28KICAgICByZXR1cm4gZGlzYWJsZWRDb2xvcjsKIH0KIAotUmVuZGVyVGV4dENv
bnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbDo6
UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUpCiAg
ICAgOiBSZW5kZXJCbG9jayhub2RlKQotICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2Up
CisgICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShwbGFjZWhvbGRlclZpc2libGUpCiAgICAgLCBt
X2VkaXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDMyMTJhMWIuLmNkZDg3MTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCwgYm9vbCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBSZW5kZXJUZXh0Q29udHJvbChOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2wo
Tm9kZSosIGJvb2wpOwogCiAgICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0OwogICAg
IHZvaWQgYWRqdXN0SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUs
IFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggOGRmYjg1OC4uMWM3MzE5
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmNwcApAQCAtMzAsMTAgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSogbm9k
ZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhv
bGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBwbGFjZWhvbGRlclZp
c2libGUpCiB7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBzdGF0aWNfY2FzdDxIVE1MVGV4
dEFyZWFFbGVtZW50Kj4obm9kZSktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9CiAK
IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5k
ZXggMzMzY2ZhOC4uMzM3MWE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZS5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENv
bnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqKTsK
KyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiwgYm9vbCk7CiAgICAgdmlydHVh
bCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIHZvaWQgZm9yd2FyZEV2ZW50
KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCA3OTRiZTE3Li44ZDhiYTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTQ4LDE0ICs0OCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5v
ZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQorUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSwgYm9v
bCBwbGFjZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBwbGFj
ZWhvbGRlclZpc2libGUpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQogICAg
ICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX3NlYXJjaEV2
ZW50VGltZXIodGhpcywgJlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2VhcmNoRXZlbnRU
aW1lckZpcmVkKQogICAgICwgbV9zZWFyY2hQb3B1cCgwKQogewotICAgIG1fcGxhY2Vob2xkZXJW
aXNpYmxlID0gaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9
CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZSgpCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmU6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogICAgIGlmIChtX3BsYWNlaG9sZGVyVmlzaWJsZSkg
ewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgaW5uZXJUZXh0RWxlbWVu
dCgpLT5zZXRJbm5lclRleHQoaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsKKyAg
ICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQoc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIpLCBlYyk7CiAgICAgICAg
IEFTU0VSVCghZWMpOwogICAgIH0gZWxzZQogICAgICAgICBzZXRJbm5lclRleHRWYWx1ZShpbnB1
dEVsZW1lbnQoKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oCmluZGV4IDgxN2VmYjIuLjRhMTc5MTggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wsIHByaXZhdGUgUG9wdXBN
ZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9k
ZSopOworICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiwgYm9vbCk7CiAgICAg
dmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAKICAgICBib29sIHBsYWNl
aG9sZGVySXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL3dt
bC9XTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDJkYmRhZjAuLmIwMjdiZjAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01MSW5w
dXRFbGVtZW50LmNwcApAQCAtMTM0LDcgKzEzNCw2IEBAIFN0cmluZyBXTUxJbnB1dEVsZW1lbnQ6
OnZhbHVlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7Ci0gICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkodGhpcywgdGhpcyk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJl
cihmYWxzZSk7CiAgICAgbV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAg
ICAgaWYgKGluRG9jdW1lbnQoKSkKQEAgLTIyMSw3ICsyMjAsNyBAQCB2b2lkIFdNTElucHV0RWxl
bWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKQog
CiBSZW5kZXJPYmplY3QqIFdNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBXTUxJbnB1
dEVsZW1lbnQ6OmRldGFjaCgpCkBAIC0zMTgsMTEgKzMxNyw2IEBAIHZvaWQgV01MSW5wdXRFbGVt
ZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotYm9vbCBX
TUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlzLCB0
aGlzKTsKLX0KLQogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCkKIHsKICAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tzIHdo
ZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtlIHRv
IGJlIHJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5o
IGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKaW5kZXggN2ViMjQ1NS4uOThlYTEzYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS93
bWwvV01MSW5wdXRFbGVtZW50LmgKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdDsKICAgICB2aXJ0
dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0
cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcm
IHZhbHVlKSBjb25zdDsKQEAgLTgyLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3Ry
aW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdCB7IHJl
dHVybiBjb25zdHJhaW5WYWx1ZShwcm9wb3NlZFZhbHVlKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVy
U2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1
bWVudCgpOwotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="21215"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="21216"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40046</attachid>
            <date>2009-09-23 22:53:12 -0700</date>
            <delta_ts>2009-09-25 20:01:48 -0700</delta_ts>
            <desc>Proposed patch (rev.5)</desc>
            <filename>0001-refactor-placeholder-code.patch</filename>
            <type>text/plain</type>
            <size>26928</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA1ZDI5MzEwZWEwNWVjYmNjM2E0MWFiMjc2Mzk3MzNkNDlhN2YyMTM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDI1IEF1ZyAyMDA5IDE1OjA5OjEwICswOTAwClN1YmplY3Q6IFtQQVRDSF0gcmVmYWN0
b3IgcGxhY2Vob2xkZXIgY29kZQoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUv
ZG9tL0lucHV0RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyIC0tLS0tLS0t
CiBXZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NiAtLQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwICAgICAgICAgICB8
ICAgNDAgKysrKysrKysrKysrKysKIFdlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmggICAgICAgICAgICAgfCAgIDIyICsrKysrKysrCiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgICAgICAgICAgICAgICAgIHwgICAyMiArKystLS0tLQogV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICB8ICAgMTYgKystLS0tCiBXZWJDb3Jl
L2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcCAgICAgICAgICAgICAgIHwgICAgMiArLQogV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwICAgICAgICAgICAgICB8ICAgMjkgKy0t
LS0tLS0tLS0KIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggICAgICAgICAgICAg
ICAgfCAgIDEwICsrLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCAg
ICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
ICAgICAgICAgICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwICB8ICAgIDUgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmggICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIHwgICAgNyArLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oICAgfCAgICAyICstCiBXZWJDb3JlL3dtbC9XTUxJ
bnB1dEVsZW1lbnQuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOCArLS0tCiBXZWJDb3JlL3dt
bC9XTUxJbnB1dEVsZW1lbnQuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMyAtCiAxOCBmaWxl
cyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhiM2Q0Yy4u
MzY3ZTllZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAwOS0wOC0yNiAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBwbGFjZWhvbGRlci1yZWxhdGVkIGNvZGUgdG8gSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQgZnJvbQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50LCBXTUxJbnB1dEVsZW1lbnQs
IElucHV0RWxlbWVudCwgYW5kCisgICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcwMworCisgICAgICAg
ICogZG9tL0lucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklucHV0RWxlbWVudDo6c2V0VmFs
dWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9JbnB1dEVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp+SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmhhbmRs
ZUZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmhhbmRsZUJsdXJFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlRm9jdXNFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c3VwcG9ydHNQbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50Ojppc0VtcHR5VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTElzSW5kZXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJc0luZGV4RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1MVGV4dEFyZWFFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVy
KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAgICAg
ICAgKiB3bWwvV01MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0
RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6V01MSW5wdXRFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcik6CisgICAgICAgICogd21sL1dNTElucHV0RWxlbWVudC5oOgorCiAyMDA5
LTA5LTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCmluZGV4IDg3NWQ5ZjIuLjE4MTNi
OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmNwcApAQCAtNTYsOCArNTYsNiBAQCB2b2lkIElucHV0RWxlbWVu
dDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50
KiBlbGVtZQogICAgIGlmICghaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoaW5wdXRFbGVtZW50LCBl
bGVtZW50KTsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGVsZW1lbnQtPmRvY3VtZW50KCk7
CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgZG9jdW1lbnQtPmZy
YW1lKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFj
dGl2ZSh0cnVlKTsKQEAgLTczLDI5ICs3MSwxMiBAQCB2b2lkIElucHV0RWxlbWVudDo6ZGlzcGF0
Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbgog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwotCiAgICAgaWYgKGlucHV0RWxlbWVu
dC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1cmVLZXli
b2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CiAKICAgICBmcmFtZS0+dGV4dEZpZWxkRGlkRW5k
RWRpdGluZyhlbGVtZW50KTsKIH0KIAotYm9vbCBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKGNvbnN0IElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBjb25zdCBFbGVt
ZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPnZhbHVlKCkuaXNFbXB0
eSgpCi0gICAgICAgICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgIT0gZWxl
bWVudAotICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFjZWhvbGRlcigpLmlzRW1wdHkoKTsK
LX0KLQotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShJbnB1
dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBwbGFjZWhvbGRl
clZhbHVlQ2hhbmdlZCkKLXsKLSAgICBBU1NFUlQoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgp
KTsKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSA9IGlucHV0RWxlbWVudC0+cGxhY2Vob2xk
ZXJTaG91bGRCZVZpc2libGUoKTsKLSAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudC0+cmVuZGVyZXIoKSktPnVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclZpc2libGUsIHBsYWNlaG9sZGVy
VmFsdWVDaGFuZ2VkKTsKLX0KLQogdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZUZvY3VzQXBwZWFy
YW5jZShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwg
RWxlbWVudCogZWxlbWVudCwgYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCiB7CiAgICAg
QVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7CkBAIC0xNDAsOSArMTIxLDYgQEAg
dm9pZCBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKElucHV0RWxlbWVudERhdGEm
IGRhdGEsIElucHV0RWxlbWVudCogaW4KICAgICAvLyBSZW5kZXJlciBhbmQgb3VyIGV2ZW50IGhh
bmRsZXIgYXJlIHJlc3BvbnNpYmxlIGZvciBzYW5pdGl6aW5nIHZhbHVlcy4KICAgICBBU1NFUlQo
dmFsdWUgPT0gaW5wdXRFbGVtZW50LT5zYW5pdGl6ZVZhbHVlKHZhbHVlKSB8fCBpbnB1dEVsZW1l
bnQtPnNhbml0aXplVmFsdWUodmFsdWUpLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoaW5wdXRFbGVt
ZW50LT5pc1RleHRGaWVsZCgpKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
aW5wdXRFbGVtZW50LCBlbGVtZW50KTsKLQogICAgIC8vIFdvcmthcm91bmQgZm9yIGJ1ZyB3aGVy
ZSB0cmFpbGluZyBcbiBpcyBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IG9mIHRleHRDb250ZW50Lgog
ICAgIC8vIFRoZSBhc3NlcnQgbWFjcm8gYWJvdmUgbWF5IGFsc28gYmUgc2ltcGxpZmllZCB0bzog
IHZhbHVlID09IGNvbnN0cmFpblZhbHVlKHZhbHVlKQogICAgIC8vIGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0
RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKaW5kZXggNzQ2ZTRmMi4uZTBl
NzExMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmgKQEAgLTQ0LDE2ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlz
VGV4dEZpZWxkKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZWFyY2hFdmVudHNT
aG91bGRCZURpc3BhdGNoZWQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGludCBzaXplKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vo
b2xkZXIoY29uc3QgU3RyaW5nJikgPSAwOwotCiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVW
YWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
RnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYpID0gMDsKIApAQCAtNjYsOCArNjIsNiBAQCBwdWJs
aWM6CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0
RWxlbWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEJsdXJFdmVudChJ
bnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7Ci0gICAgc3RhdGljIGJvb2wgcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGUoY29uc3QgSW5wdXRFbGVtZW50KiwgY29uc3QgRWxlbWVudCopOwotICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShJbnB1dEVsZW1lbnQqLCBFbGVt
ZW50KiwgYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCA9IGZhbHNlKTsKICAgICBzdGF0aWMg
dm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoSW5wdXRFbGVtZW50RGF0YSYsIElucHV0RWxlbWVu
dCosIEVsZW1lbnQqLCBib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAgc3RhdGlj
IHZvaWQgdXBkYXRlU2VsZWN0aW9uUmFuZ2UoSW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGludCBz
dGFydCwgaW50IGVuZCk7CiAgICAgc3RhdGljIHZvaWQgYWJvdXRUb1VubG9hZChJbnB1dEVsZW1l
bnQqLCBFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5k
ZXggNjFlMTEyYy4uNDU1MDIwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiVmFsaWRp
dHlTdGF0ZS5oIgogCkBAIC0zNjcsNCArMzY4LDQzIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICB9CiB9CiAKK0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jLCBIVE1MRm9ybUVsZW1lbnQqIGZv
cm0pCisgICAgOiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKHRhZ05hbWUsIGRvYywg
Zm9ybSkKK3sKK30KKworSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6On5IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCgpCit7Cit9CisKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudCgpCit7CisgICAgaWYgKHN1cHBvcnRzUGxhY2Vob2xkZXIoKSkK
KyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKKyAgICBoYW5kbGVG
b2N1c0V2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpKQorICAg
ICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIGhhbmRsZUJsdXJF
dmVudCgpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1
ckV2ZW50KCk7Cit9CisKK2Jvb2wgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3VwcG9ydHNQbGFjZWhv
bGRlcigpCisgICAgICAgICYmIGlzRW1wdHlWYWx1ZSgpCisgICAgICAgICYmIGRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkgIT0gdGhpcworICAgICAgICAmJiAhZ2V0QXR0cmlidXRlKHBsYWNlaG9s
ZGVyQXR0cikuaXNFbXB0eSgpOworfQorCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdl
ZCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpICYmIHJlbmRlcmVyKCkpCisgICAg
ICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlz
aWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hh
bmdlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYmNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oCmluZGV4IGVlN2Q3NzIuLjdiM2NmYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaApAQCAtMTQzLDYgKzE0MywyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH07CiAKK2NsYXNzIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGUgeworcHVibGljOgorICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOworICAgIHZpcnR1YWwg
fkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
Rm9jdXNFdmVudCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworCitw
cm90ZWN0ZWQ6CisgICAgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0Owor
ICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wpOworCitwcml2YXRlOgor
ICAgIC8vIEEgc3ViY2xhc3Mgc2hvdWxkIHJldHVybiB0cnVlIGlmIHBsYWNlaG9sZGVyIHByb2Nl
c3NpbmcgaXMgbmVlZGVkLgorICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkg
Y29uc3QgPSAwOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB1c2VyLWVkaXRhYmxlIHZhbHVlIGlz
IGVtcHR5LiAgVGhpcyBpcyB1c2VkIHRvIGNoZWNrIHBsYWNlaG9sZGVyIHZpc2liaWxpdHkuCisg
ICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBDYWxsZWQg
aW4gZGlzcGF0Y2hGb2N1c0V2ZW50KCksIGFmdGVyIHBsYWNlaG9sZGVyIHByb2Nlc3MsIGJlZm9y
ZSBjYWxsaW5nIHBhcmVudCdzIGRpc3BhdGNoRm9jdXNFdmVudCgpLgorICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVGb2N1c0V2ZW50KCkgeyB9CisgICAgLy8gQ2FsbGVkIGluIGRpc3BhdGNoQmx1ckV2
ZW50KCksIGFmdGVyIHBsYWNlaG9sZGVyIHByb2Nlc3MsIGJlZm9yZSBjYWxsaW5nIHBhcmVudCdz
IGRpc3BhdGNoQmx1ckV2ZW50KCkuCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVudCgp
IHsgfQorfTsKKwogfSAvL25hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA4Yjg4NGNmLi5lYWZkMjgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBjb25zdCBpbnQg
bWF4U2F2ZWRSZXN1bHRzID0gMjU2OwogCiBIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3Jt
RWxlbWVudCogZikKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFt
ZSwgZG9jLCBmKQorICAgIDogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9j
LCBmKQogICAgICwgbV94UG9zKDApCiAgICAgLCBtX3lQb3MoMCkKICAgICAsIG1fbWF4UmVzdWx0
cygtMSkKQEAgLTI1NywyMCArMjU3LDE3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxk
VXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiBtX3R5cGUgPT0gVEVYVCB8fCBtX3R5
cGUgPT0gU0VBUkNIIHx8IG1fdHlwZSA9PSBJU0lOREVYOwogfQogCi12b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRs
ZUZvY3VzRXZlbnQoKQogewogICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KHRo
aXMsIHRoaXMpOwogCiAgICAgaWYgKGlzVGV4dEZpZWxkKCkpCiAgICAgICAgIG1fYXV0b2ZpbGxl
ZCA9IGZhbHNlOwotCi0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7CiB9CiAKLXZvaWQgSFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQoKQordm9pZCBIVE1MSW5wdXRFbGVtZW50OjpoYW5kbGVCbHVyRXZlbnQoKQogewogICAg
IElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQodGhpcywgdGhpcyk7Ci0gICAgSFRNTEZv
cm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIH0KIAogdm9p
ZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IFN0cmluZyYgdCkKQEAgLTc0MSw4ICs3
MzgsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgfQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKSB7Ci0g
ICAgICAgIGlmIChpc1RleHRGaWVsZCgpKQotICAgICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KCk7CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0cnVlKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvc2F2ZUF0dHIgfHwKICAgICAgICAg
ICAgICBhdHRyLT5uYW1lKCkgPT0gaW5jcmVtZW50YWxBdHRyIHx8CiAgICAgICAgICAgICAgYXR0
ci0+bmFtZSgpID09IG1pbkF0dHIgfHwKQEAgLTgxNCw3ICs4MTAsNyBAQCBSZW5kZXJPYmplY3Qg
KkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVu
ZGVyU3R5bGUgKgogICAgICAgICBjYXNlIFRFTEVQSE9ORToKICAgICAgICAgY2FzZSBURVhUOgog
ICAgICAgICBjYXNlIFVSTDoKLSAgICAgICAgICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVW
aXNpYmxlKCkpOwogICAgIH0KICAgICBBU1NFUlQoZmFsc2UpOwogICAgIHJldHVybiAwOwpAQCAt
MTExMSw3ICsxMTA3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fZGF0YS5zZXRWYWx1
ZShzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CiAgICAgICAgICAgICBpZiAoaXNUZXh0RmllbGQoKSkg
ewotICAgICAgICAgICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KHRoaXMsIHRoaXMpOworICAgICAgICAgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eShmYWxzZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAg
ICAgICAgICAgICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAg
ICAgfQpAQCAtMTE1MSw2ICsxMTQ3LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1
ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZpbGUgdXBsb2Fk
IGNvbnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBzZXRGaWxlTGlzdEZyb21SZW5kZXJlci4KICAgICBB
U1NFUlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7CisgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmls
aXR5KGZhbHNlKTsKICAgICBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKG1fZGF0
YSwgdGhpcywgdGhpcywgdmFsdWUpOwogfQogCkBAIC0xNzkwLDExICsxNzg3LDYgQEAgYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojp3aWxsVmFsaWRhdGUoKSBjb25zdAogICAgICAgICAgICBpbnB1dFR5
cGUoKSAhPSBCVVRUT04gJiYgaW5wdXRUeXBlKCkgIT0gUkVTRVQ7CiB9CiAKLWJvb2wgSFRNTElu
cHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAotewotICAgIHJl
dHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKHRoaXMsIHRoaXMp
OwotfQotCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZShjb25zdCBT
dHJpbmcmIHNyYywgZG91YmxlKiBvdXQpCiB7CiAgICAgLy8gU2VlIEhUTUw1IDIuNC40LjMgYFJl
YWwgbnVtYmVycy4nCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA4ZjI3M2NiLi42M2QxNjM0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSFRNTE9w
dGlvbkVsZW1lbnQ7CiBjbGFzcyBLVVJMOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIAotY2xh
c3MgSFRNTElucHV0RWxlbWVudCA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlLCBwdWJsaWMgSW5wdXRFbGVtZW50IHsKK2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJs
aWMgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQsIHB1YmxpYyBJbnB1dEVsZW1lbnQgewogcHVi
bGljOgogICAgIGVudW0gSW5wdXRUeXBlIHsKICAgICAgICAgVEVYVCwKQEAgLTc1LDggKzc1LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJk
RXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlucHV0
VHlwZSgpICE9IElNQUdFOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvVW5sb2FkKCk7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CkBAIC0yMzAsOCArMjI4LDYgQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
Ym9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwotCiAgICAgLy8gQ29udmVy
dHMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8gYSBmbG9hdGluZyBudW1iZXIuCiAgICAgLy8gSWYg
dGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgZmFsc2UuIFRha2UgY2Fy
ZSB0aGF0IGxlYWRpbmcgb3IgdHJhaWxpbmcgdW5uZWNlc3NhcnkgY2hhcmFjdGVycyBtYWtlIGZh
aWx1cmVzLiAgVGhpcyByZXR1cm5zIGZhbHNlIGZvciBhbiBlbXB0eSBzdHJpbmcgaW5wdXQuCiAg
ICAgLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVyIG1heSBiZSAwLgpAQCAtMjQxLDExICsyMzcsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAotICAg
IHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCkKLSAgICB7Ci0gICAgICAgIElucHV0
RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMsIHRydWUpOwot
ICAgIH0KLQogcHJpdmF0ZToKICAgICBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmli
dXRlKCkgY29uc3Q7CiAKQEAgLTI1Myw2ICsyNDQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
Z2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNrSWZOZWVkZWQoKTsKICAgICB2b2lkIHVucmVnaXN0
ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogCisgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CisgICAg
dmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkuaXNFbXB0
eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlQmx1ckV2ZW50KCk7CisKICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5kZXhFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9I
VE1MSXNJbmRleEVsZW1lbnQuY3BwCmluZGV4IGJjZmE2MjMuLjMxZmFmYTYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MSXNJbmRleEVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgSFRNTElzSW5kZXhF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAgICAg
aWYgKGF0dHItPm5hbWUoKSA9PSBwcm9tcHRBdHRyKQogICAgICAgICBzZXRWYWx1ZShhdHRyLT52
YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKQot
ICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKKyAgICAgICAgdXBkYXRlUGxh
Y2Vob2xkZXJWaXNpYmlsaXR5KHRydWUpOwogICAgIGVsc2UKICAgICAgICAgLy8gZG9uJ3QgY2Fs
bCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSBoZXJlLCBhcyBpdCB3b3Vs
ZAogICAgICAgICAvLyBhY2NlcHQgYXR0cmlidXRlcyB0aGlzIGVsZW1lbnQgZG9lcyBub3Qgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDNjZjQ4NTIuLmYzOThm
YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQoY29uc3QgSFRNTFRleHRB
cmVhRWxlbWVudCogZWxlbWVudCkKIH0KIAogSFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRB
cmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1l
bnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pCisgICAgOiBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKICAgICAsIG1fcm93cyhkZWZhdWx0
Um93cykKICAgICAsIG1fY29scyhkZWZhdWx0Q29scykKICAgICAsIG1fd3JhcChTb2Z0V3JhcCkK
QEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIAogUmVuZGVyT2JqZWN0KiBIVE1MVGV4
dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0
eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUodGhpcyk7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpOwogfQogCiBib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJv
b2wpCkBAIC00NDgsMjkgKzQ0OCw0IEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxk
VXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCkKLSAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKSAhPSB0aGlzCi0gICAgICAgICYmICFnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRy
KS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vo
b2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5nZWQpCi17Ci0gICAgaWYg
KHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVw
ZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBw
bGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7Ci19Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6
ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHko
ZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9j
dXNFdmVudCgpOwotfQotCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOwotICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBmYmY1MTlk
Li5lZjk2ZmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CiBj
bGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCi1jbGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50IDogcHVi
bGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUgeworY2xhc3MgSFRNTFRleHRBcmVh
RWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAg
ICAgSFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBI
VE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKQEAgLTk3LDE3ICs5NywxNSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAotICAgIGJvb2wg
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBlbnVt
IFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCBo
YW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCopIGNv
bnN0OwogICAgIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVVc2VySW5wdXRWYWx1ZShjb25zdCBTdHJp
bmcmLCB1bnNpZ25lZCBtYXhMZW5ndGgpOwogICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsK
LSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFs
dWVDaGFuZ2VkKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAh
aXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZv
cm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gcmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDRmNGI1NzAuLjdkODM4ZmEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIENv
bG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kQ28KICAgICByZXR1cm4gZGlzYWJsZWRDb2xvcjsKIH0KIAotUmVuZGVyVGV4
dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9sKE5vZGUqIG5vZGUpCitSZW5kZXJUZXh0Q29udHJv
bDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUp
CiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQotICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFs
c2UpCisgICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJsZShwbGFjZWhvbGRlclZpc2libGUpCiAgICAg
LCBtX2VkaXRlZChmYWxzZSkKICAgICAsIG1fdXNlckVkaXRlZChmYWxzZSkKIHsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDMyMTJhMWIuLmNkZDg3MTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCwgYm9vbCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBSZW5kZXJUZXh0Q29udHJvbChOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRy
b2woTm9kZSosIGJvb2wpOwogCiAgICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0Owog
ICAgIHZvaWQgYWRqdXN0SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5
bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tTdHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggOGRmYjg1OC4uMWM3
MzE5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcApAQCAtMzAsMTAgKzMwLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSog
bm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFj
ZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBwbGFjZWhvbGRl
clZpc2libGUpCiB7Ci0gICAgbV9wbGFjZWhvbGRlclZpc2libGUgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4obm9kZSktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9
CiAKIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgK
aW5kZXggMzMzY2ZhOC4uMzM3MWE4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0yOCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4
dENvbnRyb2wgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUq
KTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiwgYm9vbCk7CiAgICAgdmly
dHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKTsKIAogICAgIHZvaWQgZm9yd2FyZEV2
ZW50KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmNwcAppbmRleCA3OTRiZTE3Li44ZDhiYTk3IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTQ4LDE0ICs0OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KE5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlKQorUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSwg
Ym9vbCBwbGFjZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBw
bGFjZWhvbGRlclZpc2libGUpCiAgICAgLCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQog
ICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX3NlYXJj
aEV2ZW50VGltZXIodGhpcywgJlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6c2VhcmNoRXZl
bnRUaW1lckZpcmVkKQogICAgICwgbV9zZWFyY2hQb3B1cCgwKQogewotICAgIG1fcGxhY2Vob2xk
ZXJWaXNpYmxlID0gaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7
CiB9CiAKIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZSgpCkBAIC00NjAsNyArNDU5LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogICAgIGlmIChtX3BsYWNlaG9sZGVyVmlzaWJs
ZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgaW5uZXJUZXh0RWxl
bWVudCgpLT5zZXRJbm5lclRleHQoaW5wdXRFbGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsK
KyAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQoc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0ZShwbGFjZWhvbGRlckF0dHIpLCBlYyk7CiAgICAg
ICAgIEFTU0VSVCghZWMpOwogICAgIH0gZWxzZQogICAgICAgICBzZXRJbm5lclRleHRWYWx1ZShp
bnB1dEVsZW1lbnQoKS0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4IDgxN2VmYjIuLjRhMTc5MTggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wsIHByaXZhdGUgUG9w
dXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUo
Tm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiwgYm9vbCk7CiAg
ICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKCk7CiAKICAgICBib29sIHBs
YWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDJkYmRhZjAuLmIwMjdiZjAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01M
SW5wdXRFbGVtZW50LmNwcApAQCAtMTM0LDcgKzEzNCw2IEBAIFN0cmluZyBXTUxJbnB1dEVsZW1l
bnQ6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkodGhpcywgdGhpcyk7CiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5k
ZXJlcihmYWxzZSk7CiAgICAgbV9kYXRhLnNldFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7
CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKQEAgLTIyMSw3ICsyMjAsNyBAQCB2b2lkIFdNTElucHV0
RWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNl
KQogCiBSZW5kZXJPYmplY3QqIFdNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBXTUxJ
bnB1dEVsZW1lbnQ6OmRldGFjaCgpCkBAIC0zMTgsMTEgKzMxNyw2IEBAIHZvaWQgV01MSW5wdXRF
bGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotYm9v
bCBXTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlz
LCB0aGlzKTsKLX0KLQogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRv
Y3VtZW50KCkKIHsKICAgICAvLyBBbHdheXMgdW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tz
IHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBldmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtl
IHRvIGJlIHJlZ2lzdGVyZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVu
dC5oIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKaW5kZXggN2ViMjQ1NS4uOThlYTEz
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS93bWwvV01MSW5wdXRFbGVtZW50LmgKQEAgLTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0IHsg
cmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25z
dCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJp
bmcmIHZhbHVlKSBjb25zdDsKQEAgLTgyLDcgKzgwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdCB7
IHJldHVybiBjb25zdHJhaW5WYWx1ZShwcm9wb3NlZFZhbHVlKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCk7Ci0gICAgdmlydHVhbCBib29sIHBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpOwotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="21218"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="21219"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40160</attachid>
            <date>2009-09-25 20:01:48 -0700</date>
            <delta_ts>2009-09-25 22:35:13 -0700</delta_ts>
            <desc>Proposed patch (rev.6)</desc>
            <filename>0001-Proposed-patch-6.patch</filename>
            <type>text/plain</type>
            <size>27104</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA4ZjQwMTMwNzIxYzg1NjkyMGEwNjk0NmRiNmQ4ZjA5NzIxODQyZmM4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBTYXQsIDI2IFNlcCAyMDA5IDEyOjAwOjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gUHJvcG9z
ZWQgcGF0Y2ggNgoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvZG9tL0lucHV0
RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI0ICstLS0tLS0tLQogV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgLS0KIFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgfCAgIDQwICsr
KysrKysrKysrKysrCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICAgICAg
ICAgICAgIHwgICAyMiArKysrKysrKwogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
ICAgICAgICAgICAgICAgICB8ICAgMjIgKysrLS0tLS0KIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrLS0tLQogV2ViQ29yZS9odG1sL0hU
TUxJc0luZGV4RWxlbWVudC5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAgICAgICAgICAgICAgfCAgIDI5ICstLS0tLS0tLS0t
CiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oICAgICAgICAgICAgICAgIHwgICAx
MCArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgICAgICAgICAg
IHwgICAgNCArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcCAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcCB8ICAgIDcgKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCAgIHwgICAgMiArLQogV2ViQ29yZS93bWwvV01MSW5wdXRFbGVt
ZW50LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0tLQogV2ViQ29yZS93bWwvV01MSW5w
dXRFbGVtZW50LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDMgLQogMTggZmlsZXMgY2hhbmdl
ZCwgMTUzIGluc2VydGlvbnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNkZTBjMjIuLjMzMDNiN2Yg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMDktMDktMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgcGxhY2Vob2xkZXItcmVsYXRlZCBjb2RlIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
IGZyb20KKyAgICAgICAgSFRNTElucHV0RWxlbWVudCwgV01MSW5wdXRFbGVtZW50LCBJbnB1dEVs
ZW1lbnQsIGFuZAorICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MDMKKworICAgICAgICAqIGRvbS9J
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRj
aEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoYW5kbGVGb2N1c0V2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoYW5k
bGVCbHVyRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUZvY3VzRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSXNJbmRleEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRBcmVhRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjpzdXBwb3J0c1BsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICogd21s
L1dNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6
OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIHdtbC9XTUxJbnB1dEVsZW1lbnQuaDoKKwogMjAwOS0wOS0yNSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
biBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCA5NmUzMWY0Li4xNzAxYjk1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lu
cHV0RWxlbWVudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CiAKICNp
ZiBFTkFCTEUoV01MKQogI2luY2x1ZGUgIldNTElucHV0RWxlbWVudC5oIgpAQCAtNTYsOCArNTcs
NiBAQCB2b2lkIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudCog
aW5wdXRFbGVtZW50LCBFbGVtZW50KiBlbGVtZQogICAgIGlmICghaW5wdXRFbGVtZW50LT5pc1Rl
eHRGaWVsZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGVsZW1lbnQtPmRvY3VtZW50KCk7CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZp
ZWxkKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50LT5zZXRVc2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZSh0cnVlKTsKQEAgLTczLDI5ICs3MiwxMiBAQCB2b2lk
IElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1l
bnQsIEVsZW1lbnQqIGVsZW1lbgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShpbnB1dEVsZW1lbnQsIGVsZW1lbnQpOwot
CiAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIGRvY3Vt
ZW50LT5zZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShmYWxzZSk7CiAKICAgICBm
cmFtZS0+dGV4dEZpZWxkRGlkRW5kRWRpdGluZyhlbGVtZW50KTsKIH0KIAotYm9vbCBJbnB1dEVs
ZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKGNvbnN0IElucHV0RWxlbWVudCogaW5w
dXRFbGVtZW50LCBjb25zdCBFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiBpbnB1dEVs
ZW1lbnQtPnZhbHVlKCkuaXNFbXB0eSgpCi0gICAgICAgICYmIGVsZW1lbnQtPmRvY3VtZW50KCkt
PmZvY3VzZWROb2RlKCkgIT0gZWxlbWVudAotICAgICAgICAmJiAhaW5wdXRFbGVtZW50LT5wbGFj
ZWhvbGRlcigpLmlzRW1wdHkoKTsKLX0KLQotdm9pZCBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eShJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxl
bWVudCwgYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKLXsKLSAgICBBU1NFUlQoaW5wdXRF
bGVtZW50LT5pc1RleHRGaWVsZCgpKTsKLSAgICBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSA9IGlu
cHV0RWxlbWVudC0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKTsKLSAgICBpZiAoZWxlbWVu
dC0+cmVuZGVyZXIoKSkKLSAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxl
bWVudC0+cmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRl
clZpc2libGUsIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKLX0KLQogdm9pZCBJbnB1dEVsZW1l
bnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVs
ZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCByZXN0b3JlUHJldmlv
dXNTZWxlY3Rpb24pCiB7CiAgICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7
CkBAIC0xMzksOSArMTIxLDcgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRl
cmVyKElucHV0RWxlbWVudERhdGEmIGRhdGEsIElucHV0RWxlbWVudCogaW4KIHsKICAgICAvLyBS
ZW5kZXJlciBhbmQgb3VyIGV2ZW50IGhhbmRsZXIgYXJlIHJlc3BvbnNpYmxlIGZvciBzYW5pdGl6
aW5nIHZhbHVlcy4KICAgICBBU1NFUlQodmFsdWUgPT0gaW5wdXRFbGVtZW50LT5zYW5pdGl6ZVZh
bHVlKHZhbHVlKSB8fCBpbnB1dEVsZW1lbnQtPnNhbml0aXplVmFsdWUodmFsdWUpLmlzRW1wdHko
KSk7Ci0KLSAgICBpZiAoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQotICAgICAgICB1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsKKyAgICBVTlVT
RURfUEFSQU0oaW5wdXRFbGVtZW50KTsKIAogICAgIC8vIFdvcmthcm91bmQgZm9yIGJ1ZyB3aGVy
ZSB0cmFpbGluZyBcbiBpcyBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IG9mIHRleHRDb250ZW50Lgog
ICAgIC8vIFRoZSBhc3NlcnQgbWFjcm8gYWJvdmUgbWF5IGFsc28gYmUgc2ltcGxpZmllZCB0bzog
IHZhbHVlID09IGNvbnN0cmFpblZhbHVlKHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
SW5wdXRFbGVtZW50LmggYi9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAppbmRleCA3NDZlNGYy
Li5lMGU3MTEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuaApAQCAtNDQsMTYgKzQ0LDEyIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0RmllbGQoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGxhY2Vob2xk
ZXJTaG91bGRCZVZpc2libGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHNlYXJjaEV2
ZW50c1Nob3VsZEJlRGlzcGF0Y2hlZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgaW50IHNp
emUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYpID0gMDsKIAotICAgIHZpcnR1
YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
bGFjZWhvbGRlcihjb25zdCBTdHJpbmcmKSA9IDA7Ci0KICAgICB2aXJ0dWFsIFN0cmluZyBzYW5p
dGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJikgPSAwOwogCkBAIC02Niw4ICs2Miw2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQo
SW5wdXRFbGVtZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoQmx1ckV2
ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKLSAgICBzdGF0aWMgYm9vbCBwbGFjZWhvbGRl
clNob3VsZEJlVmlzaWJsZShjb25zdCBJbnB1dEVsZW1lbnQqLCBjb25zdCBFbGVtZW50Kik7Ci0g
ICAgc3RhdGljIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KElucHV0RWxlbWVudCos
IEVsZW1lbnQqLCBib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkID0gZmFsc2UpOwogICAgIHN0
YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShJbnB1dEVsZW1lbnREYXRhJiwgSW5wdXRF
bGVtZW50KiwgRWxlbWVudCosIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICBz
dGF0aWMgdm9pZCB1cGRhdGVTZWxlY3Rpb25SYW5nZShJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kiwg
aW50IHN0YXJ0LCBpbnQgZW5kKTsKICAgICBzdGF0aWMgdm9pZCBhYm91dFRvVW5sb2FkKElucHV0
RWxlbWVudCosIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBiYzc0ZWNmLi44ZTY2ZmUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgorI2luY2x1ZGUgIlJl
bmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJW
YWxpZGl0eVN0YXRlLmgiCiAKQEAgLTM2OCw0ICszNjksNDMgQEAgdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogICAgIH0KIH0KIAor
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVu
dCogZm9ybSkKKyAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwg
ZG9jLCBmb3JtKQoreworfQorCitIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50KCkKK3sKK30KKwordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRl
cigpKQorICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgIGhh
bmRsZUZvY3VzRXZlbnQoKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpk
aXNwYXRjaEZvY3VzRXZlbnQoKTsKK30KKwordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9sZGVyKCkp
CisgICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CisgICAgaGFuZGxl
Qmx1ckV2ZW50KCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0
Y2hCbHVyRXZlbnQoKTsKK30KKworYm9vbCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAoreworICAgIHJldHVybiBzdXBwb3J0c1Bs
YWNlaG9sZGVyKCkKKyAgICAgICAgJiYgaXNFbXB0eVZhbHVlKCkKKyAgICAgICAgJiYgZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCisgICAgICAgICYmICFnZXRBdHRyaWJ1dGUocGxh
Y2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVD
aGFuZ2VkKQoreworICAgIGlmIChzdXBwb3J0c1BsYWNlaG9sZGVyKCkgJiYgcmVuZGVyZXIoKSkK
KyAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigpKS0+dXBkYXRlUGxhY2Vob2xk
ZXJWaXNpYmlsaXR5KHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCksIHBsYWNlaG9sZGVyVmFs
dWVDaGFuZ2VkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViY29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uN2IzY2ZiZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xNDMsNiArMTQzLDI4IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfTsKIAorY2xhc3Mg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSB7CitwdWJsaWM6CisgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7CisgICAgdmly
dHVhbCB+SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hGb2N1c0V2ZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7
CisKK3Byb3RlY3RlZDoKKyAgICBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29u
c3Q7CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCk7CisKK3ByaXZh
dGU6CisgICAgLy8gQSBzdWJjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxhY2Vob2xkZXIg
cHJvY2Vzc2luZyBpcyBuZWVkZWQuCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xk
ZXIoKSBjb25zdCA9IDA7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHVzZXItZWRpdGFibGUgdmFs
dWUgaXMgZW1wdHkuICBUaGlzIGlzIHVzZWQgdG8gY2hlY2sgcGxhY2Vob2xkZXIgdmlzaWJpbGl0
eS4KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgPSAwOworICAgIC8vIENh
bGxlZCBpbiBkaXNwYXRjaEZvY3VzRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2Vzcywg
YmVmb3JlIGNhbGxpbmcgcGFyZW50J3MgZGlzcGF0Y2hGb2N1c0V2ZW50KCkuCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUZvY3VzRXZlbnQoKSB7IH0KKyAgICAvLyBDYWxsZWQgaW4gZGlzcGF0Y2hC
bHVyRXZlbnQoKSwgYWZ0ZXIgcGxhY2Vob2xkZXIgcHJvY2VzcywgYmVmb3JlIGNhbGxpbmcgcGFy
ZW50J3MgZGlzcGF0Y2hCbHVyRXZlbnQoKS4KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2
ZW50KCkgeyB9Cit9OworCiB9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCmluZGV4IDViYTc4MGEuLjBhZWZlN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIGNvbnN0
IGludCBtYXhTYXZlZFJlc3VsdHMgPSAyNTY7CiAKIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYywgSFRN
TEZvcm1FbGVtZW50KiBmKQotICAgIDogSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSh0
YWdOYW1lLCBkb2MsIGYpCisgICAgOiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1l
LCBkb2MsIGYpCiAgICAgLCBtX3hQb3MoMCkKICAgICAsIG1feVBvcygwKQogICAgICwgbV9tYXhS
ZXN1bHRzKC0xKQpAQCAtMjU3LDIwICsyNTcsMTcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpz
aG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdHlwZSA9PSBURVhUIHx8
IG1fdHlwZSA9PSBTRUFSQ0ggfHwgbV90eXBlID09IElTSU5ERVg7CiB9CiAKLXZvaWQgSFRNTElu
cHV0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6
aGFuZGxlRm9jdXNFdmVudCgpCiB7CiAgICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZl
bnQodGhpcywgdGhpcyk7CiAKICAgICBpZiAoaXNUZXh0RmllbGQoKSkKICAgICAgICAgbV9hdXRv
ZmlsbGVkID0gZmFsc2U7Ci0KLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpk
aXNwYXRjaEZvY3VzRXZlbnQoKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpkaXNwYXRj
aEJsdXJFdmVudCgpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUJsdXJFdmVudCgpCiB7
CiAgICAgSW5wdXRFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudCh0aGlzLCB0aGlzKTsKLSAgICBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJFdmVudCgpOwogfQog
CiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0KQpAQCAtNzQx
LDggKzczOCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICB9CiAgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0dHIp
IHsKLSAgICAgICAgaWYgKGlzVGV4dEZpZWxkKCkpCi0gICAgICAgICAgICB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoKTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRy
dWUpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1dG9zYXZlQXR0ciB8fAogICAg
ICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBpbmNyZW1lbnRhbEF0dHIgfHwKICAgICAgICAgICAg
ICBhdHRyLT5uYW1lKCkgPT0gbWluQXR0ciB8fApAQCAtODE0LDcgKzgxMCw3IEBAIFJlbmRlck9i
amVjdCAqSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEgKmFyZW5h
LCBSZW5kZXJTdHlsZSAqCiAgICAgICAgIGNhc2UgVEVMRVBIT05FOgogICAgICAgICBjYXNlIFRF
WFQ6CiAgICAgICAgIGNhc2UgVVJMOgotICAgICAgICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0aGlzKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgcGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGUoKSk7CiAgICAgfQogICAgIEFTU0VSVChmYWxzZSk7CiAgICAgcmV0dXJuIDA7
CkBAIC0xMTExLDcgKzExMDcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbV9kYXRhLnNl
dFZhbHVlKHNhbml0aXplVmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIGlmIChpc1RleHRGaWVs
ZCgpKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkodGhpcywgdGhpcyk7CisgICAgICAgICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KGZhbHNlKTsKICAgICAgICAgICAgICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAg
ICAgICAgICB9CkBAIC0xMTUxLDYgKzExNDcsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRmlsZSB1
cGxvYWQgY29udHJvbHMgd2lsbCBhbHdheXMgdXNlIHNldEZpbGVMaXN0RnJvbVJlbmRlcmVyLgog
ICAgIEFTU0VSVChpbnB1dFR5cGUoKSAhPSBGSUxFKTsKKyAgICB1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoZmFsc2UpOwogICAgIElucHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIo
bV9kYXRhLCB0aGlzLCB0aGlzLCB2YWx1ZSk7CiB9CiAKQEAgLTE3OTAsMTEgKzE3ODcsNiBAQCBi
b29sIEhUTUxJbnB1dEVsZW1lbnQ6OndpbGxWYWxpZGF0ZSgpIGNvbnN0CiAgICAgICAgICAgIGlu
cHV0VHlwZSgpICE9IEJVVFRPTiAmJiBpbnB1dFR5cGUoKSAhPSBSRVNFVDsKIH0KIAotYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUodGhpcywg
dGhpcyk7Ci19Ci0KIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Zm9ybVN0cmluZ1RvRG91YmxlKGNv
bnN0IFN0cmluZyYgc3JjLCBkb3VibGUqIG91dCkKIHsKICAgICAvLyBTZWUgSFRNTDUgMi40LjQu
MyBgUmVhbCBudW1iZXJzLicKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IDhmMjczY2IuLjYz
ZDE2MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBI
VE1MT3B0aW9uRWxlbWVudDsKIGNsYXNzIEtVUkw7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwog
Ci1jbGFzcyBIVE1MSW5wdXRFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUsIHB1YmxpYyBJbnB1dEVsZW1lbnQgeworY2xhc3MgSFRNTElucHV0RWxlbWVudCA6
IHB1YmxpYyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCwgcHVibGljIElucHV0RWxlbWVudCB7
CiBwdWJsaWM6CiAgICAgZW51bSBJbnB1dFR5cGUgewogICAgICAgICBURVhULApAQCAtNzUsOCAr
NzUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5
Ym9hcmRFdmVudCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
aW5wdXRUeXBlKCkgIT0gSU1BR0U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2
ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlv
bik7CiAgICAgdmlydHVhbCB2b2lkIGFib3V0VG9VbmxvYWQoKTsKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKQEAgLTIzMCw4ICsyMjgsNiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0OwogCi0gICAgdmly
dHVhbCBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7Ci0KICAgICAvLyBD
b252ZXJ0cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGZsb2F0aW5nIG51bWJlci4KICAgICAv
LyBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgdGhlIHJldHVybiB2YWx1ZSBpcyBmYWxzZS4gVGFr
ZSBjYXJlIHRoYXQgbGVhZGluZyBvciB0cmFpbGluZyB1bm5lY2Vzc2FyeSBjaGFyYWN0ZXJzIG1h
a2UgZmFpbHVyZXMuICBUaGlzIHJldHVybnMgZmFsc2UgZm9yIGFuIGVtcHR5IHN0cmluZyBpbnB1
dC4KICAgICAvLyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAuCkBAIC0yNDEsMTEgKzIz
Nyw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwog
Ci0gICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKQotICAgIHsKLSAgICAgICAg
SW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkodGhpcywgdGhpcywgdHJ1
ZSk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGJvb2wgc3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21B
dHRyaWJ1dGUoKSBjb25zdDsKIApAQCAtMjUzLDYgKzI0NCwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOwogICAgIHZvaWQgdW5y
ZWdpc3RlckZvckFjdGl2YXRpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKS5p
c0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRm9jdXNFdmVudCgpOworICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKTsKKwogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlv
bmFsRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKaW5kZXggYmNmYTYyMy4uMzFmYWZhNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBIVE1MSXNJ
bmRleEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikK
ICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHByb21wdEF0dHIpCiAgICAgICAgIHNldFZhbHVlKGF0
dHItPnZhbHVlKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0
dHIpCi0gICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSgpOworICAgICAgICB1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkodHJ1ZSk7CiAgICAgZWxzZQogICAgICAgICAvLyBkb24n
dCBjYWxsIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlIGhlcmUsIGFzIGl0
IHdvdWxkCiAgICAgICAgIC8vIGFjY2VwdCBhdHRyaWJ1dGVzIHRoaXMgZWxlbWVudCBkb2VzIG5v
dCBzdXBwb3J0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5j
cHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggM2NmNDg1Mi4u
ZjM5OGZjMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtNjMsNyArNjMs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZChjb25zdCBIVE1M
VGV4dEFyZWFFbGVtZW50KiBlbGVtZW50KQogfQogCiBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1M
VGV4dEFyZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQotICAgIDogSFRNTEZvcm1Db250cm9sRWxl
bWVudFdpdGhTdGF0ZSh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSkKKyAgICA6IEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtKQogICAgICwgbV9yb3dzKGRl
ZmF1bHRSb3dzKQogICAgICwgbV9jb2xzKGRlZmF1bHRDb2xzKQogICAgICwgbV93cmFwKFNvZnRX
cmFwKQpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogCiBSZW5kZXJPYmplY3QqIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogewotICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZSh0aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUodGhpcywgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSk7CiB9CiAKIGJvb2wg
SFRNTFRleHRBcmVhRWxlbWVudDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGlu
ZywgYm9vbCkKQEAgLTQ0OCwyOSArNDQ4LDQgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpz
aG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
SFRNTFRleHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdAot
ewotICAgIHJldHVybiB2YWx1ZSgpLmlzRW1wdHkoKQotICAgICAgICAmJiBkb2N1bWVudCgpLT5m
b2N1c2VkTm9kZSgpICE9IHRoaXMKLSAgICAgICAgJiYgIWdldEF0dHJpYnV0ZShwbGFjZWhvbGRl
ckF0dHIpLmlzRW1wdHkoKTsKLX0KLQotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQ
bGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKLXsKLSAg
ICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigp
KS0+dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KCksIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKLX0KLQotdm9pZCBIVE1MVGV4dEFyZWFFbGVt
ZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQoKQotewotICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJp
bGl0eShmYWxzZSk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0
Y2hGb2N1c0V2ZW50KCk7Ci19Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hC
bHVyRXZlbnQoKQotewotICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7Ci0g
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoKTsK
LX0KLQogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGZi
ZjUxOWQuLmVmOTZmYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtMzEsNyAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dDsKIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKLWNsYXNzIEhUTUxUZXh0QXJlYUVsZW1lbnQg
OiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSB7CitjbGFzcyBIVE1MVGV4
dEFyZWFFbGVtZW50IDogcHVibGljIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IHsKIHB1Ymxp
YzoKICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCosIEhUTUxGb3JtRWxlbWVudCogPSAwKTsKIApAQCAtOTcsMTcgKzk3LDE1IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwogCi0gICAg
Ym9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IGVudW0gV3JhcE1ldGhvZCB7IE5vV3JhcCwgU29mdFdyYXAsIEhhcmRXcmFwIH07CiAKICAgICB2
b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50
KikgY29uc3Q7CiAgICAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0
IFN0cmluZyYsIHVuc2lnbmVkIG1heExlbmd0aCk7CiAgICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNv
bnN0OwotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xk
ZXJWYWx1ZUNoYW5nZWQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKKworICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmlzRW1wdHkoKTsg
fQogCiAgICAgdmlydHVhbCBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IHsgcmV0
dXJuICFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVp
cmVkRm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiByZXF1aXJlZCgpOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggY2Q5MDg1NC4uZjQzMDM5OSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtNjcsOSArNjcsOSBAQCBzdGF0
aWMgQ29sb3IgZGlzYWJsZWRUZXh0Q29sb3IoY29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3Qg
Q29sb3ImIGJhY2tncm91bmRDbwogICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwogfQogCi1SZW5k
ZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSogbm9kZSkKK1JlbmRlclRleHRD
b250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlLCBib29sIHBsYWNlaG9sZGVyVmlz
aWJsZSkKICAgICA6IFJlbmRlckJsb2NrKG5vZGUpCi0gICAgLCBtX3BsYWNlaG9sZGVyVmlzaWJs
ZShmYWxzZSkKKyAgICAsIG1fcGxhY2Vob2xkZXJWaXNpYmxlKHBsYWNlaG9sZGVyVmlzaWJsZSkK
ICAgICAsIG1fZWRpdGVkKGZhbHNlKQogICAgICwgbV91c2VyRWRpdGVkKGZhbHNlKQogewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggMzIxMmExYi4uY2RkODcxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC01OSw3ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sLCBib29sKTsKIAog
cHJvdGVjdGVkOgotICAgIFJlbmRlclRleHRDb250cm9sKE5vZGUqKTsKKyAgICBSZW5kZXJUZXh0
Q29udHJvbChOb2RlKiwgYm9vbCk7CiAKICAgICBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKCkgY29u
c3Q7CiAgICAgdm9pZCBhZGp1c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3Rh
cnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRleHRCbG9ja1N0eWxlKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCAzZjBkMDQx
Li44NDc4NDMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuY3BwCkBAIC0zMSwxMCArMzEsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShO
b2RlKiBub2RlKQotICAgIDogUmVuZGVyVGV4dENvbnRyb2wobm9kZSkKK1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZShOb2RlKiBub2RlLCBib29s
IHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUsIHBsYWNl
aG9sZGVyVmlzaWJsZSkKIHsKLSAgICBtX3BsYWNlaG9sZGVyVmlzaWJsZSA9IHN0YXRpY19jYXN0
PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
KTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaAppbmRleCAzMzNjZmE4Li4zMzcxYThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSA6IHB1YmxpYyBSZW5k
ZXJUZXh0Q29udHJvbCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUo
Tm9kZSopOworICAgIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqLCBib29sKTsKICAg
ICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSgpOwogCiAgICAgdm9pZCBmb3J3
YXJkRXZlbnQoRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IDc5NGJlMTcuLjhkOGJhOTcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNDgsMTQg
KzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sKG5vZGUpCitSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShOb2RlKiBu
b2RlLCBib29sIHBsYWNlaG9sZGVyVmlzaWJsZSkKKyAgICA6IFJlbmRlclRleHRDb250cm9sKG5v
ZGUsIHBsYWNlaG9sZGVyVmlzaWJsZSkKICAgICAsIG1fc2VhcmNoUG9wdXBJc1Zpc2libGUoZmFs
c2UpCiAgICAgLCBtX3Nob3VsZERyYXdDYXBzTG9ja0luZGljYXRvcihmYWxzZSkKICAgICAsIG1f
c2VhcmNoRXZlbnRUaW1lcih0aGlzLCAmUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpzZWFy
Y2hFdmVudFRpbWVyRmlyZWQpCiAgICAgLCBtX3NlYXJjaFBvcHVwKDApCiB7Ci0gICAgbV9wbGFj
ZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXJTaG91bGRCZVZpc2li
bGUoKTsKIH0KIAogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKCkKQEAgLTQ2MCw3ICs0NTksNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6dXBkYXRlRnJvbUVsZW1lbnQoKQogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJW
aXNpYmxlKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5lclRl
eHRFbGVtZW50KCktPnNldElubmVyVGV4dChpbnB1dEVsZW1lbnQoKS0+cGxhY2Vob2xkZXIoKSwg
ZWMpOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dChzdGF0aWNfY2Fz
dDxFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmlidXRlKHBsYWNlaG9sZGVyQXR0ciksIGVjKTsK
ICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfSBlbHNlCiAgICAgICAgIHNldElubmVyVGV4dFZh
bHVlKGlucHV0RWxlbWVudCgpLT52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggODE3ZWZiMi4uNGExNzkxOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTM2
LDcgKzM2LDcgQEAgY2xhc3MgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSA6IHB1YmxpYyBSZW5kZXJUZXh0Q29udHJvbCwgcHJpdmF0
ZSBQb3B1cE1lbnVDbGllbnQgewogcHVibGljOgotICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZShOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5vZGUqLCBib29s
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAogICAgIGJv
b2wgcGxhY2Vob2xkZXJJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3BsYWNlaG9sZGVyVmlz
aWJsZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcCBiL1dl
YkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMmRiZGFmMC4uYjAyN2JmMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL3dt
bC9XTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMzQsNyArMTM0LDYgQEAgU3RyaW5nIFdNTElucHV0
RWxlbWVudDo6dmFsdWUoKSBjb25zdAogCiB2b2lkIFdNTElucHV0RWxlbWVudDo6c2V0VmFsdWUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBJbnB1dEVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9s
ZGVyVmlzaWJpbGl0eSh0aGlzLCB0aGlzKTsKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKICAgICBtX2RhdGEuc2V0VmFsdWUoY29uc3RyYWluVmFsdWUodmFs
dWUpKTsKICAgICBpZiAoaW5Eb2N1bWVudCgpKQpAQCAtMjIxLDcgKzIyMCw3IEBAIHZvaWQgV01M
SW5wdXRFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhjb25zdCBFbGVtZW50KiBz
b3VyY2UpCiAKIFJlbmRlck9iamVjdCogV01MSW5wdXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChhcmVu
YSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKHRoaXMpOworICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcywgZmFsc2UpOwogfQogCiB2b2lk
IFdNTElucHV0RWxlbWVudDo6ZGV0YWNoKCkKQEAgLTMxOCwxMSArMzE3LDYgQEAgdm9pZCBXTUxJ
bnB1dEVsZW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkKICAgICByZXNldCgpOwogfQog
Ci1ib29sIFdNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25z
dAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxl
KHRoaXMsIHRoaXMpOwotfQotCiB2b2lkIFdNTElucHV0RWxlbWVudDo6d2lsbE1vdmVUb05ld093
bmVyRG9jdW1lbnQoKQogewogICAgIC8vIEFsd2F5cyB1bnJlZ2lzdGVyIGZvciBjYWNoZSBjYWxs
YmFja3Mgd2hlbiBsZWF2aW5nIGEgZG9jdW1lbnQsIGV2ZW4gaWYgd2Ugd291bGQgb3RoZXJ3aXNl
IGxpa2UgdG8gYmUgcmVnaXN0ZXJlZApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93bWwvV01MSW5wdXRF
bGVtZW50LmggYi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAppbmRleCA3ZWIyNDU1Li45
OGVhMTNhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuaApAQCAtNTgsOCArNTgsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgU3RyaW5nIHBsYWNlaG9sZGVyKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vob2xkZXIo
Y29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRnJvbVJlbmRlcmVy
KGNvbnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCBib29sIHNhdmVGb3JtQ29udHJvbFN0YXRl
KFN0cmluZyYgdmFsdWUpIGNvbnN0OwpAQCAtODIsNyArODAsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0cmFpblZhbHVlKHByb3Bvc2VkVmFsdWUpOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxs
TW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCk7Ci0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40162</attachid>
            <date>2009-09-25 22:35:13 -0700</date>
            <delta_ts>2009-09-26 11:56:13 -0700</delta_ts>
            <desc>Proposed patch (rev.7)</desc>
            <filename>0001-Proposed-patch-7.patch</filename>
            <type>text/plain</type>
            <size>27129</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA3NzdlNjE0OGFhNmY0NjFiOGRjMDFmNjcwMzI2ZDEwYWRmN2ZjNmEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBTYXQsIDI2IFNlcCAyMDA5IDEyOjAwOjE0ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gUHJvcG9z
ZWQgcGF0Y2ggNwoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICA1OCArKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvZG9tL0lucHV0
RWxlbWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI0ICstLS0tLS0tLQogV2ViQ29y
ZS9kb20vSW5wdXRFbGVtZW50LmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgLS0KIFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgfCAgIDQwICsr
KysrKysrKysrKysrCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICAgICAg
ICAgICAgIHwgICAyMiArKysrKysrKwogV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
ICAgICAgICAgICAgICAgICB8ICAgMjIgKysrLS0tLS0KIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrLS0tLQogV2ViQ29yZS9odG1sL0hU
TUxJc0luZGV4RWxlbWVudC5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAgICAgICAgICAgICAgfCAgIDI5ICstLS0tLS0tLS0t
CiBXZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oICAgICAgICAgICAgICAgIHwgICAx
MCArKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgICAgICAgICAg
IHwgICAgNCArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCAgICAgICAg
ICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmNwcCAgfCAgICA1ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcCB8ICAgIDcgKy0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCAgIHwgICAgMiArLQogV2ViQ29yZS93bWwvV01MSW5wdXRFbGVt
ZW50LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgIDggKy0tLQogV2ViQ29yZS93bWwvV01MSW5w
dXRFbGVtZW50LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDMgLQogMTggZmlsZXMgY2hhbmdl
ZCwgMTUyIGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNkZTBjMjIuLjMzMDNiN2Yg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjEgQEAKKzIwMDktMDktMjUgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgcGxhY2Vob2xkZXItcmVsYXRlZCBjb2RlIHRvIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
IGZyb20KKyAgICAgICAgSFRNTElucHV0RWxlbWVudCwgV01MSW5wdXRFbGVtZW50LCBJbnB1dEVs
ZW1lbnQsIGFuZAorICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg3MDMKKworICAgICAgICAqIGRvbS9J
bnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRj
aEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJl
bmRlcmVyKToKKyAgICAgICAgKiBkb20vSW5wdXRFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6fkhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXNwYXRjaEZvY3VzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoYW5kbGVGb2N1c0V2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpoYW5k
bGVCbHVyRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUZvY3VzRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aGFuZGxlQmx1ckV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKiBodG1s
L0hUTUxJbnB1dEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6
OnN1cHBvcnRzUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6aXNFbXB0eVZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxJc0luZGV4RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MSXNJbmRleEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRBcmVhRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VGV4dEFyZWFFbGVtZW50OjpzdXBwb3J0c1BsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlzRW1wdHlWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sOjpSZW5kZXJUZXh0Q29udHJvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmg6CisgICAgICAgICogd21s
L1dNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXTUxJbnB1dEVsZW1lbnQ6
OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OldNTElucHV0RWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIpOgorICAgICAgICAqIHdtbC9XTUxJbnB1dEVsZW1lbnQuaDoKKwogMjAwOS0wOS0yNSAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
biBIb25leWN1dHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmNwcAppbmRleCA5NmUzMWY0Li5jMjljYjFjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2RvbS9JbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0lu
cHV0RWxlbWVudC5jcHAKQEAgLTU2LDggKzU2LDYgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3Bh
dGNoRm9jdXNFdmVudChJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVudCogZWxlbWUK
ICAgICBpZiAoIWlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGlucHV0RWxlbWVudCwgZWxlbWVudCk7
Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBlbGVtZW50LT5kb2N1bWVudCgpOwogICAgIGlm
IChpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpICYmIGRvY3VtZW50LT5mcmFtZSgpKQog
ICAgICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZW5BY3RpdmUodHJ1
ZSk7CkBAIC03MywyOSArNzEsMTIgQEAgdm9pZCBJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBFbGVtZW50KiBlbGVtZW4KICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsKLQogICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzUGFz
c3dvcmRGaWVsZCgpKQogICAgICAgICBkb2N1bWVudC0+c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eVdoZW5BY3RpdmUoZmFsc2UpOwogCiAgICAgZnJhbWUtPnRleHRGaWVsZERpZEVuZEVkaXRpbmco
ZWxlbWVudCk7CiB9CiAKLWJvb2wgSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZShjb25zdCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgY29uc3QgRWxlbWVudCogZWxl
bWVudCkKLXsKLSAgICByZXR1cm4gaW5wdXRFbGVtZW50LT52YWx1ZSgpLmlzRW1wdHkoKQotICAg
ICAgICAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpICE9IGVsZW1lbnQKLSAg
ICAgICAgJiYgIWlucHV0RWxlbWVudC0+cGxhY2Vob2xkZXIoKS5pc0VtcHR5KCk7Ci19Ci0KLXZv
aWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNo
YW5nZWQpCi17Ci0gICAgQVNTRVJUKGlucHV0RWxlbWVudC0+aXNUZXh0RmllbGQoKSk7Ci0gICAg
Ym9vbCBwbGFjZWhvbGRlclZpc2libGUgPSBpbnB1dEVsZW1lbnQtPnBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCk7Ci0gICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT51cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkocGxhY2Vob2xkZXJWaXNpYmxlLCBwbGFjZWhvbGRlclZhbHVlQ2hh
bmdlZCk7Ci19Ci0KIHZvaWQgSW5wdXRFbGVtZW50Ojp1cGRhdGVGb2N1c0FwcGVhcmFuY2UoSW5w
dXRFbGVtZW50RGF0YSYgZGF0YSwgSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIEVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQogewogICAgIEFTU0VSVChp
bnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkpOwpAQCAtMTM4LDEwICsxMTksNyBAQCB2b2lkIElu
cHV0RWxlbWVudDo6YWJvdXRUb1VubG9hZChJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxl
bWVudCogZWxlbWVudCkKIHZvaWQgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihJ
bnB1dEVsZW1lbnREYXRhJiBkYXRhLCBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBSZW5kZXJlciBhbmQg
b3VyIGV2ZW50IGhhbmRsZXIgYXJlIHJlc3BvbnNpYmxlIGZvciBzYW5pdGl6aW5nIHZhbHVlcy4K
LSAgICBBU1NFUlQodmFsdWUgPT0gaW5wdXRFbGVtZW50LT5zYW5pdGl6ZVZhbHVlKHZhbHVlKSB8
fCBpbnB1dEVsZW1lbnQtPnNhbml0aXplVmFsdWUodmFsdWUpLmlzRW1wdHkoKSk7Ci0KLSAgICBp
ZiAoaW5wdXRFbGVtZW50LT5pc1RleHRGaWVsZCgpKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkoaW5wdXRFbGVtZW50LCBlbGVtZW50KTsKKyAgICBBU1NFUlRfVU5VU0VEKGlu
cHV0RWxlbWVudCwgdmFsdWUgPT0gaW5wdXRFbGVtZW50LT5zYW5pdGl6ZVZhbHVlKHZhbHVlKSB8
fCBpbnB1dEVsZW1lbnQtPnNhbml0aXplVmFsdWUodmFsdWUpLmlzRW1wdHkoKSk7CiAKICAgICAv
LyBXb3JrYXJvdW5kIGZvciBidWcgd2hlcmUgdHJhaWxpbmcgXG4gaXMgaW5jbHVkZWQgaW4gdGhl
IHJlc3VsdCBvZiB0ZXh0Q29udGVudC4KICAgICAvLyBUaGUgYXNzZXJ0IG1hY3JvIGFib3ZlIG1h
eSBhbHNvIGJlIHNpbXBsaWZpZWQgdG86ICB2YWx1ZSA9PSBjb25zdHJhaW5WYWx1ZSh2YWx1ZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0lucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9kb20vSW5w
dXRFbGVtZW50LmgKaW5kZXggNzQ2ZTRmMi4uZTBlNzExMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9k
b20vSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vSW5wdXRFbGVtZW50LmgKQEAgLTQ0
LDE2ICs0NCwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3QgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgYm9vbCBzZWFyY2hFdmVudHNTaG91bGRCZURpc3BhdGNoZWQoKSBjb25zdCA9
IDA7CiAKICAgICB2aXJ0dWFsIGludCBzaXplKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3Ry
aW5nIHZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBT
dHJpbmcmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0ID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxhY2Vob2xkZXIoY29uc3QgU3RyaW5nJikgPSAwOwot
CiAgICAgdmlydHVhbCBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYp
ID0gMDsKIApAQCAtNjYsOCArNjIsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KElucHV0RWxlbWVudCosIEVsZW1lbnQqKTsKICAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaEJsdXJFdmVudChJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7Ci0g
ICAgc3RhdGljIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUoY29uc3QgSW5wdXRFbGVt
ZW50KiwgY29uc3QgRWxlbWVudCopOwotICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShJbnB1dEVsZW1lbnQqLCBFbGVtZW50KiwgYm9vbCBwbGFjZWhvbGRlclZhbHVl
Q2hhbmdlZCA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2Uo
SW5wdXRFbGVtZW50RGF0YSYsIElucHV0RWxlbWVudCosIEVsZW1lbnQqLCBib29sIHJlc3RvcmVQ
cmV2aW91c1NlbGVjdGlvbik7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uUmFuZ2Uo
SW5wdXRFbGVtZW50KiwgRWxlbWVudCosIGludCBzdGFydCwgaW50IGVuZCk7CiAgICAgc3RhdGlj
IHZvaWQgYWJvdXRUb1VubG9hZChJbnB1dEVsZW1lbnQqLCBFbGVtZW50Kik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggYmM3NGVjZi4uOGU2NmZlMCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZW5kZXJCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiVmFsaWRpdHlTdGF0ZS5oIgogCkBAIC0zNjgsNCArMzY5
LDQzIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKICAgICB9CiB9CiAKK0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCisgICAgOiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlKHRhZ05hbWUsIGRvYywgZm9ybSkKK3sKK30KKworSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6On5IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCgpCit7Cit9CisKK3Zv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgpCit7Cisg
ICAgaWYgKHN1cHBvcnRzUGxhY2Vob2xkZXIoKSkKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KGZhbHNlKTsKKyAgICBoYW5kbGVGb2N1c0V2ZW50KCk7CisgICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Cit9CisKK3ZvaWQg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKK3sKKyAgICBp
ZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpKQorICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZpc2li
aWxpdHkoZmFsc2UpOworICAgIGhhbmRsZUJsdXJFdmVudCgpOworICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Cit9CisKK2Jvb2wgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gc3VwcG9ydHNQbGFjZWhvbGRlcigpCisgICAgICAgICYmIGlzRW1wdHlW
YWx1ZSgpCisgICAgICAgICYmIGRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkgIT0gdGhpcworICAg
ICAgICAmJiAhZ2V0QXR0cmlidXRlKHBsYWNlaG9sZGVyQXR0cikuaXNFbXB0eSgpOworfQorCit2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxp
dHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCkKK3sKKyAgICBpZiAoc3VwcG9ydHNQbGFj
ZWhvbGRlcigpICYmIHJlbmRlcmVyKCkpCisgICAgICAgIHRvUmVuZGVyVGV4dENvbnRyb2wocmVu
ZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShwbGFjZWhvbGRlclNob3VsZEJl
VmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYmNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGVlN2Q3NzIu
LjdiM2NmYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTQzLDYg
KzE0MywyOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVy
RG9jdW1lbnQoKTsKIH07CiAKK2NsYXNzIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50IDogcHVi
bGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUgeworcHVibGljOgorICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhU
TUxGb3JtRWxlbWVudCopOworICAgIHZpcnR1YWwgfkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaEJsdXJFdmVudCgpOworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBwbGFjZWhv
bGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KGJvb2wpOworCitwcml2YXRlOgorICAgIC8vIEEgc3ViY2xhc3Mgc2hvdWxkIHJl
dHVybiB0cnVlIGlmIHBsYWNlaG9sZGVyIHByb2Nlc3NpbmcgaXMgbmVlZGVkLgorICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c1BsYWNlaG9sZGVyKCkgY29uc3QgPSAwOworICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB1c2VyLWVkaXRhYmxlIHZhbHVlIGlzIGVtcHR5LiAgVGhpcyBpcyB1c2VkIHRvIGNo
ZWNrIHBsYWNlaG9sZGVyIHZpc2liaWxpdHkuCisgICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1
ZSgpIGNvbnN0ID0gMDsKKyAgICAvLyBDYWxsZWQgaW4gZGlzcGF0Y2hGb2N1c0V2ZW50KCksIGFm
dGVyIHBsYWNlaG9sZGVyIHByb2Nlc3MsIGJlZm9yZSBjYWxsaW5nIHBhcmVudCdzIGRpc3BhdGNo
Rm9jdXNFdmVudCgpLgorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVGb2N1c0V2ZW50KCkgeyB9Cisg
ICAgLy8gQ2FsbGVkIGluIGRpc3BhdGNoQmx1ckV2ZW50KCksIGFmdGVyIHBsYWNlaG9sZGVyIHBy
b2Nlc3MsIGJlZm9yZSBjYWxsaW5nIHBhcmVudCdzIGRpc3BhdGNoQmx1ckV2ZW50KCkuCisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUJsdXJFdmVudCgpIHsgfQorfTsKKwogfSAvL25hbWVzcGFjZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBi
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA1YmE3ODBhLi4wYWVmZTdm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBjb25zdCBpbnQgbWF4U2F2ZWRSZXN1bHRzID0gMjU2OwogCiBI
VE1MSW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MsIEhUTUxGb3JtRWxlbWVudCogZikKLSAgICA6IEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jLCBmKQorICAgIDogSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQodGFnTmFtZSwgZG9jLCBmKQogICAgICwgbV94UG9zKDApCiAgICAg
LCBtX3lQb3MoMCkKICAgICAsIG1fbWF4UmVzdWx0cygtMSkKQEAgLTI1NywyMCArMjU3LDE3IEBA
IGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAg
IHJldHVybiBtX3R5cGUgPT0gVEVYVCB8fCBtX3R5cGUgPT0gU0VBUkNIIHx8IG1fdHlwZSA9PSBJ
U0lOREVYOwogfQogCi12b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCgp
Cit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmhhbmRsZUZvY3VzRXZlbnQoKQogewogICAgIElucHV0
RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KHRoaXMsIHRoaXMpOwogCiAgICAgaWYgKGlzVGV4
dEZpZWxkKCkpCiAgICAgICAgIG1fYXV0b2ZpbGxlZCA9IGZhbHNlOwotCi0gICAgSFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CiB9CiAKLXZvaWQg
SFRNTElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoKQordm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpoYW5kbGVCbHVyRXZlbnQoKQogewogICAgIElucHV0RWxlbWVudDo6ZGlzcGF0Y2hCbHVy
RXZlbnQodGhpcywgdGhpcyk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6
ZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBl
KGNvbnN0IFN0cmluZyYgdCkKQEAgLTc0MSw4ICs3MzgsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAg
fQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKSB7Ci0gICAgICAgIGlmIChpc1RleHRGaWVsZCgpKQot
ICAgICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CisgICAgICAgIHVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eSh0cnVlKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBhdXRvc2F2ZUF0dHIgfHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gaW5jcmVt
ZW50YWxBdHRyIHx8CiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IG1pbkF0dHIgfHwKQEAg
LTgxNCw3ICs4MTAsNyBAQCBSZW5kZXJPYmplY3QgKkhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwgUmVuZGVyU3R5bGUgKgogICAgICAgICBjYXNlIFRF
TEVQSE9ORToKICAgICAgICAgY2FzZSBURVhUOgogICAgICAgICBjYXNlIFVSTDoKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUodGhpcyk7
CisgICAgICAgICAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkpOwogICAgIH0KICAgICBBU1NF
UlQoZmFsc2UpOwogICAgIHJldHVybiAwOwpAQCAtMTExMSw3ICsxMTA3LDcgQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIG1fZGF0YS5zZXRWYWx1ZShzYW5pdGl6ZVZhbHVlKHZhbHVlKSk7CiAg
ICAgICAgICAgICBpZiAoaXNUZXh0RmllbGQoKSkgewotICAgICAgICAgICAgICAgIElucHV0RWxl
bWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRoaXMsIHRoaXMpOworICAgICAgICAg
ICAgICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+dXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgfQpAQCAtMTE1MSw2ICsxMTQ3LDcgQEAg
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIC8vIEZpbGUgdXBsb2FkIGNvbnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBz
ZXRGaWxlTGlzdEZyb21SZW5kZXJlci4KICAgICBBU1NFUlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7
CisgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICBJbnB1dEVsZW1l
bnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKG1fZGF0YSwgdGhpcywgdGhpcywgdmFsdWUpOwogfQog
CkBAIC0xNzkwLDExICsxNzg3LDYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsVmFsaWRh
dGUoKSBjb25zdAogICAgICAgICAgICBpbnB1dFR5cGUoKSAhPSBCVVRUT04gJiYgaW5wdXRUeXBl
KCkgIT0gUkVTRVQ7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXJTaG91
bGRCZVZpc2libGUoKSBjb25zdAotewotICAgIHJldHVybiBJbnB1dEVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKHRoaXMsIHRoaXMpOwotfQotCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OmZvcm1TdHJpbmdUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlKiBvdXQpCiB7
CiAgICAgLy8gU2VlIEhUTUw1IDIuNC40LjMgYFJlYWwgbnVtYmVycy4nCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCA4ZjI3M2NiLi42M2QxNjM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
QEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiBjbGFzcyBLVVJMOwog
Y2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIAotY2xhc3MgSFRNTElucHV0RWxlbWVudCA6IHB1Ymxp
YyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLCBwdWJsaWMgSW5wdXRFbGVtZW50IHsK
K2NsYXNzIEhUTUxJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQsIHB1YmxpYyBJbnB1dEVsZW1lbnQgewogcHVibGljOgogICAgIGVudW0gSW5wdXRUeXBlIHsK
ICAgICAgICAgVEVYVCwKQEAgLTc1LDggKzc1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1l
cmF0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGlucHV0VHlwZSgpICE9IElNQUdFOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aEJsdXJFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9v
bCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBhYm91dFRvVW5s
b2FkKCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CkBA
IC0yMzAsOCArMjI4LDYgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFs
aWRhdGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlz
aWJsZSgpIGNvbnN0OwotCiAgICAgLy8gQ29udmVydHMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdG8g
YSBmbG9hdGluZyBudW1iZXIuCiAgICAgLy8gSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSBy
ZXR1cm4gdmFsdWUgaXMgZmFsc2UuIFRha2UgY2FyZSB0aGF0IGxlYWRpbmcgb3IgdHJhaWxpbmcg
dW5uZWNlc3NhcnkgY2hhcmFjdGVycyBtYWtlIGZhaWx1cmVzLiAgVGhpcyByZXR1cm5zIGZhbHNl
IGZvciBhbiBlbXB0eSBzdHJpbmcgaW5wdXQuCiAgICAgLy8gVGhlIGRvdWJsZSogcGFyYW1ldGVy
IG1heSBiZSAwLgpAQCAtMjQxLDExICsyMzcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAotICAgIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNp
YmlsaXR5KCkKLSAgICB7Ci0gICAgICAgIElucHV0RWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJW
aXNpYmlsaXR5KHRoaXMsIHRoaXMsIHRydWUpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBib29s
IHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgY29uc3Q7CiAKQEAgLTI1Myw2ICsy
NDQsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZ2lzdGVyRm9yQWN0aXZhdGlvbkNhbGxiYWNr
SWZOZWVkZWQoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBY3RpdmF0aW9uQ2FsbGJhY2tJZk5l
ZWRlZCgpOwogCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCB7
IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkuaXNFbXB0eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUZvY3VzRXZlbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQmx1ckV2ZW50KCk7CisK
ICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4g
IWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRG
b3JtQ29udHJvbCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElzSW5k
ZXhFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCmluZGV4
IGJjZmE2MjMuLjMxZmFmYTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVs
ZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSXNJbmRleEVsZW1lbnQuY3BwCkBAIC00
NCw3ICs0NCw3IEBAIHZvaWQgSFRNTElzSW5kZXhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBwcm9tcHRB
dHRyKQogICAgICAgICBzZXRWYWx1ZShhdHRyLT52YWx1ZSgpKTsKICAgICBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gcGxhY2Vob2xkZXJBdHRyKQotICAgICAgICB1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoKTsKKyAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KHRydWUpOwog
ICAgIGVsc2UKICAgICAgICAgLy8gZG9uJ3QgY2FsbCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSBoZXJlLCBhcyBpdCB3b3VsZAogICAgICAgICAvLyBhY2NlcHQgYXR0cmli
dXRlcyB0aGlzIGVsZW1lbnQgZG9lcyBub3Qgc3VwcG9ydApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCmluZGV4IDNjZjQ4NTIuLmYzOThmYzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIG5vdGlmeUZv
cm1TdGF0ZUNoYW5nZWQoY29uc3QgSFRNTFRleHRBcmVhRWxlbWVudCogZWxlbWVudCkKIH0KIAog
SFRNTFRleHRBcmVhRWxlbWVudDo6SFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhUTUxGb3JtRWxlbWVudCogZm9ybSkK
LSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUodGFnTmFtZSwgZG9jdW1lbnQs
IGZvcm0pCisgICAgOiBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgZm9ybSkKICAgICAsIG1fcm93cyhkZWZhdWx0Um93cykKICAgICAsIG1fY29scyhkZWZhdWx0
Q29scykKICAgICAsIG1fd3JhcChTb2Z0V3JhcCkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSog
YXR0cikKIAogUmVuZGVyT2JqZWN0KiBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHsKLSAgICByZXR1cm4gbmV3IChh
cmVuYSkgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUodGhpcyk7CisgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKHRoaXMsIHBsYWNlaG9sZGVyU2hvdWxk
QmVWaXNpYmxlKCkpOwogfQogCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpCkBAIC00NDgsMjkgKzQ0OCw0IEBAIGJv
b2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBsYWNlaG9sZGVy
U2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCkK
LSAgICAgICAgJiYgZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSAhPSB0aGlzCi0gICAgICAgICYm
ICFnZXRBdHRyaWJ1dGUocGxhY2Vob2xkZXJBdHRyKS5pc0VtcHR5KCk7Ci19Ci0KLXZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vo
b2xkZXJWYWx1ZUNoYW5nZWQpCi17Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIHRvUmVu
ZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpLCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7Ci19
Ci0KLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKLXsKLSAg
ICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpOwotfQotCi12b2lkIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KCkKLXsKLSAgICB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoZmFsc2UpOwotICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3Rh
dGU6OmRpc3BhdGNoQmx1ckV2ZW50KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaAppbmRleCBmYmY1MTlkLi5lZjk2ZmM1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ7CiBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCi1j
bGFzcyBIVE1MVGV4dEFyZWFFbGVtZW50IDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRX
aXRoU3RhdGUgeworY2xhc3MgSFRNTFRleHRBcmVhRWxlbWVudCA6IHB1YmxpYyBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CiAKQEAg
LTk3LDE3ICs5NywxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5w
dXRNZXRob2QoKSBjb25zdDsKIAotICAgIGJvb2wgcGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGUo
KSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRX
cmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdm9pZCBoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVu
dChCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCopIGNvbnN0OwogICAgIHN0YXRpYyBTdHJpbmcgc2Fu
aXRpemVVc2VySW5wdXRWYWx1ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBtYXhMZW5ndGgpOwog
ICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVy
VmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoQmx1ckV2
ZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc09wdGlvbmFs
Rm9ybUNvbnRyb2woKSBjb25zdCB7IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4g
cmVxdWlyZWQoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4
IGNkOTA4NTQuLmY0MzAzOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAKQEAgLTY3LDkgKzY3LDkgQEAgc3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0
IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ28KICAgICByZXR1cm4g
ZGlzYWJsZWRDb2xvcjsKIH0KIAotUmVuZGVyVGV4dENvbnRyb2w6OlJlbmRlclRleHRDb250cm9s
KE5vZGUqIG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbDo6UmVuZGVyVGV4dENvbnRyb2woTm9kZSog
bm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUpCiAgICAgOiBSZW5kZXJCbG9jayhub2RlKQot
ICAgICwgbV9wbGFjZWhvbGRlclZpc2libGUoZmFsc2UpCisgICAgLCBtX3BsYWNlaG9sZGVyVmlz
aWJsZShwbGFjZWhvbGRlclZpc2libGUpCiAgICAgLCBtX2VkaXRlZChmYWxzZSkKICAgICAsIG1f
dXNlckVkaXRlZChmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmlu
ZGV4IDMyMTJhMWIuLmNkZDg3MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclZp
c2liaWxpdHkoYm9vbCwgYm9vbCk7CiAKIHByb3RlY3RlZDoKLSAgICBSZW5kZXJUZXh0Q29udHJv
bChOb2RlKik7CisgICAgUmVuZGVyVGV4dENvbnRyb2woTm9kZSosIGJvb2wpOwogCiAgICAgaW50
IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0SW5uZXJUZXh0U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUsIFJlbmRlclN0eWxlKiB0ZXh0QmxvY2tT
dHlsZSkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5jcHAKaW5kZXggM2YwZDA0MS4uODQ3ODQzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtMzEsMTAgKzMxLDkgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoTm9kZSogbm9kZSkKLSAgICA6IFJlbmRlclRleHRDb250
cm9sKG5vZGUpCitSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6UmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUpCisgICAgOiBSZW5k
ZXJUZXh0Q29udHJvbChub2RlLCBwbGFjZWhvbGRlclZpc2libGUpCiB7Ci0gICAgbV9wbGFjZWhv
bGRlclZpc2libGUgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSktPnBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9CiAKIFJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggMzMzY2ZhOC4uMzM3MWE4ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCkBAIC0y
OCw3ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUgOiBwdWJsaWMgUmVuZGVyVGV4dENvbnRyb2wgewogcHVibGljOgotICAgIFJl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lKE5vZGUqKTsKKyAgICBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZShOb2RlKiwgYm9vbCk7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUoKTsKIAogICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50Kik7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCA3OTRiZTE3
Li44ZDhiYTk3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZS5jcHAKQEAgLTQ4LDE0ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5vZGUqIG5vZGUpCi0gICAgOiBSZW5kZXJU
ZXh0Q29udHJvbChub2RlKQorUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUoTm9kZSogbm9kZSwgYm9vbCBwbGFjZWhvbGRlclZpc2libGUpCisg
ICAgOiBSZW5kZXJUZXh0Q29udHJvbChub2RlLCBwbGFjZWhvbGRlclZpc2libGUpCiAgICAgLCBt
X3NlYXJjaFBvcHVwSXNWaXNpYmxlKGZhbHNlKQogICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJ
bmRpY2F0b3IoZmFsc2UpCiAgICAgLCBtX3NlYXJjaEV2ZW50VGltZXIodGhpcywgJlJlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZTo6c2VhcmNoRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9zZWFy
Y2hQb3B1cCgwKQogewotICAgIG1fcGxhY2Vob2xkZXJWaXNpYmxlID0gaW5wdXRFbGVtZW50KCkt
PnBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCk7CiB9CiAKIFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6flJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpCkBAIC00NjAsNyArNDU5LDcg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVtZW50KCkK
IAogICAgIGlmIChtX3BsYWNlaG9sZGVyVmlzaWJsZSkgewogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQoaW5wdXRF
bGVtZW50KCktPnBsYWNlaG9sZGVyKCksIGVjKTsKKyAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgp
LT5zZXRJbm5lclRleHQoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPmdldEF0dHJpYnV0
ZShwbGFjZWhvbGRlckF0dHIpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0gZWxz
ZQogICAgICAgICBzZXRJbm5lclRleHRWYWx1ZShpbnB1dEVsZW1lbnQoKS0+dmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUu
aCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4
IDgxN2VmYjIuLjRhMTc5MTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgOiBwdWJsaWMg
UmVuZGVyVGV4dENvbnRyb2wsIHByaXZhdGUgUG9wdXBNZW51Q2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoTm9kZSopOworICAgIFJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZShOb2RlKiwgYm9vbCk7CiAgICAgdmlydHVhbCB+UmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKCk7CiAKICAgICBib29sIHBsYWNlaG9sZGVySXNWaXNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGFjZWhvbGRlclZpc2libGU7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd21s
L1dNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL3dtbC9XTUxJbnB1dEVsZW1lbnQuY3BwCmlu
ZGV4IDJkYmRhZjAuLmIwMjdiZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxl
bWVudC5jcHAKKysrIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmNwcApAQCAtMTM0LDcg
KzEzNCw2IEBAIFN0cmluZyBXTUxJbnB1dEVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIAogdm9pZCBX
TUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSW5w
dXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkodGhpcywgdGhpcyk7CiAgICAg
c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CiAgICAgbV9kYXRhLnNl
dFZhbHVlKGNvbnN0cmFpblZhbHVlKHZhbHVlKSk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKQEAg
LTIyMSw3ICsyMjAsNyBAQCB2b2lkIFdNTElucHV0RWxlbWVudDo6Y29weU5vbkF0dHJpYnV0ZVBy
b3BlcnRpZXMoY29uc3QgRWxlbWVudCogc291cmNlKQogCiBSZW5kZXJPYmplY3QqIFdNTElucHV0
RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
CiB7Ci0gICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSh0
aGlzKTsKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KHRoaXMsIGZhbHNlKTsKIH0KIAogdm9pZCBXTUxJbnB1dEVsZW1lbnQ6OmRldGFjaCgpCkBAIC0z
MTgsMTEgKzMxNyw2IEBAIHZvaWQgV01MSW5wdXRFbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFj
dGl2ZSgpCiAgICAgcmVzZXQoKTsKIH0KIAotYm9vbCBXTUxJbnB1dEVsZW1lbnQ6OnBsYWNlaG9s
ZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW5wdXRFbGVtZW50Ojpw
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSh0aGlzLCB0aGlzKTsKLX0KLQogdm9pZCBXTUxJbnB1
dEVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKICAgICAvLyBBbHdheXMg
dW5yZWdpc3RlciBmb3IgY2FjaGUgY2FsbGJhY2tzIHdoZW4gbGVhdmluZyBhIGRvY3VtZW50LCBl
dmVuIGlmIHdlIHdvdWxkIG90aGVyd2lzZSBsaWtlIHRvIGJlIHJlZ2lzdGVyZWQKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvd21sL1dNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS93bWwvV01MSW5wdXRF
bGVtZW50LmgKaW5kZXggN2ViMjQ1NS4uOThlYTEzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93bWwv
V01MSW5wdXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS93bWwvV01MSW5wdXRFbGVtZW50LmgKQEAg
LTU4LDggKzU4LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbE5hbWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBwbGFjZWhvbGRlcigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldFBsYWNlaG9sZGVyKGNvbnN0IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzYXZlRm9ybUNvbnRyb2xTdGF0ZShTdHJpbmcmIHZhbHVlKSBjb25zdDsKQEAgLTgyLDcg
KzgwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3Qg
U3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdCB7IHJldHVybiBjb25zdHJhaW5WYWx1ZShwcm9w
b3NlZFZhbHVlKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkQmVjb21lQWN0aXZl
KCk7Ci0gICAgdmlydHVhbCBib29sIHBsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7
CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>