<?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>44718</bug_id>
          
          <creation_ts>2010-08-26 13:44:10 -0700</creation_ts>
          <short_desc>pushState and replaceState do not clone RegExp objects correctly</short_desc>
          <delta_ts>2010-09-08 15:12:41 -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>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>270090</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 13:44:10 -0700</bug_when>
    <thetext>pushState and replaceState are supposed to create a structured clone of the state object, and per http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#structured-clone that includes special-casing RegExp objects. Right now neither the JSC nor the V8 implementation of SerializedScriptValue implement this. They handle treating of RegExp as Object differently, which is why fast/loader/stateobjects/pushstate-object-types.html fails on Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270172</commentid>
    <comment_count>1</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 15:49:29 -0700</bug_when>
    <thetext>This involves using RegExp.h and RegExpObject.h from JavaScriptCore in WebCore. In turn, those depend on headers from JavaScriptCore/yarr. Is it really the right thing to be exporting all those headers from JavaScriptCore (I&apos;m not that familiar with the forwarding header setup)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270182</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-08-26 15:54:47 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This involves using RegExp.h and RegExpObject.h from JavaScriptCore in WebCore. In turn, those depend on headers from JavaScriptCore/yarr. Is it really the right thing to be exporting all those headers from JavaScriptCore (I&apos;m not that familiar with the forwarding header setup)?

Serialization is intrinsically dependent on the JS engine, you can&apos;t really avoid knowing internal details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270187</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 16:02:18 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Serialization is intrinsically dependent on the JS engine, you can&apos;t really avoid knowing internal details.

But all I want from the RegExp are the pattern and the flags (and to be able to create new RegExpObject instances), which shouldn&apos;t depend on internals.

If RegExp.h didn&apos;t include YARR headers (e.g. if the m_regExpJITCOde/mRegExpBytecode/m_regExp members were moved to a pimpl class that was forward declared in the header) then it seems like I could use that header without bringing in a lot of other things. I&apos;m new WebKit (and even newer to JSC/bindings), so I don&apos;t know if that&apos;s a common pattern though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270241</commentid>
    <comment_count>4</comment_count>
      <attachid>65651</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-26 17:36:54 -0700</bug_when>
    <thetext>Created attachment 65651
Patch for JSC::RegExp

(In reply to comment #3)
&gt; If RegExp.h didn&apos;t include YARR headers (e.g. if the m_regExpJITCOde/mRegExpBytecode/m_regExp members were moved to a pimpl class that was forward declared in the header) then it seems like I could use that header without bringing in a lot of other things. I&apos;m new WebKit (and even newer to JSC/bindings), so I don&apos;t know if that&apos;s a common pattern though.

The attached patch implements that change (moves the JIT/bytecode/regexp to a RegExpRepresentation struct). If that seems reasonable, I can clean it up and send it out for review separately, so that the patch for this bug doesn&apos;t get too big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270605</commentid>
    <comment_count>5</comment_count>
      <attachid>65738</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 11:15:59 -0700</bug_when>
    <thetext>Created attachment 65738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270606</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 11:17:27 -0700</bug_when>
    <thetext>Attachment 65738 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/RegExp.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270610</commentid>
    <comment_count>7</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 11:20:11 -0700</bug_when>
    <thetext>Oliver, do you have time to review this? Let me know if you&apos;d like me to split this into three patches (JavaScriptCore changes, JSC bindings changes, V8 bindings changes), though it seemed straightforward enough in its current state.

The style warning is about indentation inside the JSC namespace in JavaScriptCore/runtime/RegExp.h. I was just following the indentation level of the file. Let me know if you&apos;d like to re-indent the whole file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270625</commentid>
    <comment_count>8</comment_count>
      <attachid>65738</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-08-27 11:34:19 -0700</bug_when>
    <thetext>Comment on attachment 65738
Patch

I&apos;m slightly worried about the v8 serialisation -- what happens if i do:

RegExp.prototype.toString = function() { return &quot;foo&quot;; }


pushState(/a/) // or whatever

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270626</commentid>
    <comment_count>9</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-27 11:35:20 -0700</bug_when>
    <thetext>Attachment 65738 did not build on qt:
Build output: http://queues.webkit.org/results/3856030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270706</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 13:34:31 -0700</bug_when>
    <thetext>Attachment 65738 did not build on gtk:
Build output: http://queues.webkit.org/results/3833036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270774</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Repeshko">vitalyr</who>
    <bug_when>2010-08-27 15:03:23 -0700</bug_when>
    <thetext>A few comments on the V8 part:

&gt; +    void writeRegExp(v8::Handle&lt;v8::Value&gt; value)
&gt; +    {
&gt; +        // We store RegExp values using their toString() representation (which
&gt; +        // is then eval-ed in readRegExp) since V8 does not let us get at RegExp
&gt; +        // internals directly.
&gt; +        // FIXME: Change once http://code.google.com/p/v8/issues/detail?id=852
&gt; +        // is fixed.
&gt; +        append(RegExpTag);
&gt; +        v8::String::Utf8Value regexpAsString(value-&gt;ToString());
&gt; +        doWriteString(*regexpAsString, regexpAsString.length());
&gt; +    }

You could get RegExp source and flags using Object::Get() and property names &quot;source&quot;, &quot;global&quot;, etc. (See ECMA-262 15.10.7.) Users can&apos;t override these properties. Of course, this doesn&apos;t help without a way to reconstruct an object.

&gt; +    else if (value-&gt;IsRegExp())
&gt; +        m_writer.writeRegExp(value);

Should probably call the other writeRegExp.

&gt; +    bool readRegExp(v8::Handle&lt;v8::Value&gt;* value)
&gt; +    {
&gt; +        v8::Handle&lt;v8::Value&gt; regExpAsString;
&gt; +        if (!readString(&amp;regExpAsString))
&gt; +            return false;
&gt; +        v8::Local&lt;v8::Script&gt; regExpAsScript = v8::Script::New(regExpAsString-&gt;ToString());
&gt; +        *value = regExpAsScript-&gt;Run();
&gt; +        return true;
&gt; +    }

I&apos;ll expose RegExp::New to simplify this. Basically &quot;new RegExp(source, flags)&quot; should be eval-ed here, where &quot;source&quot; and &quot;flags&quot; can be built using the above property values. The problem is that RegExp can be changed by the user in the current context, so for now to get the original builtin constructor we should eval &quot;new /a/.constructor(source, flags)&quot;. This is probably too much trouble without the API support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270879</commentid>
    <comment_count>12</comment_count>
      <attachid>65800</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 18:37:26 -0700</bug_when>
    <thetext>Created attachment 65800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270882</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 18:42:57 -0700</bug_when>
    <thetext>Attachment 65800 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/RegExp.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270885</commentid>
    <comment_count>14</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-27 18:45:31 -0700</bug_when>
    <thetext>New version of the patch drops the V8 changes (filed bug 44809 about that).

It also adds forwarding headers that I&apos;m hoping will fix the Qt and GTK compiles (I&apos;m not 100% clear on what the intended purpose of files under ForwardingHeaders is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270902</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 19:39:54 -0700</bug_when>
    <thetext>Attachment 65738 did not build on win:
Build output: http://queues.webkit.org/results/3871036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271002</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-28 09:21:31 -0700</bug_when>
    <thetext>Attachment 65800 did not build on win:
Build output: http://queues.webkit.org/results/3853055</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271796</commentid>
    <comment_count>17</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-08-30 17:28:11 -0700</bug_when>
    <thetext>Oliver, would you be able to review this, now that the V8 changes have been moved out?

(In reply to comment #16)
&gt; Attachment 65800 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/3853055

Unfortunately this output is not very helpful. I&apos;m guessing that the list of exported symbols needs to be updated on the Windows side too. Looking at http://trac.webkit.org/log/trunk/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def, that seems to be something that&apos;s done after the fact as a build fix (I don&apos;t have easy access to a Windows machine).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275263</commentid>
    <comment_count>18</comment_count>
      <attachid>66760</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 13:47:25 -0700</bug_when>
    <thetext>Created attachment 66760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275265</commentid>
    <comment_count>19</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 13:49:13 -0700</bug_when>
    <thetext>Latest version of the patch should work with the re-implementation of SerializedScriptValue done by r66850 (thanks for doing that, the new version is much less class-happy).

Oliver or Sam, could one of you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275266</commentid>
    <comment_count>20</comment_count>
      <attachid>66760</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-07 13:49:54 -0700</bug_when>
    <thetext>Comment on attachment 66760
Patch

&gt; +        RegExpRepresentation* const m_representation;

Can we use OwnPtr for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275293</commentid>
    <comment_count>21</comment_count>
      <attachid>66766</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 14:29:41 -0700</bug_when>
    <thetext>Created attachment 66766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275294</commentid>
    <comment_count>22</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 14:30:14 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 66760 [details])
&gt; &gt; +        RegExpRepresentation* const m_representation;
&gt; 
&gt; Can we use OwnPtr for this?

Makes sense; latest version of the patch does that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275296</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-07 14:31:59 -0700</bug_when>
    <thetext>Attachment 66766 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/RegExp.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275303</commentid>
    <comment_count>24</comment_count>
      <attachid>66766</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-07 14:37:08 -0700</bug_when>
    <thetext>Comment on attachment 66766
Patch

r=me!

Sorry i forgot to mention the serialization change in this bug earlier :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275304</commentid>
    <comment_count>25</comment_count>
      <attachid>66766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-07 14:37:51 -0700</bug_when>
    <thetext>Comment on attachment 66766
Patch

&gt; +    , m_representation(adoptPtr(new RegExpRepresentation()))

No need for the parentheses here.

This means that every RegExp is using a second memory block. I’d expect that to slow down regular expression tests, perhaps even including the regular expression part of SunSpider. This is marked review+, but how can it be until we know the SunSpider impact?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275312</commentid>
    <comment_count>26</comment_count>
      <attachid>66766</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 14:50:02 -0700</bug_when>
    <thetext>Comment on attachment 66766
Patch

Removing cq bit while I look at SunSpider impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275328</commentid>
    <comment_count>27</comment_count>
      <attachid>66773</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 15:18:52 -0700</bug_when>
    <thetext>Created attachment 66773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275331</commentid>
    <comment_count>28</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 15:21:08 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 66766 [details])
&gt; &gt; +    , m_representation(adoptPtr(new RegExpRepresentation()))
&gt; 
&gt; No need for the parentheses here.

Removed in latest version of the patch.
 
&gt; This means that every RegExp is using a second memory block. I’d expect that to slow down regular expression tests, perhaps even including the regular expression part of SunSpider. This is marked review+, but how can it be until we know the SunSpider impact?

I ran SunSpider in a release build with this change and compared it with the latest nightly build (at r66819), here are the averages for 5 runs:
    
           Total SunSpider time    regexp-dna time
  r66819:  263.14                  13.84
w/ patch:  266.9                   13.9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275338</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-07 15:24:30 -0700</bug_when>
    <thetext>Attachment 66773 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/runtime/RegExp.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275339</commentid>
    <comment_count>30</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-07 15:26:04 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #25)
&gt; &gt; (From update of attachment 66766 [details] [details])
&gt; &gt; &gt; +    , m_representation(adoptPtr(new RegExpRepresentation()))
&gt; &gt; 
&gt; &gt; No need for the parentheses here.
&gt; 
&gt; Removed in latest version of the patch.
&gt; 
&gt; &gt; This means that every RegExp is using a second memory block. I’d expect that to slow down regular expression tests, perhaps even including the regular expression part of SunSpider. This is marked review+, but how can it be until we know the SunSpider impact?
&gt; 
&gt; I ran SunSpider in a release build with this change and compared it with the latest nightly build (at r66819), here are the averages for 5 runs:
&gt; 
&gt;            Total SunSpider time    regexp-dna time
&gt;   r66819:  263.14                  13.84
&gt; w/ patch:  266.9                   13.9

can you do

run-sunspider --runs 30 &gt; oldTimes
apply patch
run-sunspider --runs 30 &gt; newTimes

and paste the result of

sunspider-compare-results oldTimes newTimes

into the bug that will be more helpful (your numbers above indicate a ~1% regression, so i&apos;d rather have stable numbers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275350</commentid>
    <comment_count>31</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-07 15:43:20 -0700</bug_when>
    <thetext>$ sunspider-compare-results ~/Desktop/sunspider.before ~/Desktop/sunspider.after

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           -                 260.9ms +/- 0.3%   260.3ms +/- 0.2% 

=============================================================================

  3d:                  -                  35.4ms +/- 1.4%    35.4ms +/- 0.5% 
    cube:              ??                 12.3ms +/- 2.0%    12.4ms +/- 1.5%     not conclusive: might be *1.003x as slow*
    morph:             -                  11.1ms +/- 3.3%    10.9ms +/- 1.0% 
    raytrace:          *1.011x as slow*   12.0ms +/- 0.6%    12.1ms +/- 0.9%     significant

  access:              ??                 32.7ms +/- 0.8%    32.9ms +/- 0.9%     not conclusive: might be *1.004x as slow*
    binary-trees:      -                   3.2ms +/- 4.8%     3.2ms +/- 4.8% 
    fannkuch:          ??                 15.5ms +/- 1.2%    15.6ms +/- 1.2%     not conclusive: might be *1.004x as slow*
    nbody:             ??                  8.9ms +/- 1.1%     9.0ms +/- 1.3%     not conclusive: might be *1.004x as slow*
    nsieve:            ??                  5.1ms +/- 2.2%     5.1ms +/- 2.5%     not conclusive: might be *1.007x as slow*

  bitops:              ??                 20.8ms +/- 1.3%    20.9ms +/- 1.0%     not conclusive: might be *1.003x as slow*
    3bit-bits-in-byte: ??                  2.7ms +/- 6.5%     2.8ms +/- 5.8%     not conclusive: might be *1.025x as slow*
    bits-in-byte:      -                   7.1ms +/- 1.6%     7.1ms +/- 1.3% 
    bitwise-and:       -                   4.2ms +/- 3.8%     4.2ms +/- 3.6% 
    nsieve-bits:       ??                  6.8ms +/- 2.2%     6.9ms +/- 1.9%     not conclusive: might be *1.010x as slow*

  controlflow:         ??                  2.5ms +/- 7.5%     2.6ms +/- 7.0%     not conclusive: might be *1.039x as slow*
    recursive:         ??                  2.5ms +/- 7.5%     2.6ms +/- 7.0%     not conclusive: might be *1.039x as slow*

  crypto:              ??                 16.0ms +/- 1.4%    16.2ms +/- 1.4%     not conclusive: might be *1.008x as slow*
    aes:               ??                  9.2ms +/- 1.7%     9.2ms +/- 1.7%     not conclusive: might be *1.004x as slow*
    md5:               -                   3.8ms +/- 3.7%     3.8ms +/- 4.0% 
    sha1:              *1.044x as slow*    3.0ms +/- 0.0%     3.1ms +/- 4.1%     significant

  date:                -                  31.8ms +/- 1.3%    31.5ms +/- 0.9% 
    format-tofte:      -                  18.8ms +/- 1.8%    18.5ms +/- 1.4% 
    format-xparb:      -                  13.0ms +/- 1.3%    13.0ms +/- 0.5% 

  math:                -                  26.4ms +/- 0.7%    26.3ms +/- 0.7% 
    cordic:            -                   8.1ms +/- 1.4%     8.0ms +/- 0.9% 
    partial-sums:      -                  13.0ms +/- 0.0%    13.0ms +/- 0.0% 
    spectral-norm:     -                   5.3ms +/- 3.2%     5.3ms +/- 3.2% 

  regexp:              *1.026x as slow*   15.7ms +/- 1.1%    16.1ms +/- 0.6%     significant
    dna:               *1.026x as slow*   15.7ms +/- 1.1%    16.1ms +/- 0.6%     significant

  string:              1.013x as fast     79.5ms +/- 0.5%    78.5ms +/- 0.5%     significant
    base64:            -                   8.6ms +/- 2.2%     8.5ms +/- 2.2% 
    fasta:             1.026x as fast     10.6ms +/- 1.8%    10.3ms +/- 1.7%     significant
    tagcloud:          -                  20.4ms +/- 0.9%    20.2ms +/- 0.8% 
    unpack-code:       1.016x as fast     30.1ms +/- 0.8%    29.6ms +/- 0.6%     significant
    validate-input:    -                   9.8ms +/- 1.8%     9.8ms +/- 1.4%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275351</commentid>
    <comment_count>32</comment_count>
      <attachid>66773</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-09-07 15:44:06 -0700</bug_when>
    <thetext>Comment on attachment 66773
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275440</commentid>
    <comment_count>33</comment_count>
      <attachid>66773</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-07 17:34:16 -0700</bug_when>
    <thetext>Comment on attachment 66773
Patch

Clearing flags on attachment: 66773

Committed r66936: &lt;http://trac.webkit.org/changeset/66936&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275441</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-07 17:34:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275712</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-08 03:25:59 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66936 might have broken Leopard Intel Debug (Tests)
The following changes are on the blame list:
http://trac.webkit.org/changeset/66936
http://trac.webkit.org/changeset/66935</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275893</commentid>
    <comment_count>36</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-08 09:48:38 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; http://trac.webkit.org/changeset/66936 might have broken Leopard Intel Debug (Tests)
&gt; The following changes are on the blame list:
&gt; http://trac.webkit.org/changeset/66936
&gt; http://trac.webkit.org/changeset/66935

fast/files/workers/worker-read-blob-sync.html failed, but it has failed before and after these changes too. It looks to be flaky (though only on Leopard, since I can&apos;t reproduce locally). I filed bug 45396 about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276097</commentid>
    <comment_count>37</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-08 15:00:24 -0700</bug_when>
    <thetext>Yes, looks flaky.  We need a bug on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276101</commentid>
    <comment_count>38</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-08 15:12:41 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; Yes, looks flaky.  We need a bug on it.

Filed bug 45396 for it. I guess we can skip it for Leopard for now?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65651</attachid>
            <date>2010-08-26 17:36:54 -0700</date>
            <delta_ts>2010-08-27 11:15:56 -0700</delta_ts>
            <desc>Patch for JSC::RegExp</desc>
            <filename>JSCRegExp.patch</filename>
            <type>text/plain</type>
            <size>7535</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRleCA0NTQyNzMwLi5iZjE3MjJlIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC00ODAsNiArNDgwLDggQEAgX19aTkszSlNDMTBKU0Z1
bmN0aW9uMjNpc0hvc3RGdW5jdGlvbk5vbklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVy
MTRyZXRyaWV2ZUNhbGxlckVQTlNfOUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTksz
SlNDMTFJbnRlcnByZXRlcjE4cmV0cmlldmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxS
TlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRQogX19aTkszSlNDMTJQcm9wZXJ0eVNsb3QxNGZ1bmN0
aW9uR2V0dGVyRVBOU185RXhlY1N0YXRlRQorX19aTjNKU0MxMlJlZ0V4cE9iamVjdDRpbmZvRQor
X19aTjNKU0MxMlJlZ0V4cE9iamVjdEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25O
dWxsUGFzc1JlZlB0cklOU185U3RydWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCiBfX1pOSzNK
U0MxNEpTR2xvYmFsT2JqZWN0MTRpc0R5bmFtaWNTY29wZUVSYgogX19aTkszSlNDMTZJbnRlcm5h
bEZ1bmN0aW9uOWNsYXNzSW5mb0V2CiBfX1pOSzNKU0MxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFy
aWFibGVPYmplY3RFdgpAQCAtNTEwLDYgKzUxMiw4IEBAIF9fWk5LM0pTQzZKU0NlbGw5Z2V0U3Ry
aW5nRVBOU185RXhlY1N0YXRlRQogX19aTkszSlNDNkpTQ2VsbDlnZXRTdHJpbmdFUE5TXzlFeGVj
U3RhdGVFUk5TXzdVU3RyaW5nRQogX19aTkszSlNDNkpTQ2VsbDlnZXRVSW50MzJFUmoKIF9fWk5L
M0pTQzZKU0NlbGw5dG9Cb29sZWFuRVBOU185RXhlY1N0YXRlRQorX19aTjNKU0M2UmVnRXhwNmNy
ZWF0ZUVQTlNfMTJKU0dsb2JhbERhdGFFUktOU183VVN0cmluZ0VTNV8KK19fWk4zSlNDNlJlZ0V4
cEQxRXYKIF9fWk5LM0pTQzdBcmdMaXN0OGdldFNsaWNlRWlSUzBfCiBfX1pOSzNKU0M3SlNBcnJh
eTEyc3ViY2xhc3NEYXRhRXYKIF9fWk5LM0pTQzdKU1ZhbHVlMTZ0b09iamVjdFNsb3dDYXNlRVBO
U185RXhlY1N0YXRlRQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDVhZDlmM2YuLmZh
MzM0OWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTQ2LDExICs0NiwyOSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uIHsKKyNpZiBF
TkFCTEUoWUFSUl9KSVQpCisgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2Rl
OworI2VsaWYgRU5BQkxFKFlBUlIpCisgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4g
bV9yZWdFeHBCeXRlY29kZTsKKyNlbHNlCisgICAgSlNSZWdFeHAqIG1fcmVnRXhwOworI2VuZGlm
CisKKyNpZiAhRU5BQkxFKFlBUlIpCisgICAgflJlZ0V4cFJlcHJlc2VudGF0aW9uKCkKKyAgICB7
CisgICAgICAgIGpzUmVnRXhwRnJlZShtX3JlZ0V4cCk7CisgICAgfQorI2VuZGlmCit9OworCiBp
bmxpbmUgUmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncykKICAgICA6IG1fcGF0dGVybihwYXR0
ZXJuKQogICAgICwgbV9mbGFnQml0cygwKQogICAgICwgbV9jb25zdHJ1Y3Rpb25FcnJvcigwKQog
ICAgICwgbV9udW1TdWJwYXR0ZXJucygwKQorICAgICwgbV9yZXByZXNlbnRhdGlvbihuZXcgUmVn
RXhwUmVwcmVzZW50YXRpb24oKSkKIHsKICAgICAvLyBOT1RFOiBUaGUgZ2xvYmFsIGZsYWcgaXMg
aGFuZGxlZCBvbiBhIGNhc2UtYnktY2FzZSBiYXNpcyBieSBmdW5jdGlvbnMgbGlrZQogICAgIC8v
IFN0cmluZzo6bWF0Y2ggYW5kIFJlZ0V4cE9iamVjdDo6bWF0Y2guCkBAIC02NSwxMiArODMsMTAg
QEAgaW5saW5lIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVMKICAgICBjb21waWxlKGdsb2JhbERhdGEpOwogfQog
Ci0jaWYgIUVOQUJMRShZQVJSKQogUmVnRXhwOjp+UmVnRXhwKCkKIHsKLSAgICBqc1JlZ0V4cEZy
ZWUobV9yZWdFeHApOworICAgIGRlbGV0ZSBtX3JlcHJlc2VudGF0aW9uOwogfQotI2VuZGlmCiAK
IFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQogewpAQCAt
ODIsOSArOTgsOSBAQCBQYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZQogdm9pZCBSZWdFeHA6OmNvbXBp
bGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAg
ICBZYXJyOjpqaXRDb21waWxlUmVnZXgoZ2xvYmFsRGF0YSwgbV9yZWdFeHBKSVRDb2RlLCBtX3Bh
dHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsIGlnbm9yZUNhc2Uo
KSwgbXVsdGlsaW5lKCkpOworICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChnbG9iYWxEYXRhLCBt
X3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUsIG1fcGF0dGVybiwgbV9udW1TdWJwYXR0
ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSk7CiAj
ZWxzZQotICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZVJlZ2V4KG1fcGF0
dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEt
Pm1fcmVnZXhBbGxvY2F0b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOworICAgIG1fcmVw
cmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZVJlZ2V4KG1f
cGF0dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERh
dGEtPm1fcmVnZXhBbGxvY2F0b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOwogI2VuZGlm
CiB9CiAKQEAgLTk5LDkgKzExNSw5IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcm
IHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgaWYgKCEhbV9yZWdFeHBKSVRD
b2RlKSB7CisgICAgaWYgKCEhbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlKSB7CiAj
ZWxzZQotICAgIGlmIChtX3JlZ0V4cEJ5dGVjb2RlKSB7CisgICAgaWYgKG1fcmVwcmVzZW50YXRp
b24tPm1fcmVnRXhwQnl0ZWNvZGUpIHsKICNlbmRpZgogICAgICAgICBpbnQgb2Zmc2V0VmVjdG9y
U2l6ZSA9IChtX251bVN1YnBhdHRlcm5zICsgMSkgKiAzOyAvLyBGSVhNRTogc2hvdWxkIGJlIDIg
LSBidXQgYWRkaW5nIHRlbXBvcmFyeSBmYWxsYmFjayB0byBwY3JlLgogICAgICAgICBpbnQqIG9m
ZnNldFZlY3RvcjsKQEAgLTExOSw5ICsxMzUsOSBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBV
U3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKICAg
ICAgICAgICAgIG9mZnNldFZlY3RvcltqXSA9IC0xOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQot
ICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVnRXhwSklUQ29kZSwg
cy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IsIG9m
ZnNldFZlY3RvclNpemUpOworICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4
KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0
T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOwogI2Vs
c2UKLSAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJlZ2V4KG1fcmVnRXhwQnl0
ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zm
c2V0VmVjdG9yKTsKKyAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJlZ2V4KG1f
cmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVycygpLCBz
dGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKICNlbmRpZgogCiAgICAgICAg
IGlmIChyZXN1bHQgPCAwKSB7CkBAIC0xNDQsMTAgKzE2MCwxMCBAQCBpbnQgUmVnRXhwOjptYXRj
aChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3Zl
Y3RvcikKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRhKikKIHsKLSAgICBtX3Jl
Z0V4cCA9IDA7CisgICAgbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHAgPSAwOwogICAgIEpTUmVn
RXhwSWdub3JlQ2FzZU9wdGlvbiBpZ25vcmVDYXNlT3B0aW9uID0gaWdub3JlQ2FzZSgpID8gSlNS
ZWdFeHBJZ25vcmVDYXNlIDogSlNSZWdFeHBEb05vdElnbm9yZUNhc2U7CiAgICAgSlNSZWdFeHBN
dWx0aWxpbmVPcHRpb24gbXVsdGlsaW5lT3B0aW9uID0gbXVsdGlsaW5lKCkgPyBKU1JlZ0V4cE11
bHRpbGluZSA6IEpTUmVnRXhwU2luZ2xlTGluZTsKLSAgICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29t
cGlsZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9wYXR0ZXJuLmNoYXJhY3RlcnMo
KSksIG1fcGF0dGVybi5sZW5ndGgoKSwgaWdub3JlQ2FzZU9wdGlvbiwgbXVsdGlsaW5lT3B0aW9u
LCAmbV9udW1TdWJwYXR0ZXJucywgJm1fY29uc3RydWN0aW9uRXJyb3IpOworICAgIG1fcmVwcmVz
ZW50YXRpb24tPm1fcmVnRXhwID0ganNSZWdFeHBDb21waWxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPihtX3BhdHRlcm4uY2hhcmFjdGVycygpKSwgbV9wYXR0ZXJuLmxlbmd0aCgpLCBp
Z25vcmVDYXNlT3B0aW9uLCBtdWx0aWxpbmVPcHRpb24sICZtX251bVN1YnBhdHRlcm5zLCAmbV9j
b25zdHJ1Y3Rpb25FcnJvcik7CiB9CiAKIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcm
IHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQpAQCAtMTYwLDcg
KzE3Niw3IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9m
ZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RhcnRPZmZzZXQpID4gcy5sZW5ndGgoKSB8fCBzLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKLSAgICBpZiAobV9yZWdFeHApIHsKKyAgICBpZiAobV9yZXByZXNlbnRhdGlv
bi0+bV9yZWdFeHApIHsKICAgICAgICAgLy8gU2V0IHVwIHRoZSBvZmZzZXQgdmVjdG9yIGZvciB0
aGUgcmVzdWx0LgogICAgICAgICAvLyBGaXJzdCAyLzMgdXNlZCBmb3IgcmVzdWx0LCB0aGUgbGFz
dCB0aGlyZCB1c2VkIGJ5IFBDUkUuCiAgICAgICAgIGludCogb2Zmc2V0VmVjdG9yOwpAQCAtMTc1
LDcgKzE5MSw3IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFy
dE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICAgICAgb2Zmc2V0VmVj
dG9yID0gb3ZlY3Rvci0+ZGF0YSgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG51bU1hdGNo
ZXMgPSBqc1JlZ0V4cEV4ZWN1dGUobV9yZWdFeHAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihzLmNoYXJhY3RlcnMoKSksIHMubGVuZ3RoKCksIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0
b3IsIG9mZnNldFZlY3RvclNpemUpOworICAgICAgICBpbnQgbnVtTWF0Y2hlcyA9IGpzUmVnRXhw
RXhlY3V0ZShtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVQ2hhcio+KHMuY2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSwgc3RhcnRPZmZzZXQsIG9mZnNl
dFZlY3Rvciwgb2Zmc2V0VmVjdG9yU2l6ZSk7CiAgICAgCiAgICAgICAgIGlmIChudW1NYXRjaGVz
IDwgMCkgewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGFhZGFk
NmIuLjNjN2ExMTEzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5o
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTI2LDIxICsyNiwxNiBA
QAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSAieWFyci9SZWdleEpJ
VC5oIgotI2luY2x1ZGUgInlhcnIvUmVnZXhJbnRlcnByZXRlci5oIgotCi1zdHJ1Y3QgSlNSZWdF
eHA7CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7Ci0jaWYgIUVOQUJMRShZQVJSKQogICAg
ICAgICB+UmVnRXhwKCk7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ0JpdHMgJiBHbG9iYWw7IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAmIElnbm9yZUNhc2U7IH0KQEAgLTY1LDE0ICs2MCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9mbGFnQml0czsKICAgICAgICAgY29u
c3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1TdWJw
YXR0ZXJuczsKLQotI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgWWFycjo6UmVnZXhDb2Rl
QmxvY2sgbV9yZWdFeHBKSVRDb2RlOwotI2VsaWYgRU5BQkxFKFlBUlIpCi0gICAgICAgIE93blB0
cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNvZGU7Ci0jZWxzZQotICAgICAg
ICBKU1JlZ0V4cCogbV9yZWdFeHA7Ci0jZW5kaWYKKyAgICAgICAgCisgICAgICAgIFJlZ0V4cFJl
cHJlc2VudGF0aW9uKiBjb25zdCBtX3JlcHJlc2VudGF0aW9uOwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65738</attachid>
            <date>2010-08-27 11:15:59 -0700</date>
            <delta_ts>2010-08-27 18:37:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44718-20100827111558.patch</filename>
            <type>text/plain</type>
            <size>25363</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhNGI0MDQyZDJhMzIxMjQ0NDc0ODQ1NDQ2MjNlN2Y3YmJiNzA0NGQzLi5l
MjMwN2FkMmQ1ZjFkYmJhMDYwOTc0ODZiMWJiZDcwZTFiZDU2OWE5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTAtMDgtMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
cHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNv
cnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1vdmUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2Yg
SlNDOjpSZWdFeHAgKHdoaWNoIGRlcGVuZHMgb24gd2V0aGVyCisgICAgICAgIFlBUlIgYW5kIFlB
UlJfSklUIGlzIGVuYWJsZWQpIGludG8gUmVnRXhwUmVwcmVzZW50YXRpb24gd2hpY2ggY2FuIGxp
dmUKKyAgICAgICAgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9ubHkuIFRoaXMgbWFrZXMgaXQgZmVh
c2libGUgdG8gdXNlIFJlZ0V4cCBpbgorICAgICAgICBXZWJDb3JlIHdpdGhvdXQgYnJpbmdpbmcg
aW4gYWxsIG9mIFlBUlIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBS
ZWdFeHAgYW5kIFJlZ0V4cE9iamVjdCBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgbmVlZGVk
IGluc2lkZSBXZWJDb3JlJ3MgSlNDIGJpbmRpbmdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUmVwcmVzZW50YXRpb246On5SZWdFeHBSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjp+UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKwog
MjAxMC0wOC0yNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmlu
ZGV4IDQ1NDI3MzA0YzQ4YTc4YWQ4ZGFiNDg4Y2Y5M2QzMjc4Yjg1ZGQ4ODkuLmJmMTcyMmU2YjE1
YzVhZmJiOTc0Yzc3NzdhZTE0NjExNmE1OWE0ODQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5l
eHAKQEAgLTQ4MCw2ICs0ODAsOCBAQCBfX1pOSzNKU0MxMEpTRnVuY3Rpb24yM2lzSG9zdEZ1bmN0
aW9uTm9uSW5saW5lRXYKIF9fWk5LM0pTQzExSW50ZXJwcmV0ZXIxNHJldHJpZXZlQ2FsbGVyRVBO
U185RXhlY1N0YXRlRVBOU18xMEpTRnVuY3Rpb25FCiBfX1pOSzNKU0MxMUludGVycHJldGVyMThy
ZXRyaWV2ZUxhc3RDYWxsZXJFUE5TXzlFeGVjU3RhdGVFUmlSbFJOU183VVN0cmluZ0VSTlNfN0pT
VmFsdWVFCiBfX1pOSzNKU0MxMlByb3BlcnR5U2xvdDE0ZnVuY3Rpb25HZXR0ZXJFUE5TXzlFeGVj
U3RhdGVFCitfX1pOM0pTQzEyUmVnRXhwT2JqZWN0NGluZm9FCitfX1pOM0pTQzEyUmVnRXhwT2Jq
ZWN0QzFFUE5TXzE0SlNHbG9iYWxPYmplY3RFTjNXVEYxN05vbk51bGxQYXNzUmVmUHRySU5TXzlT
dHJ1Y3R1cmVFRUVOUzRfSU5TXzZSZWdFeHBFRUUKIF9fWk5LM0pTQzE0SlNHbG9iYWxPYmplY3Qx
NGlzRHluYW1pY1Njb3BlRVJiCiBfX1pOSzNKU0MxNkludGVybmFsRnVuY3Rpb245Y2xhc3NJbmZv
RXYKIF9fWk5LM0pTQzE2SlNWYXJpYWJsZU9iamVjdDE2aXNWYXJpYWJsZU9iamVjdEV2CkBAIC01
MTAsNiArNTEyLDggQEAgX19aTkszSlNDNkpTQ2VsbDlnZXRTdHJpbmdFUE5TXzlFeGVjU3RhdGVF
CiBfX1pOSzNKU0M2SlNDZWxsOWdldFN0cmluZ0VQTlNfOUV4ZWNTdGF0ZUVSTlNfN1VTdHJpbmdF
CiBfX1pOSzNKU0M2SlNDZWxsOWdldFVJbnQzMkVSagogX19aTkszSlNDNkpTQ2VsbDl0b0Jvb2xl
YW5FUE5TXzlFeGVjU3RhdGVFCitfX1pOM0pTQzZSZWdFeHA2Y3JlYXRlRVBOU18xMkpTR2xvYmFs
RGF0YUVSS05TXzdVU3RyaW5nRVM1XworX19aTjNKU0M2UmVnRXhwRDFFdgogX19aTkszSlNDN0Fy
Z0xpc3Q4Z2V0U2xpY2VFaVJTMF8KIF9fWk5LM0pTQzdKU0FycmF5MTJzdWJjbGFzc0RhdGFFdgog
X19aTkszSlNDN0pTVmFsdWUxNnRvT2JqZWN0U2xvd0Nhc2VFUE5TXzlFeGVjU3RhdGVFCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXggNWFkOWYzZjRjYzcxODliOTZiNjI3ZjVmNDJkM2Q5
YTI0ZWY5MjM5Ni4uZmEzMzQ5ZmQ4NDljZDhiODU2ZjVhNjJjMTU0ODYwZTkxZGU3YmRmNCAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcApAQCAtNDYsMTEgKzQ2LDI5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb24geworI2lmIEVOQUJMRShZQVJS
X0pJVCkKKyAgICBZYXJyOjpSZWdleENvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7CisjZWxpZiBF
TkFCTEUoWUFSUikKKyAgICBPd25QdHI8WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5
dGVjb2RlOworI2Vsc2UKKyAgICBKU1JlZ0V4cCogbV9yZWdFeHA7CisjZW5kaWYKKworI2lmICFF
TkFCTEUoWUFSUikKKyAgICB+UmVnRXhwUmVwcmVzZW50YXRpb24oKQorICAgIHsKKyAgICAgICAg
anNSZWdFeHBGcmVlKG1fcmVnRXhwKTsKKyAgICB9CisjZW5kaWYKK307CisKIGlubGluZSBSZWdF
eHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQogICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAg
LCBtX2ZsYWdCaXRzKDApCiAgICAgLCBtX2NvbnN0cnVjdGlvbkVycm9yKDApCiAgICAgLCBtX251
bVN1YnBhdHRlcm5zKDApCisgICAgLCBtX3JlcHJlc2VudGF0aW9uKG5ldyBSZWdFeHBSZXByZXNl
bnRhdGlvbigpKQogewogICAgIC8vIE5PVEU6IFRoZSBnbG9iYWwgZmxhZyBpcyBoYW5kbGVkIG9u
IGEgY2FzZS1ieS1jYXNlIGJhc2lzIGJ5IGZ1bmN0aW9ucyBsaWtlCiAgICAgLy8gU3RyaW5nOjpt
YXRjaCBhbmQgUmVnRXhwT2JqZWN0OjptYXRjaC4KQEAgLTY1LDEyICs4MywxMCBAQCBpbmxpbmUg
UmVnRXhwOjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBw
YXR0ZXJuLCBjb25zdCBVUwogICAgIGNvbXBpbGUoZ2xvYmFsRGF0YSk7CiB9CiAKLSNpZiAhRU5B
QkxFKFlBUlIpCiBSZWdFeHA6On5SZWdFeHAoKQogewotICAgIGpzUmVnRXhwRnJlZShtX3JlZ0V4
cCk7CisgICAgZGVsZXRlIG1fcmVwcmVzZW50YXRpb247CiB9Ci0jZW5kaWYKIAogUGFzc1JlZlB0
cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
VVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpCiB7CkBAIC04Miw5ICs5OCw5
IEBAIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlCiB2b2lkIFJlZ0V4cDo6Y29tcGlsZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCiB7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQotICAgIFlhcnI6Ompp
dENvbXBpbGVSZWdleChnbG9iYWxEYXRhLCBtX3JlZ0V4cEpJVENvZGUsIG1fcGF0dGVybiwgbV9u
dW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgaWdub3JlQ2FzZSgpLCBtdWx0aWxp
bmUoKSk7CisgICAgWWFycjo6aml0Q29tcGlsZVJlZ2V4KGdsb2JhbERhdGEsIG1fcmVwcmVzZW50
YXRpb24tPm1fcmVnRXhwSklUQ29kZSwgbV9wYXR0ZXJuLCBtX251bVN1YnBhdHRlcm5zLCBtX2Nv
bnN0cnVjdGlvbkVycm9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKICNlbHNlCi0gICAg
bV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlUmVnZXgobV9wYXR0ZXJuLCBtX251
bVN1YnBhdHRlcm5zLCBtX2NvbnN0cnVjdGlvbkVycm9yLCAmZ2xvYmFsRGF0YS0+bV9yZWdleEFs
bG9jYXRvciwgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSk7CisgICAgbV9yZXByZXNlbnRhdGlv
bi0+bV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6OmJ5dGVDb21waWxlUmVnZXgobV9wYXR0ZXJuLCBt
X251bVN1YnBhdHRlcm5zLCBtX2NvbnN0cnVjdGlvbkVycm9yLCAmZ2xvYmFsRGF0YS0+bV9yZWdl
eEFsbG9jYXRvciwgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSk7CiAjZW5kaWYKIH0KIApAQCAt
OTksOSArMTE1LDkgQEAgaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0
YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAgICAgICAgIHJldHVybiAtMTsK
IAogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICBpZiAoISFtX3JlZ0V4cEpJVENvZGUpIHsKKyAg
ICBpZiAoISFtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUpIHsKICNlbHNlCi0gICAg
aWYgKG1fcmVnRXhwQnl0ZWNvZGUpIHsKKyAgICBpZiAobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdF
eHBCeXRlY29kZSkgewogI2VuZGlmCiAgICAgICAgIGludCBvZmZzZXRWZWN0b3JTaXplID0gKG1f
bnVtU3VicGF0dGVybnMgKyAxKSAqIDM7IC8vIEZJWE1FOiBzaG91bGQgYmUgMiAtIGJ1dCBhZGRp
bmcgdGVtcG9yYXJ5IGZhbGxiYWNrIHRvIHBjcmUuCiAgICAgICAgIGludCogb2Zmc2V0VmVjdG9y
OwpAQCAtMTE5LDkgKzEzNSw5IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMs
IGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICAgICAg
b2Zmc2V0VmVjdG9yW2pdID0gLTE7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgICAgIGlu
dCByZXN1bHQgPSBZYXJyOjpleGVjdXRlUmVnZXgobV9yZWdFeHBKSVRDb2RlLCBzLmNoYXJhY3Rl
cnMoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rvciwgb2Zmc2V0VmVjdG9y
U2l6ZSk7CisgICAgICAgIGludCByZXN1bHQgPSBZYXJyOjpleGVjdXRlUmVnZXgobV9yZXByZXNl
bnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLCBzLmNoYXJhY3RlcnMoKSwgc3RhcnRPZmZzZXQsIHMu
bGVuZ3RoKCksIG9mZnNldFZlY3Rvciwgb2Zmc2V0VmVjdG9yU2l6ZSk7CiAjZWxzZQotICAgICAg
ICBpbnQgcmVzdWx0ID0gWWFycjo6aW50ZXJwcmV0UmVnZXgobV9yZWdFeHBCeXRlY29kZS5nZXQo
KSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3Ip
OworICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6aW50ZXJwcmV0UmVnZXgobV9yZXByZXNlbnRh
dGlvbi0+bV9yZWdFeHBCeXRlY29kZS5nZXQoKSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0
LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpOwogI2VuZGlmCiAKICAgICAgICAgaWYgKHJlc3Vs
dCA8IDApIHsKQEAgLTE0NCwxMCArMTYwLDEwIEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVT
dHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogCiB2
b2lkIFJlZ0V4cDo6Y29tcGlsZShKU0dsb2JhbERhdGEqKQogewotICAgIG1fcmVnRXhwID0gMDsK
KyAgICBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cCA9IDA7CiAgICAgSlNSZWdFeHBJZ25vcmVD
YXNlT3B0aW9uIGlnbm9yZUNhc2VPcHRpb24gPSBpZ25vcmVDYXNlKCkgPyBKU1JlZ0V4cElnbm9y
ZUNhc2UgOiBKU1JlZ0V4cERvTm90SWdub3JlQ2FzZTsKICAgICBKU1JlZ0V4cE11bHRpbGluZU9w
dGlvbiBtdWx0aWxpbmVPcHRpb24gPSBtdWx0aWxpbmUoKSA/IEpTUmVnRXhwTXVsdGlsaW5lIDog
SlNSZWdFeHBTaW5nbGVMaW5lOwotICAgIG1fcmVnRXhwID0ganNSZWdFeHBDb21waWxlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3BhdHRlcm4uY2hhcmFjdGVycygpKSwgbV9wYXR0
ZXJuLmxlbmd0aCgpLCBpZ25vcmVDYXNlT3B0aW9uLCBtdWx0aWxpbmVPcHRpb24sICZtX251bVN1
YnBhdHRlcm5zLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CisgICAgbV9yZXByZXNlbnRhdGlvbi0+
bV9yZWdFeHAgPSBqc1JlZ0V4cENvbXBpbGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KG1fcGF0dGVybi5jaGFyYWN0ZXJzKCkpLCBtX3BhdHRlcm4ubGVuZ3RoKCksIGlnbm9yZUNhc2VP
cHRpb24sIG11bHRpbGluZU9wdGlvbiwgJm1fbnVtU3VicGF0dGVybnMsICZtX2NvbnN0cnVjdGlv
bkVycm9yKTsKIH0KIAogaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0
YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCkBAIC0xNjAsNyArMTc2LDcgQEAg
aW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0
b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGFy
dE9mZnNldCkgPiBzLmxlbmd0aCgpIHx8IHMuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiAtMTsK
IAotICAgIGlmIChtX3JlZ0V4cCkgeworICAgIGlmIChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4
cCkgewogICAgICAgICAvLyBTZXQgdXAgdGhlIG9mZnNldCB2ZWN0b3IgZm9yIHRoZSByZXN1bHQu
CiAgICAgICAgIC8vIEZpcnN0IDIvMyB1c2VkIGZvciByZXN1bHQsIHRoZSBsYXN0IHRoaXJkIHVz
ZWQgYnkgUENSRS4KICAgICAgICAgaW50KiBvZmZzZXRWZWN0b3I7CkBAIC0xNzUsNyArMTkxLDcg
QEAgaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBW
ZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAgICAgICAgICAgICBvZmZzZXRWZWN0b3IgPSBvdmVj
dG9yLT5kYXRhKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpbnQgbnVtTWF0Y2hlcyA9IGpzUmVn
RXhwRXhlY3V0ZShtX3JlZ0V4cCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuY2hh
cmFjdGVycygpKSwgcy5sZW5ndGgoKSwgc3RhcnRPZmZzZXQsIG9mZnNldFZlY3Rvciwgb2Zmc2V0
VmVjdG9yU2l6ZSk7CisgICAgICAgIGludCBudW1NYXRjaGVzID0ganNSZWdFeHBFeGVjdXRlKG1f
cmVwcmVzZW50YXRpb24tPm1fcmVnRXhwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
cy5jaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgpLCBzdGFydE9mZnNldCwgb2Zmc2V0VmVjdG9yLCBv
ZmZzZXRWZWN0b3JTaXplKTsKICAgICAKICAgICAgICAgaWYgKG51bU1hdGNoZXMgPCAwKSB7CiAj
aWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAu
aCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKaW5kZXggYWFkYWQ2YjZiMDgyNTc1
MmY4YWY2MGQzMjJiOTE0Njk3MTA4MjVjNS4uM2M3YTExMTM1OGQzZWNhZjY2NmMyYjdlZmM1NWRl
ZGQ2YmYyY2IyYiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC0yNiwyMSArMjYsMTYgQEAK
ICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgInlhcnIvUmVnZXhKSVQu
aCIKLSNpbmNsdWRlICJ5YXJyL1JlZ2V4SW50ZXJwcmV0ZXIuaCIKLQotc3RydWN0IEpTUmVnRXhw
OwogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIHN0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbjsK
ICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgUmVm
Q291bnRlZDxSZWdFeHA+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlZ0V4cD4gY3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpOwotI2lmICFFTkFCTEUoWUFSUikKICAgICAg
ICAgflJlZ0V4cCgpOwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBnbG9iYWwoKSBjb25zdCB7IHJl
dHVybiBtX2ZsYWdCaXRzICYgR2xvYmFsOyB9CiAgICAgICAgIGJvb2wgaWdub3JlQ2FzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ0JpdHMgJiBJZ25vcmVDYXNlOyB9CkBAIC02NSwxNCArNjAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fZmxhZ0JpdHM7CiAgICAgICAgIGNvbnN0
IGNoYXIqIG1fY29uc3RydWN0aW9uRXJyb3I7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0
dGVybnM7Ci0KLSNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgICAgIFlhcnI6OlJlZ2V4Q29kZUJs
b2NrIG1fcmVnRXhwSklUQ29kZTsKLSNlbGlmIEVOQUJMRShZQVJSKQotICAgICAgICBPd25QdHI8
WWFycjo6Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5dGVjb2RlOwotI2Vsc2UKLSAgICAgICAg
SlNSZWdFeHAqIG1fcmVnRXhwOwotI2VuZGlmCisgICAgICAgIAorICAgICAgICBSZWdFeHBSZXBy
ZXNlbnRhdGlvbiogY29uc3QgbV9yZXByZXNlbnRhdGlvbjsKICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwYjUzNzUyYjdlZTU1ZDZjNTQ3NWFhOTRmZjJjMTU0NWQ2MzA0YmMy
Li4wNGE1MDAzYmQ1MTYzZjZiZThlMTUyNTg5Yzg4ZWUyYjM0NTNmMTVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTAtMDgtMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHVz
aFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNvcnJl
Y3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3
MTgKKyAgICAgICAgCisgICAgICAgIE1ha2UgUmVnRXhwIHRlc3Qgb2YgcHVzaHN0YXRlLW9iamVj
dC10eXBlcy5odG1sIGFjdHVhbGx5IHRlc3QgYSBSZWdFeHAKKyAgICAgICAgdmFsdWUgd2l0aCBm
bGFncy4gVGhlIHRlc3Qgbm93IHBhc3NlcyBmb3IgQ2hyb21pdW0gdG9vLgorICAgICAgICAKKyAg
ICAgICAgQWxzbyBhZGRzIEltYWdlRGF0YSBzaW5jZSBpdCBjYW4gYmUgc2VyaWFsaXplZCBhcyBv
ZiByNTQ2NDYuICAgICAgICAKKworICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9w
dXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sOgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0wOC0yNiAgRXJp
YyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlciBhbmQgTWFjaWVqIFN0YWNob3dpYWsuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRl
LW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQKaW5kZXggOTEwYjc5NWRhZjM1MjQ5NjQ2NWE3MTUy
NDEzM2E4M2NiMzUzYWVjOC4uZTFmNTdkYjE0MGJiN2YxZWYyZjg3ZWVkMmM3MjY2NWQ5MzYwYzUz
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9h
ZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAt
MSw5ICsxLDEwIEBACiBUaGlzIHRlc3QgY2FsbHMgcHVzaFN0YXRlIHdpdGggc3RhdGUgb2JqZWN0
cyBvZiBhbGwgdGhlIGRpZmZlcmVudCBvYmplY3QgdHlwZXMgc3VwcG9ydGVkIGJ5IHRoZSBIVE1M
NSAiaW50ZXJuYWwgc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobSIgYW5kIG1ha2VzIHN1cmUg
dGhlIGV2ZW50cyBjb250YWluIHRoZSBleHBlY3RlZCBvYmplY3RzIHdoZW4gdGhlIHN0YXRlcyBh
cmUgcG9wcGVkLgogCitTdGF0ZSBwb3BwZWQgLSBbb2JqZWN0IEltYWdlRGF0YV0gKHR5cGUgb2Jq
ZWN0KQogU3RhdGUgcG9wcGVkIC0gW29iamVjdCBPYmplY3RdICh0eXBlIG9iamVjdCkKIFN0YXRl
IHBvcHBlZCAtIFtvYmplY3QgT2JqZWN0XSAodHlwZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQgLSAg
KHR5cGUgb2JqZWN0KQotU3RhdGUgcG9wcGVkIC0gbnVsbCAodHlwZSBvYmplY3QpCitTdGF0ZSBw
b3BwZWQgLSAvZm9vL2dpICh0eXBlIGZ1bmN0aW9uKQogU3RhdGUgcG9wcGVkIC0gMCAodHlwZSBv
YmplY3QpCiBTdGF0ZSBwb3BwZWQgLSBTdHJpbmcgKHR5cGUgc3RyaW5nKQogU3RhdGUgcG9wcGVk
IC0gNDIgKHR5cGUgbnVtYmVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKaW5kZXgg
Mzk5MmM0ZDQ4MWM0ZThkMjhhNmY3M2I2YWE0ZWZkMDBlNjdkMThjNC4uZmRmMDJlM2NmNDRlOWY2
MmZiZDAzYzEzZmY0YjIzNDRmZmRhNzExYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5o
dG1sCkBAIC0xMCw3ICsxMCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
IAogZnVuY3Rpb24gbG9nKHR4dCkKIHsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
Z2VyIikuaW5uZXJUZXh0ICs9IHR4dCArICJcbiI7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvZ2dlciIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHR4dCArICJc
biIpKTsKIH0KICAgICAKIGZ1bmN0aW9uIHJ1blRlc3QoKQpAQCAtMjMsMTMgKzIzLDEzIEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKQogICAgIGhpc3RvcnkucHVzaFN0YXRlKDQyLCAiTnVtYmVyIGVudHJ5
Iik7CiAgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlN0cmluZyIsICJTdHJpbmcgZW50cnkiKTsKICAg
ICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgRGF0ZSgwKSwgIkRhdGUgZW50cnkiKTsKLSAgICBoaXN0
b3J5LnB1c2hTdGF0ZShuZXcgUmVnRXhwLCAiUmVnRXhwIGVudHJ5Iik7CisgICAgaGlzdG9yeS5w
dXNoU3RhdGUobmV3IFJlZ0V4cCgiZm9vIiwgImdpIiksICJSZWdFeHAgZW50cnkiKTsKICAgICBo
aXN0b3J5LnB1c2hTdGF0ZShuZXcgQXJyYXksICJBcnJheSBlbnRyeSIpOwogICAgIGhpc3Rvcnku
cHVzaFN0YXRlKG5ldyBPYmplY3QsICJPYmplY3QgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1c2hT
dGF0ZShuZXcgRXJyb3IsICJFcnJvciBlbnRyeSIpOworICAgIGhpc3RvcnkucHVzaFN0YXRlKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuY3JlYXRlSW1h
Z2VEYXRhKDEwLDEwKSwgIkltYWdlRGF0YSBlbnRyeSIpOwogCiAvKiBUaGUgZm9sbG93aW5nIGFy
ZSBub3QgeWV0IHdlbGwgZW5vdWdoIHN1cHBvcnRlZCBpbiBXZWJLaXQgdG8gbWVhbmluZ2Z1bGx5
IHRlc3QgaGVyZToKLWhpc3RvcnkucHVzaFN0YXRlKFtJbWFnZURhdGFdLCAiSW1hZ2VEYXRhIGVu
dHJ5Iik7CiBoaXN0b3J5LnB1c2hTdGF0ZShbQmxvYl0sICJCbG9iIGVudHJ5Iik7CiBoaXN0b3J5
LnB1c2hTdGF0ZShbRmlsZV0sICJGaWxlIGVudHJ5Iik7CiBoaXN0b3J5LnB1c2hTdGF0ZShbRmls
ZUxpc3RdLCAiRmlsZUxpc3QgZW50cnkiKTsKQEAgLTM5LDEwICszOSwxMCBAQCBoaXN0b3J5LnB1
c2hTdGF0ZShbRmlsZUxpc3RdLCAiRmlsZUxpc3QgZW50cnkiKTsKICAgICBoaXN0b3J5LmJhY2so
KTsKIH0KIAotZnVuY3Rpb24gc3RhdGVQb3BwZWQoKQorZnVuY3Rpb24gc3RhdGVQb3BwZWQoZXZl
bnQpCiB7CiAgICAgaWYgKGV2ZW50LnN0YXRlIGluc3RhbmNlb2YgRGF0ZSkKLSAgICAgICAgbG9n
KCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKiAxICsgIiAodHlwZSAiICsgdHlwZW9m
IGV2ZW50LnN0YXRlICsgIikiKTsKKyAgICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZl
bnQuc3RhdGUuZ2V0VGltZSgpICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIiki
KTsKICAgICBlbHNlCiAgICAgICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRl
ICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKIApAQCAtNTQsNyArNTQs
NyBAQCBmdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCiB9CiAKIDwvc2NyaXB0PgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCk7IiBvbnBvcHN0YXRlPSJzdGF0ZVBvcHBlZCgpOyI+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKGV2ZW50KTsiPgogPHByZSBpZD0i
c29tZWVsZW1lbnQiPgogVGhpcyB0ZXN0IGNhbGxzIHB1c2hTdGF0ZSB3aXRoIHN0YXRlIG9iamVj
dHMgb2YgYWxsIHRoZSBkaWZmZXJlbnQgb2JqZWN0IHR5cGVzIHN1cHBvcnRlZCBieSB0aGUgSFRN
TDUgImludGVybmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0iIGFuZCBtYWtlcyBzdXJl
IHRoZSBldmVudHMgY29udGFpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0cyB3aGVuIHRoZSBzdGF0ZXMg
YXJlIHBvcHBlZC4KIDwvcHJlPjxicj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA4MTE4M2NhNGVmNzFiNmIwMmE3NTZl
NWMxYjNhZTY4OGQzMWViMmRjLi5kZWI5Y2M2NWEzZmFkODE3ZjU3YjBkZDQ5Yzg3ODIwY2ZiZmMw
ZWRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC0yMjMwLDcgKzIyMzAsNiBAQCBCVUcyOTE2NyBNQUMgREVCVUcgOiBm
YXN0L2RvbS9yZXBsYWNlQ2hpbGQuaHRtbCA9IElNQUdFIFBBU1MKIEJVRzI5MjM5IExJTlVYIFdJ
TiA6IGZhc3QvY3NzL3ZhcmlhYmxlcy9taXNwbGFjZWQtaW1wb3J0LXRlc3QuaHRtbCA9IEZBSUwK
IAogLy8gRmFpbHVyZXMgZnJvbSBXZWJLaXQgbWVyZ2UgNTE2NDI6NTE2ODEKLUJVRzI5MzkzIDog
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbCA9IFRF
WFQKIEJVRzI5MzkzIDogZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLWFwaS1vbi1kZXRh
Y2hlZC1mcmFtZS1jcmFzaC5odG1sID0gVEVYVAogCiAvLyBGYWlsdXJlcyBpbnRyb2R1Y2VkIGJ5
IFVTRV9ORVdfQlVJTERFUiBpbiBTa2lhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZWM0NmU0OWFmOWM5NzQ1N2RkYjRjNDdjOWZmMzhj
MTdhZDNjMThhLi45N2FlZDI1ZDQ0MDViM2Q1NTM2ODhiMDc5NjgyMDE2ZGUxOTZkZWU2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDEwLTA4LTI3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHB1
c2hTdGF0ZSBhbmQgcmVwbGFjZVN0YXRlIGRvIG5vdCBjbG9uZSBSZWdFeHAgb2JqZWN0cyBjb3Jy
ZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0
NzE4CisgICAgICAgIAorICAgICAgICBBZGQgUmVnRXhwIHN1cHBvcnQgdG8gYm90aCB0aGUgSlND
IGFuZCBWOCBpbXBsZW1lbnRhdGlvbnMgb2YgCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS4gVGhpcyBtYWtlcyBwdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwgcGFzcyBvbgorICAgICAg
ICBib3RoIENocm9taXVtIGFuZCBXZWJLaXQgRFJUIChiZWZvcmUgdGhlIFJlZ0V4cCB0ZXN0IHdh
cyBlbmRpbmcgdXAgb24KKyAgICAgICAgZGlmZmVyZW50IGNvZGUgcGF0aHMpLgorICAgICAgICAK
KyAgICAgICAgSlNDIHZlcnNpb24gZXhwbGljaXRseSBzdG9yZXMgdGhlIHBhdHRlcm4gYW5kIGZs
YWdzIHJlYWQgZnJvbSBhIAorICAgICAgICBSZWdFeHBPYmplY3QsIGFuZCBjcmVhdGVzIGEgbmV3
IG9uZSBvbiBkZXNlcmlhbGl6YXRpb24uCisgICAgICAgIAorICAgICAgICBWOCB2ZXJzaW9uIHN0
b3JlcyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIFJlZ0V4cHMgYW5kIGV2YWxzIGl0Cisg
ICAgICAgIG9uIGRlc2VyaWFsaXphdGlvbi4KKyAgICAgICAgCisgICAgICAgIFRlc3RzOiBmYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sIAorCisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRSZWdFeHA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJp
YWxpemVkUmVnRXhwOjpwYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRSZWdF
eHA6OmZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRSZWdFeHA6OlNlcmlhbGl6
ZWRSZWdFeHApOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRTZXJp
YWxpemVkRGF0YTo6YXNSZWdFeHApOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXppbmdUcmVl
V2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6
aW5nVHJlZVdhbGtlcjo6Y29udmVydElmVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVh
cmRvd25UcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWVEYXRhOjopOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6YXNSZWdFeHApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6V3Jp
dGVyOjp3cml0ZVJlZ0V4cCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjp3cml0ZVJl
Z0V4cCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGVyOjpy
ZWFkUmVnRXhwKToKKwogMjAxMC0wOC0yNiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDAwZWMyNWY1ODYxYmVkNDc1
MTY3MjVhZDQwZjM2MzZmZTZmM2RjMjcuLjVkZTQ1ZjQyOWUyMTY2N2RhNmVjNTgyOWYxN2E5ZDdl
MzlkMDFkNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJKU0ZpbGVMaXN0LmgiCiAjaW5jbHVk
ZSAiSlNJbWFnZURhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVnRXhwLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvUmVnRXhwT2JqZWN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9EYXRlSW5zdGFuY2UuaD4KICNp
bmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxw
ZXJzLmg+CkBAIC0yNTUsNiArMjU3LDMzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdURjo6Qnl0
ZUFycmF5PiBtX3N0b3JhZ2U7CiB9OwogCitjbGFzcyBTZXJpYWxpemVkUmVnRXhwIDogcHVibGlj
IFNoYXJlZFNlcmlhbGl6ZWREYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZXJpYWxpemVkUmVnRXhwPiBjcmVhdGUoY29uc3QgUmVnRXhwT2JqZWN0KiByZWdFeHApCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRSZWdFeHAocmVnRXhwKSk7
CisgICAgfQorICAgIAorICAgIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVy
biBtX3BhdHRlcm47IH0KKyAgICBjb25zdCBVU3RyaW5nJiBmbGFncygpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ3M7IH0KK3ByaXZhdGU6CisgICAgU2VyaWFsaXplZFJlZ0V4cChjb25zdCBSZWdFeHBP
YmplY3QqIHJlZ0V4cCkKKyAgICAgICAgOiBtX3BhdHRlcm4ocmVnRXhwLT5yZWdFeHAoKS0+cGF0
dGVybigpKQorICAgIHsKKyAgICAgICAgY2hhciBmbGFnc1szXTsKKyAgICAgICAgaW50IGZsYWdD
b3VudCA9IDA7CisgICAgICAgIGlmIChyZWdFeHAtPnJlZ0V4cCgpLT5nbG9iYWwoKSkKKyAgICAg
ICAgICBmbGFnc1tmbGFnQ291bnQrK10gPSAnZyc7CisgICAgICAgIGlmIChyZWdFeHAtPnJlZ0V4
cCgpLT5pZ25vcmVDYXNlKCkpCisgICAgICAgICAgZmxhZ3NbZmxhZ0NvdW50KytdID0gJ2knOwor
ICAgICAgICBpZiAocmVnRXhwLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpCisgICAgICAgICAgZmxh
Z3NbZmxhZ0NvdW50KytdID0gJ20nOworICAgICAgICBtX2ZsYWdzID0gVVN0cmluZyhmbGFncywg
ZmxhZ0NvdW50KTsKKyAgICB9CisgICAgVVN0cmluZyBtX3BhdHRlcm47CisgICAgVVN0cmluZyBt
X2ZsYWdzOworfTsKKwogU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlRGF0YShSZWZQdHI8U2VyaWFsaXplZE9iamVjdD4gZGF0YSkKICAgICA6IG1fdHlwZShP
YmplY3RUeXBlKQogICAgICwgbV9zaGFyZWREYXRhKGRhdGEpCkBAIC0yOTEsNiArMzIwLDEyIEBA
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29u
c3QgRmlsZSogZmlsZSkKIHsKIH0KIAorU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlRGF0YShjb25zdCBSZWdFeHBPYmplY3QqIHJlZ0V4cCkKKyAgICA6IG1f
dHlwZShSZWdFeHBUeXBlKQorICAgICwgbV9zaGFyZWREYXRhKFNlcmlhbGl6ZWRSZWdFeHA6OmNy
ZWF0ZShyZWdFeHApKQoreworfQorCiBTZXJpYWxpemVkQXJyYXkqIFNoYXJlZFNlcmlhbGl6ZWRE
YXRhOjphc0FycmF5KCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VyaWFsaXplZEFycmF5
Kj4odGhpcyk7CkBAIC0zMjEsNiArMzU2LDExIEBAIFNlcmlhbGl6ZWRJbWFnZURhdGEqIFNoYXJl
ZFNlcmlhbGl6ZWREYXRhOjphc0ltYWdlRGF0YSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNl
cmlhbGl6ZWRJbWFnZURhdGEqPih0aGlzKTsKIH0KIAorU2VyaWFsaXplZFJlZ0V4cCogU2hhcmVk
U2VyaWFsaXplZERhdGE6OmFzUmVnRXhwKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2Vy
aWFsaXplZFJlZ0V4cCo+KHRoaXMpOworfQorCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11
bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOwogZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRlVW5rbm93
biwgQXJyYXlTdGFydFN0YXRlLCBBcnJheVN0YXJ0VmlzaXRNZW1iZXIsIEFycmF5RW5kVmlzaXRN
ZW1iZXIsCiAgICAgT2JqZWN0U3RhcnRTdGF0ZSwgT2JqZWN0U3RhcnRWaXNpdE1lbWJlciwgT2Jq
ZWN0RW5kVmlzaXRNZW1iZXIgfTsKQEAgLTY1NCw2ICs2OTQsOCBAQCBzdHJ1Y3QgU2VyaWFsaXpp
bmdUcmVlV2Fsa2VyIDogcHVibGljIEJhc2VXYWxrZXIgewogICAgICAgICAgICAgICAgIHJldHVy
biBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKHRvRmlsZUxpc3Qob2JqKSk7CiAgICAgICAgICAg
ICBpZiAob2JqLT5pbmhlcml0cygmSlNJbWFnZURhdGE6OnNfaW5mbykpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEodG9JbWFnZURhdGEob2JqKSk7Cisg
ICAgICAgICAgICBpZiAob2JqLT5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjppbmZvKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShhc1JlZ0V4cE9iamVj
dChvYmopKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIENhbGxEYXRhIHVudXNlZERh
dGE7CiAgICAgICAgICAgICBpZiAoZ2V0Q2FsbERhdGEodmFsdWUsIHVudXNlZERhdGEpID09IENh
bGxUeXBlTm9uZSkKQEAgLTg1NCw2ICs4OTYsMTEgQEAgc3RydWN0IERlc2VyaWFsaXppbmdUcmVl
V2Fsa2VyIDogcHVibGljIEJhc2VXYWxrZXIgewogICAgICAgICAgICAgICAgIG1lbWNweShyZXN1
bHQtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIHNlcmlhbGl6ZWRJbWFnZURhdGEtPmRhdGEoKS0+
ZGF0YSgpLCBzZXJpYWxpemVkSW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4obV9nbG9iYWxPYmplY3QpLCByZXN1bHQuZ2V0KCkpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjpSZWdFeHBUeXBlOiB7CisgICAg
ICAgICAgICAgICAgU2VyaWFsaXplZFJlZ0V4cCogc2VyaWFsaXplZFJlZ0V4cCA9IHZhbHVlLmFz
UmVnRXhwKCk7CisgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ0V4cD4gcmVzdWx0ID0gUmVnRXhw
OjpjcmVhdGUoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXJpYWxpemVkUmVnRXhwLT5wYXR0ZXJu
KCksIHNlcmlhbGl6ZWRSZWdFeHAtPmZsYWdzKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgKG1fZXhlYykgUmVnRXhwT2JqZWN0KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBt
X2dsb2JhbE9iamVjdC0+cmVnRXhwU3RydWN0dXJlKCksIHJlc3VsdCk7ICAgICAgICAgICAgCisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6
OkVtcHR5VHlwZToKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4ganNOdWxsKCk7CkBAIC0xMDE1LDYgKzEwNjIsNyBAQCBzdHJ1Y3Qg
VGVhcmRvd25UcmVlV2Fsa2VyIHsKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6RmlsZVR5cGU6CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZURhdGE6OkZpbGVMaXN0VHlwZToKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGF0YTo6SW1hZ2VEYXRhVHlwZToKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlw
dFZhbHVlRGF0YTo6UmVnRXhwVHlwZToKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDJiN2QyMjIyYWU0NTZiZWFkYjI0MDA1
NmU0ZDhkMjUwZmQ5NmI3NmUuLmEyMjMxMWIwNmE5M2E4MjBjMzcyMzA1NWY0ODRiMmNkZTNiZGYz
MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAt
MzIsNiArMzIsMTAgQEAKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlND
b250ZXh0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJl
ZjsKIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBSZWdFeHBPYmplY3Q7Cit9CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBCbG9iOwogICAgIGNsYXNzIEZpbGU7CkBAIC00Miw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTZXJpYWxpemVkRmlsZTsKICAg
ICBjbGFzcyBTZXJpYWxpemVkRmlsZUxpc3Q7CiAgICAgY2xhc3MgU2VyaWFsaXplZEltYWdlRGF0
YTsKKyAgICBjbGFzcyBTZXJpYWxpemVkUmVnRXhwOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRPYmpl
Y3Q7CiAKICAgICBjbGFzcyBTaGFyZWRTZXJpYWxpemVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVk
PFNoYXJlZFNlcmlhbGl6ZWREYXRhPiB7CkBAIC01Myw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgU2VyaWFsaXplZEZpbGUqIGFzRmlsZSgpOwogICAgICAgICBTZXJpYWxp
emVkRmlsZUxpc3QqIGFzRmlsZUxpc3QoKTsKICAgICAgICAgU2VyaWFsaXplZEltYWdlRGF0YSog
YXNJbWFnZURhdGEoKTsKKyAgICAgICAgU2VyaWFsaXplZFJlZ0V4cCogYXNSZWdFeHAoKTsKICAg
ICB9OwogCiAgICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNzAsNyArNzYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBCbG9iVHlwZSwKICAgICAgICAgICAg
IEZpbGVUeXBlLAogICAgICAgICAgICAgRmlsZUxpc3RUeXBlLAotICAgICAgICAgICAgSW1hZ2VE
YXRhVHlwZQorICAgICAgICAgICAgSW1hZ2VEYXRhVHlwZSwKKyAgICAgICAgICAgIFJlZ0V4cFR5
cGUKICAgICAgICAgfTsKIAogICAgICAgICBTZXJpYWxpemVkVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CkBAIC05OCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgRmlsZSopOwog
ICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKGNvbnN0IEZpbGVMaXN0
Kik7CiAgICAgICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgSW1h
Z2VEYXRhKik7CisgICAgICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29u
c3QgSlNDOjpSZWdFeHBPYmplY3QqKTsKIAogICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWVEYXRhKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIDogbV90eXBlKElt
bWVkaWF0ZVR5cGUpCkBAIC0xNzUsNiArMTgzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIHJldHVybiBtX3NoYXJlZERhdGEtPmFzSW1hZ2VEYXRhKCk7CiAgICAgICAgIH0K
IAorICAgICAgICBTZXJpYWxpemVkUmVnRXhwKiBhc1JlZ0V4cCgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gUmVnRXhwVHlwZSk7CisgICAgICAgICAgICBB
U1NFUlQobV9zaGFyZWREYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZERhdGEtPmFz
UmVnRXhwKCk7CisgICAgICAgIH0KKwogICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlICE9IEVtcHR5VHlwZTsgfQogCiAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZURhdGEgcmVsZWFzZSgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggMzk1ZWYxYTViYTE1NDMxZTZmNDZmY2UyOGE4MmQ5OGVmZTU1MGE4
NC4uM2ViODcxODQ3N2M2MTY3MzQ3OGY5Nzc1NTdlODczZTk5N2Q2ZGJiYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtODIsNiArODIsNyBA
QCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIEFycmF5VGFnID0gJ1snLAogICAgIE9iamVj
dFRhZyA9ICd7JywKICAgICBTcGFyc2VBcnJheVRhZyA9ICdAJywKKyAgICBSZWdFeHBUYWcgPSAn
UicsCiB9OwogCiBzdGF0aWMgYm9vbCBzaG91bGRDaGVja0ZvckN5Y2xlcyhpbnQgZGVwdGgpCkBA
IC0yMTksNiArMjIwLDE4IEBAIHB1YmxpYzoKICAgICAgICAgZG9Xcml0ZVVpbnQzMihwaXhlbERh
dGFMZW5ndGgpOwogICAgICAgICBhcHBlbmQocGl4ZWxEYXRhLCBwaXhlbERhdGFMZW5ndGgpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIHdyaXRlUmVnRXhwKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIFdlIHN0b3JlIFJlZ0V4cCB2YWx1ZXMgdXNpbmcgdGhl
aXIgdG9TdHJpbmcoKSByZXByZXNlbnRhdGlvbiAod2hpY2gKKyAgICAgICAgLy8gaXMgdGhlbiBl
dmFsLWVkIGluIHJlYWRSZWdFeHApIHNpbmNlIFY4IGRvZXMgbm90IGxldCB1cyBnZXQgYXQgUmVn
RXhwCisgICAgICAgIC8vIGludGVybmFscyBkaXJlY3RseS4KKyAgICAgICAgLy8gRklYTUU6IENo
YW5nZSBvbmNlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTg1
MgorICAgICAgICAvLyBpcyBmaXhlZC4KKyAgICAgICAgYXBwZW5kKFJlZ0V4cFRhZyk7CisgICAg
ICAgIHY4OjpTdHJpbmc6OlV0ZjhWYWx1ZSByZWdleHBBc1N0cmluZyh2YWx1ZS0+VG9TdHJpbmco
KSk7CisgICAgICAgIGRvV3JpdGVTdHJpbmcoKnJlZ2V4cEFzU3RyaW5nLCByZWdleHBBc1N0cmlu
Zy5sZW5ndGgoKSk7CisgICAgfQogCiAgICAgdm9pZCB3cml0ZUFycmF5KHVpbnQzMl90IGxlbmd0
aCkKICAgICB7CkBAIC02MDYsNiArNjE5LDExIEBAIHByaXZhdGU6CiAgICAgICAgIG1fd3JpdGVy
LndyaXRlSW1hZ2VEYXRhKGltYWdlRGF0YS0+d2lkdGgoKSwgaW1hZ2VEYXRhLT5oZWlnaHQoKSwg
cGl4ZWxBcnJheS0+ZGF0YSgpLCBwaXhlbEFycmF5LT5sZW5ndGgoKSk7CiAgICAgfQogCisgICAg
dm9pZCB3cml0ZVJlZ0V4cCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCisgICAgeworICAg
ICAgICBtX3dyaXRlci53cml0ZVJlZ0V4cCh2YWx1ZSk7CisgICAgfQorCiAgICAgc3RhdGljIFN0
YXRlQmFzZSogbmV3QXJyYXlTdGF0ZSh2ODo6SGFuZGxlPHY4OjpBcnJheT4gYXJyYXksIFN0YXRl
QmFzZSogbmV4dCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiB1c2UgcGxhaW4gQXJyYXkgc3Rh
dGUgd2hlbiB3ZSBjYW4gcXVpY2tseSBjaGVjayB0aGF0CkBAIC02NTYsNiArNjc0LDggQEAgU2Vy
aWFsaXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIFN0YXQKICAgICAgICAgd3JpdGVGaWxlTGlzdCh2YWx1ZSk7CiAgICAg
ZWxzZSBpZiAoVjhJbWFnZURhdGE6Okhhc0luc3RhbmNlKHZhbHVlKSkKICAgICAgICAgd3JpdGVJ
bWFnZURhdGEodmFsdWUpOworICAgIGVsc2UgaWYgKHZhbHVlLT5Jc1JlZ0V4cCgpKQorICAgICAg
ICBtX3dyaXRlci53cml0ZVJlZ0V4cCh2YWx1ZSk7ICAgICAgICAKICAgICBlbHNlIGlmICh2YWx1
ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHB1c2gobmV3T2JqZWN0U3RhdGUodmFsdWUu
QXM8djg6Ok9iamVjdD4oKSwgbmV4dCkpOwogICAgIHJldHVybiAwOwpAQCAtNzQzLDYgKzc2Mywx
MCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZiAoIXJlYWRJbWFnZURhdGEodmFsdWUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFJlZ0V4cFRhZzoKKyAgICAgICAgICAgIGlmICghcmVhZFJlZ0V4cCh2YWx1ZSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQXJyYXlUYWc6IHsKICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aDsKICAgICAgICAgICAg
IGlmICghZG9SZWFkVWludDMyKCZsZW5ndGgpKQpAQCAtODY4LDYgKzg5MiwxNiBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBib29sIHJlYWRSZWdFeHAodjg6
OkhhbmRsZTx2ODo6VmFsdWU+KiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZWdFeHBBc1N0cmluZzsKKyAgICAgICAgaWYgKCFyZWFkU3RyaW5nKCZyZWdFeHBB
c1N0cmluZykpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHY4OjpMb2NhbDx2
ODo6U2NyaXB0PiByZWdFeHBBc1NjcmlwdCA9IHY4OjpTY3JpcHQ6Ok5ldyhyZWdFeHBBc1N0cmlu
Zy0+VG9TdHJpbmcoKSk7CisgICAgICAgICp2YWx1ZSA9IHJlZ0V4cEFzU2NyaXB0LT5SdW4oKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIGJvb2wgcmVhZEJsb2Iodjg6
OkhhbmRsZTx2ODo6VmFsdWU+KiB2YWx1ZSkKICAgICB7CiAgICAgICAgIFN0cmluZyB1cmw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65800</attachid>
            <date>2010-08-27 18:37:26 -0700</date>
            <delta_ts>2010-09-07 13:47:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44718-20100827183725.patch</filename>
            <type>text/plain</type>
            <size>22006</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAxOTZhMmQwMmQ0Y2Y2MzJhOWU3ZDdiY2NhYzE0MmI5YmM0ZDI5OWNjLi44
ZWQxNmVjZTY5NzMyNTUzNzJhMjY1MTQ1OTYxYzY3MmE2MWM5OWQ4IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTAtMDgtMjcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
cHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNv
cnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1vdmUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2Yg
SlNDOjpSZWdFeHAgKHdoaWNoIGRlcGVuZHMgb24gd2V0aGVyCisgICAgICAgIFlBUlIgYW5kIFlB
UlJfSklUIGlzIGVuYWJsZWQpIGludG8gUmVnRXhwUmVwcmVzZW50YXRpb24gd2hpY2ggY2FuIGxp
dmUKKyAgICAgICAgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9ubHkuIFRoaXMgbWFrZXMgaXQgZmVh
c2libGUgdG8gdXNlIFJlZ0V4cCBpbgorICAgICAgICBXZWJDb3JlIHdpdGhvdXQgYnJpbmdpbmcg
aW4gYWxsIG9mIFlBUlIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBS
ZWdFeHAgYW5kIFJlZ0V4cE9iamVjdCBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgbmVlZGVk
IGluc2lkZSBXZWJDb3JlJ3MgSlNDIGJpbmRpbmdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUmVwcmVzZW50YXRpb246On5SZWdFeHBSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjp+UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKwog
MjAxMC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXgg
MzBmNWFhODZmMWFjNTI2ZTdlMjViMTMwNDQ4YWE1MmNmNzUwODhhYy4uMzlhNTA1YzNjYmEwOWNm
ZjQ0MDU1ZGE3MzQzNmI3YmE3YzQ5MDU0MyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApA
QCAtNDgwLDYgKzQ4MCw4IEBAIF9fWk5LM0pTQzEwSlNGdW5jdGlvbjIzaXNIb3N0RnVuY3Rpb25O
b25JbmxpbmVFdgogX19aTkszSlNDMTFJbnRlcnByZXRlcjE0cmV0cmlldmVDYWxsZXJFUE5TXzlF
eGVjU3RhdGVFUE5TXzEwSlNGdW5jdGlvbkUKIF9fWk5LM0pTQzExSW50ZXJwcmV0ZXIxOHJldHJp
ZXZlTGFzdENhbGxlckVQTlNfOUV4ZWNTdGF0ZUVSaVJsUk5TXzdVU3RyaW5nRVJOU183SlNWYWx1
ZUUKIF9fWk5LM0pTQzEyUHJvcGVydHlTbG90MTRmdW5jdGlvbkdldHRlckVQTlNfOUV4ZWNTdGF0
ZUUKK19fWk4zSlNDMTJSZWdFeHBPYmplY3Q0aW5mb0UKK19fWk4zSlNDMTJSZWdFeHBPYmplY3RD
MUVQTlNfMTRKU0dsb2JhbE9iamVjdEVOM1dURjE3Tm9uTnVsbFBhc3NSZWZQdHJJTlNfOVN0cnVj
dHVyZUVFRU5TNF9JTlNfNlJlZ0V4cEVFRQogX19aTkszSlNDMTRKU0dsb2JhbE9iamVjdDE0aXNE
eW5hbWljU2NvcGVFUmIKIF9fWk5LM0pTQzE2SW50ZXJuYWxGdW5jdGlvbjljbGFzc0luZm9Fdgog
X19aTkszSlNDMTZKU1ZhcmlhYmxlT2JqZWN0MTZpc1ZhcmlhYmxlT2JqZWN0RXYKQEAgLTUxMCw2
ICs1MTIsOCBAQCBfX1pOSzNKU0M2SlNDZWxsOWdldFN0cmluZ0VQTlNfOUV4ZWNTdGF0ZUUKIF9f
Wk5LM0pTQzZKU0NlbGw5Z2V0U3RyaW5nRVBOU185RXhlY1N0YXRlRVJOU183VVN0cmluZ0UKIF9f
Wk5LM0pTQzZKU0NlbGw5Z2V0VUludDMyRVJqCiBfX1pOSzNKU0M2SlNDZWxsOXRvQm9vbGVhbkVQ
TlNfOUV4ZWNTdGF0ZUUKK19fWk4zSlNDNlJlZ0V4cDZjcmVhdGVFUE5TXzEySlNHbG9iYWxEYXRh
RVJLTlNfN1VTdHJpbmdFUzVfCitfX1pOM0pTQzZSZWdFeHBEMUV2CiBfX1pOSzNKU0M3QXJnTGlz
dDhnZXRTbGljZUVpUlMwXwogX19aTkszSlNDN0pTQXJyYXkxMnN1YmNsYXNzRGF0YUV2CiBfX1pO
SzNKU0M3SlNWYWx1ZTE2dG9PYmplY3RTbG93Q2FzZUVQTlNfOUV4ZWNTdGF0ZUUKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwLmNwcAppbmRleCA1YWQ5ZjNmNGNjNzE4OWI5NmI2MjdmNWY0MmQzZDlhMjRl
ZjkyMzk2Li5mYTMzNDlmZDg0OWNkOGI4NTZmNWE2MmMxNTQ4NjBlOTFkZTdiZGY0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC00NiwxMSArNDYsMjkgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK3N0cnVjdCBSZWdFeHBSZXByZXNlbnRhdGlvbiB7CisjaWYgRU5BQkxFKFlBUlJfSklU
KQorICAgIFlhcnI6OlJlZ2V4Q29kZUJsb2NrIG1fcmVnRXhwSklUQ29kZTsKKyNlbGlmIEVOQUJM
RShZQVJSKQorICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNv
ZGU7CisjZWxzZQorICAgIEpTUmVnRXhwKiBtX3JlZ0V4cDsKKyNlbmRpZgorCisjaWYgIUVOQUJM
RShZQVJSKQorICAgIH5SZWdFeHBSZXByZXNlbnRhdGlvbigpCisgICAgeworICAgICAgICBqc1Jl
Z0V4cEZyZWUobV9yZWdFeHApOworICAgIH0KKyNlbmRpZgorfTsKKwogaW5saW5lIFJlZ0V4cDo6
UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwg
Y29uc3QgVVN0cmluZyYgZmxhZ3MpCiAgICAgOiBtX3BhdHRlcm4ocGF0dGVybikKICAgICAsIG1f
ZmxhZ0JpdHMoMCkKICAgICAsIG1fY29uc3RydWN0aW9uRXJyb3IoMCkKICAgICAsIG1fbnVtU3Vi
cGF0dGVybnMoMCkKKyAgICAsIG1fcmVwcmVzZW50YXRpb24obmV3IFJlZ0V4cFJlcHJlc2VudGF0
aW9uKCkpCiB7CiAgICAgLy8gTk9URTogVGhlIGdsb2JhbCBmbGFnIGlzIGhhbmRsZWQgb24gYSBj
YXNlLWJ5LWNhc2UgYmFzaXMgYnkgZnVuY3Rpb25zIGxpa2UKICAgICAvLyBTdHJpbmc6Om1hdGNo
IGFuZCBSZWdFeHBPYmplY3Q6Om1hdGNoLgpAQCAtNjUsMTIgKzgzLDEwIEBAIGlubGluZSBSZWdF
eHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFVTCiAgICAgY29tcGlsZShnbG9iYWxEYXRhKTsKIH0KIAotI2lmICFFTkFCTEUo
WUFSUikKIFJlZ0V4cDo6flJlZ0V4cCgpCiB7Ci0gICAganNSZWdFeHBGcmVlKG1fcmVnRXhwKTsK
KyAgICBkZWxldGUgbV9yZXByZXNlbnRhdGlvbjsKIH0KLSNlbmRpZgogCiBQYXNzUmVmUHRyPFJl
Z0V4cD4gUmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncykKIHsKQEAgLTgyLDkgKzk4LDkgQEAg
UGFzc1JlZlB0cjxSZWdFeHA+IFJlZ0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgVVN0cmluZyYgcGF0dGUKIHZvaWQgUmVnRXhwOjpjb21waWxlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKIHsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgWWFycjo6aml0Q29t
cGlsZVJlZ2V4KGdsb2JhbERhdGEsIG1fcmVnRXhwSklUQ29kZSwgbV9wYXR0ZXJuLCBtX251bVN1
YnBhdHRlcm5zLCBtX2NvbnN0cnVjdGlvbkVycm9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgp
KTsKKyAgICBZYXJyOjpqaXRDb21waWxlUmVnZXgoZ2xvYmFsRGF0YSwgbV9yZXByZXNlbnRhdGlv
bi0+bV9yZWdFeHBKSVRDb2RlLCBtX3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3Ry
dWN0aW9uRXJyb3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOwogI2Vsc2UKLSAgICBtX3Jl
Z0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGVSZWdleChtX3BhdHRlcm4sIG1fbnVtU3Vi
cGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsICZnbG9iYWxEYXRhLT5tX3JlZ2V4QWxsb2Nh
dG9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKKyAgICBtX3JlcHJlc2VudGF0aW9uLT5t
X3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6Ynl0ZUNvbXBpbGVSZWdleChtX3BhdHRlcm4sIG1fbnVt
U3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsICZnbG9iYWxEYXRhLT5tX3JlZ2V4QWxs
b2NhdG9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKICNlbmRpZgogfQogCkBAIC05OSw5
ICsxMTUsOSBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRP
ZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKICAgICAgICAgcmV0dXJuIC0xOwogCiAj
aWYgRU5BQkxFKFlBUlJfSklUKQotICAgIGlmICghIW1fcmVnRXhwSklUQ29kZSkgeworICAgIGlm
ICghIW1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29kZSkgewogI2Vsc2UKLSAgICBpZiAo
bV9yZWdFeHBCeXRlY29kZSkgeworICAgIGlmIChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5
dGVjb2RlKSB7CiAjZW5kaWYKICAgICAgICAgaW50IG9mZnNldFZlY3RvclNpemUgPSAobV9udW1T
dWJwYXR0ZXJucyArIDEpICogMzsgLy8gRklYTUU6IHNob3VsZCBiZSAyIC0gYnV0IGFkZGluZyB0
ZW1wb3JhcnkgZmFsbGJhY2sgdG8gcGNyZS4KICAgICAgICAgaW50KiBvZmZzZXRWZWN0b3I7CkBA
IC0xMTksOSArMTM1LDkgQEAgaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50
IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAgICAgICAgICAgICBvZmZz
ZXRWZWN0b3Jbal0gPSAtMTsKIAogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgaW50IHJl
c3VsdCA9IFlhcnI6OmV4ZWN1dGVSZWdleChtX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFjdGVycygp
LCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0b3JTaXpl
KTsKKyAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmV4ZWN1dGVSZWdleChtX3JlcHJlc2VudGF0
aW9uLT5tX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5n
dGgoKSwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0b3JTaXplKTsKICNlbHNlCi0gICAgICAgIGlu
dCByZXN1bHQgPSBZYXJyOjppbnRlcnByZXRSZWdleChtX3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBz
LmNoYXJhY3RlcnMoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rvcik7Cisg
ICAgICAgIGludCByZXN1bHQgPSBZYXJyOjppbnRlcnByZXRSZWdleChtX3JlcHJlc2VudGF0aW9u
LT5tX3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBzLmNoYXJhY3RlcnMoKSwgc3RhcnRPZmZzZXQsIHMu
bGVuZ3RoKCksIG9mZnNldFZlY3Rvcik7CiAjZW5kaWYKIAogICAgICAgICBpZiAocmVzdWx0IDwg
MCkgewpAQCAtMTQ0LDEwICsxNjAsMTAgQEAgaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmlu
ZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAKIHZvaWQg
UmVnRXhwOjpjb21waWxlKEpTR2xvYmFsRGF0YSopCiB7Ci0gICAgbV9yZWdFeHAgPSAwOworICAg
IG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwID0gMDsKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VP
cHRpb24gaWdub3JlQ2FzZU9wdGlvbiA9IGlnbm9yZUNhc2UoKSA/IEpTUmVnRXhwSWdub3JlQ2Fz
ZSA6IEpTUmVnRXhwRG9Ob3RJZ25vcmVDYXNlOwogICAgIEpTUmVnRXhwTXVsdGlsaW5lT3B0aW9u
IG11bHRpbGluZU9wdGlvbiA9IG11bHRpbGluZSgpID8gSlNSZWdFeHBNdWx0aWxpbmUgOiBKU1Jl
Z0V4cFNpbmdsZUxpbmU7Ci0gICAgbV9yZWdFeHAgPSBqc1JlZ0V4cENvbXBpbGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KG1fcGF0dGVybi5jaGFyYWN0ZXJzKCkpLCBtX3BhdHRlcm4u
bGVuZ3RoKCksIGlnbm9yZUNhc2VPcHRpb24sIG11bHRpbGluZU9wdGlvbiwgJm1fbnVtU3VicGF0
dGVybnMsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKKyAgICBtX3JlcHJlc2VudGF0aW9uLT5tX3Jl
Z0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9w
YXR0ZXJuLmNoYXJhY3RlcnMoKSksIG1fcGF0dGVybi5sZW5ndGgoKSwgaWdub3JlQ2FzZU9wdGlv
biwgbXVsdGlsaW5lT3B0aW9uLCAmbV9udW1TdWJwYXR0ZXJucywgJm1fY29uc3RydWN0aW9uRXJy
b3IpOwogfQogCiBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRP
ZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKQEAgLTE2MCw3ICsxNzYsNyBAQCBpbnQg
UmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3Rvcjxp
bnQsIDMyPiogb3ZlY3RvcikKICAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zm
c2V0KSA+IHMubGVuZ3RoKCkgfHwgcy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgaWYgKG1fcmVnRXhwKSB7CisgICAgaWYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwKSB7
CiAgICAgICAgIC8vIFNldCB1cCB0aGUgb2Zmc2V0IHZlY3RvciBmb3IgdGhlIHJlc3VsdC4KICAg
ICAgICAgLy8gRmlyc3QgMi8zIHVzZWQgZm9yIHJlc3VsdCwgdGhlIGxhc3QgdGhpcmQgdXNlZCBi
eSBQQ1JFLgogICAgICAgICBpbnQqIG9mZnNldFZlY3RvcjsKQEAgLTE3NSw3ICsxOTEsNyBAQCBp
bnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3Rv
cjxpbnQsIDMyPiogb3ZlY3RvcikKICAgICAgICAgICAgIG9mZnNldFZlY3RvciA9IG92ZWN0b3It
PmRhdGEoKTsKICAgICAgICAgfQogCi0gICAgICAgIGludCBudW1NYXRjaGVzID0ganNSZWdFeHBF
eGVjdXRlKG1fcmVnRXhwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5jaGFyYWN0
ZXJzKCkpLCBzLmxlbmd0aCgpLCBzdGFydE9mZnNldCwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0
b3JTaXplKTsKKyAgICAgICAgaW50IG51bU1hdGNoZXMgPSBqc1JlZ0V4cEV4ZWN1dGUobV9yZXBy
ZXNlbnRhdGlvbi0+bV9yZWdFeHAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmNo
YXJhY3RlcnMoKSksIHMubGVuZ3RoKCksIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIG9mZnNl
dFZlY3RvclNpemUpOwogICAgIAogICAgICAgICBpZiAobnVtTWF0Y2hlcyA8IDApIHsKICNpZm5k
ZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRleCBhYWRhZDZiNmIwODI1NzUyZjhh
ZjYwZDMyMmI5MTQ2OTcxMDgyNWM1Li4zYzdhMTExMzU4ZDNlY2FmNjY2YzJiN2VmYzU1ZGVkZDZi
ZjJjYjJiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKQEAgLTI2LDIxICsyNiwxNiBAQAogI2lu
Y2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSAieWFyci9SZWdleEpJVC5oIgot
I2luY2x1ZGUgInlhcnIvUmVnZXhJbnRlcnByZXRlci5oIgotCi1zdHJ1Y3QgSlNSZWdFeHA7CiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uOwogICAg
IGNsYXNzIEpTR2xvYmFsRGF0YTsKIAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFJlZ0V4cD4gewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVn
RXhwPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0
ZXJuLCBjb25zdCBVU3RyaW5nJiBmbGFncyk7Ci0jaWYgIUVOQUJMRShZQVJSKQogICAgICAgICB+
UmVnRXhwKCk7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmxhZ0JpdHMgJiBHbG9iYWw7IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3Qg
eyByZXR1cm4gbV9mbGFnQml0cyAmIElnbm9yZUNhc2U7IH0KQEAgLTY1LDE0ICs2MCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgbV9mbGFnQml0czsKICAgICAgICAgY29uc3QgY2hh
ciogbV9jb25zdHJ1Y3Rpb25FcnJvcjsKICAgICAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJu
czsKLQotI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sg
bV9yZWdFeHBKSVRDb2RlOwotI2VsaWYgRU5BQkxFKFlBUlIpCi0gICAgICAgIE93blB0cjxZYXJy
OjpCeXRlY29kZVBhdHRlcm4+IG1fcmVnRXhwQnl0ZWNvZGU7Ci0jZWxzZQotICAgICAgICBKU1Jl
Z0V4cCogbV9yZWdFeHA7Ci0jZW5kaWYKKyAgICAgICAgCisgICAgICAgIFJlZ0V4cFJlcHJlc2Vu
dGF0aW9uKiBjb25zdCBtX3JlcHJlc2VudGF0aW9uOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDNmOGQyNzNkMjYxMDhlZDUyN2RiY2IzYWJhZWY4NDEzYjc0N2JhODMuLjRh
ZmYxOWE1ODk3OGQyZWE4YWM4MTA0NzVlNmI1ZDhmYWYyNThiNzAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMC0wOC0yNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBwdXNoU3Rh
dGUgYW5kIHJlcGxhY2VTdGF0ZSBkbyBub3QgY2xvbmUgUmVnRXhwIG9iamVjdHMgY29ycmVjdGx5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxOAor
ICAgICAgICAKKyAgICAgICAgTWFrZSBSZWdFeHAgdGVzdCBvZiBwdXNoc3RhdGUtb2JqZWN0LXR5
cGVzLmh0bWwgYWN0dWFsbHkgdGVzdCBhIFJlZ0V4cAorICAgICAgICB2YWx1ZSB3aXRoIGZsYWdz
LgorICAgICAgICAKKyAgICAgICAgQWxzbyBhZGRzIEltYWdlRGF0YSBzaW5jZSBpdCBjYW4gYmUg
c2VyaWFsaXplZCBhcyBvZiByNTQ2NDYuICAgICAgICAKKworICAgICAgICAqIGZhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1s
OgorCiAyMDEwLTA4LTI3ICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHRlc3RzIHRvIHRoZSBXZWJLaXQyIHNraXBwZWQgbGlzdC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0
LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dAppbmRleCA5MTBiNzk1ZGFmMzUy
NDk2NDY1YTcxNTI0MTMzYTgzY2IzNTNhZWM4Li5lMWY1N2RiMTQwYmI3ZjFlZjJmODdlZWQyYzcy
NjY1ZDkzNjBjNTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9i
amVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0
ZWQudHh0CkBAIC0xLDkgKzEsMTAgQEAKIFRoaXMgdGVzdCBjYWxscyBwdXNoU3RhdGUgd2l0aCBz
dGF0ZSBvYmplY3RzIG9mIGFsbCB0aGUgZGlmZmVyZW50IG9iamVjdCB0eXBlcyBzdXBwb3J0ZWQg
YnkgdGhlIEhUTUw1ICJpbnRlcm5hbCBzdHJ1Y3R1cmVkIGNsb25pbmcgYWxnb3JpdGhtIiBhbmQg
bWFrZXMgc3VyZSB0aGUgZXZlbnRzIGNvbnRhaW4gdGhlIGV4cGVjdGVkIG9iamVjdHMgd2hlbiB0
aGUgc3RhdGVzIGFyZSBwb3BwZWQuCiAKK1N0YXRlIHBvcHBlZCAtIFtvYmplY3QgSW1hZ2VEYXRh
XSAodHlwZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQgLSBbb2JqZWN0IE9iamVjdF0gKHR5cGUgb2Jq
ZWN0KQogU3RhdGUgcG9wcGVkIC0gW29iamVjdCBPYmplY3RdICh0eXBlIG9iamVjdCkKIFN0YXRl
IHBvcHBlZCAtICAodHlwZSBvYmplY3QpCi1TdGF0ZSBwb3BwZWQgLSBudWxsICh0eXBlIG9iamVj
dCkKK1N0YXRlIHBvcHBlZCAtIC9mb28vZ2kgKHR5cGUgZnVuY3Rpb24pCiBTdGF0ZSBwb3BwZWQg
LSAwICh0eXBlIG9iamVjdCkKIFN0YXRlIHBvcHBlZCAtIFN0cmluZyAodHlwZSBzdHJpbmcpCiBT
dGF0ZSBwb3BwZWQgLSA0MiAodHlwZSBudW1iZXIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMu
aHRtbAppbmRleCAzOTkyYzRkNDgxYzRlOGQyOGE2ZjczYjZhYTRlZmQwMGU2N2QxOGM0Li5mZGYw
MmUzY2Y0NGU5ZjYyZmJkMDNjMTNmZjRiMjM0NGZmZGE3MTFiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2Jq
ZWN0LXR5cGVzLmh0bWwKQEAgLTEwLDcgKzEwLDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewogCiBmdW5jdGlvbiBsb2codHh0KQogewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2dnZXIiKS5pbm5lclRleHQgKz0gdHh0ICsgIlxuIjsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nZ2VyIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUodHh0ICsgIlxuIikpOwogfQogICAgIAogZnVuY3Rpb24gcnVuVGVzdCgpCkBAIC0yMywxMyAr
MjMsMTMgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5wdXNoU3RhdGUoNDIsICJO
dW1iZXIgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1c2hTdGF0ZSgiU3RyaW5nIiwgIlN0cmluZyBl
bnRyeSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBEYXRlKDApLCAiRGF0ZSBlbnRyeSIp
OwotICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBSZWdFeHAsICJSZWdFeHAgZW50cnkiKTsKKyAg
ICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgUmVnRXhwKCJmb28iLCAiZ2kiKSwgIlJlZ0V4cCBlbnRy
eSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBBcnJheSwgIkFycmF5IGVudHJ5Iik7CiAg
ICAgaGlzdG9yeS5wdXNoU3RhdGUobmV3IE9iamVjdCwgIk9iamVjdCBlbnRyeSIpOwogICAgIGhp
c3RvcnkucHVzaFN0YXRlKG5ldyBFcnJvciwgIkVycm9yIGVudHJ5Iik7CisgICAgaGlzdG9yeS5w
dXNoU3RhdGUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQi
KS5jcmVhdGVJbWFnZURhdGEoMTAsMTApLCAiSW1hZ2VEYXRhIGVudHJ5Iik7CiAKIC8qIFRoZSBm
b2xsb3dpbmcgYXJlIG5vdCB5ZXQgd2VsbCBlbm91Z2ggc3VwcG9ydGVkIGluIFdlYktpdCB0byBt
ZWFuaW5nZnVsbHkgdGVzdCBoZXJlOgotaGlzdG9yeS5wdXNoU3RhdGUoW0ltYWdlRGF0YV0sICJJ
bWFnZURhdGEgZW50cnkiKTsKIGhpc3RvcnkucHVzaFN0YXRlKFtCbG9iXSwgIkJsb2IgZW50cnki
KTsKIGhpc3RvcnkucHVzaFN0YXRlKFtGaWxlXSwgIkZpbGUgZW50cnkiKTsKIGhpc3RvcnkucHVz
aFN0YXRlKFtGaWxlTGlzdF0sICJGaWxlTGlzdCBlbnRyeSIpOwpAQCAtMzksMTAgKzM5LDEwIEBA
IGhpc3RvcnkucHVzaFN0YXRlKFtGaWxlTGlzdF0sICJGaWxlTGlzdCBlbnRyeSIpOwogICAgIGhp
c3RvcnkuYmFjaygpOwogfQogCi1mdW5jdGlvbiBzdGF0ZVBvcHBlZCgpCitmdW5jdGlvbiBzdGF0
ZVBvcHBlZChldmVudCkKIHsKICAgICBpZiAoZXZlbnQuc3RhdGUgaW5zdGFuY2VvZiBEYXRlKQot
ICAgICAgICBsb2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSAqIDEgKyAiICh0eXBl
ICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgICAgICBsb2coIlN0YXRlIHBvcHBl
ZCAtICIgKyBldmVudC5zdGF0ZS5nZXRUaW1lKCkgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQu
c3RhdGUgKyAiKSIpOwogICAgIGVsc2UKICAgICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsg
ZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogCkBA
IC01NCw3ICs1NCw3IEBAIGZ1bmN0aW9uIHN0YXRlUG9wcGVkKCkKIH0KIAogPC9zY3JpcHQ+Ci08
Ym9keSBvbmxvYWQ9InJ1blRlc3QoKTsiIG9ucG9wc3RhdGU9InN0YXRlUG9wcGVkKCk7Ij4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpOyIgb25wb3BzdGF0ZT0ic3RhdGVQb3BwZWQoZXZlbnQpOyI+
CiA8cHJlIGlkPSJzb21lZWxlbWVudCI+CiBUaGlzIHRlc3QgY2FsbHMgcHVzaFN0YXRlIHdpdGgg
c3RhdGUgb2JqZWN0cyBvZiBhbGwgdGhlIGRpZmZlcmVudCBvYmplY3QgdHlwZXMgc3VwcG9ydGVk
IGJ5IHRoZSBIVE1MNSAiaW50ZXJuYWwgc3RydWN0dXJlZCBjbG9uaW5nIGFsZ29yaXRobSIgYW5k
IG1ha2VzIHN1cmUgdGhlIGV2ZW50cyBjb250YWluIHRoZSBleHBlY3RlZCBvYmplY3RzIHdoZW4g
dGhlIHN0YXRlcyBhcmUgcG9wcGVkLgogPC9wcmU+PGJyPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNWI1OTU5N2FkM2M3ZDExOTM2YjQ1
YTBlNGE4MzY1YmRjOGQ1ZmYxLi4xZGIxNWY0OTg3ZTIzZWNlMjVmOThkYTdkODgxNjZlYzBmNzhk
NjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMyIEBACisyMDEwLTA4LTI3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIHB1c2hTdGF0ZSBhbmQgcmVwbGFjZVN0YXRlIGRvIG5vdCBjbG9uZSBSZWdFeHAgb2Jq
ZWN0cyBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0NzE4CisgICAgICAgIAorICAgICAgICBBZGQgUmVnRXhwIHN1cHBvcnQgdG8gdGhl
IEpTQyBpbXBsZW1lbnRhdGlvbiBvZiBTZXJpYWxpemVkU2NyaXB0VmFsdWUKKyAgICAgICAgKGl0
IHN0b3JlcyB0aGUgcGF0dGVybiBhbmQgZmxhZ3MgcmVhZCBmcm9tIGEgUmVnRXhwT2JqZWN0LCBh
bmQgY3JlYXRlcworICAgICAgICBhIG5ldyBvbmUgb24gZGVzZXJpYWxpemF0aW9uKS4KKyAgICAg
ICAgCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9i
amVjdC10eXBlcy5odG1sIAorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9S
ZWdFeHAuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdF
eHBPYmplY3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRSZWdFeHA6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUmVnRXhwOjpwYXR0ZXJuKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRSZWdFeHA6OmZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cmlhbGl6ZWRSZWdFeHA6OlNlcmlhbGl6ZWRSZWdFeHApOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRTZXJpYWxpemVkRGF0YTo6YXNSZWdFeHApOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXppbmdUcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXNlcmlhbGl6aW5nVHJlZVdhbGtlcjo6Y29udmVydElmVGVybWluYWwp
OgorICAgICAgICAoV2ViQ29yZTo6VGVhcmRvd25UcmVlV2Fsa2VyOjpjb252ZXJ0SWZUZXJtaW5h
bCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhOjopOgorICAgICAgICAoV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6YXNSZWdFeHApOgorCiAyMDEwLTA4LTI2
ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50
aW1lL1JlZ0V4cC5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI2ZTg4OTQ1ZDM5YmU0NmNiNGZjNTY4N2RlOTc1MDA3NWMzZjJlMDMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhw
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1JlZ0V4cF9oCisjZGVmaW5l
IFdlYkNvcmVfRldEX1JlZ0V4cF9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVnRXhwLmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9S
ZWdFeHBPYmplY3QuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdFeHBP
YmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iM2YyNTE2OTBjM2IzNTEyOWUwM2Y3ODgwYjBiZGM5MTMzZTQx
YzdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1l
L1JlZ0V4cE9iamVjdC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9SZWdF
eHBPYmplY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9SZWdFeHBPYmplY3RfaAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1JlZ0V4cE9iamVjdC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggMDBlYzI1ZjU4NjFiZWQ0NzUx
NjcyNWFkNDBmMzYzNmZlNmYzZGMyNy4uMzBjZDBiYzE3YzI4YWIyYjYxZTIzYzc3ZDZmNWFjMzA1
ZjU1OGRmMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Qcm9w
ZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvUmVnRXhwLmg+CisjaW5jbHVkZSA8
cnVudGltZS9SZWdFeHBPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yNTUs
NiArMjU3LDMzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdURjo6Qnl0ZUFycmF5PiBtX3N0b3Jh
Z2U7CiB9OwogCitjbGFzcyBTZXJpYWxpemVkUmVnRXhwIDogcHVibGljIFNoYXJlZFNlcmlhbGl6
ZWREYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkUmVnRXhw
PiBjcmVhdGUoY29uc3QgUmVnRXhwT2JqZWN0KiByZWdFeHApCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRSZWdFeHAocmVnRXhwKSk7CisgICAgfQorICAgIAor
ICAgIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm47IH0K
KyAgICBjb25zdCBVU3RyaW5nJiBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KK3By
aXZhdGU6CisgICAgU2VyaWFsaXplZFJlZ0V4cChjb25zdCBSZWdFeHBPYmplY3QqIHJlZ0V4cCkK
KyAgICAgICAgOiBtX3BhdHRlcm4ocmVnRXhwLT5yZWdFeHAoKS0+cGF0dGVybigpKQorICAgIHsK
KyAgICAgICAgY2hhciBmbGFnc1szXTsKKyAgICAgICAgaW50IGZsYWdDb3VudCA9IDA7CisgICAg
ICAgIGlmIChyZWdFeHAtPnJlZ0V4cCgpLT5nbG9iYWwoKSkKKyAgICAgICAgICBmbGFnc1tmbGFn
Q291bnQrK10gPSAnZyc7CisgICAgICAgIGlmIChyZWdFeHAtPnJlZ0V4cCgpLT5pZ25vcmVDYXNl
KCkpCisgICAgICAgICAgZmxhZ3NbZmxhZ0NvdW50KytdID0gJ2knOworICAgICAgICBpZiAocmVn
RXhwLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkpCisgICAgICAgICAgZmxhZ3NbZmxhZ0NvdW50Kytd
ID0gJ20nOworICAgICAgICBtX2ZsYWdzID0gVVN0cmluZyhmbGFncywgZmxhZ0NvdW50KTsKKyAg
ICB9CisgICAgVVN0cmluZyBtX3BhdHRlcm47CisgICAgVVN0cmluZyBtX2ZsYWdzOworfTsKKwog
U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShSZWZQ
dHI8U2VyaWFsaXplZE9iamVjdD4gZGF0YSkKICAgICA6IG1fdHlwZShPYmplY3RUeXBlKQogICAg
ICwgbV9zaGFyZWREYXRhKGRhdGEpCkBAIC0yOTEsNiArMzIwLDEyIEBAIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZURhdGE6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgRmlsZSogZmlsZSkK
IHsKIH0KIAorU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
RGF0YShjb25zdCBSZWdFeHBPYmplY3QqIHJlZ0V4cCkKKyAgICA6IG1fdHlwZShSZWdFeHBUeXBl
KQorICAgICwgbV9zaGFyZWREYXRhKFNlcmlhbGl6ZWRSZWdFeHA6OmNyZWF0ZShyZWdFeHApKQor
eworfQorCiBTZXJpYWxpemVkQXJyYXkqIFNoYXJlZFNlcmlhbGl6ZWREYXRhOjphc0FycmF5KCkK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VyaWFsaXplZEFycmF5Kj4odGhpcyk7CkBAIC0z
MjEsNiArMzU2LDExIEBAIFNlcmlhbGl6ZWRJbWFnZURhdGEqIFNoYXJlZFNlcmlhbGl6ZWREYXRh
Ojphc0ltYWdlRGF0YSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRJbWFnZURh
dGEqPih0aGlzKTsKIH0KIAorU2VyaWFsaXplZFJlZ0V4cCogU2hhcmVkU2VyaWFsaXplZERhdGE6
OmFzUmVnRXhwKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFJlZ0V4cCo+
KHRoaXMpOworfQorCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUZpbHRlclJlY3Vyc2lv
biA9IDQwMDAwOwogZW51bSBXYWxrZXJTdGF0ZSB7IFN0YXRlVW5rbm93biwgQXJyYXlTdGFydFN0
YXRlLCBBcnJheVN0YXJ0VmlzaXRNZW1iZXIsIEFycmF5RW5kVmlzaXRNZW1iZXIsCiAgICAgT2Jq
ZWN0U3RhcnRTdGF0ZSwgT2JqZWN0U3RhcnRWaXNpdE1lbWJlciwgT2JqZWN0RW5kVmlzaXRNZW1i
ZXIgfTsKQEAgLTY1NCw2ICs2OTQsOCBAQCBzdHJ1Y3QgU2VyaWFsaXppbmdUcmVlV2Fsa2VyIDog
cHVibGljIEJhc2VXYWxrZXIgewogICAgICAgICAgICAgICAgIHJldHVybiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWVEYXRhKHRvRmlsZUxpc3Qob2JqKSk7CiAgICAgICAgICAgICBpZiAob2JqLT5pbmhl
cml0cygmSlNJbWFnZURhdGE6OnNfaW5mbykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZURhdGEodG9JbWFnZURhdGEob2JqKSk7CisgICAgICAgICAgICBpZiAo
b2JqLT5pbmhlcml0cygmUmVnRXhwT2JqZWN0OjppbmZvKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YShhc1JlZ0V4cE9iamVjdChvYmopKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIENhbGxEYXRhIHVudXNlZERhdGE7CiAgICAgICAgICAg
ICBpZiAoZ2V0Q2FsbERhdGEodmFsdWUsIHVudXNlZERhdGEpID09IENhbGxUeXBlTm9uZSkKQEAg
LTg1NCw2ICs4OTYsMTEgQEAgc3RydWN0IERlc2VyaWFsaXppbmdUcmVlV2Fsa2VyIDogcHVibGlj
IEJhc2VXYWxrZXIgewogICAgICAgICAgICAgICAgIG1lbWNweShyZXN1bHQtPmRhdGEoKS0+ZGF0
YSgpLT5kYXRhKCksIHNlcmlhbGl6ZWRJbWFnZURhdGEtPmRhdGEoKS0+ZGF0YSgpLCBzZXJpYWxp
emVkSW1hZ2VEYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dG9KUyhtX2V4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9nbG9iYWxPYmpl
Y3QpLCByZXN1bHQuZ2V0KCkpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBTZXJp
YWxpemVkU2NyaXB0VmFsdWVEYXRhOjpSZWdFeHBUeXBlOiB7CisgICAgICAgICAgICAgICAgU2Vy
aWFsaXplZFJlZ0V4cCogc2VyaWFsaXplZFJlZ0V4cCA9IHZhbHVlLmFzUmVnRXhwKCk7CisgICAg
ICAgICAgICAgICAgUmVmUHRyPFJlZ0V4cD4gcmVzdWx0ID0gUmVnRXhwOjpjcmVhdGUoJm1fZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBzZXJpYWxpemVkUmVnRXhwLT5wYXR0ZXJuKCksIHNlcmlhbGl6ZWRS
ZWdFeHAtPmZsYWdzKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgUmVn
RXhwT2JqZWN0KG1fZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBtX2dsb2JhbE9iamVjdC0+
cmVnRXhwU3RydWN0dXJlKCksIHJlc3VsdCk7ICAgICAgICAgICAgCisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkVtcHR5VHlwZToKICAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICByZXR1
cm4ganNOdWxsKCk7CkBAIC0xMDE1LDYgKzEwNjIsNyBAQCBzdHJ1Y3QgVGVhcmRvd25UcmVlV2Fs
a2VyIHsKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6RmlsZVR5
cGU6CiAgICAgICAgICAgICBjYXNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGE6OkZpbGVMaXN0
VHlwZToKICAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6SW1hZ2VE
YXRhVHlwZToKKyAgICAgICAgICAgIGNhc2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlRGF0YTo6UmVn
RXhwVHlwZToKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oCmluZGV4IDJiN2QyMjIyYWU0NTZiZWFkYjI0MDA1NmU0ZDhkMjUwZmQ5NmI3
NmUuLmEyMjMxMWIwNmE5M2E4MjBjMzcyMzA1NWY0ODRiMmNkZTNiZGYzMDEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtMzIsNiArMzIsMTAgQEAK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZUpTQ29udGV4dCogSlNDb250ZXh0UmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNWYWx1ZSogSlNWYWx1ZVJlZjsKIAorbmFtZXNwYWNl
IEpTQyB7CitjbGFzcyBSZWdFeHBPYmplY3Q7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBCbG9iOwogICAgIGNsYXNzIEZpbGU7CkBAIC00Miw2ICs0Niw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTZXJpYWxpemVkRmlsZTsKICAgICBjbGFzcyBTZXJpYWxp
emVkRmlsZUxpc3Q7CiAgICAgY2xhc3MgU2VyaWFsaXplZEltYWdlRGF0YTsKKyAgICBjbGFzcyBT
ZXJpYWxpemVkUmVnRXhwOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRPYmplY3Q7CiAKICAgICBjbGFz
cyBTaGFyZWRTZXJpYWxpemVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZFNlcmlhbGl6
ZWREYXRhPiB7CkBAIC01Myw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
U2VyaWFsaXplZEZpbGUqIGFzRmlsZSgpOwogICAgICAgICBTZXJpYWxpemVkRmlsZUxpc3QqIGFz
RmlsZUxpc3QoKTsKICAgICAgICAgU2VyaWFsaXplZEltYWdlRGF0YSogYXNJbWFnZURhdGEoKTsK
KyAgICAgICAgU2VyaWFsaXplZFJlZ0V4cCogYXNSZWdFeHAoKTsKICAgICB9OwogCiAgICAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwpAQCAtNzAsNyArNzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICBCbG9iVHlwZSwKICAgICAgICAgICAgIEZpbGVUeXBlLAogICAg
ICAgICAgICAgRmlsZUxpc3RUeXBlLAotICAgICAgICAgICAgSW1hZ2VEYXRhVHlwZQorICAgICAg
ICAgICAgSW1hZ2VEYXRhVHlwZSwKKyAgICAgICAgICAgIFJlZ0V4cFR5cGUKICAgICAgICAgfTsK
IAogICAgICAgICBTZXJpYWxpemVkVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CkBAIC05OCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGV4cGxpY2l0
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgRmlsZSopOwogICAgICAgICBleHBsaWNp
dCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKGNvbnN0IEZpbGVMaXN0Kik7CiAgICAgICAgIGV4
cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgSW1hZ2VEYXRhKik7CisgICAg
ICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEoY29uc3QgSlNDOjpSZWdFeHBP
YmplY3QqKTsKIAogICAgICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVEYXRhKEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgICAgIDogbV90eXBlKEltbWVkaWF0ZVR5cGUpCkBA
IC0xNzUsNiArMTgzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVy
biBtX3NoYXJlZERhdGEtPmFzSW1hZ2VEYXRhKCk7CiAgICAgICAgIH0KIAorICAgICAgICBTZXJp
YWxpemVkUmVnRXhwKiBhc1JlZ0V4cCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gUmVnRXhwVHlwZSk7CisgICAgICAgICAgICBBU1NFUlQobV9zaGFyZWRE
YXRhKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZERhdGEtPmFzUmVnRXhwKCk7CisgICAg
ICAgIH0KKwogICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICE9
IEVtcHR5VHlwZTsgfQogCiAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZURhdGEgcmVsZWFz
ZSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66760</attachid>
            <date>2010-09-07 13:47:25 -0700</date>
            <delta_ts>2010-09-07 14:29:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44718-20100907134723.patch</filename>
            <type>text/plain</type>
            <size>16977</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhN2E1MjQxZDkzODVhYjQ0NDY0ZmUzYWJhZWQ1NTNmMTNkMzUzNTkxLi5i
MmM0ZmM1YjY5NDEzNTlkNzU4YTc5ZjAwMjQxZTBiYmRiMjk5YjQ0IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTAtMDktMDcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
cHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNv
cnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1vdmUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2Yg
SlNDOjpSZWdFeHAgKHdoaWNoIGRlcGVuZHMgb24gd2V0aGVyCisgICAgICAgIFlBUlIgYW5kIFlB
UlJfSklUIGlzIGVuYWJsZWQpIGludG8gUmVnRXhwUmVwcmVzZW50YXRpb24gd2hpY2ggY2FuIGxp
dmUKKyAgICAgICAgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9ubHkuIFRoaXMgbWFrZXMgaXQgZmVh
c2libGUgdG8gdXNlIFJlZ0V4cCBpbgorICAgICAgICBXZWJDb3JlIHdpdGhvdXQgYnJpbmdpbmcg
aW4gYWxsIG9mIFlBUlIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBS
ZWdFeHAgYW5kIFJlZ0V4cE9iamVjdCBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgbmVlZGVk
IGluc2lkZSBXZWJDb3JlJ3MgSlNDIGJpbmRpbmdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUmVwcmVzZW50YXRpb246On5SZWdFeHBSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjp+UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKwog
MjAxMC0wOS0wNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRl
eCA3ZGY5Mzc2NTAxMTE3MTM1OTdiOWU2MWQwMzhiNDJiMDJkYjhkNWFhLi5iOGZiYjA4Mjc3MjVl
MDdhNTAxOTU2OGU0NmFkZTVlNjU2NDEzOTkwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC00ODEsNiArNDgxLDggQEAgX19aTkszSlNDMTBKU0Z1bmN0aW9uMjNpc0hvc3RGdW5jdGlv
bk5vbklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVyMTRyZXRyaWV2ZUNhbGxlckVQTlNf
OUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTkszSlNDMTFJbnRlcnByZXRlcjE4cmV0
cmlldmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxSTlNfN1VTdHJpbmdFUk5TXzdKU1Zh
bHVlRQogX19aTkszSlNDMTJQcm9wZXJ0eVNsb3QxNGZ1bmN0aW9uR2V0dGVyRVBOU185RXhlY1N0
YXRlRQorX19aTjNKU0MxMlJlZ0V4cE9iamVjdDRpbmZvRQorX19aTjNKU0MxMlJlZ0V4cE9iamVj
dEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3Ry
dWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCiBfX1pOSzNKU0MxNEpTR2xvYmFsT2JqZWN0MTRp
c0R5bmFtaWNTY29wZUVSYgogX19aTkszSlNDMTZJbnRlcm5hbEZ1bmN0aW9uOWNsYXNzSW5mb0V2
CiBfX1pOSzNKU0MxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgpAQCAtNTEx
LDYgKzUxMyw4IEBAIF9fWk5LM0pTQzZKU0NlbGw5Z2V0U3RyaW5nRVBOU185RXhlY1N0YXRlRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUk5TXzdVU3RyaW5nRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRVSW50MzJFUmoKIF9fWk5LM0pTQzZKU0NlbGw5dG9Cb29sZWFu
RVBOU185RXhlY1N0YXRlRQorX19aTjNKU0M2UmVnRXhwNmNyZWF0ZUVQTlNfMTJKU0dsb2JhbERh
dGFFUktOU183VVN0cmluZ0VTNV8KK19fWk4zSlNDNlJlZ0V4cEQxRXYKIF9fWk5LM0pTQzdBcmdM
aXN0OGdldFNsaWNlRWlSUzBfCiBfX1pOSzNKU0M3SlNBcnJheTEyc3ViY2xhc3NEYXRhRXYKIF9f
Wk5LM0pTQzdKU1ZhbHVlMTZ0b09iamVjdFNsb3dDYXNlRVBOU185RXhlY1N0YXRlRQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDVhZDlmM2Y0Y2M3MTg5Yjk2YjYyN2Y1ZjQyZDNkOWEy
NGVmOTIzOTYuLmZhMzM0OWZkODQ5Y2Q4Yjg1NmY1YTYyYzE1NDg2MGU5MWRlN2JkZjQgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTQ2LDExICs0NiwyOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uIHsKKyNpZiBFTkFCTEUoWUFSUl9K
SVQpCisgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOworI2VsaWYgRU5B
QkxFKFlBUlIpCisgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRl
Y29kZTsKKyNlbHNlCisgICAgSlNSZWdFeHAqIG1fcmVnRXhwOworI2VuZGlmCisKKyNpZiAhRU5B
QkxFKFlBUlIpCisgICAgflJlZ0V4cFJlcHJlc2VudGF0aW9uKCkKKyAgICB7CisgICAgICAgIGpz
UmVnRXhwRnJlZShtX3JlZ0V4cCk7CisgICAgfQorI2VuZGlmCit9OworCiBpbmxpbmUgUmVnRXhw
OjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
LCBjb25zdCBVU3RyaW5nJiBmbGFncykKICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICwg
bV9mbGFnQml0cygwKQogICAgICwgbV9jb25zdHJ1Y3Rpb25FcnJvcigwKQogICAgICwgbV9udW1T
dWJwYXR0ZXJucygwKQorICAgICwgbV9yZXByZXNlbnRhdGlvbihuZXcgUmVnRXhwUmVwcmVzZW50
YXRpb24oKSkKIHsKICAgICAvLyBOT1RFOiBUaGUgZ2xvYmFsIGZsYWcgaXMgaGFuZGxlZCBvbiBh
IGNhc2UtYnktY2FzZSBiYXNpcyBieSBmdW5jdGlvbnMgbGlrZQogICAgIC8vIFN0cmluZzo6bWF0
Y2ggYW5kIFJlZ0V4cE9iamVjdDo6bWF0Y2guCkBAIC02NSwxMiArODMsMTAgQEAgaW5saW5lIFJl
Z0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGVybiwgY29uc3QgVVMKICAgICBjb21waWxlKGdsb2JhbERhdGEpOwogfQogCi0jaWYgIUVOQUJM
RShZQVJSKQogUmVnRXhwOjp+UmVnRXhwKCkKIHsKLSAgICBqc1JlZ0V4cEZyZWUobV9yZWdFeHAp
OworICAgIGRlbGV0ZSBtX3JlcHJlc2VudGF0aW9uOwogfQotI2VuZGlmCiAKIFBhc3NSZWZQdHI8
UmVnRXhwPiBSZWdFeHA6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVT
dHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQogewpAQCAtODIsOSArOTgsOSBA
QCBQYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZQogdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQogewogI2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICBZYXJyOjpqaXRD
b21waWxlUmVnZXgoZ2xvYmFsRGF0YSwgbV9yZWdFeHBKSVRDb2RlLCBtX3BhdHRlcm4sIG1fbnVt
U3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5l
KCkpOworICAgIFlhcnI6OmppdENvbXBpbGVSZWdleChnbG9iYWxEYXRhLCBtX3JlcHJlc2VudGF0
aW9uLT5tX3JlZ0V4cEpJVENvZGUsIG1fcGF0dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25z
dHJ1Y3Rpb25FcnJvciwgaWdub3JlQ2FzZSgpLCBtdWx0aWxpbmUoKSk7CiAjZWxzZQotICAgIG1f
cmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZVJlZ2V4KG1fcGF0dGVybiwgbV9udW1T
dWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVnZXhBbGxv
Y2F0b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOworICAgIG1fcmVwcmVzZW50YXRpb24t
Pm1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJyOjpieXRlQ29tcGlsZVJlZ2V4KG1fcGF0dGVybiwgbV9u
dW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVnZXhB
bGxvY2F0b3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOwogI2VuZGlmCiB9CiAKQEAgLTk5
LDkgKzExNSw5IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFy
dE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICByZXR1cm4gLTE7CiAK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgaWYgKCEhbV9yZWdFeHBKSVRDb2RlKSB7CisgICAg
aWYgKCEhbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlKSB7CiAjZWxzZQotICAgIGlm
IChtX3JlZ0V4cEJ5dGVjb2RlKSB7CisgICAgaWYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhw
Qnl0ZWNvZGUpIHsKICNlbmRpZgogICAgICAgICBpbnQgb2Zmc2V0VmVjdG9yU2l6ZSA9IChtX251
bVN1YnBhdHRlcm5zICsgMSkgKiAzOyAvLyBGSVhNRTogc2hvdWxkIGJlIDIgLSBidXQgYWRkaW5n
IHRlbXBvcmFyeSBmYWxsYmFjayB0byBwY3JlLgogICAgICAgICBpbnQqIG9mZnNldFZlY3RvcjsK
QEAgLTExOSw5ICsxMzUsOSBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBp
bnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKICAgICAgICAgICAgIG9m
ZnNldFZlY3RvcltqXSA9IC0xOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQotICAgICAgICBpbnQg
cmVzdWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJz
KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNp
emUpOworICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVwcmVzZW50
YXRpb24tPm1fcmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxl
bmd0aCgpLCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOwogI2Vsc2UKLSAgICAgICAg
aW50IHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJlZ2V4KG1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCks
IHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsK
KyAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmludGVycHJldFJlZ2V4KG1fcmVwcmVzZW50YXRp
b24tPm1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwg
cy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKICNlbmRpZgogCiAgICAgICAgIGlmIChyZXN1bHQg
PCAwKSB7CkBAIC0xNDQsMTAgKzE2MCwxMCBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3Ry
aW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKIAogdm9p
ZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRhKikKIHsKLSAgICBtX3JlZ0V4cCA9IDA7Cisg
ICAgbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHAgPSAwOwogICAgIEpTUmVnRXhwSWdub3JlQ2Fz
ZU9wdGlvbiBpZ25vcmVDYXNlT3B0aW9uID0gaWdub3JlQ2FzZSgpID8gSlNSZWdFeHBJZ25vcmVD
YXNlIDogSlNSZWdFeHBEb05vdElnbm9yZUNhc2U7CiAgICAgSlNSZWdFeHBNdWx0aWxpbmVPcHRp
b24gbXVsdGlsaW5lT3B0aW9uID0gbXVsdGlsaW5lKCkgPyBKU1JlZ0V4cE11bHRpbGluZSA6IEpT
UmVnRXhwU2luZ2xlTGluZTsKLSAgICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9wYXR0ZXJuLmNoYXJhY3RlcnMoKSksIG1fcGF0dGVy
bi5sZW5ndGgoKSwgaWdub3JlQ2FzZU9wdGlvbiwgbXVsdGlsaW5lT3B0aW9uLCAmbV9udW1TdWJw
YXR0ZXJucywgJm1fY29uc3RydWN0aW9uRXJyb3IpOworICAgIG1fcmVwcmVzZW50YXRpb24tPm1f
cmVnRXhwID0ganNSZWdFeHBDb21waWxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPiht
X3BhdHRlcm4uY2hhcmFjdGVycygpKSwgbV9wYXR0ZXJuLmxlbmd0aCgpLCBpZ25vcmVDYXNlT3B0
aW9uLCBtdWx0aWxpbmVPcHRpb24sICZtX251bVN1YnBhdHRlcm5zLCAmbV9jb25zdHJ1Y3Rpb25F
cnJvcik7CiB9CiAKIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFy
dE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQpAQCAtMTYwLDcgKzE3Niw3IEBAIGlu
dCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9y
PGludCwgMzI+KiBvdmVjdG9yKQogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRP
ZmZzZXQpID4gcy5sZW5ndGgoKSB8fCBzLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gLTE7CiAK
LSAgICBpZiAobV9yZWdFeHApIHsKKyAgICBpZiAobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHAp
IHsKICAgICAgICAgLy8gU2V0IHVwIHRoZSBvZmZzZXQgdmVjdG9yIGZvciB0aGUgcmVzdWx0Lgog
ICAgICAgICAvLyBGaXJzdCAyLzMgdXNlZCBmb3IgcmVzdWx0LCB0aGUgbGFzdCB0aGlyZCB1c2Vk
IGJ5IFBDUkUuCiAgICAgICAgIGludCogb2Zmc2V0VmVjdG9yOwpAQCAtMTc1LDcgKzE5MSw3IEBA
IGludCBSZWdFeHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVj
dG9yPGludCwgMzI+KiBvdmVjdG9yKQogICAgICAgICAgICAgb2Zmc2V0VmVjdG9yID0gb3ZlY3Rv
ci0+ZGF0YSgpOwogICAgICAgICB9CiAKLSAgICAgICAgaW50IG51bU1hdGNoZXMgPSBqc1JlZ0V4
cEV4ZWN1dGUobV9yZWdFeHAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmNoYXJh
Y3RlcnMoKSksIHMubGVuZ3RoKCksIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIG9mZnNldFZl
Y3RvclNpemUpOworICAgICAgICBpbnQgbnVtTWF0Y2hlcyA9IGpzUmVnRXhwRXhlY3V0ZShtX3Jl
cHJlc2VudGF0aW9uLT5tX3JlZ0V4cCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMu
Y2hhcmFjdGVycygpKSwgcy5sZW5ndGgoKSwgc3RhcnRPZmZzZXQsIG9mZnNldFZlY3Rvciwgb2Zm
c2V0VmVjdG9yU2l6ZSk7CiAgICAgCiAgICAgICAgIGlmIChudW1NYXRjaGVzIDwgMCkgewogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCmluZGV4IGFhZGFkNmI2YjA4MjU3NTJm
OGFmNjBkMzIyYjkxNDY5NzEwODI1YzUuLjNjN2ExMTEzNThkM2VjYWY2NjZjMmI3ZWZjNTVkZWRk
NmJmMmNiMmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaApAQCAtMjYsMjEgKzI2LDE2IEBACiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlICJ5YXJyL1JlZ2V4SklULmgi
Ci0jaW5jbHVkZSAieWFyci9SZWdleEludGVycHJldGVyLmgiCi0KLXN0cnVjdCBKU1JlZ0V4cDsK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogCiAgICAgY2xhc3MgUmVnRXhwIDogcHVibGljIFJlZkNv
dW50ZWQ8UmVnRXhwPiB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZWdFeHA+IGNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKTsKLSNpZiAhRU5BQkxFKFlBUlIpCiAgICAgICAg
IH5SZWdFeHAoKTsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFnQml0cyAmIEdsb2JhbDsgfQogICAgICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdCaXRzICYgSWdub3JlQ2FzZTsgfQpAQCAtNjUsMTQgKzYwLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCBtX2ZsYWdCaXRzOwogICAgICAgICBjb25zdCBj
aGFyKiBtX2NvbnN0cnVjdGlvbkVycm9yOwogICAgICAgICB1bnNpZ25lZCBtX251bVN1YnBhdHRl
cm5zOwotCi0jaWYgRU5BQkxFKFlBUlJfSklUKQotICAgICAgICBZYXJyOjpSZWdleENvZGVCbG9j
ayBtX3JlZ0V4cEpJVENvZGU7Ci0jZWxpZiBFTkFCTEUoWUFSUikKLSAgICAgICAgT3duUHRyPFlh
cnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRlY29kZTsKLSNlbHNlCi0gICAgICAgIEpT
UmVnRXhwKiBtX3JlZ0V4cDsKLSNlbmRpZgorICAgICAgICAKKyAgICAgICAgUmVnRXhwUmVwcmVz
ZW50YXRpb24qIGNvbnN0IG1fcmVwcmVzZW50YXRpb247CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYTg3Nzg3MDY5MDJiYWJkMDFjN2M0ZWExMzAyZmVmZDlmNjE5M2RjMS4u
NzQ1ZWFmYjAyZmQ2NGQ3ZmM2ZDNhN2JlNDQ1YWVjOGY1NDVhNWM2YSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEwLTA5LTA3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHB1c2hT
dGF0ZSBhbmQgcmVwbGFjZVN0YXRlIGRvIG5vdCBjbG9uZSBSZWdFeHAgb2JqZWN0cyBjb3JyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NzE4
CisgICAgICAgIAorICAgICAgICBNYWtlIFJlZ0V4cCB0ZXN0IG9mIHB1c2hzdGF0ZS1vYmplY3Qt
dHlwZXMuaHRtbCBhY3R1YWxseSB0ZXN0IGEgUmVnRXhwCisgICAgICAgIHZhbHVlIHdpdGggZmxh
Z3MuCisgICAgICAgIAorICAgICAgICBBbHNvIGFkZHMgSW1hZ2VEYXRhIHNpbmNlIGl0IGNhbiBi
ZSBzZXJpYWxpemVkIGFzIG9mIHI1NDY0Ni4gICAgICAgIAorCisgICAgICAgICogZmFzdC9sb2Fk
ZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0
bWw6CisKIDIwMTAtMDktMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3Qt
dHlwZXMtZXhwZWN0ZWQudHh0CmluZGV4IDkxMGI3OTVkYWYzNTI0OTY0NjVhNzE1MjQxMzNhODNj
YjM1M2FlYzguLmUxZjU3ZGIxNDBiYjdmMWVmMmY4N2VlZDJjNzI2NjVkOTM2MGM1M2MgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2Jq
ZWN0LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0
ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQKQEAgLTEsOSArMSwx
MCBAQAogVGhpcyB0ZXN0IGNhbGxzIHB1c2hTdGF0ZSB3aXRoIHN0YXRlIG9iamVjdHMgb2YgYWxs
IHRoZSBkaWZmZXJlbnQgb2JqZWN0IHR5cGVzIHN1cHBvcnRlZCBieSB0aGUgSFRNTDUgImludGVy
bmFsIHN0cnVjdHVyZWQgY2xvbmluZyBhbGdvcml0aG0iIGFuZCBtYWtlcyBzdXJlIHRoZSBldmVu
dHMgY29udGFpbiB0aGUgZXhwZWN0ZWQgb2JqZWN0cyB3aGVuIHRoZSBzdGF0ZXMgYXJlIHBvcHBl
ZC4KIAorU3RhdGUgcG9wcGVkIC0gW29iamVjdCBJbWFnZURhdGFdICh0eXBlIG9iamVjdCkKIFN0
YXRlIHBvcHBlZCAtIFtvYmplY3QgT2JqZWN0XSAodHlwZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQg
LSBbb2JqZWN0IE9iamVjdF0gKHR5cGUgb2JqZWN0KQogU3RhdGUgcG9wcGVkIC0gICh0eXBlIG9i
amVjdCkKLVN0YXRlIHBvcHBlZCAtIG51bGwgKHR5cGUgb2JqZWN0KQorU3RhdGUgcG9wcGVkIC0g
L2Zvby9naSAodHlwZSBmdW5jdGlvbikKIFN0YXRlIHBvcHBlZCAtIDAgKHR5cGUgb2JqZWN0KQog
U3RhdGUgcG9wcGVkIC0gU3RyaW5nICh0eXBlIHN0cmluZykKIFN0YXRlIHBvcHBlZCAtIDQyICh0
eXBlIG51bWJlcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sCmluZGV4IDA5ODkxMTQz
YmJiYjQyZDQyNzM4NWU1YjQ0NzIwYmFlNjA1ZDk5OWQuLjVhMjg0MzkwNzk2ZmY3ODE2ZWI3ZDdh
MTEyY2FlNzZkZmY4YTFmMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbApAQCAt
MjQsMTMgKzI0LDEzIEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGhpc3RvcnkucHVzaFN0YXRl
KDQyLCAiTnVtYmVyIGVudHJ5Iik7CiAgICAgaGlzdG9yeS5wdXNoU3RhdGUoIlN0cmluZyIsICJT
dHJpbmcgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgRGF0ZSgwKSwgIkRhdGUg
ZW50cnkiKTsKLSAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgUmVnRXhwLCAiUmVnRXhwIGVudHJ5
Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUobmV3IFJlZ0V4cCgiZm9vIiwgImdpIiksICJSZWdF
eHAgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgQXJyYXksICJBcnJheSBlbnRy
eSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRlKG5ldyBPYmplY3QsICJPYmplY3QgZW50cnkiKTsK
ICAgICBoaXN0b3J5LnB1c2hTdGF0ZShuZXcgRXJyb3IsICJFcnJvciBlbnRyeSIpOworICAgIGhp
c3RvcnkucHVzaFN0YXRlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRl
eHQoIjJkIikuY3JlYXRlSW1hZ2VEYXRhKDEwLDEwKSwgIkltYWdlRGF0YSBlbnRyeSIpOwogCiAv
KiBUaGUgZm9sbG93aW5nIGFyZSBub3QgeWV0IHdlbGwgZW5vdWdoIHN1cHBvcnRlZCBpbiBXZWJL
aXQgdG8gbWVhbmluZ2Z1bGx5IHRlc3QgaGVyZToKLWhpc3RvcnkucHVzaFN0YXRlKFtJbWFnZURh
dGFdLCAiSW1hZ2VEYXRhIGVudHJ5Iik7CiBoaXN0b3J5LnB1c2hTdGF0ZShbQmxvYl0sICJCbG9i
IGVudHJ5Iik7CiBoaXN0b3J5LnB1c2hTdGF0ZShbRmlsZV0sICJGaWxlIGVudHJ5Iik7CiBoaXN0
b3J5LnB1c2hTdGF0ZShbRmlsZUxpc3RdLCAiRmlsZUxpc3QgZW50cnkiKTsKQEAgLTUzLDcgKzUz
LDcgQEAgb25wb3BzdGF0ZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIH0KICAgICAKICAgICBpZiAo
ZXZlbnQuc3RhdGUgaW5zdGFuY2VvZiBEYXRlKQotICAgICAgICBsb2coIlN0YXRlIHBvcHBlZCAt
ICIgKyBldmVudC5zdGF0ZS5nZXRUaW1lKCkgICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0
YXRlICsgIikiKTsKKyAgICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUu
Z2V0VGltZSgpICsgIiAodHlwZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKICAgICBl
bHNlCiAgICAgICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlICsgIiAodHlw
ZSAiICsgdHlwZW9mIGV2ZW50LnN0YXRlICsgIikiKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNDc1NjM0NGQ4MzBiM2M5NTllMzgy
NDg5M2Y3OTY3ZjdmYzllZjA4Li5kZjZlYWNlM2E5MjNjZGNmMTFhNjdlMDU4ZGU1OGE2OTY3OGFh
NDkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA5LTA3ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIHB1c2hTdGF0ZSBhbmQgcmVwbGFjZVN0YXRlIGRvIG5vdCBjbG9uZSBSZWdFeHAgb2Jq
ZWN0cyBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ0NzE4CisgICAgICAgIAorICAgICAgICBBZGQgUmVnRXhwIHN1cHBvcnQgdG8gdGhl
IEpTQyBpbXBsZW1lbnRhdGlvbiBvZiBTZXJpYWxpemVkU2NyaXB0VmFsdWUKKyAgICAgICAgKGl0
IHN0b3JlcyB0aGUgcGF0dGVybiBhbmQgZmxhZ3MgcmVhZCBmcm9tIGEgUmVnRXhwT2JqZWN0LCBh
bmQgY3JlYXRlcworICAgICAgICBhIG5ldyBvbmUgb24gZGVzZXJpYWxpemF0aW9uKS4KKyAgICAg
ICAgCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9i
amVjdC10eXBlcy5odG1sIAorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9S
ZWdFeHAuaDogQWRkZWQuCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdF
eHBPYmplY3QuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVy
bWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5h
bCk6CisKIDIwMTAtMDktMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cC5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9y
dW50aW1lL1JlZ0V4cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2ZTg4OTQ1ZDM5YmU0NmNiNGZjNTY4N2RlOTc1
MDA3NWMzZjJlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvUmVnRXhwLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1Jl
Z0V4cF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1JlZ0V4cF9oCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvUmVnRXhwLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9SZWdFeHBPYmplY3QuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
cnVudGltZS9SZWdFeHBPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iM2YyNTE2OTBjM2IzNTEyOWUwM2Y3
ODgwYjBiZGM5MTMzZTQxYzdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBX
ZWJDb3JlX0ZXRF9SZWdFeHBPYmplY3RfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9SZWdFeHBPYmpl
Y3RfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlZ0V4cE9iamVjdC5oPgorI2VuZGlmCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggOTJj
ODkzNjNkNjA1MGQ4MWI0YTQ2MmE5NGZhY2FhNDI0YjAyNTAwOS4uZjIyOTA4ODg1NjVkOTk3ODc5
Y2UzNDU4NzA5OGI5NjY2ZDI2MjIyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDQsNiArNDQsOCBAQAogI2luY2x1ZGUgPHJ1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvUmVnRXhw
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9SZWdFeHBPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvQnl0
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC04Myw2ICs4NSw3IEBAIGVudW0gU2VyaWFsaXphdGlvblRhZyB7CiAgICAgQmxv
YlRhZyA9IDE1LAogICAgIFN0cmluZ1RhZyA9IDE2LAogICAgIEVtcHR5U3RyaW5nVGFnID0gMTcs
CisgICAgUmVnRXhwVGFnID0gMTgsCiAgICAgRXJyb3JUYWcgPSAyNTUKIH07CiAKQEAgLTE0NSw2
ICsxNDgsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IFN0cmluZ1Bvb2xUYWcgPSAweEZG
RkZGRkZFOwogICogQmxvYiA6LQogICogICAgQmxvYlRhZyA8dXJsOlN0cmluZ0RhdGE+PHR5cGU6
U3RyaW5nRGF0YT48c2l6ZTpsb25nIGxvbmc+CiAgKgorICogUmVnRXhwIDotCisgKiAgICBSZWdF
eHBUYWcgPHBhdHRlcm46U3RyaW5nRGF0YT48ZmxhZ3M6U3RyaW5nRGF0YT4KICAqLwogCiBjbGFz
cyBDbG9uZUJhc2UgewpAQCAtMzg5LDYgKzM5NCwyMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIHdyaXRlKGRhdGEtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCksIGRhdGEtPmRhdGEoKS0+bGVu
Z3RoKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKG9iai0+aW5oZXJpdHMoJlJlZ0V4cE9iamVjdDo6aW5mbykpIHsKKyAgICAg
ICAgICAgICAgICBSZWdFeHBPYmplY3QqIHJlZ0V4cCA9IGFzUmVnRXhwT2JqZWN0KG9iaik7Cisg
ICAgICAgICAgICAgICAgY2hhciBmbGFnc1szXTsKKyAgICAgICAgICAgICAgICBpbnQgZmxhZ0Nv
dW50ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAocmVnRXhwLT5yZWdFeHAoKS0+Z2xvYmFsKCkp
CisgICAgICAgICAgICAgICAgICAgIGZsYWdzW2ZsYWdDb3VudCsrXSA9ICdnJzsKKyAgICAgICAg
ICAgICAgICBpZiAocmVnRXhwLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKQorICAgICAgICAgICAg
ICAgICAgICBmbGFnc1tmbGFnQ291bnQrK10gPSAnaSc7CisgICAgICAgICAgICAgICAgaWYgKHJl
Z0V4cC0+cmVnRXhwKCktPm11bHRpbGluZSgpKQorICAgICAgICAgICAgICAgICAgICBmbGFnc1tm
bGFnQ291bnQrK10gPSAnbSc7CisgICAgICAgICAgICAgICAgd3JpdGUoUmVnRXhwVGFnKTsKKyAg
ICAgICAgICAgICAgICB3cml0ZShyZWdFeHAtPnJlZ0V4cCgpLT5wYXR0ZXJuKCkpOworICAgICAg
ICAgICAgICAgIHdyaXRlKFVTdHJpbmcoZmxhZ3MsIGZsYWdDb3VudCkpOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBDYWxsRGF0YSB1
bnVzZWREYXRhOwogICAgICAgICAgICAgaWYgKGdldENhbGxEYXRhKHZhbHVlLCB1bnVzZWREYXRh
KSA9PSBDYWxsVHlwZU5vbmUpCkBAIC0xMDY2LDYgKzEwODYsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEVtcHR5U3RyaW5nVGFnOgogICAgICAgICAgICAgcmV0dXJuIGpz
RW1wdHlTdHJpbmcoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgY2FzZSBSZWdFeHBU
YWc6IHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgcGF0dGVybjsKKyAgICAgICAgICAgIGlmICgh
cmVhZFN0cmluZ0RhdGEocGF0dGVybikpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUo
KTsKKyAgICAgICAgICAgIElkZW50aWZpZXIgZmxhZ3M7CisgICAgICAgICAgICBpZiAoIXJlYWRT
dHJpbmdEYXRhKGZsYWdzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ0V4cD4gcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUoJm1fZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwYXR0ZXJuLnVzdHJpbmcoKSwgZmxhZ3MudXN0cmluZygpKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fZXhlYykgUmVnRXhwT2JqZWN0KG1fZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBtX2dsb2JhbE9iamVjdC0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCk7
IAorICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtX3B0ci0tOyAvLyBQ
dXNoIHRoZSB0YWcgYmFjawogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66766</attachid>
            <date>2010-09-07 14:29:41 -0700</date>
            <delta_ts>2010-09-07 15:18:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44718-20100907142940.patch</filename>
            <type>text/plain</type>
            <size>16957</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhN2E1MjQxZDkzODVhYjQ0NDY0ZmUzYWJhZWQ1NTNmMTNkMzUzNTkxLi5i
MmM0ZmM1YjY5NDEzNTlkNzU4YTc5ZjAwMjQxZTBiYmRiMjk5YjQ0IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTAtMDktMDcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
cHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNv
cnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1vdmUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2Yg
SlNDOjpSZWdFeHAgKHdoaWNoIGRlcGVuZHMgb24gd2V0aGVyCisgICAgICAgIFlBUlIgYW5kIFlB
UlJfSklUIGlzIGVuYWJsZWQpIGludG8gUmVnRXhwUmVwcmVzZW50YXRpb24gd2hpY2ggY2FuIGxp
dmUKKyAgICAgICAgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9ubHkuIFRoaXMgbWFrZXMgaXQgZmVh
c2libGUgdG8gdXNlIFJlZ0V4cCBpbgorICAgICAgICBXZWJDb3JlIHdpdGhvdXQgYnJpbmdpbmcg
aW4gYWxsIG9mIFlBUlIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBS
ZWdFeHAgYW5kIFJlZ0V4cE9iamVjdCBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgbmVlZGVk
IGluc2lkZSBXZWJDb3JlJ3MgSlNDIGJpbmRpbmdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUmVwcmVzZW50YXRpb246On5SZWdFeHBSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjp+UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKwog
MjAxMC0wOS0wNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRl
eCA3ZGY5Mzc2NTAxMTE3MTM1OTdiOWU2MWQwMzhiNDJiMDJkYjhkNWFhLi5iOGZiYjA4Mjc3MjVl
MDdhNTAxOTU2OGU0NmFkZTVlNjU2NDEzOTkwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC00ODEsNiArNDgxLDggQEAgX19aTkszSlNDMTBKU0Z1bmN0aW9uMjNpc0hvc3RGdW5jdGlv
bk5vbklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVyMTRyZXRyaWV2ZUNhbGxlckVQTlNf
OUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTkszSlNDMTFJbnRlcnByZXRlcjE4cmV0
cmlldmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxSTlNfN1VTdHJpbmdFUk5TXzdKU1Zh
bHVlRQogX19aTkszSlNDMTJQcm9wZXJ0eVNsb3QxNGZ1bmN0aW9uR2V0dGVyRVBOU185RXhlY1N0
YXRlRQorX19aTjNKU0MxMlJlZ0V4cE9iamVjdDRpbmZvRQorX19aTjNKU0MxMlJlZ0V4cE9iamVj
dEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3Ry
dWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCiBfX1pOSzNKU0MxNEpTR2xvYmFsT2JqZWN0MTRp
c0R5bmFtaWNTY29wZUVSYgogX19aTkszSlNDMTZJbnRlcm5hbEZ1bmN0aW9uOWNsYXNzSW5mb0V2
CiBfX1pOSzNKU0MxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgpAQCAtNTEx
LDYgKzUxMyw4IEBAIF9fWk5LM0pTQzZKU0NlbGw5Z2V0U3RyaW5nRVBOU185RXhlY1N0YXRlRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUk5TXzdVU3RyaW5nRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRVSW50MzJFUmoKIF9fWk5LM0pTQzZKU0NlbGw5dG9Cb29sZWFu
RVBOU185RXhlY1N0YXRlRQorX19aTjNKU0M2UmVnRXhwNmNyZWF0ZUVQTlNfMTJKU0dsb2JhbERh
dGFFUktOU183VVN0cmluZ0VTNV8KK19fWk4zSlNDNlJlZ0V4cEQxRXYKIF9fWk5LM0pTQzdBcmdM
aXN0OGdldFNsaWNlRWlSUzBfCiBfX1pOSzNKU0M3SlNBcnJheTEyc3ViY2xhc3NEYXRhRXYKIF9f
Wk5LM0pTQzdKU1ZhbHVlMTZ0b09iamVjdFNsb3dDYXNlRVBOU185RXhlY1N0YXRlRQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDVhZDlmM2Y0Y2M3MTg5Yjk2YjYyN2Y1ZjQyZDNkOWEy
NGVmOTIzOTYuLmE1NWM4ODY3ZDE0MzdkYjNkYjIxMjJhNmU4MjI0ZmNiMmYyOTRhOWUgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTQ2LDExICs0NiwyOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uIHsKKyNpZiBFTkFCTEUoWUFSUl9K
SVQpCisgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOworI2VsaWYgRU5B
QkxFKFlBUlIpCisgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRl
Y29kZTsKKyNlbHNlCisgICAgSlNSZWdFeHAqIG1fcmVnRXhwOworI2VuZGlmCisKKyNpZiAhRU5B
QkxFKFlBUlIpCisgICAgflJlZ0V4cFJlcHJlc2VudGF0aW9uKCkKKyAgICB7CisgICAgICAgIGpz
UmVnRXhwRnJlZShtX3JlZ0V4cCk7CisgICAgfQorI2VuZGlmCit9OworCiBpbmxpbmUgUmVnRXhw
OjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
LCBjb25zdCBVU3RyaW5nJiBmbGFncykKICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICwg
bV9mbGFnQml0cygwKQogICAgICwgbV9jb25zdHJ1Y3Rpb25FcnJvcigwKQogICAgICwgbV9udW1T
dWJwYXR0ZXJucygwKQorICAgICwgbV9yZXByZXNlbnRhdGlvbihhZG9wdFB0cihuZXcgUmVnRXhw
UmVwcmVzZW50YXRpb24oKSkpCiB7CiAgICAgLy8gTk9URTogVGhlIGdsb2JhbCBmbGFnIGlzIGhh
bmRsZWQgb24gYSBjYXNlLWJ5LWNhc2UgYmFzaXMgYnkgZnVuY3Rpb25zIGxpa2UKICAgICAvLyBT
dHJpbmc6Om1hdGNoIGFuZCBSZWdFeHBPYmplY3Q6Om1hdGNoLgpAQCAtNjUsMTIgKzgzLDkgQEAg
aW5saW5lIFJlZ0V4cDo6UmVnRXhwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0
cmluZyYgcGF0dGVybiwgY29uc3QgVVMKICAgICBjb21waWxlKGdsb2JhbERhdGEpOwogfQogCi0j
aWYgIUVOQUJMRShZQVJSKQogUmVnRXhwOjp+UmVnRXhwKCkKIHsKLSAgICBqc1JlZ0V4cEZyZWUo
bV9yZWdFeHApOwogfQotI2VuZGlmCiAKIFBhc3NSZWZQdHI8UmVnRXhwPiBSZWdFeHA6OmNyZWF0
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0
IFVTdHJpbmcmIGZsYWdzKQogewpAQCAtODIsOSArOTcsOSBAQCBQYXNzUmVmUHRyPFJlZ0V4cD4g
UmVnRXhwOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBw
YXR0ZQogdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogewog
I2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICBZYXJyOjpqaXRDb21waWxlUmVnZXgoZ2xvYmFsRGF0
YSwgbV9yZWdFeHBKSVRDb2RlLCBtX3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3Ry
dWN0aW9uRXJyb3IsIGlnbm9yZUNhc2UoKSwgbXVsdGlsaW5lKCkpOworICAgIFlhcnI6OmppdENv
bXBpbGVSZWdleChnbG9iYWxEYXRhLCBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUs
IG1fcGF0dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1Y3Rpb25FcnJvciwgaWdub3Jl
Q2FzZSgpLCBtdWx0aWxpbmUoKSk7CiAjZWxzZQotICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBZYXJy
OjpieXRlQ29tcGlsZVJlZ2V4KG1fcGF0dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25zdHJ1
Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVnZXhBbGxvY2F0b3IsIGlnbm9yZUNhc2UoKSwg
bXVsdGlsaW5lKCkpOworICAgIG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUgPSBZ
YXJyOjpieXRlQ29tcGlsZVJlZ2V4KG1fcGF0dGVybiwgbV9udW1TdWJwYXR0ZXJucywgbV9jb25z
dHJ1Y3Rpb25FcnJvciwgJmdsb2JhbERhdGEtPm1fcmVnZXhBbGxvY2F0b3IsIGlnbm9yZUNhc2Uo
KSwgbXVsdGlsaW5lKCkpOwogI2VuZGlmCiB9CiAKQEAgLTk5LDkgKzExNCw5IEBAIGludCBSZWdF
eHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwg
MzI+KiBvdmVjdG9yKQogICAgICAgICByZXR1cm4gLTE7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVQp
Ci0gICAgaWYgKCEhbV9yZWdFeHBKSVRDb2RlKSB7CisgICAgaWYgKCEhbV9yZXByZXNlbnRhdGlv
bi0+bV9yZWdFeHBKSVRDb2RlKSB7CiAjZWxzZQotICAgIGlmIChtX3JlZ0V4cEJ5dGVjb2RlKSB7
CisgICAgaWYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUpIHsKICNlbmRpZgog
ICAgICAgICBpbnQgb2Zmc2V0VmVjdG9yU2l6ZSA9IChtX251bVN1YnBhdHRlcm5zICsgMSkgKiAz
OyAvLyBGSVhNRTogc2hvdWxkIGJlIDIgLSBidXQgYWRkaW5nIHRlbXBvcmFyeSBmYWxsYmFjayB0
byBwY3JlLgogICAgICAgICBpbnQqIG9mZnNldFZlY3RvcjsKQEAgLTExOSw5ICsxMzQsOSBAQCBp
bnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3Rv
cjxpbnQsIDMyPiogb3ZlY3RvcikKICAgICAgICAgICAgIG9mZnNldFZlY3RvcltqXSA9IC0xOwog
CiAjaWYgRU5BQkxFKFlBUlJfSklUKQotICAgICAgICBpbnQgcmVzdWx0ID0gWWFycjo6ZXhlY3V0
ZVJlZ2V4KG1fcmVnRXhwSklUQ29kZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxl
bmd0aCgpLCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOworICAgICAgICBpbnQgcmVz
dWx0ID0gWWFycjo6ZXhlY3V0ZVJlZ2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwSklUQ29k
ZSwgcy5jaGFyYWN0ZXJzKCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3Is
IG9mZnNldFZlY3RvclNpemUpOwogI2Vsc2UKLSAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6Omlu
dGVycHJldFJlZ2V4KG1fcmVnRXhwQnl0ZWNvZGUuZ2V0KCksIHMuY2hhcmFjdGVycygpLCBzdGFy
dE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yKTsKKyAgICAgICAgaW50IHJlc3VsdCA9
IFlhcnI6OmludGVycHJldFJlZ2V4KG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwQnl0ZWNvZGUu
Z2V0KCksIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVj
dG9yKTsKICNlbmRpZgogCiAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CkBAIC0xNDQsMTAgKzE1
OSwxMCBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZz
ZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKIAogdm9pZCBSZWdFeHA6OmNvbXBpbGUoSlNH
bG9iYWxEYXRhKikKIHsKLSAgICBtX3JlZ0V4cCA9IDA7CisgICAgbV9yZXByZXNlbnRhdGlvbi0+
bV9yZWdFeHAgPSAwOwogICAgIEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbiBpZ25vcmVDYXNlT3B0
aW9uID0gaWdub3JlQ2FzZSgpID8gSlNSZWdFeHBJZ25vcmVDYXNlIDogSlNSZWdFeHBEb05vdEln
bm9yZUNhc2U7CiAgICAgSlNSZWdFeHBNdWx0aWxpbmVPcHRpb24gbXVsdGlsaW5lT3B0aW9uID0g
bXVsdGlsaW5lKCkgPyBKU1JlZ0V4cE11bHRpbGluZSA6IEpTUmVnRXhwU2luZ2xlTGluZTsKLSAg
ICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4obV9wYXR0ZXJuLmNoYXJhY3RlcnMoKSksIG1fcGF0dGVybi5sZW5ndGgoKSwgaWdub3JlQ2Fz
ZU9wdGlvbiwgbXVsdGlsaW5lT3B0aW9uLCAmbV9udW1TdWJwYXR0ZXJucywgJm1fY29uc3RydWN0
aW9uRXJyb3IpOworICAgIG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwID0ganNSZWdFeHBDb21w
aWxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX3BhdHRlcm4uY2hhcmFjdGVycygp
KSwgbV9wYXR0ZXJuLmxlbmd0aCgpLCBpZ25vcmVDYXNlT3B0aW9uLCBtdWx0aWxpbmVPcHRpb24s
ICZtX251bVN1YnBhdHRlcm5zLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiB9CiAKIGludCBSZWdF
eHA6Om1hdGNoKGNvbnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwg
MzI+KiBvdmVjdG9yKQpAQCAtMTYwLDcgKzE3NSw3IEBAIGludCBSZWdFeHA6Om1hdGNoKGNvbnN0
IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9yKQog
ICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RhcnRPZmZzZXQpID4gcy5sZW5ndGgoKSB8
fCBzLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAobV9yZWdFeHApIHsK
KyAgICBpZiAobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHApIHsKICAgICAgICAgLy8gU2V0IHVw
IHRoZSBvZmZzZXQgdmVjdG9yIGZvciB0aGUgcmVzdWx0LgogICAgICAgICAvLyBGaXJzdCAyLzMg
dXNlZCBmb3IgcmVzdWx0LCB0aGUgbGFzdCB0aGlyZCB1c2VkIGJ5IFBDUkUuCiAgICAgICAgIGlu
dCogb2Zmc2V0VmVjdG9yOwpAQCAtMTc1LDcgKzE5MCw3IEBAIGludCBSZWdFeHA6Om1hdGNoKGNv
bnN0IFVTdHJpbmcmIHMsIGludCBzdGFydE9mZnNldCwgVmVjdG9yPGludCwgMzI+KiBvdmVjdG9y
KQogICAgICAgICAgICAgb2Zmc2V0VmVjdG9yID0gb3ZlY3Rvci0+ZGF0YSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgaW50IG51bU1hdGNoZXMgPSBqc1JlZ0V4cEV4ZWN1dGUobV9yZWdFeHAsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmNoYXJhY3RlcnMoKSksIHMubGVuZ3RoKCks
IHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOworICAgICAgICBp
bnQgbnVtTWF0Y2hlcyA9IGpzUmVnRXhwRXhlY3V0ZShtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4
cCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuY2hhcmFjdGVycygpKSwgcy5sZW5n
dGgoKSwgc3RhcnRPZmZzZXQsIG9mZnNldFZlY3Rvciwgb2Zmc2V0VmVjdG9yU2l6ZSk7CiAgICAg
CiAgICAgICAgIGlmIChudW1NYXRjaGVzIDwgMCkgewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cC5oCmluZGV4IGFhZGFkNmI2YjA4MjU3NTJmOGFmNjBkMzIyYjkxNDY5NzEwODI1
YzUuLmJlZmJiOGUxNjA2MTc5ZWNmZDYwNmUxN2JiNTA5NzkwODIyYzVlMjIgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHAuaApAQCAtMjYsMjEgKzI2LDE2IEBACiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KLSNpbmNsdWRlICJ5YXJyL1JlZ2V4SklULmgiCi0jaW5jbHVkZSAieWFyci9SZWdl
eEludGVycHJldGVyLmgiCi0KLXN0cnVjdCBKU1JlZ0V4cDsKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBzdHJ1Y3QgUmVnRXhwUmVwcmVzZW50YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRh
OwogCiAgICAgY2xhc3MgUmVnRXhwIDogcHVibGljIFJlZkNvdW50ZWQ8UmVnRXhwPiB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWdFeHA+IGNyZWF0ZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcm
IGZsYWdzKTsKLSNpZiAhRU5BQkxFKFlBUlIpCiAgICAgICAgIH5SZWdFeHAoKTsKLSNlbmRpZgog
CiAgICAgICAgIGJvb2wgZ2xvYmFsKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAmIEdsb2Jh
bDsgfQogICAgICAgICBib29sIGlnbm9yZUNhc2UoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdCaXRz
ICYgSWdub3JlQ2FzZTsgfQpAQCAtNjUsMTQgKzYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGludCBtX2ZsYWdCaXRzOwogICAgICAgICBjb25zdCBjaGFyKiBtX2NvbnN0cnVjdGlvbkVy
cm9yOwogICAgICAgICB1bnNpZ25lZCBtX251bVN1YnBhdHRlcm5zOwotCi0jaWYgRU5BQkxFKFlB
UlJfSklUKQotICAgICAgICBZYXJyOjpSZWdleENvZGVCbG9jayBtX3JlZ0V4cEpJVENvZGU7Ci0j
ZWxpZiBFTkFCTEUoWUFSUikKLSAgICAgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4g
bV9yZWdFeHBCeXRlY29kZTsKLSNlbHNlCi0gICAgICAgIEpTUmVnRXhwKiBtX3JlZ0V4cDsKLSNl
bmRpZgorICAgICAgICAKKyAgICAgICAgT3duUHRyPFJlZ0V4cFJlcHJlc2VudGF0aW9uPiBtX3Jl
cHJlc2VudGF0aW9uOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE4Nzc4
NzA2OTAyYmFiZDAxYzdjNGVhMTMwMmZlZmQ5ZjYxOTNkYzEuLjc0NWVhZmIwMmZkNjRkN2ZjNmQz
YTdiZTQ0NWFlYzhmNTQ1YTVjNmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOS0wNyAg
TWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBwdXNoU3RhdGUgYW5kIHJlcGxhY2VTdGF0
ZSBkbyBub3QgY2xvbmUgUmVnRXhwIG9iamVjdHMgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxOAorICAgICAgICAKKyAgICAgICAg
TWFrZSBSZWdFeHAgdGVzdCBvZiBwdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwgYWN0dWFsbHkg
dGVzdCBhIFJlZ0V4cAorICAgICAgICB2YWx1ZSB3aXRoIGZsYWdzLgorICAgICAgICAKKyAgICAg
ICAgQWxzbyBhZGRzIEltYWdlRGF0YSBzaW5jZSBpdCBjYW4gYmUgc2VyaWFsaXplZCBhcyBvZiBy
NTQ2NDYuICAgICAgICAKKworICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNo
c3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9z
dGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sOgorCiAyMDEwLTA5LTA3ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLWV4cGVjdGVkLnR4dApp
bmRleCA5MTBiNzk1ZGFmMzUyNDk2NDY1YTcxNTI0MTMzYTgzY2IzNTNhZWM4Li5lMWY1N2RiMTQw
YmI3ZjFlZjJmODdlZWQyYzcyNjY1ZDkzNjBjNTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1v
YmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDkgKzEsMTAgQEAKIFRoaXMgdGVzdCBjYWxs
cyBwdXNoU3RhdGUgd2l0aCBzdGF0ZSBvYmplY3RzIG9mIGFsbCB0aGUgZGlmZmVyZW50IG9iamVj
dCB0eXBlcyBzdXBwb3J0ZWQgYnkgdGhlIEhUTUw1ICJpbnRlcm5hbCBzdHJ1Y3R1cmVkIGNsb25p
bmcgYWxnb3JpdGhtIiBhbmQgbWFrZXMgc3VyZSB0aGUgZXZlbnRzIGNvbnRhaW4gdGhlIGV4cGVj
dGVkIG9iamVjdHMgd2hlbiB0aGUgc3RhdGVzIGFyZSBwb3BwZWQuCiAKK1N0YXRlIHBvcHBlZCAt
IFtvYmplY3QgSW1hZ2VEYXRhXSAodHlwZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQgLSBbb2JqZWN0
IE9iamVjdF0gKHR5cGUgb2JqZWN0KQogU3RhdGUgcG9wcGVkIC0gW29iamVjdCBPYmplY3RdICh0
eXBlIG9iamVjdCkKIFN0YXRlIHBvcHBlZCAtICAodHlwZSBvYmplY3QpCi1TdGF0ZSBwb3BwZWQg
LSBudWxsICh0eXBlIG9iamVjdCkKK1N0YXRlIHBvcHBlZCAtIC9mb28vZ2kgKHR5cGUgZnVuY3Rp
b24pCiBTdGF0ZSBwb3BwZWQgLSAwICh0eXBlIG9iamVjdCkKIFN0YXRlIHBvcHBlZCAtIFN0cmlu
ZyAodHlwZSBzdHJpbmcpCiBTdGF0ZSBwb3BwZWQgLSA0MiAodHlwZSBudW1iZXIpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVj
dC10eXBlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hz
dGF0ZS1vYmplY3QtdHlwZXMuaHRtbAppbmRleCAwOTg5MTE0M2JiYmI0MmQ0MjczODVlNWI0NDcy
MGJhZTYwNWQ5OTlkLi41YTI4NDM5MDc5NmZmNzgxNmViN2Q3YTExMmNhZTc2ZGZmOGExZjA3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRl
LW9iamVjdC10eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwKQEAgLTI0LDEzICsyNCwxMyBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICBoaXN0b3J5LnB1c2hTdGF0ZSg0MiwgIk51bWJlciBlbnRyeSIp
OwogICAgIGhpc3RvcnkucHVzaFN0YXRlKCJTdHJpbmciLCAiU3RyaW5nIGVudHJ5Iik7CiAgICAg
aGlzdG9yeS5wdXNoU3RhdGUobmV3IERhdGUoMCksICJEYXRlIGVudHJ5Iik7Ci0gICAgaGlzdG9y
eS5wdXNoU3RhdGUobmV3IFJlZ0V4cCwgIlJlZ0V4cCBlbnRyeSIpOworICAgIGhpc3RvcnkucHVz
aFN0YXRlKG5ldyBSZWdFeHAoImZvbyIsICJnaSIpLCAiUmVnRXhwIGVudHJ5Iik7CiAgICAgaGlz
dG9yeS5wdXNoU3RhdGUobmV3IEFycmF5LCAiQXJyYXkgZW50cnkiKTsKICAgICBoaXN0b3J5LnB1
c2hTdGF0ZShuZXcgT2JqZWN0LCAiT2JqZWN0IGVudHJ5Iik7CiAgICAgaGlzdG9yeS5wdXNoU3Rh
dGUobmV3IEVycm9yLCAiRXJyb3IgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hTdGF0ZShkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpLmNyZWF0ZUltYWdl
RGF0YSgxMCwxMCksICJJbWFnZURhdGEgZW50cnkiKTsKIAogLyogVGhlIGZvbGxvd2luZyBhcmUg
bm90IHlldCB3ZWxsIGVub3VnaCBzdXBwb3J0ZWQgaW4gV2ViS2l0IHRvIG1lYW5pbmdmdWxseSB0
ZXN0IGhlcmU6Ci1oaXN0b3J5LnB1c2hTdGF0ZShbSW1hZ2VEYXRhXSwgIkltYWdlRGF0YSBlbnRy
eSIpOwogaGlzdG9yeS5wdXNoU3RhdGUoW0Jsb2JdLCAiQmxvYiBlbnRyeSIpOwogaGlzdG9yeS5w
dXNoU3RhdGUoW0ZpbGVdLCAiRmlsZSBlbnRyeSIpOwogaGlzdG9yeS5wdXNoU3RhdGUoW0ZpbGVM
aXN0XSwgIkZpbGVMaXN0IGVudHJ5Iik7CkBAIC01Myw3ICs1Myw3IEBAIG9ucG9wc3RhdGUgPSBm
dW5jdGlvbihldmVudCkKICAgICB9CiAgICAgCiAgICAgaWYgKGV2ZW50LnN0YXRlIGluc3RhbmNl
b2YgRGF0ZSkKLSAgICAgICAgbG9nKCJTdGF0ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUuZ2V0
VGltZSgpICArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CisgICAgICAg
IGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlLmdldFRpbWUoKSArICIgKHR5cGUg
IiArIHR5cGVvZiBldmVudC5zdGF0ZSArICIpIik7CiAgICAgZWxzZQogICAgICAgICBsb2coIlN0
YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZSArICIgKHR5cGUgIiArIHR5cGVvZiBldmVudC5z
dGF0ZSArICIpIik7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMTQ3NTYzNDRkODMwYjNjOTU5ZTM4MjQ4OTNmNzk2N2Y3ZmM5ZWYwOC4u
ZGY2ZWFjZTNhOTIzY2RjZjExYTY3ZTA1OGRlNThhNjk2NzhhYTQ5MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMC0wOS0wNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBwdXNoU3RhdGUgYW5k
IHJlcGxhY2VTdGF0ZSBkbyBub3QgY2xvbmUgUmVnRXhwIG9iamVjdHMgY29ycmVjdGx5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDcxOAorICAgICAg
ICAKKyAgICAgICAgQWRkIFJlZ0V4cCBzdXBwb3J0IHRvIHRoZSBKU0MgaW1wbGVtZW50YXRpb24g
b2YgU2VyaWFsaXplZFNjcmlwdFZhbHVlCisgICAgICAgIChpdCBzdG9yZXMgdGhlIHBhdHRlcm4g
YW5kIGZsYWdzIHJlYWQgZnJvbSBhIFJlZ0V4cE9iamVjdCwgYW5kIGNyZWF0ZXMKKyAgICAgICAg
YSBuZXcgb25lIG9uIGRlc2VyaWFsaXphdGlvbikuCisgICAgICAgIAorICAgICAgICBUZXN0czog
ZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbCAKKwor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhwLmg6IEFkZGVkLgorICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhwT2JqZWN0Lmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorCiAyMDEwLTA5LTA3ICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9S
ZWdFeHAuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdFeHAuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNmU4ODk0NWQzOWJlNDZjYjRmYzU2ODdkZTk3NTAwNzVjM2YyZTAzCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cC5oCkBA
IC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9SZWdFeHBfaAorI2RlZmluZSBXZWJD
b3JlX0ZXRF9SZWdFeHBfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlZ0V4cC5oPgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmggYi9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhwT2JqZWN0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjNmMjUxNjkwYzNiMzUxMjllMDNmNzg4MGIwYmRjOTEzM2U0MWM3ZQot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdF
eHBPYmplY3QuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfUmVnRXhwT2Jq
ZWN0X2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfUmVnRXhwT2JqZWN0X2gKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9SZWdFeHBPYmplY3QuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDkyYzg5MzYzZDYwNTBkODFiNGE0NjJh
OTRmYWNhYTQyNGIwMjUwMDkuLmYyMjkwODg4NTY1ZDk5Nzg3OWNlMzQ1ODcwOThiOTY2NmQyNjIy
MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
QEAgLTQ0LDYgKzQ0LDggQEAKICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlO
YW1lQXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL1JlZ0V4cC5oPgorI2luY2x1ZGUgPHJ1bnRp
bWUvUmVnRXhwT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtODMsNiArODUs
NyBAQCBlbnVtIFNlcmlhbGl6YXRpb25UYWcgewogICAgIEJsb2JUYWcgPSAxNSwKICAgICBTdHJp
bmdUYWcgPSAxNiwKICAgICBFbXB0eVN0cmluZ1RhZyA9IDE3LAorICAgIFJlZ0V4cFRhZyA9IDE4
LAogICAgIEVycm9yVGFnID0gMjU1CiB9OwogCkBAIC0xNDUsNiArMTQ4LDggQEAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGludCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKICAqIEJsb2IgOi0K
ICAqICAgIEJsb2JUYWcgPHVybDpTdHJpbmdEYXRhPjx0eXBlOlN0cmluZ0RhdGE+PHNpemU6bG9u
ZyBsb25nPgogICoKKyAqIFJlZ0V4cCA6LQorICogICAgUmVnRXhwVGFnIDxwYXR0ZXJuOlN0cmlu
Z0RhdGE+PGZsYWdzOlN0cmluZ0RhdGE+CiAgKi8KIAogY2xhc3MgQ2xvbmVCYXNlIHsKQEAgLTM4
OSw2ICszOTQsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB3cml0ZShkYXRhLT5kYXRh
KCktPmRhdGEoKS0+ZGF0YSgpLCBkYXRhLT5kYXRhKCktPmxlbmd0aCgpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvYmotPmlu
aGVyaXRzKCZSZWdFeHBPYmplY3Q6OmluZm8pKSB7CisgICAgICAgICAgICAgICAgUmVnRXhwT2Jq
ZWN0KiByZWdFeHAgPSBhc1JlZ0V4cE9iamVjdChvYmopOworICAgICAgICAgICAgICAgIGNoYXIg
ZmxhZ3NbM107CisgICAgICAgICAgICAgICAgaW50IGZsYWdDb3VudCA9IDA7CisgICAgICAgICAg
ICAgICAgaWYgKHJlZ0V4cC0+cmVnRXhwKCktPmdsb2JhbCgpKQorICAgICAgICAgICAgICAgICAg
ICBmbGFnc1tmbGFnQ291bnQrK10gPSAnZyc7CisgICAgICAgICAgICAgICAgaWYgKHJlZ0V4cC0+
cmVnRXhwKCktPmlnbm9yZUNhc2UoKSkKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZmxhZ0Nv
dW50KytdID0gJ2knOworICAgICAgICAgICAgICAgIGlmIChyZWdFeHAtPnJlZ0V4cCgpLT5tdWx0
aWxpbmUoKSkKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZmxhZ0NvdW50KytdID0gJ20nOwor
ICAgICAgICAgICAgICAgIHdyaXRlKFJlZ0V4cFRhZyk7CisgICAgICAgICAgICAgICAgd3JpdGUo
cmVnRXhwLT5yZWdFeHAoKS0+cGF0dGVybigpKTsKKyAgICAgICAgICAgICAgICB3cml0ZShVU3Ry
aW5nKGZsYWdzLCBmbGFnQ291bnQpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgQ2FsbERhdGEgdW51c2VkRGF0YTsKICAgICAgICAg
ICAgIGlmIChnZXRDYWxsRGF0YSh2YWx1ZSwgdW51c2VkRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQpA
QCAtMTA2Niw2ICsxMDg2LDE2IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBF
bXB0eVN0cmluZ1RhZzoKICAgICAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKCZtX2V4ZWMt
Pmdsb2JhbERhdGEoKSk7CisgICAgICAgIGNhc2UgUmVnRXhwVGFnOiB7CisgICAgICAgICAgICBJ
ZGVudGlmaWVyIHBhdHRlcm47CisgICAgICAgICAgICBpZiAoIXJlYWRTdHJpbmdEYXRhKHBhdHRl
cm4pKQorICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIGZsYWdzOworICAgICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YShmbGFncykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdF
eHA+IHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgcGF0dGVy
bi51c3RyaW5nKCksIGZsYWdzLnVzdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3ICht
X2V4ZWMpIFJlZ0V4cE9iamVjdChtX2V4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbV9nbG9i
YWxPYmplY3QtPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApOyAKKyAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgbV9wdHItLTsgLy8gUHVzaCB0aGUgdGFnIGJhY2sKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66773</attachid>
            <date>2010-09-07 15:18:52 -0700</date>
            <delta_ts>2010-09-07 17:34:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44718-20100907151851.patch</filename>
            <type>text/plain</type>
            <size>16955</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBhN2E1MjQxZDkzODVhYjQ0NDY0ZmUzYWJhZWQ1NTNmMTNkMzUzNTkxLi5i
MmM0ZmM1YjY5NDEzNTlkNzU4YTc5ZjAwMjQxZTBiYmRiMjk5YjQ0IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjUgQEAKKzIwMTAtMDktMDcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
cHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNv
cnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1vdmUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2Yg
SlNDOjpSZWdFeHAgKHdoaWNoIGRlcGVuZHMgb24gd2V0aGVyCisgICAgICAgIFlBUlIgYW5kIFlB
UlJfSklUIGlzIGVuYWJsZWQpIGludG8gUmVnRXhwUmVwcmVzZW50YXRpb24gd2hpY2ggY2FuIGxp
dmUKKyAgICAgICAgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9ubHkuIFRoaXMgbWFrZXMgaXQgZmVh
c2libGUgdG8gdXNlIFJlZ0V4cCBpbgorICAgICAgICBXZWJDb3JlIHdpdGhvdXQgYnJpbmdpbmcg
aW4gYWxsIG9mIFlBUlIuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IEV4cG9ydCBS
ZWdFeHAgYW5kIFJlZ0V4cE9iamVjdCBmdW5jdGlvbnMgdGhhdCBhcmUKKyAgICAgICAgbmVlZGVk
IGluc2lkZSBXZWJDb3JlJ3MgSlNDIGJpbmRpbmdzLgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhw
LmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUmVwcmVzZW50YXRpb246On5SZWdFeHBSZXByZXNl
bnRhdGlvbik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6UmVnRXhwKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwOjp+UmVnRXhwKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UmVnRXhwOjptYXRjaCk6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoKKwog
MjAxMC0wOS0wNyAgWm9sdGFuIEhvcnZhdGggIDx6b2x0YW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRl
eCA3ZGY5Mzc2NTAxMTE3MTM1OTdiOWU2MWQwMzhiNDJiMDJkYjhkNWFhLi5iOGZiYjA4Mjc3MjVl
MDdhNTAxOTU2OGU0NmFkZTVlNjU2NDEzOTkwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CkBAIC00ODEsNiArNDgxLDggQEAgX19aTkszSlNDMTBKU0Z1bmN0aW9uMjNpc0hvc3RGdW5jdGlv
bk5vbklubGluZUV2CiBfX1pOSzNKU0MxMUludGVycHJldGVyMTRyZXRyaWV2ZUNhbGxlckVQTlNf
OUV4ZWNTdGF0ZUVQTlNfMTBKU0Z1bmN0aW9uRQogX19aTkszSlNDMTFJbnRlcnByZXRlcjE4cmV0
cmlldmVMYXN0Q2FsbGVyRVBOU185RXhlY1N0YXRlRVJpUmxSTlNfN1VTdHJpbmdFUk5TXzdKU1Zh
bHVlRQogX19aTkszSlNDMTJQcm9wZXJ0eVNsb3QxNGZ1bmN0aW9uR2V0dGVyRVBOU185RXhlY1N0
YXRlRQorX19aTjNKU0MxMlJlZ0V4cE9iamVjdDRpbmZvRQorX19aTjNKU0MxMlJlZ0V4cE9iamVj
dEMxRVBOU18xNEpTR2xvYmFsT2JqZWN0RU4zV1RGMTdOb25OdWxsUGFzc1JlZlB0cklOU185U3Ry
dWN0dXJlRUVFTlM0X0lOU182UmVnRXhwRUVFCiBfX1pOSzNKU0MxNEpTR2xvYmFsT2JqZWN0MTRp
c0R5bmFtaWNTY29wZUVSYgogX19aTkszSlNDMTZJbnRlcm5hbEZ1bmN0aW9uOWNsYXNzSW5mb0V2
CiBfX1pOSzNKU0MxNkpTVmFyaWFibGVPYmplY3QxNmlzVmFyaWFibGVPYmplY3RFdgpAQCAtNTEx
LDYgKzUxMyw4IEBAIF9fWk5LM0pTQzZKU0NlbGw5Z2V0U3RyaW5nRVBOU185RXhlY1N0YXRlRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRTdHJpbmdFUE5TXzlFeGVjU3RhdGVFUk5TXzdVU3RyaW5nRQog
X19aTkszSlNDNkpTQ2VsbDlnZXRVSW50MzJFUmoKIF9fWk5LM0pTQzZKU0NlbGw5dG9Cb29sZWFu
RVBOU185RXhlY1N0YXRlRQorX19aTjNKU0M2UmVnRXhwNmNyZWF0ZUVQTlNfMTJKU0dsb2JhbERh
dGFFUktOU183VVN0cmluZ0VTNV8KK19fWk4zSlNDNlJlZ0V4cEQxRXYKIF9fWk5LM0pTQzdBcmdM
aXN0OGdldFNsaWNlRWlSUzBfCiBfX1pOSzNKU0M3SlNBcnJheTEyc3ViY2xhc3NEYXRhRXYKIF9f
Wk5LM0pTQzdKU1ZhbHVlMTZ0b09iamVjdFNsb3dDYXNlRVBOU185RXhlY1N0YXRlRQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHAuY3BwCmluZGV4IDVhZDlmM2Y0Y2M3MTg5Yjk2YjYyN2Y1ZjQyZDNkOWEy
NGVmOTIzOTYuLmNiOTM0MmM2ZTNkMGRkYjFhODM4NDQ4YzZhYjRjODAyYTI4NmM5MzggMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTQ2LDExICs0NiwyOSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uIHsKKyNpZiBFTkFCTEUoWUFSUl9K
SVQpCisgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOworI2VsaWYgRU5B
QkxFKFlBUlIpCisgICAgT3duUHRyPFlhcnI6OkJ5dGVjb2RlUGF0dGVybj4gbV9yZWdFeHBCeXRl
Y29kZTsKKyNlbHNlCisgICAgSlNSZWdFeHAqIG1fcmVnRXhwOworI2VuZGlmCisKKyNpZiAhRU5B
QkxFKFlBUlIpCisgICAgflJlZ0V4cFJlcHJlc2VudGF0aW9uKCkKKyAgICB7CisgICAgICAgIGpz
UmVnRXhwRnJlZShtX3JlZ0V4cCk7CisgICAgfQorI2VuZGlmCit9OworCiBpbmxpbmUgUmVnRXhw
OjpSZWdFeHAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJu
LCBjb25zdCBVU3RyaW5nJiBmbGFncykKICAgICA6IG1fcGF0dGVybihwYXR0ZXJuKQogICAgICwg
bV9mbGFnQml0cygwKQogICAgICwgbV9jb25zdHJ1Y3Rpb25FcnJvcigwKQogICAgICwgbV9udW1T
dWJwYXR0ZXJucygwKQorICAgICwgbV9yZXByZXNlbnRhdGlvbihhZG9wdFB0cihuZXcgUmVnRXhw
UmVwcmVzZW50YXRpb24pKQogewogICAgIC8vIE5PVEU6IFRoZSBnbG9iYWwgZmxhZyBpcyBoYW5k
bGVkIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzIGJ5IGZ1bmN0aW9ucyBsaWtlCiAgICAgLy8gU3Ry
aW5nOjptYXRjaCBhbmQgUmVnRXhwT2JqZWN0OjptYXRjaC4KQEAgLTY1LDEyICs4Myw5IEBAIGlu
bGluZSBSZWdFeHA6OlJlZ0V4cChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IFVTdHJp
bmcmIHBhdHRlcm4sIGNvbnN0IFVTCiAgICAgY29tcGlsZShnbG9iYWxEYXRhKTsKIH0KIAotI2lm
ICFFTkFCTEUoWUFSUikKIFJlZ0V4cDo6flJlZ0V4cCgpCiB7Ci0gICAganNSZWdFeHBGcmVlKG1f
cmVnRXhwKTsKIH0KLSNlbmRpZgogCiBQYXNzUmVmUHRyPFJlZ0V4cD4gUmVnRXhwOjpjcmVhdGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBV
U3RyaW5nJiBmbGFncykKIHsKQEAgLTgyLDkgKzk3LDkgQEAgUGFzc1JlZlB0cjxSZWdFeHA+IFJl
Z0V4cDo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0
dGUKIHZvaWQgUmVnRXhwOjpjb21waWxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICNp
ZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgWWFycjo6aml0Q29tcGlsZVJlZ2V4KGdsb2JhbERhdGEs
IG1fcmVnRXhwSklUQ29kZSwgbV9wYXR0ZXJuLCBtX251bVN1YnBhdHRlcm5zLCBtX2NvbnN0cnVj
dGlvbkVycm9yLCBpZ25vcmVDYXNlKCksIG11bHRpbGluZSgpKTsKKyAgICBZYXJyOjpqaXRDb21w
aWxlUmVnZXgoZ2xvYmFsRGF0YSwgbV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHBKSVRDb2RlLCBt
X3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3RydWN0aW9uRXJyb3IsIGlnbm9yZUNh
c2UoKSwgbXVsdGlsaW5lKCkpOwogI2Vsc2UKLSAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gWWFycjo6
Ynl0ZUNvbXBpbGVSZWdleChtX3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3RydWN0
aW9uRXJyb3IsICZnbG9iYWxEYXRhLT5tX3JlZ2V4QWxsb2NhdG9yLCBpZ25vcmVDYXNlKCksIG11
bHRpbGluZSgpKTsKKyAgICBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlID0gWWFy
cjo6Ynl0ZUNvbXBpbGVSZWdleChtX3BhdHRlcm4sIG1fbnVtU3VicGF0dGVybnMsIG1fY29uc3Ry
dWN0aW9uRXJyb3IsICZnbG9iYWxEYXRhLT5tX3JlZ2V4QWxsb2NhdG9yLCBpZ25vcmVDYXNlKCks
IG11bHRpbGluZSgpKTsKICNlbmRpZgogfQogCkBAIC05OSw5ICsxMTQsOSBAQCBpbnQgUmVnRXhw
OjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMy
Piogb3ZlY3RvcikKICAgICAgICAgcmV0dXJuIC0xOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQot
ICAgIGlmICghIW1fcmVnRXhwSklUQ29kZSkgeworICAgIGlmICghIW1fcmVwcmVzZW50YXRpb24t
Pm1fcmVnRXhwSklUQ29kZSkgewogI2Vsc2UKLSAgICBpZiAobV9yZWdFeHBCeXRlY29kZSkgewor
ICAgIGlmIChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlKSB7CiAjZW5kaWYKICAg
ICAgICAgaW50IG9mZnNldFZlY3RvclNpemUgPSAobV9udW1TdWJwYXR0ZXJucyArIDEpICogMzsg
Ly8gRklYTUU6IHNob3VsZCBiZSAyIC0gYnV0IGFkZGluZyB0ZW1wb3JhcnkgZmFsbGJhY2sgdG8g
cGNyZS4KICAgICAgICAgaW50KiBvZmZzZXRWZWN0b3I7CkBAIC0xMTksOSArMTM0LDkgQEAgaW50
IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBWZWN0b3I8
aW50LCAzMj4qIG92ZWN0b3IpCiAgICAgICAgICAgICBvZmZzZXRWZWN0b3Jbal0gPSAtMTsKIAog
I2lmIEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgaW50IHJlc3VsdCA9IFlhcnI6OmV4ZWN1dGVS
ZWdleChtX3JlZ0V4cEpJVENvZGUsIHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5n
dGgoKSwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0b3JTaXplKTsKKyAgICAgICAgaW50IHJlc3Vs
dCA9IFlhcnI6OmV4ZWN1dGVSZWdleChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEpJVENvZGUs
IHMuY2hhcmFjdGVycygpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yLCBv
ZmZzZXRWZWN0b3JTaXplKTsKICNlbHNlCi0gICAgICAgIGludCByZXN1bHQgPSBZYXJyOjppbnRl
cnByZXRSZWdleChtX3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBzLmNoYXJhY3RlcnMoKSwgc3RhcnRP
ZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rvcik7CisgICAgICAgIGludCByZXN1bHQgPSBZ
YXJyOjppbnRlcnByZXRSZWdleChtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cEJ5dGVjb2RlLmdl
dCgpLCBzLmNoYXJhY3RlcnMoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3Rv
cik7CiAjZW5kaWYKIAogICAgICAgICBpZiAocmVzdWx0IDwgMCkgewpAQCAtMTQ0LDEwICsxNTks
MTAgQEAgaW50IFJlZ0V4cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0
LCBWZWN0b3I8aW50LCAzMj4qIG92ZWN0b3IpCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKEpTR2xv
YmFsRGF0YSopCiB7Ci0gICAgbV9yZWdFeHAgPSAwOworICAgIG1fcmVwcmVzZW50YXRpb24tPm1f
cmVnRXhwID0gMDsKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24gaWdub3JlQ2FzZU9wdGlv
biA9IGlnbm9yZUNhc2UoKSA/IEpTUmVnRXhwSWdub3JlQ2FzZSA6IEpTUmVnRXhwRG9Ob3RJZ25v
cmVDYXNlOwogICAgIEpTUmVnRXhwTXVsdGlsaW5lT3B0aW9uIG11bHRpbGluZU9wdGlvbiA9IG11
bHRpbGluZSgpID8gSlNSZWdFeHBNdWx0aWxpbmUgOiBKU1JlZ0V4cFNpbmdsZUxpbmU7Ci0gICAg
bV9yZWdFeHAgPSBqc1JlZ0V4cENvbXBpbGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+
KG1fcGF0dGVybi5jaGFyYWN0ZXJzKCkpLCBtX3BhdHRlcm4ubGVuZ3RoKCksIGlnbm9yZUNhc2VP
cHRpb24sIG11bHRpbGluZU9wdGlvbiwgJm1fbnVtU3VicGF0dGVybnMsICZtX2NvbnN0cnVjdGlv
bkVycm9yKTsKKyAgICBtX3JlcHJlc2VudGF0aW9uLT5tX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGls
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9wYXR0ZXJuLmNoYXJhY3RlcnMoKSks
IG1fcGF0dGVybi5sZW5ndGgoKSwgaWdub3JlQ2FzZU9wdGlvbiwgbXVsdGlsaW5lT3B0aW9uLCAm
bV9udW1TdWJwYXR0ZXJucywgJm1fY29uc3RydWN0aW9uRXJyb3IpOwogfQogCiBpbnQgUmVnRXhw
OjptYXRjaChjb25zdCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMy
Piogb3ZlY3RvcikKQEAgLTE2MCw3ICsxNzUsNyBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25zdCBV
U3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikKICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0T2Zmc2V0KSA+IHMubGVuZ3RoKCkgfHwg
cy5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKG1fcmVnRXhwKSB7Cisg
ICAgaWYgKG1fcmVwcmVzZW50YXRpb24tPm1fcmVnRXhwKSB7CiAgICAgICAgIC8vIFNldCB1cCB0
aGUgb2Zmc2V0IHZlY3RvciBmb3IgdGhlIHJlc3VsdC4KICAgICAgICAgLy8gRmlyc3QgMi8zIHVz
ZWQgZm9yIHJlc3VsdCwgdGhlIGxhc3QgdGhpcmQgdXNlZCBieSBQQ1JFLgogICAgICAgICBpbnQq
IG9mZnNldFZlY3RvcjsKQEAgLTE3NSw3ICsxOTAsNyBAQCBpbnQgUmVnRXhwOjptYXRjaChjb25z
dCBVU3RyaW5nJiBzLCBpbnQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQsIDMyPiogb3ZlY3RvcikK
ICAgICAgICAgICAgIG9mZnNldFZlY3RvciA9IG92ZWN0b3ItPmRhdGEoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGludCBudW1NYXRjaGVzID0ganNSZWdFeHBFeGVjdXRlKG1fcmVnRXhwLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5jaGFyYWN0ZXJzKCkpLCBzLmxlbmd0aCgpLCBz
dGFydE9mZnNldCwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0b3JTaXplKTsKKyAgICAgICAgaW50
IG51bU1hdGNoZXMgPSBqc1JlZ0V4cEV4ZWN1dGUobV9yZXByZXNlbnRhdGlvbi0+bV9yZWdFeHAs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmNoYXJhY3RlcnMoKSksIHMubGVuZ3Ro
KCksIHN0YXJ0T2Zmc2V0LCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOwogICAgIAog
ICAgICAgICBpZiAobnVtTWF0Y2hlcyA8IDApIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaAppbmRleCBhYWRhZDZiNmIwODI1NzUyZjhhZjYwZDMyMmI5MTQ2OTcxMDgyNWM1
Li5iZWZiYjhlMTYwNjE3OWVjZmQ2MDZlMTdiYjUwOTc5MDgyMmM1ZTIyIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmgKQEAgLTI2LDIxICsyNiwxNiBAQAogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0jaW5jbHVkZSAieWFyci9SZWdleEpJVC5oIgotI2luY2x1ZGUgInlhcnIvUmVnZXhJ
bnRlcnByZXRlci5oIgotCi1zdHJ1Y3QgSlNSZWdFeHA7CiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgc3RydWN0IFJlZ0V4cFJlcHJlc2VudGF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
IAogICAgIGNsYXNzIFJlZ0V4cCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZ0V4cD4gewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVnRXhwPiBjcmVhdGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nJiBwYXR0ZXJuLCBjb25zdCBVU3RyaW5nJiBm
bGFncyk7Ci0jaWYgIUVOQUJMRShZQVJSKQogICAgICAgICB+UmVnRXhwKCk7Ci0jZW5kaWYKIAog
ICAgICAgICBib29sIGdsb2JhbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ0JpdHMgJiBHbG9iYWw7
IH0KICAgICAgICAgYm9vbCBpZ25vcmVDYXNlKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnQml0cyAm
IElnbm9yZUNhc2U7IH0KQEAgLTY1LDE0ICs2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBpbnQgbV9mbGFnQml0czsKICAgICAgICAgY29uc3QgY2hhciogbV9jb25zdHJ1Y3Rpb25FcnJv
cjsKICAgICAgICAgdW5zaWduZWQgbV9udW1TdWJwYXR0ZXJuczsKLQotI2lmIEVOQUJMRShZQVJS
X0pJVCkKLSAgICAgICAgWWFycjo6UmVnZXhDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwotI2Vs
aWYgRU5BQkxFKFlBUlIpCi0gICAgICAgIE93blB0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IG1f
cmVnRXhwQnl0ZWNvZGU7Ci0jZWxzZQotICAgICAgICBKU1JlZ0V4cCogbV9yZWdFeHA7Ci0jZW5k
aWYKKyAgICAgICAgCisgICAgICAgIE93blB0cjxSZWdFeHBSZXByZXNlbnRhdGlvbj4gbV9yZXBy
ZXNlbnRhdGlvbjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhODc3ODcw
NjkwMmJhYmQwMWM3YzRlYTEzMDJmZWZkOWY2MTkzZGMxLi43NDVlYWZiMDJmZDY0ZDdmYzZkM2E3
YmU0NDVhZWM4ZjU0NWE1YzZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDktMDcgIE1p
aGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHVzaFN0YXRlIGFuZCByZXBsYWNlU3RhdGUg
ZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MTgKKyAgICAgICAgCisgICAgICAgIE1h
a2UgUmVnRXhwIHRlc3Qgb2YgcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sIGFjdHVhbGx5IHRl
c3QgYSBSZWdFeHAKKyAgICAgICAgdmFsdWUgd2l0aCBmbGFncy4KKyAgICAgICAgCisgICAgICAg
IEFsc28gYWRkcyBJbWFnZURhdGEgc2luY2UgaXQgY2FuIGJlIHNlcmlhbGl6ZWQgYXMgb2YgcjU0
NjQ2LiAgICAgICAgCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0
YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMuaHRtbDoKKwogMjAxMC0wOS0wNyAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUg
SHlhdHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
cHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy1leHBlY3RlZC50eHQKaW5k
ZXggOTEwYjc5NWRhZjM1MjQ5NjQ2NWE3MTUyNDEzM2E4M2NiMzUzYWVjOC4uZTFmNTdkYjE0MGJi
N2YxZWYyZjg3ZWVkMmM3MjY2NWQ5MzYwYzUzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3QtdHlwZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2Jq
ZWN0LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMSw5ICsxLDEwIEBACiBUaGlzIHRlc3QgY2FsbHMg
cHVzaFN0YXRlIHdpdGggc3RhdGUgb2JqZWN0cyBvZiBhbGwgdGhlIGRpZmZlcmVudCBvYmplY3Qg
dHlwZXMgc3VwcG9ydGVkIGJ5IHRoZSBIVE1MNSAiaW50ZXJuYWwgc3RydWN0dXJlZCBjbG9uaW5n
IGFsZ29yaXRobSIgYW5kIG1ha2VzIHN1cmUgdGhlIGV2ZW50cyBjb250YWluIHRoZSBleHBlY3Rl
ZCBvYmplY3RzIHdoZW4gdGhlIHN0YXRlcyBhcmUgcG9wcGVkLgogCitTdGF0ZSBwb3BwZWQgLSBb
b2JqZWN0IEltYWdlRGF0YV0gKHR5cGUgb2JqZWN0KQogU3RhdGUgcG9wcGVkIC0gW29iamVjdCBP
YmplY3RdICh0eXBlIG9iamVjdCkKIFN0YXRlIHBvcHBlZCAtIFtvYmplY3QgT2JqZWN0XSAodHlw
ZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQgLSAgKHR5cGUgb2JqZWN0KQotU3RhdGUgcG9wcGVkIC0g
bnVsbCAodHlwZSBvYmplY3QpCitTdGF0ZSBwb3BwZWQgLSAvZm9vL2dpICh0eXBlIGZ1bmN0aW9u
KQogU3RhdGUgcG9wcGVkIC0gMCAodHlwZSBvYmplY3QpCiBTdGF0ZSBwb3BwZWQgLSBTdHJpbmcg
KHR5cGUgc3RyaW5nKQogU3RhdGUgcG9wcGVkIC0gNDIgKHR5cGUgbnVtYmVyKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1vYmplY3Qt
dHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3Rh
dGUtb2JqZWN0LXR5cGVzLmh0bWwKaW5kZXggMDk4OTExNDNiYmJiNDJkNDI3Mzg1ZTViNDQ3MjBi
YWU2MDVkOTk5ZC4uNWEyODQzOTA3OTZmZjc4MTZlYjdkN2ExMTJjYWU3NmRmZjhhMWYwNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3B1c2hzdGF0ZS1v
YmplY3QtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVj
dHMvcHVzaHN0YXRlLW9iamVjdC10eXBlcy5odG1sCkBAIC0yNCwxMyArMjQsMTMgQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgaGlzdG9yeS5wdXNoU3RhdGUoNDIsICJOdW1iZXIgZW50cnkiKTsK
ICAgICBoaXN0b3J5LnB1c2hTdGF0ZSgiU3RyaW5nIiwgIlN0cmluZyBlbnRyeSIpOwogICAgIGhp
c3RvcnkucHVzaFN0YXRlKG5ldyBEYXRlKDApLCAiRGF0ZSBlbnRyeSIpOwotICAgIGhpc3Rvcnku
cHVzaFN0YXRlKG5ldyBSZWdFeHAsICJSZWdFeHAgZW50cnkiKTsKKyAgICBoaXN0b3J5LnB1c2hT
dGF0ZShuZXcgUmVnRXhwKCJmb28iLCAiZ2kiKSwgIlJlZ0V4cCBlbnRyeSIpOwogICAgIGhpc3Rv
cnkucHVzaFN0YXRlKG5ldyBBcnJheSwgIkFycmF5IGVudHJ5Iik7CiAgICAgaGlzdG9yeS5wdXNo
U3RhdGUobmV3IE9iamVjdCwgIk9iamVjdCBlbnRyeSIpOwogICAgIGhpc3RvcnkucHVzaFN0YXRl
KG5ldyBFcnJvciwgIkVycm9yIGVudHJ5Iik7CisgICAgaGlzdG9yeS5wdXNoU3RhdGUoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKS5jcmVhdGVJbWFnZURh
dGEoMTAsMTApLCAiSW1hZ2VEYXRhIGVudHJ5Iik7CiAKIC8qIFRoZSBmb2xsb3dpbmcgYXJlIG5v
dCB5ZXQgd2VsbCBlbm91Z2ggc3VwcG9ydGVkIGluIFdlYktpdCB0byBtZWFuaW5nZnVsbHkgdGVz
dCBoZXJlOgotaGlzdG9yeS5wdXNoU3RhdGUoW0ltYWdlRGF0YV0sICJJbWFnZURhdGEgZW50cnki
KTsKIGhpc3RvcnkucHVzaFN0YXRlKFtCbG9iXSwgIkJsb2IgZW50cnkiKTsKIGhpc3RvcnkucHVz
aFN0YXRlKFtGaWxlXSwgIkZpbGUgZW50cnkiKTsKIGhpc3RvcnkucHVzaFN0YXRlKFtGaWxlTGlz
dF0sICJGaWxlTGlzdCBlbnRyeSIpOwpAQCAtNTMsNyArNTMsNyBAQCBvbnBvcHN0YXRlID0gZnVu
Y3Rpb24oZXZlbnQpCiAgICAgfQogICAgIAogICAgIGlmIChldmVudC5zdGF0ZSBpbnN0YW5jZW9m
IERhdGUpCi0gICAgICAgIGxvZygiU3RhdGUgcG9wcGVkIC0gIiArIGV2ZW50LnN0YXRlLmdldFRp
bWUoKSAgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOworICAgICAgICBs
b2coIlN0YXRlIHBvcHBlZCAtICIgKyBldmVudC5zdGF0ZS5nZXRUaW1lKCkgKyAiICh0eXBlICIg
KyB0eXBlb2YgZXZlbnQuc3RhdGUgKyAiKSIpOwogICAgIGVsc2UKICAgICAgICAgbG9nKCJTdGF0
ZSBwb3BwZWQgLSAiICsgZXZlbnQuc3RhdGUgKyAiICh0eXBlICIgKyB0eXBlb2YgZXZlbnQuc3Rh
dGUgKyAiKSIpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDE0NzU2MzQ0ZDgzMGIzYzk1OWUzODI0ODkzZjc5NjdmN2ZjOWVmMDguLmRm
NmVhY2UzYTkyM2NkY2YxMWE2N2UwNThkZTU4YTY5Njc4YWE0OTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTAtMDktMDcgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcHVzaFN0YXRlIGFuZCBy
ZXBsYWNlU3RhdGUgZG8gbm90IGNsb25lIFJlZ0V4cCBvYmplY3RzIGNvcnJlY3RseQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ3MTgKKyAgICAgICAg
CisgICAgICAgIEFkZCBSZWdFeHAgc3VwcG9ydCB0byB0aGUgSlNDIGltcGxlbWVudGF0aW9uIG9m
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQorICAgICAgICAoaXQgc3RvcmVzIHRoZSBwYXR0ZXJuIGFu
ZCBmbGFncyByZWFkIGZyb20gYSBSZWdFeHBPYmplY3QsIGFuZCBjcmVhdGVzCisgICAgICAgIGEg
bmV3IG9uZSBvbiBkZXNlcmlhbGl6YXRpb24pLgorICAgICAgICAKKyAgICAgICAgVGVzdHM6IGZh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9wdXNoc3RhdGUtb2JqZWN0LXR5cGVzLmh0bWwgCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cE9iamVjdC5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSWZUZXJtaW5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFRlcm1pbmFsKToKKwogMjAxMC0wOS0wNyAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUg
SHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVn
RXhwLmggYi9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhwLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjZlODg5NDVkMzliZTQ2Y2I0ZmM1Njg3ZGU5NzUwMDc1YzNmMmUwMwotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9SZWdFeHAuaApAQCAt
MCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfUmVnRXhwX2gKKyNkZWZpbmUgV2ViQ29y
ZV9GV0RfUmVnRXhwX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZWdFeHAuaD4KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cE9i
amVjdC5oIGIvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL1JlZ0V4cE9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIzZjI1MTY5MGMzYjM1MTI5ZTAzZjc4ODBiMGJkYzkxMzNlNDFjN2UKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1JlZ0V4cE9iamVj
dF9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1JlZ0V4cE9iamVjdF9oCisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvUmVnRXhwT2JqZWN0Lmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA5MmM4OTM2M2Q2MDUwZDgxYjRhNDYyYTk0
ZmFjYWE0MjRiMDI1MDA5Li5mMjI5MDg4ODU2NWQ5OTc4NzljZTM0NTg3MDk4Yjk2NjZkMjYyMjJl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC00NCw2ICs0NCw4IEBACiAjaW5jbHVkZSA8cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KICNpbmNsdWRlIDxydW50aW1lL1Byb3BlcnR5TmFt
ZUFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGltZS9SZWdFeHAuaD4KKyNpbmNsdWRlIDxydW50aW1l
L1JlZ0V4cE9iamVjdC5oPgogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTgzLDYgKzg1LDcg
QEAgZW51bSBTZXJpYWxpemF0aW9uVGFnIHsKICAgICBCbG9iVGFnID0gMTUsCiAgICAgU3RyaW5n
VGFnID0gMTYsCiAgICAgRW1wdHlTdHJpbmdUYWcgPSAxNywKKyAgICBSZWdFeHBUYWcgPSAxOCwK
ICAgICBFcnJvclRhZyA9IDI1NQogfTsKIApAQCAtMTQ1LDYgKzE0OCw4IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBpbnQgU3RyaW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiAgKiBCbG9iIDotCiAg
KiAgICBCbG9iVGFnIDx1cmw6U3RyaW5nRGF0YT48dHlwZTpTdHJpbmdEYXRhPjxzaXplOmxvbmcg
bG9uZz4KICAqCisgKiBSZWdFeHAgOi0KKyAqICAgIFJlZ0V4cFRhZyA8cGF0dGVybjpTdHJpbmdE
YXRhPjxmbGFnczpTdHJpbmdEYXRhPgogICovCiAKIGNsYXNzIENsb25lQmFzZSB7CkBAIC0zODks
NiArMzk0LDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgd3JpdGUoZGF0YS0+ZGF0YSgp
LT5kYXRhKCktPmRhdGEoKSwgZGF0YS0+ZGF0YSgpLT5sZW5ndGgoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2JqLT5pbmhl
cml0cygmUmVnRXhwT2JqZWN0OjppbmZvKSkgeworICAgICAgICAgICAgICAgIFJlZ0V4cE9iamVj
dCogcmVnRXhwID0gYXNSZWdFeHBPYmplY3Qob2JqKTsKKyAgICAgICAgICAgICAgICBjaGFyIGZs
YWdzWzNdOworICAgICAgICAgICAgICAgIGludCBmbGFnQ291bnQgPSAwOworICAgICAgICAgICAg
ICAgIGlmIChyZWdFeHAtPnJlZ0V4cCgpLT5nbG9iYWwoKSkKKyAgICAgICAgICAgICAgICAgICAg
ZmxhZ3NbZmxhZ0NvdW50KytdID0gJ2cnOworICAgICAgICAgICAgICAgIGlmIChyZWdFeHAtPnJl
Z0V4cCgpLT5pZ25vcmVDYXNlKCkpCisgICAgICAgICAgICAgICAgICAgIGZsYWdzW2ZsYWdDb3Vu
dCsrXSA9ICdpJzsKKyAgICAgICAgICAgICAgICBpZiAocmVnRXhwLT5yZWdFeHAoKS0+bXVsdGls
aW5lKCkpCisgICAgICAgICAgICAgICAgICAgIGZsYWdzW2ZsYWdDb3VudCsrXSA9ICdtJzsKKyAg
ICAgICAgICAgICAgICB3cml0ZShSZWdFeHBUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKHJl
Z0V4cC0+cmVnRXhwKCktPnBhdHRlcm4oKSk7CisgICAgICAgICAgICAgICAgd3JpdGUoVVN0cmlu
ZyhmbGFncywgZmxhZ0NvdW50KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIENhbGxEYXRhIHVudXNlZERhdGE7CiAgICAgICAgICAg
ICBpZiAoZ2V0Q2FsbERhdGEodmFsdWUsIHVudXNlZERhdGEpID09IENhbGxUeXBlTm9uZSkKQEAg
LTEwNjYsNiArMTA4NiwxNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIGNhc2UgRW1w
dHlTdHJpbmdUYWc6CiAgICAgICAgICAgICByZXR1cm4ganNFbXB0eVN0cmluZygmbV9leGVjLT5n
bG9iYWxEYXRhKCkpOworICAgICAgICBjYXNlIFJlZ0V4cFRhZzogeworICAgICAgICAgICAgSWRl
bnRpZmllciBwYXR0ZXJuOworICAgICAgICAgICAgaWYgKCFyZWFkU3RyaW5nRGF0YShwYXR0ZXJu
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgSWRlbnRp
ZmllciBmbGFnczsKKyAgICAgICAgICAgIGlmICghcmVhZFN0cmluZ0RhdGEoZmxhZ3MpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnRXhw
PiByZWdFeHAgPSBSZWdFeHA6OmNyZWF0ZSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIHBhdHRlcm4u
dXN0cmluZygpLCBmbGFncy51c3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9l
eGVjKSBSZWdFeHBPYmplY3QobV9leGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIG1fZ2xvYmFs
T2JqZWN0LT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKTsgCisgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIG1fcHRyLS07IC8vIFB1c2ggdGhlIHRhZyBiYWNrCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>