<?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>50187</bug_id>
          
          <creation_ts>2010-11-29 14:44:29 -0800</creation_ts>
          <short_desc>implement onload events for &lt;link rel=prefetch&gt;</short_desc>
          <delta_ts>2010-12-04 13:04:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>0</everconfirmed>
          <reporter name="Gavin Peters">gavinp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</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>314663</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-11-29 14:44:29 -0800</bug_when>
    <thetext>Right now link rel=prefetch doesn&apos;t dispatch onload events.  However, it probably would be really good if it did.  Tests would be less flaky, for one.

I emailed hixie to see what he thought, and here&apos;s the pasted correspondence:

Ian Hickson to Gavin, Adam
show details 5 Nov
- Hide quoted text -
On Fri, 5 Nov 2010, Gavin Peters (�~S~K�~V~G彼德�~V�) wrote:
&gt;
&gt; WebKit currently supports link rel=prefetch, but doesn&apos;t have onload or
&gt; onerror events for this.  There was some discussion when this feature
&gt; was first added about if this was appropriate:
&gt; https://bugs.webkit.org/show_bug.cgi?id=3652
&gt;
&gt; We&apos;ve since landed it, and I&apos;ve had web developers ask me if we can
&gt; generate these events: especially since WebKit supports mutating the DOM
&gt; to include link rel=prefetch (mozilla doesn&apos;t), developers who are
&gt; adding these programatically want a way to know how many are in flight.
&gt; This mechanism would do it for them.
&gt;
&gt; What do you think?  Is this within spec and reasonable, or do you have
&gt; any other comments about it?

Sounds good to me. Technically the HTML spec requires load and error
events to be fired on all &lt;link&gt; elements whenever they load anything:

  http://www.whatwg.org/specs/web-apps/current-work/complete.html#concept-link-obtain

...so it&apos;s definitely per-spec.

--
Ian Hickson               U+1047E                )\._.,--....,&apos;``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..&apos;--(,_..&apos;`-.;.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314761</commentid>
    <comment_count>1</comment_count>
      <attachid>75089</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-11-29 17:28:19 -0800</bug_when>
    <thetext>Created attachment 75089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314763</commentid>
    <comment_count>2</comment_count>
      <attachid>75089</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-11-29 17:29:35 -0800</bug_when>
    <thetext>Comment on attachment 75089
Patch

This is my first pass.  I&apos;ve reworked a lot of tests, and I&apos;m very interested to hear back what people think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314775</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-29 17:45:28 -0800</bug_when>
    <thetext>Attachment 75089 did not build on qt:
Build output: http://queues.webkit.org/results/6354099</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314787</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-11-29 18:07:11 -0800</bug_when>
    <thetext>Attachment 75089 did not build on win:
Build output: http://queues.webkit.org/results/6304125</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314881</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-30 00:07:56 -0800</bug_when>
    <thetext>Attachment 75089 did not build on gtk:
Build output: http://queues.webkit.org/results/6344091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315446</commentid>
    <comment_count>6</comment_count>
      <attachid>75089</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-11-30 17:36:56 -0800</bug_when>
    <thetext>Comment on attachment 75089
Patch

Don&apos;t commit my patch: besides the bad builds, I have realised it takes totally the wrong approach to delaying onload events.  I have a new idea I&apos;ll submit in a forthcoming patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317231</commentid>
    <comment_count>7</comment_count>
      <attachid>75598</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-03 21:35:17 -0800</bug_when>
    <thetext>Created attachment 75598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317232</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-03 21:39:02 -0800</bug_when>
    <thetext>I left my approach to onload events in.  It somewhat closely mirrors what&apos;s done in the ImageLoader; the use of a SetTimer(0) forces us to wait until more of the document exists in the case of a load from cache.

Adam, I&apos;m interested to see what you think of what I have here.  I&apos;d like to clean this up before I start adding the onerror element.  Let me know if you think it&apos;s best to land this with onerror or in two CLs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317250</commentid>
    <comment_count>9</comment_count>
      <attachid>75598</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-04 01:05:30 -0800</bug_when>
    <thetext>Comment on attachment 75598
Patch

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

This is looks to be correct and a nice approach.  I have a couple questions before, mostly for my education.

&gt; LayoutTests/ChangeLog:8
&gt; +        Implement onload events for WebKit
&gt; +
&gt; +        implement onload events for &lt;link rel=prefetch&gt;
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=50187

One of these lines seems redundant.  :)

&gt; LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test.html:16
&gt; +    ++nick_load_count

missing ;

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload.html:15
&gt; +                if (window.layoutTestController) {
&gt; +                    layoutTestController.notifyDone();
&gt; +                }

No braces needed.

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload.html:22
&gt; +	&lt;/script&gt;

bad indent

&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch.html:-7
&gt; -    setTimeout(&quot;layoutTestController.notifyDone()&quot;,50);

Yay!

&gt; LayoutTests/http/tests/misc/prefetch-purpose.html:-17
&gt; -&lt;body onload=&quot;setTimeout(&apos;finishUp()&apos;, 50);&quot;&gt;

yay!

&gt; WebCore/html/HTMLLinkElement.cpp:376
&gt; +#if ENABLE(LINK_PREFETCH)
&gt; +void HTMLLinkElement::onloadTimerFired(Timer&lt;HTMLLinkElement&gt;*)
&gt; +{

We usually have an ASSERT_UNUSED that we&apos;re being called back with the right timer.

&gt; WebCore/html/HTMLLinkElement.cpp:377
&gt; +    m_loading = false;

This line surprises me.  I&apos;m not quite sure I understand it.

&gt; WebCore/html/HTMLLinkElement.cpp:382
&gt; +void HTMLLinkElement::notifyFinished(CachedResource*)
&gt; +{

Again, an ASSERT here would be nice.

&gt; WebCore/html/HTMLLinkElement.cpp:383
&gt; +    m_onloadTimer.startOneShot(0);

Should we remove ourselves as a client of the prefetch at this point?

&gt; WebCore/loader/cache/CachedResource.cpp:118
&gt; +    setLoading(false);

I&apos;m not sure I quite understand this line either.  Would you be willing to explain what it does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317277</commentid>
    <comment_count>10</comment_count>
      <attachid>75598</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 07:50:48 -0800</bug_when>
    <thetext>Comment on attachment 75598
Patch

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

&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=50187
&gt; 
&gt; One of these lines seems redundant.  :)

Done.

&gt;&gt; LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test.html:16
&gt;&gt; +    ++nick_load_count
&gt; 
&gt; missing ;

Now it&apos;s not.

&gt;&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload.html:15
&gt;&gt; +                }
&gt; 
&gt; No braces needed.

Gone.

&gt;&gt; LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload.html:22
&gt;&gt; +	&lt;/script&gt;
&gt; 
&gt; bad indent

Fixed.

&gt;&gt; WebCore/html/HTMLLinkElement.cpp:376
&gt;&gt; +{
&gt; 
&gt; We usually have an ASSERT_UNUSED that we&apos;re being called back with the right timer.

Good plan.  Done.

&gt;&gt; WebCore/html/HTMLLinkElement.cpp:377
&gt;&gt; +    m_loading = false;
&gt; 
&gt; This line surprises me.  I&apos;m not quite sure I understand it.

Neither did I.  It&apos;s gone.

The original patch in 3652 manipulated m_loading quite a bit; this was the last vestige of that.  In the case of HTMLLinkElement through, isLoading() is really about CSS, and not any other kind of resource, so I&apos;m not touching it any more.

&gt;&gt; WebCore/html/HTMLLinkElement.cpp:382
&gt;&gt; +{
&gt; 
&gt; Again, an ASSERT here would be nice.

Done.

&gt;&gt; WebCore/html/HTMLLinkElement.cpp:383
&gt;&gt; +    m_onloadTimer.startOneShot(0);
&gt; 
&gt; Should we remove ourselves as a client of the prefetch at this point?

I think it&apos;s a good idea.  When the HTMLLinkElement is deleted, it&apos;ll remove itself.  And of course the CachedResource has a life at least as long as this element, since it should survive in the MemoryCache for the length of the page.

Done.

&gt;&gt; WebCore/loader/cache/CachedResource.cpp:118
&gt;&gt; +    setLoading(false);
&gt; 
&gt; I&apos;m not sure I quite understand this line either.  Would you be willing to explain what it does?

As it happens, CachedResource::data is used only in the LinkPrefetch case.  This method is overriden specifically in all the other subclasses.  The omission of this line was a bug, but invisible since nothing cared about completion of prefetch loads.  In other CachedResources, loading is normally set to false after completion, or after discovering it will fail.  Grep through ImageLoader.cpp say looking for setLoading(false) and you&apos;ll see a very similar call in ::data() (around like 299).

The most important use probably comes in CachedResource::didAddClient(), if isLoading() returns false, we immediately send our new client a notifyFinished.  It&apos;s actually that immediate event-pass-through that required I put the timer in HTMLLinkElement; when the memory cache contained the target of the prefetch, onload on prefetch events was launching before we even had a fully baked DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317278</commentid>
    <comment_count>11</comment_count>
      <attachid>75610</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 07:51:25 -0800</bug_when>
    <thetext>Created attachment 75610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317279</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 07:56:00 -0800</bug_when>
    <thetext>Adam,

Thanks for your review.  I&apos;ve remediated to your concerns, and answered your questions.  I will go ahead and get working on onerror events, so we can either wait for that patch, or just land this and have the onerror events add to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317281</commentid>
    <comment_count>13</comment_count>
      <attachid>75610</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 08:10:45 -0800</bug_when>
    <thetext>Comment on attachment 75610
Patch

The removeClient is causing trouble on mac.  Wait for more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317282</commentid>
    <comment_count>14</comment_count>
      <attachid>75611</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 09:09:55 -0800</bug_when>
    <thetext>Created attachment 75611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317283</commentid>
    <comment_count>15</comment_count>
      <attachid>75611</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 09:11:08 -0800</bug_when>
    <thetext>Comment on attachment 75611
Patch

This patch solves the crash I was seeing on Mac (and I&apos;m surprised I didn&apos;t see in gtk).  

However, I&apos;d like to add one more test; so I&apos;m putting it here more to have stashed it than anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317285</commentid>
    <comment_count>16</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 10:06:03 -0800</bug_when>
    <thetext>Ixnay adding that test; I wanted to confirm if this patch was introducing onload to rel=&quot;stylesheet&quot; elements, and it is not.  Perhaps that&apos;s a good followup CL to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317292</commentid>
    <comment_count>17</comment_count>
      <attachid>75611</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-04 11:17:13 -0800</bug_when>
    <thetext>Comment on attachment 75611
Patch

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

Thanks!

&gt; WebCore/html/HTMLLinkElement.cpp:384
&gt; +    if (m_cachedLinkPrefetch.get() == resource) {

Can this be false?  Or are we just planning ahead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317293</commentid>
    <comment_count>18</comment_count>
      <attachid>75611</attachid>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2010-12-04 11:34:21 -0800</bug_when>
    <thetext>Comment on attachment 75611
Patch

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

&gt;&gt; WebCore/html/HTMLLinkElement.cpp:384
&gt;&gt; +    if (m_cachedLinkPrefetch.get() == resource) {
&gt; 
&gt; Can this be false?  Or are we just planning ahead?

I don&apos;t believe it can be false, since I don&apos;t believe CachedCSSStyleSheet sends notifyFinished() events.  But, yeah, planning ahead since one day it might, and I adding onload for link rel=stylesheet should be a careful conscious choice in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317301</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-12-04 12:34:46 -0800</bug_when>
    <thetext>Maybe we should use an ASSERT with a comment to document that fact?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317302</commentid>
    <comment_count>20</comment_count>
      <attachid>75611</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-04 12:40:26 -0800</bug_when>
    <thetext>Comment on attachment 75611
Patch

Clearing flags on attachment: 75611

Committed r73335: &lt;http://trac.webkit.org/changeset/73335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317303</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-04 12:40:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>317306</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-12-04 13:04:43 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 75611:

animations/combo-transform-translate+scale.html
fast/preloader/script.html

Please file bugs against the tests.  These tests were authored by abarth@webkit.org, cmarrin@apple.com, darin@apple.com, ojan@chromium.org, and pol@apple.com.  The commit-queue is continuing to process your patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75089</attachid>
            <date>2010-11-29 17:28:19 -0800</date>
            <delta_ts>2010-12-03 21:35:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50187-20101129202818.patch</filename>
            <type>text/plain</type>
            <size>13127</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ODBlZTYzNjM1ZjZhMGY4ODA1NTBkY2E5NDllNmYxMGRjOGYwNTgyLi4xMzY3YTFh
YzFlMzY4Y2M1N2MwYTFmZjI3MzQ5YTBjMzRmNDA5OTZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMTEtMjkgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaW1wbGVtZW50IG9ubG9h
ZCBldmVudHMgZm9yIGxpbmsgcmVsPXByZWZldGNoCisKKyAgICAgICAgaW1wbGVtZW50IG9ubG9h
ZCBldmVudHMgZm9yIDxsaW5rIHJlbD1wcmVmZXRjaD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTg3CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5odG1sOgorCiAyMDEwLTEx
LTI5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQKaW5kZXggNzVkNzdkZjA5MDMw
MzVkYjFmOWM2YzJiN2YyODg5MTZmOGU5YzQzYi4uOWVhNjVkYzM2ZjczYjE5OTUxMjI3OGY4YjJh
YzU5OTM4OWZhMjYwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtF
bGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xLDIgKzEsNCBAQAogcHJl
ZmV0Y2gubGluayBoYXMgTUlNRSB0eXBlIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQogVGhpcyB0
ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlIHRvIHNlZSB0aGUgbG9nIG9mIHdoYXQgcmVzb3Vy
Y2VzIGFyZSBsb2FkZWQuCisKK1NVQ0NFU1MhIHByZWZldGNoIG9ubG9hZCBjYWxsZWQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25s
b2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ZGYyNTRhMDAxY2U2ODVk
MzcwMDNjY2I0Y2QyMjMxMDg3YzU4MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYgQEAKK1RoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRzIGNhbiBiZSBhdHRhY2hl
ZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXByZWZldGNoLiBTaW5jZSBwcmVmZXRjaCBsaW5r
cyBhcmUganVzdCB0aGVyZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgdGhlIG9ubG9h
ZCBldmVudCBpcyB0aGVpciBvbmx5IHByb2dyYW1hdGljIHNpZGUtZWZmZWN0LgorCitJZiBpdCB3
b3JrcyB5b3Ugc2hvdWxkIHNlZSBhIG1lc3NhZ2UgYmVsb3cgc2F5aW5nIHRoZSB0ZXN0IGhhcyBw
YXNzZWQuCisKK1RFU1QgUEFTU0VELiBUaGUgc3R5bGVzaGVldCBsaW5rIG9ubG9hZCBoYW5kbGVy
IGhhcyBmaXJlZCBhZnRlciB0aGUgZG9jdW1lbnQgb25sb2FkIGhhbmRsZXIKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQyYzJkMWIyMzBmN2IwY2JhYTZhOTdmOGJhMDhmZDNmM2RhYWVl
YjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAg
IGdvdF9tYWluID0gZmFsc2U7CisgICAgICAgICAgICBnb3RfcHJlZmV0Y2ggPSBmYWxzZTsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAg
ICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2Fn
ZSkpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIiku
YXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBk
b25lKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnb3RfcHJlZmV0Y2ggPSB0cnVl
OworICAgICAgICAgICAgICAgIGlmIChnb3RfbWFpbikgeworICAgICAgICAgICAgICAgICAgICBs
b2coIlRFU1QgUEFTU0VELiBUaGUgc3R5bGVzaGVldCBsaW5rIG9ubG9hZCBoYW5kbGVyIGhhcyBm
aXJlZCBhZnRlciB0aGUgZG9jdW1lbnQgb25sb2FkIGhhbmRsZXIiKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsb2coIlRFU1QgRkFJTEVELiBUaGUgc3R5
bGVzaGVldCBsaW5rIG9ubG9hZCBoYW5kbGVyIGhhcyBmaXJlZCBiZWZvcmUgdGhlIGRvY3VtZW50
IG9ubG9hZCBoYW5kbGVyIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbWFpbl9vbmxvYWQoKSB7CisgICAgICAg
ICAgICAgICAgZ290X21haW4gPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIH0KKworCTwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im1haW5fb25sb2FkKCkiPgorICAgICAgICA8
cD5UaGlzIHRlc3RzIHRoYXQgb25sb2FkIGV2ZW50cyBjYW4gYmUgYXR0YWNoZWQgdG8gbGluayBl
bGVtZW50cyB3aXRoIHJlbD1wcmVmZXRjaC4gU2luY2UgcHJlZmV0Y2ggbGlua3MgYXJlIGp1c3Qg
dGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIHRoZSBvbmxvYWQgZXZlbnQgaXMg
dGhlaXIgb25seSBwcm9ncmFtYXRpYyBzaWRlLWVmZmVjdC48L3A+CisgICAgICAgIDxwPklmIGl0
IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFz
IHBhc3NlZC48L3A+CisgICAgICAgIDxsaW5rIGhyZWY9InByZWZldGNoLmxpbmsiIHJlbD0icHJl
ZmV0Y2giIG9ubG9hZD0iZG9uZSgpIiA+CisgICAgICAgIDxocj4KKyAgICAgICAgPHA+PG9sIGlk
PSJjb25zb2xlIj48L29sPjwvcD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCmluZGV4IDNiNWRk
OWI4ZTViYWZjNzIzZmQzYzA0ZTIxODZkYTY0ZThiMGFiMTYuLjVjMjIzZjk3Yzc2NjkwZTNmOGNj
OGMxYzM4YTEyMTNlOTcwODZlMGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCkBAIC0xLDE0ICsxLDIzIEBACiA8Ym9keT4KIDxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgIHZhciBpdGVtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorZnVuY3Rpb24gcHJlZmV0Y2hfb25sb2FkKCkgewor
ICAgIGxvZygiU1VDQ0VTUyEgIHByZWZldGNoIG9ubG9hZCBjYWxsZWQuIik7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKLSAgICBzZXRUaW1lb3V0KCJs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLDUwKTsKIH0KIDwvc2NyaXB0PgogPGh0
bWw+CiA8cD5UaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cg
b2Ygd2hhdCByZXNvdXJjZXMgYXJlIGxvYWRlZC4KLTxsaW5rIGhyZWY9InByZWZldGNoLmxpbmsi
IHJlbD0icHJlZmV0Y2giPgorPGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVmZXRj
aCIgb25sb2FkPSJwcmVmZXRjaF9vbmxvYWQoKSI+Cis8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+
CiA8L2h0bWw+CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVm
ZXRjaC1wdXJwb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9w
cmVmZXRjaC1wdXJwb3NlLWV4cGVjdGVkLnR4dAppbmRleCA1MmFjZWM1Yzg4ODI3NjlhOGEwYWMw
YmY2OGI2ZTY5MzBlOWRmMmE4Li5iODY5ZmM4NGEzMDFjZDFhZWNjYjNiMzQyOTBkZDhjOWM3Zjc3
YjAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVy
cG9zZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3ByZWZl
dGNoLXB1cnBvc2UtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogcHJlZmV0Y2gtcHVycG9z
ZS5waHAgaGFzIE1JTUUgdHlwZSB0ZXh0L2h0bWwKIHByZWZldGNoLXB1cnBvc2UucGhwIGhhcyBN
SU1FIHR5cGUgdGV4dC9odG1sCi1UaGUgY29va2llIHdhcyBzZXQhCiAKLVB1cnBvc2U6IHByZWZl
dGNoCiAKK1RoZSBjb29raWUgd2FzIHNldCEKK1B1cnBvc2U6IHByZWZldGNoCiBUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCBwcmVmZXRjaGVzIGFyZSBzZW50IHdpdGggdGhlIEhUVFAgcmVxdWVzdCBo
ZWFkZXIgUHVycG9zZTogcHJlZmV0Y2guIFRvIGRvIHRoaXMsIHRoZSByb290IHBhZ2UgaGFzIGEg
cHJlZmV0Y2ggbGluayB0YXJnZXR0aW5nIHRoaXMgc3VicmVzb3VyY2Ugd2hpY2ggY29udGFpbnMg
YSBQSFAgc2NyaXB0IChyZXNvdXJjZXMvcHJlZmV0Y2gtcHVycG9zZS5waHApLiBUaGF0IGluaXRp
YWwgcHJlZmV0Y2ggb2YgdGhpcyByZXNvdXJjZSBzZXRzIGEgY29va2llLiBMYXRlciwgdGhlIHJv
b3QgcGFnZSBzZXRzIHdpbmRvdy5sb2NhdGlvbiB0byB0YXJnZXQgdGhpcyBzY3JpcHQsIHdoaWNo
IHZlcmlmaWVzIHRoZSBwcmVzZW5jZSBvZiB0aGUgY29va2llLCBhbmQgZ2VuZXJhdGVzIHRoZSBo
YXBweSB0ZXN0IG91dHB1dCB0aGF0IHlvdSBob3BlZnVsbHkgc2VlIHJpZ2h0IG5vdy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5odG1sCmluZGV4
IDEyZjE3ZTFiMGNhZGU5ZWI4ZTQyY2Q5YjkxYjc4NjFhNTdhMThjYWQuLjJmOWE1ODJmODM3YWJh
MzNmMTc4MDAzZGNmMzQ5MDMwNmM2ZWJmYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbApAQCAtMTIsOSArMTIsOSBAQCBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKTsKIH0KIDwvc2NyaXB0PgotPGxpbmsgaHJlZj0i
cmVzb3VyY2VzL3ByZWZldGNoLXB1cnBvc2UucGhwIiByZWw9InByZWZldGNoIj4KKzxsaW5rIGhy
ZWY9InJlc291cmNlcy9wcmVmZXRjaC1wdXJwb3NlLnBocCIgcmVsPSJwcmVmZXRjaCIgb25sb2Fk
PSJmaW5pc2hVcCgpIj4KIDwvaGVhZD4KLTxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgnZmluaXNo
VXAoKScsIDUwKTsiPgorPGJvZHk+CiA8cD5Ob3RoaW5nIHRvIHNlZSBoZXJlLCB0aGlzIHBhZ2Ug
c2hvdWxkIHJlcGxhY2UgaXRzZWxmIHdpdGggcmVzb3VyY2VzL3ByZWZldGNoLXB1cnBvc2UucGhw
IGFsbW9zdCBpbnN0YW50bHkuCiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZlOGY5ZjZiNzI3YjU0Y2NmZDNm
NjkyMGUxZThiN2QzYzdjMmY1Y2QuLmE4YWNlOGFjZDJjNTBlNTIzOTExZjRkNDEyZmY5ZmZlNGNi
MzhkOTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMTEtMjkgIEdhdmluIFBldGVycyAgPGdhdmlucEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaW1wbGVtZW50IG9ubG9hZCBldmVudHMgZm9yIGxpbmsgcmVsPXByZWZldGNoCisKKyAg
ICAgICAgaW1wbGVtZW50IG9ubG9hZCBldmVudHMgZm9yIDxsaW5rIHJlbD1wcmVmZXRjaD4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTg3CisKKyAg
ICAgICAgVGVzdDogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1s
CisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVt
ZW50OjpvbmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVu
dDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlOjpkYXRhKToKKwogMjAxMC0xMS0yOSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggOGRkMDU1Yzk3NTYxYTVkMzAxMDg4M2IxZDM4
YWI3ZGJhMDc5YTU2MS4uMDlkMWM3NjU1YTgzZmI1OTY4ODYwNWUzMTVmMzBlNTYxM2Q4ZWRkYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgaW5saW5lIEhUTUxM
aW5rRWxlbWVudDo6SFRNTExpbmtFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KgogICAgICwgbV9kaXNhYmxlZFN0YXRlKFVuc2V0KQogICAgICwgbV9sb2FkaW5n
KGZhbHNlKQogICAgICwgbV9jcmVhdGVkQnlQYXJzZXIoY3JlYXRlZEJ5UGFyc2VyKQorICAgICwg
bV9vbmxvYWRUaW1lcih0aGlzLCAmSFRNTExpbmtFbGVtZW50OjpvbmxvYWRUaW1lckZpcmVkKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGxpbmtUYWcpKTsKIH0KQEAgLTcwLDYgKzcxLDkgQEAg
SFRNTExpbmtFbGVtZW50Ojp+SFRNTExpbmtFbGVtZW50KCkKICAgICAgICAgaWYgKG1fbG9hZGlu
ZyAmJiAhaXNEaXNhYmxlZCgpICYmICFpc0FsdGVybmF0ZSgpKQogICAgICAgICAgICAgZG9jdW1l
bnQoKS0+cmVtb3ZlUGVuZGluZ1NoZWV0KCk7CiAgICAgfQorICAgIAorICAgIGlmIChtX2NhY2hl
ZExpbmtQcmVmZXRjaCkKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPnJlbW92ZUNsaWVu
dCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3RhdGUoYm9v
bCBfZGlzYWJsZWQpCkBAIC0xMzMsNiArMTM3LDggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgc2V0RGlzYWJsZWRT
dGF0ZSghYXR0ci0+aXNOdWxsKCkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJl
Zm9yZWxvYWRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cikpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRyKQorICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgewogICAgICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQogICAgICAgICAgICAg
bV9zaGVldC0+c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7CkBAIC0yMDMsOCArMjA5LDExIEBAIHZv
aWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICB9CiAKICNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVmZXRjaCAmJiBtX3Vy
bC5pc1ZhbGlkKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7CisgICAg
aWYgKG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpICYm
IGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2ggPSBk
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0TGlua1ByZWZldGNoKG1f
dXJsKTsKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQorICAgICAgICAgICAgbV9j
YWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0aGlzKTsKKyAgICB9CiAjZW5kaWYKIAogICAg
IGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQoKS0+cGFnZSgpICYm
IGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNl
dHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7CkBAIC0zNTYsNiAr
MzY1LDE3IEBAIGJvb2wgSFRNTExpbmtFbGVtZW50Ojppc0xvYWRpbmcoKSBjb25zdAogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0ICo+KG1fc2hlZXQuZ2V0KCkpLT5pc0xvYWRp
bmcoKTsKIH0KIAordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om9ubG9hZFRpbWVyRmlyZWQoVGltZXI8
SFRNTExpbmtFbGVtZW50PiopCit7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQorCit2b2lkIEhUTUxMaW5r
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQoreworICAgIG1fbG9hZGlu
ZyA9IGZhbHNlOworICAgIG1fb25sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCiBib29s
IEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAgIGlmICghaXNMb2FkaW5nKCkg
JiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNBbHRlcm5hdGUoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CmluZGV4IDJmYjc1MjU5MzBiYWRkZjYxNTgxNGVmNThkZmM2NWFjYTRjMzVhZTEuLmU3NzY3ZDBj
NjNhMzVmZGQ1YzhhZThkY2JlYmRhYmE5MzY3MzcyMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgK
QEAgLTI3LDEwICsyNywxMiBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5o
IgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2Fj
aGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgS1VSTDsKIAog
Y2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVk
UmVzb3VyY2VDbGllbnQgewpAQCAtNzUsNiArNzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lj
b24oKSBjb25zdCB7IHJldHVybiBtX3JlbEF0dHJpYnV0ZS5tX2lzSWNvbjsgfQogCiBwcml2YXRl
OgorICAgIHZvaWQgb25sb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+Kik7CisK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKICAg
ICB2b2lkIHByb2Nlc3MoKTsKQEAgLTg1LDYgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIGZy
b20gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IEtVUkwmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVldCogc2hlZXQpOworICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwogICAgIHZpcnR1YWwgYm9vbCBz
aGVldExvYWRlZCgpOwogCiAgICAgYm9vbCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3JlbEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlOyB9
CkBAIC0xMTIsNiArMTE3LDkgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZENTU1N0eWxlU2hlZXQ+IG1fY2FjaGVkU2hlZXQ7CiAgICAgUmVmUHRyPENTU1N0eWxl
U2hlZXQ+IG1fc2hlZXQ7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG1fY2FjaGVkTGlua1ByZWZldGNoOworI2VuZGlm
CiAgICAgS1VSTCBtX3VybDsKICAgICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlh
OwpAQCAtMTE5LDYgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgUmVsQXR0cmlidXRlIG1fcmVsQXR0
cmlidXRlOwogICAgIGJvb2wgbV9sb2FkaW5nOwogICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7
CisgICAgVGltZXI8SFRNTExpbmtFbGVtZW50PiBtX29ubG9hZFRpbWVyOwogfTsKIAogfSAvL25h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDg0NDA2
NWRhNzJmM2NhZWVjNWU1ZWMzODc1ZjUxYWRhNzFiYmI5ZDEuLmU5NTJhNTQ1YWM1YTQ2MzFlMmYy
YzNiNDQ5NjE2MGI5NjNlYWY4NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKQEAgLTExNSw2ICsxMTUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAKKyAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CiAgICAgd2hp
bGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCiAgICAgICAgIGMtPm5vdGlm
eUZpbmlzaGVkKHRoaXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75598</attachid>
            <date>2010-12-03 21:35:17 -0800</date>
            <delta_ts>2010-12-04 07:51:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50187-20101204003515.patch</filename>
            <type>text/plain</type>
            <size>16993</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTE2NzQ2NzQxY2M3ZjNiNjJhZmY1ZDJkOWM4ZDUxNjVkNDZlODY5Li44ZTAxNjVk
ODBlN2FkMjFjNjhlODA5Mjc5YjRlZTNmY2I3MWY3MjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMTItMDMgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG9ubG9h
ZCBldmVudHMgZm9yIFdlYktpdAorCisgICAgICAgIGltcGxlbWVudCBvbmxvYWQgZXZlbnRzIGZv
ciA8bGluayByZWw9cHJlZmV0Y2g+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MDE4NworCisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1v
bmxvYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MTGlua0Vs
ZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9w
cmVmZXRjaC1wdXJwb3NlLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKwogMjAxMC0xMi0wMyAgTWFy
dGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIGEgcGxh
dGZvcm0tc3BlY2lmaWMgYmFzZWxpbmUgZm9yIEdUSysgYWZ0ZXIgcjczMTI4LiBUaGlzIHRlc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFu
ZC1zdWJyZXNvdXJjZS10ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hYzFiMTc0ZjExN2Q0ZGFhNTlkYjhmNzU5M2ExMDQ0M2FmZmMwY2NmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5k
LXN1YnJlc291cmNlLXRlc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK25pY2suanBn
IGhhcyBNSU1FIHR5cGUgaW1hZ2UvanBlZworbmljay5qcGcgaGFzIE1JTUUgdHlwZSBpbWFnZS9q
cGVnCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbiBpbWFnZSB3aGljaCBpcyBwcmVmZXRjaGVk
LCBhbmQgd2hpY2ggaXMgYWxzbyBjb250YWluZWQgYXMgYSBzdWJyZXNvdXJjZSBvZiB0aGUgY3Vy
cmVudCBkb2N1bWVudCBjYW4gYmUgbG9hZGVkIGNvcnJlY3RseSBhcyBhIHN1YnJlc291cmNlLiBT
ZWUgYnVnIDQ5MjM2IGluIHdoaWNoIHRoaXMgd2Fzbid0IHdvcmtpbmcuCisKK1doZW4gdGhpcyB0
ZXN0IHN1Y2NlZWRzLCB5b3UnbGwgc2VlIGFuIGltYWdlIG9mIE5pY2sgb24gYSBzYWlsYm9hdCBp
bW1lZGlhdGVseSBiZWxvdyB0aGlzIHRleHQuIFdoZW4gdGhpcyB0ZXN0IGZhaWxzLCB5b3Ugd2ls
bCBzZWUgbm8gaW1hZ2VzIGF0IGFsbC4gIAorCitOSUNLX09OTE9BRCBjYWxsZWQKK05JQ0tfT05M
T0FEIGNhbGxlZAorU1VDQ0VTUy4gVHdvIGxvYWRzLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291
cmNlLXRlc3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjcyMTA0ZTdmNjMyMDQ5YjMzYWNhOWJmMDdhMDk3
OWI4NWRjMWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRtbApAQCAtMCwwICsxLDM5IEBA
Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAg
IHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICBpdGVtLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworfQorCituaWNrX2xv
YWRfY291bnQgPSAwCisKK2Z1bmN0aW9uIG5pY2tfb25sb2FkKCkKK3sKKyAgICBsb2coIk5JQ0tf
T05MT0FEIGNhbGxlZCIpOworICAgICsrbmlja19sb2FkX2NvdW50CisgICAgaWYgKG5pY2tfbG9h
ZF9jb3VudCA9PSAyKSB7CisgICAgICAgIGxvZygiU1VDQ0VTUy4gIFR3byBsb2Fkcy4iKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMo
KTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYW4gaW1hZ2Ugd2hp
Y2ggaXMgcHJlZmV0Y2hlZCwgYW5kIHdoaWNoIGlzIGFsc28gY29udGFpbmVkIGFzIGEKK3N1YnJl
c291cmNlIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNhbiBiZSBsb2FkZWQgY29ycmVjdGx5IGFz
IGEgc3VicmVzb3VyY2UuICBTZWUKK2J1ZyA0OTIzNiBpbiB3aGljaCB0aGlzIHdhc24ndCB3b3Jr
aW5nLgorPHA+V2hlbiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSdsbCBzZWUgYW4gaW1hZ2Ugb2Yg
TmljayBvbiBhIHNhaWxib2F0IGltbWVkaWF0ZWx5IGJlbG93Cit0aGlzIHRleHQuICBXaGVuIHRo
aXMgdGVzdCBmYWlscywgeW91IHdpbGwgc2VlIG5vIGltYWdlcyBhdCBhbGwuCis8bGluayByZWw9
InByZWZldGNoIiBocmVmPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0ibmlja19vbmxvYWQo
KSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0ibmlja19vbmxvYWQo
KSIgLz4KKzxocj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8L2JvZHk+PC9odG1s
PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJl
ZmV0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLWV4cGVjdGVkLnR4dAppbmRleCA3NWQ3N2RmMDkwMzAzNWRiMWY5YzZjMmI3ZjI4
ODkxNmY4ZTljNDNiLi45ZWE2NWRjMzZmNzNiMTk5NTEyMjc4ZjhiMmFjNTk5Mzg5ZmEyNjBiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMiArMSw0IEBACiBwcmVmZXRjaC5saW5rIGhhcyBN
SU1FIHR5cGUgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCiBUaGlzIHRlc3QgcmVxdWlyZXMgRHVt
cFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hhdCByZXNvdXJjZXMgYXJlIGxvYWRlZC4K
KworU1VDQ0VTUyEgcHJlZmV0Y2ggb25sb2FkIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFjNmU5M2ZhNGEyYWQ2ZmIyNzg1MzAzMWEyYjQxZDM4
OTI5NzI0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorVGhp
cyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRvIGxpbmsgZWxlbWVu
dHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFyZSBqdXN0IHRoZXJl
IGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2ZW50IGlzIHRoZWly
IG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtzIHlvdSBzaG91bGQg
c2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC4KKworVEVTVCBQ
QVNTRUQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVu
dC9wcmVmZXRjaC1vbmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxl
bWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjI0N2FhYzRiZjdiMGRiOTRh
MzMyYzEzMTc4YWM2OGFjNWM0MmI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCkBAIC0wLDAgKzEsMzEg
QEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisgICAgICAgICAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7
CisgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShtZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNv
bnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1
bmN0aW9uIGRvbmUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvZygiVEVTVCBQ
QVNTRUQuIik7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB9CisKKwk8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZl
bnRzIGNhbiBiZSBhdHRhY2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXByZWZldGNoLiBT
aW5jZSBwcmVmZXRjaCBsaW5rcyBhcmUganVzdCB0aGVyZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGlt
aXphdGlvbiwgdGhlIG9ubG9hZCBldmVudCBpcyB0aGVpciBvbmx5IHByb2dyYW1hdGljIHNpZGUt
ZWZmZWN0LjwvcD4KKyAgICAgICAgPHA+SWYgaXQgd29ya3MgeW91IHNob3VsZCBzZWUgYSBtZXNz
YWdlIGJlbG93IHNheWluZyB0aGUgdGVzdCBoYXMgcGFzc2VkLjwvcD4KKyAgICAgICAgPGxpbmsg
aHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVmZXRjaCIgb25sb2FkPSJkb25lKCkiID4KKyAg
ICAgICAgPGhyPgorICAgICAgICA8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWwKaW5kZXggM2I1ZGQ5YjhlNWJhZmM3MjNmZDNjMDRlMjE4NmRhNjRl
OGIwYWIxNi4uNWMyMjNmOTdjNzY2OTBlM2Y4Y2M4YzFjMzhhMTIxM2U5NzA4NmUwYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwK
QEAgLTEsMTQgKzEsMjMgQEAKIDxib2R5PgogPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KSB7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgIGl0
ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9Citm
dW5jdGlvbiBwcmVmZXRjaF9vbmxvYWQoKSB7CisgICAgbG9nKCJTVUNDRVNTISAgcHJlZmV0Y2gg
b25sb2FkIGNhbGxlZC4iKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1J
TUVUeXBlcygpOwotICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKSIsNTApOwogfQogPC9zY3JpcHQ+CiA8aHRtbD4KIDxwPlRoaXMgdGVzdCByZXF1aXJlcyBE
dW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJlc291cmNlcyBhcmUgbG9hZGVk
LgotPGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVmZXRjaCI+Cis8bGluayBocmVm
PSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIiBvbmxvYWQ9InByZWZldGNoX29ubG9hZCgp
Ij4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD4KIDwvaHRtbD4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKaW5kZXggMTJmMTdlMWIw
Y2FkZTllYjhlNDJjZDliOTFiNzg2MWE1N2ExOGNhZC4uMmY5YTU4MmY4MzdhYmEzM2YxNzgwMDNk
Y2YzNDkwMzA2YzZlYmZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L3ByZWZldGNoLXB1cnBvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
cHJlZmV0Y2gtcHVycG9zZS5odG1sCkBAIC0xMiw5ICsxMiw5IEBAIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVzb3VyY2VS
ZXNwb25zZU1JTUVUeXBlcygpOwogfQogPC9zY3JpcHQ+Ci08bGluayBocmVmPSJyZXNvdXJjZXMv
cHJlZmV0Y2gtcHVycG9zZS5waHAiIHJlbD0icHJlZmV0Y2giPgorPGxpbmsgaHJlZj0icmVzb3Vy
Y2VzL3ByZWZldGNoLXB1cnBvc2UucGhwIiByZWw9InByZWZldGNoIiBvbmxvYWQ9ImZpbmlzaFVw
KCkiPgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdmaW5pc2hVcCgpJywgNTAp
OyI+Cis8Ym9keT4KIDxwPk5vdGhpbmcgdG8gc2VlIGhlcmUsIHRoaXMgcGFnZSBzaG91bGQgcmVw
bGFjZSBpdHNlbGYgd2l0aCByZXNvdXJjZXMvcHJlZmV0Y2gtcHVycG9zZS5waHAgYWxtb3N0IGlu
c3RhbnRseS4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXgg
YWEzMzBiNTk1YTM0NDQxNjg3ZGFmMjhmZTVkNzk4NzFhM2VlMDhkOC4uNTNmYjU0Y2ZiNjdkMTlk
NzA3YjJhMGRhZTJlMTUzMDQ1Zjc2ZjljMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAg
LTUxMTgsNyArNTExOCw5IEBAIGZhc3QvZm9ybXMvc2xpZGVyLW1vdXNlLWV2ZW50cy5odG1sCiBm
YXN0L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291
cmNlLXRlc3QuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKK2Zh
c3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAogCiAjIExheW91dFRl
c3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxlbWVudGVkIGZvciBHVEsgeWV0
LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCmluZGV4IDNmZTU3NzAzNDdmNjhmZGMwNzIyZTdmNTBmNjVmMjdjNWFmNjQwNDIuLjJmODg5
OWM0NjhlN2QzMTQzZjdiYWVhY2U3OTQ0ZTA5OGY1Y2I4NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCkBAIC0xODQsNyArMTg0LDkgQEAgZmFzdC9kb20vRGV2aWNlT3JpZW50YXRpb24KIGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24uaHRtbAog
CiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRtbAogZmFzdC9kb20vSFRNTExp
bmtFbGVtZW50L3ByZWZldGNoLmh0bWwKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRj
aC1vbmxvYWQuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAogCiAj
IEZpbGVuYW1lcyBhcmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRpdCBkcmFncyB5ZXQsIHNlZSBo
dHRwczovL2J1Z3Mud2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODgyNgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKaW5kZXggMzRmNDlhMjc4M2E2MzUxM2UxMmQ0YTc0ZmQ1MTlkNTU3NTMxZGMzYy4u
YzYyN2QyNTAzYWUxZDU2ZDIxMzg4MGZlYzBkMzI3YWU0ZmY1Nzk0NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCkBAIC01MTQ5LDcgKzUxNDksOSBAQCBtZWRpYS92aWRlby1kZWxheS1sb2FkLWV2
ZW50Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLXJlbW90ZS1jb250ZXh0
Mi5odG1sCiAKICMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0CitmYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCiBmYXN0L2Rv
bS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLW9ubG9hZC5odG1sCiBodHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5o
dG1sCiAKICMgW1F0XSBSZWdyZXNzaW9uKHI2MTc0OSk6IGluc3BlY3Rvci9kZWJ1Z2dlci1wYXVz
ZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAppbmRleCBjYmRjNDZhZTRjMWQ3MTNkM2Y5MmZlZDBiMWI4YTEyODVhZDQzMjE0Li4zMTE2ZmEz
MGUxNDQwZWY5ZDY5YjlhZjllYzg4OGYzNDI2ZGI1MjM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZApAQCAtOTQ2LDcgKzk0Niw5IEBAIGZhc3QvZG9tL0RldmljZU9yaWVudGF0aW9uCiBmYXN0
L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLmh0bWwKIAog
IyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKK2Zhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0Lmh0bWwKIGZhc3QvZG9tL0hUTUxMaW5r
RWxlbWVudC9wcmVmZXRjaC5odG1sCitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2gt
b25sb2FkLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0bWwKIAogIyBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5vdCBpbXBsZW1lbnRlZCBmb3Ig
V0lOIHlldC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMDA5MjNhNTNiZGU0N2YzZWFhN2I1NmI4MTA2MGM4MWY2MjljMzYyZC4uZjcxOGE4
NDM1YjFjYmJmOTI0NjQyYjRhNGYxNWI0M2M1OTE3MGZjMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0x
Mi0wMyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgb25sb2FkIGV2ZW50
cyBmb3IgV2ViS2l0CisKKyAgICAgICAgaW1wbGVtZW50IG9ubG9hZCBldmVudHMgZm9yIDxsaW5r
IHJlbD1wcmVmZXRjaD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwMTg3CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9s
aW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojp+SFRN
TExpbmtFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9j
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6bm90aWZ5RmluaXNoZWQp
OgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50Lmg6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
OjpkYXRhKToKKwogMjAxMC0xMi0wMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcAppbmRleCA4ZGQwNTVjOTc1NjFhNWQzMDEwODgzYjFkMzhhYjdkYmEwNzlhNTYx
Li44NjM0NGViMGJhZjY2ZmRkNGMyZjA4ZDNlNGY0MGQ5Nzg3NjEyOGQ4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTExp
bmtFbGVtZW50LmNwcApAQCAtNDgsNiArNDgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorI2lmIEVOQUJMRShMSU5L
X1BSRUZFVENIKQorICAgICwgbV9vbmxvYWRUaW1lcih0aGlzLCAmSFRNTExpbmtFbGVtZW50Ojpv
bmxvYWRUaW1lckZpcmVkKQorI2VuZGlmCiAgICAgLCBtX2Rpc2FibGVkU3RhdGUoVW5zZXQpCiAg
ICAgLCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2NyZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQ
YXJzZXIpCkBAIC03MCw2ICs3MywxMSBAQCBIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1l
bnQoKQogICAgICAgICBpZiAobV9sb2FkaW5nICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzQWx0ZXJu
YXRlKCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5yZW1vdmVQZW5kaW5nU2hlZXQoKTsKICAg
ICB9CisgICAgCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgaWYgKG1fY2FjaGVkTGlu
a1ByZWZldGNoKQorICAgICAgICBtX2NhY2hlZExpbmtQcmVmZXRjaC0+cmVtb3ZlQ2xpZW50KHRo
aXMpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXREaXNhYmxlZFN0YXRl
KGJvb2wgX2Rpc2FibGVkKQpAQCAtMTMzLDYgKzE0MSwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICBzZXREaXNh
YmxlZFN0YXRlKCFhdHRyLT5pc051bGwoKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CisjZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGF0dHItPm5hbWUo
KSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxl
KGF0dHItPnZhbHVlKCkpOwpAQCAtMjAzLDggKzIxNSwxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVu
dDo6cHJvY2VzcygpCiAgICAgfQogCiAjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCi0gICAgaWYg
KG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwuaXNWYWxpZCgpICYmIGRv
Y3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPnJlcXVlc3RMaW5rUHJlZmV0Y2gobV91cmwpOworICAgIGlmIChtX3JlbEF0dHJpYnV0
ZS5tX2lzTGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFsaWQoKSAmJiBkb2N1bWVudCgpLT5mcmFt
ZSgpKSB7CisgICAgICAgIG1fY2FjaGVkTGlua1ByZWZldGNoID0gZG9jdW1lbnQoKS0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaChtX3VybCk7CisgICAgICAgIGlm
IChtX2NhY2hlZExpbmtQcmVmZXRjaCkKKyAgICAgICAgICAgIG1fY2FjaGVkTGlua1ByZWZldGNo
LT5hZGRDbGllbnQodGhpcyk7CisgICAgfQogI2VuZGlmCiAKICAgICBib29sIGFjY2VwdElmVHlw
ZUNvbnRhaW5zVGV4dENTUyA9IGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdl
KCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT50cmVhdHNB
bnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpOwpAQCAtMzU2LDYgKzM3MSwxOSBAQCBib29sIEhU
TUxMaW5rRWxlbWVudDo6aXNMb2FkaW5nKCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q1NTU3R5bGVTaGVldCAqPihtX3NoZWV0LmdldCgpKS0+aXNMb2FkaW5nKCk7CiB9CiAKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKK3ZvaWQgSFRNTExpbmtFbGVtZW50OjpvbmxvYWRUaW1lckZp
cmVkKFRpbWVyPEhUTUxMaW5rRWxlbWVudD4qKQoreworICAgIG1fbG9hZGluZyA9IGZhbHNlOwor
ICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKikKK3sKKyAgICBtX29ubG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKyNlbmRpZgorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hlZXRMb2FkZWQoKQogewogICAg
IGlmICghaXNMb2FkaW5nKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNBbHRlcm5hdGUoKSkgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDJmYjc1MjU5MzBiYWRkZjYxNTgxNGVmNThkZmM2NWFj
YTRjMzVhZTEuLmYzNTliOGFlZWRlNmMwYTk2NDE5YTFlOTdjYjlmYTNhNzkxYzc0MDQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmgKQEAgLTI3LDEwICsyNywxMiBAQAogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2NsYXNzIENhY2hlZFJlc291cmNl
OwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExpbmtFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAtNzcsNiArNzksOSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgIHZvaWQgb25sb2FkVGlt
ZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+Kik7CisjZW5kaWYKICAgICB2b2lkIHByb2Nl
c3MoKTsKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ2FsbGJhY2soTm9kZSopOwogCkBAIC04NSw2
ICs5MCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25z
dCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0
eWxlU2hlZXQqIHNoZWV0KTsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKKyNlbmRpZgogICAgIHZpcnR1
YWwgYm9vbCBzaGVldExvYWRlZCgpOwogCiAgICAgYm9vbCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3JlbEF0dHJpYnV0ZS5tX2lzQWx0
ZXJuYXRlOyB9CkBAIC0xMTIsNiArMTIwLDEwIEBAIHByaXZhdGU6CiAKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hlZFNoZWV0OwogICAgIFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OworI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBtX2NhY2hlZExpbmtQcmVmZXRj
aDsKKyAgICBUaW1lcjxIVE1MTGlua0VsZW1lbnQ+IG1fb25sb2FkVGltZXI7CisjZW5kaWYKICAg
ICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbWVkaWE7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggODQ0MDY1ZGE3MmYzY2Fl
ZWM1ZTVlYzM4NzVmNTFhZGE3MWJiYjlkMS4uZTk1MmE1NDVhYzVhNDYzMWUyZjJjM2I0NDk2MTYw
Yjk2M2VhZjg2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAt
MTE1LDYgKzExNSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBpZiAoIWFsbERhdGFSZWNlaXZl
ZCkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIHNldExvYWRpbmcoZmFsc2UpOwogICAgIENh
Y2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQo
dGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75610</attachid>
            <date>2010-12-04 07:51:25 -0800</date>
            <delta_ts>2010-12-04 09:09:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50187-20101204105123.patch</filename>
            <type>text/plain</type>
            <size>16783</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTE2NzQ2NzQxY2M3ZjNiNjJhZmY1ZDJkOWM4ZDUxNjVkNDZlODY5Li4zYjc1Nzgw
YWQ5ZDU4NDk0NzEzNTJmODc2MDkzMzFhYmU1ODdlZTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMDMgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG9ubG9h
ZCBldmVudHMgZm9yIDxsaW5rIHJlbD1wcmVmZXRjaD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTg3CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJj
ZS10ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEw
LTEyLTAzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBZGQgYSBwbGF0Zm9ybS1zcGVjaWZpYyBiYXNlbGluZSBmb3IgR1RLKyBhZnRlciByNzMxMjgu
IFRoaXMgdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjMWIxNzRmMTE3ZDRkYWE1OWRiOGY3NTkzYTEwNDQzYWZmYzBj
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorbmljay5qcGcgaGFzIE1JTUUgdHlwZSBpbWFnZS9qcGVnCituaWNrLmpwZyBoYXMgTUlNRSB0
eXBlIGltYWdlL2pwZWcKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIGltYWdlIHdoaWNoIGlz
IHByZWZldGNoZWQsIGFuZCB3aGljaCBpcyBhbHNvIGNvbnRhaW5lZCBhcyBhIHN1YnJlc291cmNl
IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNhbiBiZSBsb2FkZWQgY29ycmVjdGx5IGFzIGEgc3Vi
cmVzb3VyY2UuIFNlZSBidWcgNDkyMzYgaW4gd2hpY2ggdGhpcyB3YXNuJ3Qgd29ya2luZy4KKwor
V2hlbiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSdsbCBzZWUgYW4gaW1hZ2Ugb2YgTmljayBvbiBh
IHNhaWxib2F0IGltbWVkaWF0ZWx5IGJlbG93IHRoaXMgdGV4dC4gV2hlbiB0aGlzIHRlc3QgZmFp
bHMsIHlvdSB3aWxsIHNlZSBubyBpbWFnZXMgYXQgYWxsLiAgCisKK05JQ0tfT05MT0FEIGNhbGxl
ZAorTklDS19PTkxPQUQgY2FsbGVkCitTVUNDRVNTLiBUd28gbG9hZHMuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJj
ZS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1h
bmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NGVhZmRkMWI5OTMxNDczZmU2
NWJmNTU0NzMzYzk2MWU0MjRiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAg
IGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9
CisKK25pY2tfbG9hZF9jb3VudCA9IDAKKworZnVuY3Rpb24gbmlja19vbmxvYWQoKQoreworICAg
IGxvZygiTklDS19PTkxPQUQgY2FsbGVkIik7CisgICAgKytuaWNrX2xvYWRfY291bnQ7CisgICAg
aWYgKG5pY2tfbG9hZF9jb3VudCA9PSAyKSB7CisgICAgICAgIGxvZygiU1VDQ0VTUy4gIFR3byBs
b2Fkcy4iKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0KK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9u
c2VNSU1FVHlwZXMoKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
YW4gaW1hZ2Ugd2hpY2ggaXMgcHJlZmV0Y2hlZCwgYW5kIHdoaWNoIGlzIGFsc28gY29udGFpbmVk
IGFzIGEKK3N1YnJlc291cmNlIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNhbiBiZSBsb2FkZWQg
Y29ycmVjdGx5IGFzIGEgc3VicmVzb3VyY2UuICBTZWUKK2J1ZyA0OTIzNiBpbiB3aGljaCB0aGlz
IHdhc24ndCB3b3JraW5nLgorPHA+V2hlbiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSdsbCBzZWUg
YW4gaW1hZ2Ugb2YgTmljayBvbiBhIHNhaWxib2F0IGltbWVkaWF0ZWx5IGJlbG93Cit0aGlzIHRl
eHQuICBXaGVuIHRoaXMgdGVzdCBmYWlscywgeW91IHdpbGwgc2VlIG5vIGltYWdlcyBhdCBhbGwu
Cis8bGluayByZWw9InByZWZldGNoIiBocmVmPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0i
bmlja19vbmxvYWQoKSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0i
bmlja19vbmxvYWQoKSIgLz4KKzxocj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8
L2JvZHk+PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAppbmRleCA3NWQ3N2RmMDkwMzAzNWRi
MWY5YzZjMmI3ZjI4ODkxNmY4ZTljNDNiLi45ZWE2NWRjMzZmNzNiMTk5NTEyMjc4ZjhiMmFjNTk5
Mzg5ZmEyNjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMiArMSw0IEBACiBwcmVmZXRj
aC5saW5rIGhhcyBNSU1FIHR5cGUgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCiBUaGlzIHRlc3Qg
cmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hhdCByZXNvdXJjZXMg
YXJlIGxvYWRlZC4KKworU1VDQ0VTUyEgcHJlZmV0Y2ggb25sb2FkIGNhbGxlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLW9ubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFjNmU5M2ZhNGEyYWQ2ZmIyNzg1
MzAzMWEyYjQxZDM4OTI5NzI0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRv
IGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFy
ZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2
ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtz
IHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3Nl
ZC4KKworVEVTVCBQQVNTRUQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2NmZGJm
YjUyZDkxZmU2YTAwZTEzMzIxNzExNGU4YWEwYTJmYWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCkBA
IC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30KK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGxvZygi
VEVTVCBQQVNTRUQuIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworIH0KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRz
IGNhbiBiZSBhdHRhY2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXByZWZldGNoLiBTaW5j
ZSBwcmVmZXRjaCBsaW5rcyBhcmUganVzdCB0aGVyZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbiwgdGhlIG9ubG9hZCBldmVudCBpcyB0aGVpciBvbmx5IHByb2dyYW1hdGljIHNpZGUtZWZm
ZWN0LjwvcD4KKzxwPklmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBz
YXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC48L3A+Cis8bGluayBocmVmPSJwcmVmZXRjaC5saW5r
IiByZWw9InByZWZldGNoIiBvbmxvYWQ9ImRvbmUoKSIgPgorPGhyPgorPHA+PG9sIGlkPSJjb25z
b2xlIj48L29sPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKaW5kZXggM2I1ZGQ5YjhlNWJhZmM3
MjNmZDNjMDRlMjE4NmRhNjRlOGIwYWIxNi4uNWMyMjNmOTdjNzY2OTBlM2Y4Y2M4YzFjMzhhMTIx
M2U5NzA4NmUwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWwKQEAgLTEsMTQgKzEsMjMgQEAKIDxib2R5PgogPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVmZXRjaF9vbmxvYWQoKSB7CisgICAgbG9nKCJT
VUNDRVNTISAgcHJlZmV0Y2ggb25sb2FkIGNhbGxlZC4iKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwotICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKSIsNTApOwogfQogPC9zY3JpcHQ+CiA8aHRtbD4KIDxwPlRo
aXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJl
c291cmNlcyBhcmUgbG9hZGVkLgotPGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVm
ZXRjaCI+Cis8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIiBvbmxvYWQ9
InByZWZldGNoX29ubG9hZCgpIj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD4KIDwvaHRtbD4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0
bWwKaW5kZXggMTJmMTdlMWIwY2FkZTllYjhlNDJjZDliOTFiNzg2MWE1N2ExOGNhZC4uMmY5YTU4
MmY4MzdhYmEzM2YxNzgwMDNkY2YzNDkwMzA2YzZlYmZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5odG1sCkBAIC0xMiw5ICsxMiw5IEBA
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwogfQogPC9zY3JpcHQ+Ci08bGlu
ayBocmVmPSJyZXNvdXJjZXMvcHJlZmV0Y2gtcHVycG9zZS5waHAiIHJlbD0icHJlZmV0Y2giPgor
PGxpbmsgaHJlZj0icmVzb3VyY2VzL3ByZWZldGNoLXB1cnBvc2UucGhwIiByZWw9InByZWZldGNo
IiBvbmxvYWQ9ImZpbmlzaFVwKCkiPgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0
KCdmaW5pc2hVcCgpJywgNTApOyI+Cis8Ym9keT4KIDxwPk5vdGhpbmcgdG8gc2VlIGhlcmUsIHRo
aXMgcGFnZSBzaG91bGQgcmVwbGFjZSBpdHNlbGYgd2l0aCByZXNvdXJjZXMvcHJlZmV0Y2gtcHVy
cG9zZS5waHAgYWxtb3N0IGluc3RhbnRseS4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKaW5kZXggYWEzMzBiNTk1YTM0NDQxNjg3ZGFmMjhmZTVkNzk4NzFhM2VlMDhk
OC4uNTNmYjU0Y2ZiNjdkMTlkNzA3YjJhMGRhZTJlMTUzMDQ1Zjc2ZjljMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKQEAgLTUxMTgsNyArNTExOCw5IEBAIGZhc3QvZm9ybXMvc2xpZGVyLW1v
dXNlLWV2ZW50cy5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCiAjIExpbmsg
cHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLmh0bWwKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQu
aHRtbAogCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxl
bWVudGVkIGZvciBHVEsgeWV0LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDNmZTU3NzAzNDdmNjhmZGMwNzIyZTdmNTBmNjVm
MjdjNWFmNjQwNDIuLjJmODg5OWM0NjhlN2QzMTQzZjdiYWVhY2U3OTQ0ZTA5OGY1Y2I4NTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xODQsNyArMTg0LDkgQEAgZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Ut
b3JpZW50YXRpb24uaHRtbAogCiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVs
dAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRt
bAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKK2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNo
LXB1cnBvc2UuaHRtbAogCiAjIEZpbGVuYW1lcyBhcmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRp
dCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mud2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODgyNgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMzRmNDlhMjc4M2E2MzUxM2UxMmQ0YTc0
ZmQ1MTlkNTU3NTMxZGMzYy4uYzYyN2QyNTAzYWUxZDU2ZDIxMzg4MGZlYzBkMzI3YWU0ZmY1Nzk0
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MTQ5LDcgKzUxNDksOSBAQCBtZWRpYS92
aWRlby1kZWxheS1sb2FkLWV2ZW50Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNr
LXRvLXJlbW90ZS1jb250ZXh0Mi5odG1sCiAKICMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2Ut
dGVzdC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCiBodHRwL3Rlc3RzL21pc2Mv
cHJlZmV0Y2gtcHVycG9zZS5odG1sCiAKICMgW1F0XSBSZWdyZXNzaW9uKHI2MTc0OSk6IGluc3Bl
Y3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBmYWlscwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBjYmRjNDZhZTRjMWQ3MTNkM2Y5MmZlZDBiMWI4YTEy
ODVhZDQzMjE0Li4zMTE2ZmEzMGUxNDQwZWY5ZDY5YjlhZjllYzg4OGYzNDI2ZGI1MjM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTQ2LDcgKzk0Niw5IEBAIGZhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9y
aWVudGF0aW9uLmh0bWwKIAogIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
K2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0Lmh0bWwK
IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCitmYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1w
dXJwb3NlLmh0bWwKIAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5v
dCBpbXBsZW1lbnRlZCBmb3IgV0lOIHlldC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5MjNhNTNiZGU0N2YzZWFhN2I1NmI4MTA2MGM4
MWY2MjljMzYyZC4uMjFjZjM2NGFmY2VjODVhZjA5ZjJkZDA2Nzk4YjI1YjE1MmNlOGNjZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxMC0xMi0wMyAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgb25sb2FkIGV2ZW50cyBmb3IgPGxpbmsgcmVsPXByZWZldGNoPgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxODcKKworICAgICAgICBUZXN0
czogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRhdGEpOgorCiAyMDEwLTEyLTAzICBEaW1p
dHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmluZGV4IDhkZDA1NWM5NzU2
MWE1ZDMwMTA4ODNiMWQzOGFiN2RiYTA3OWE1NjEuLmU5YzI0MDY4NTQ3ZmI1YjA4NWI0YzgzYjc1
YzM1NjVkNzExZWFkZDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC00OCw2ICs0OCw5
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MTGlua0VsZW1lbnQ6
OkhUTUxMaW5rRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgLCBtX29ubG9hZFRp
bWVyKHRoaXMsICZIVE1MTGlua0VsZW1lbnQ6Om9ubG9hZFRpbWVyRmlyZWQpCisjZW5kaWYKICAg
ICAsIG1fZGlzYWJsZWRTdGF0ZShVbnNldCkKICAgICAsIG1fbG9hZGluZyhmYWxzZSkKICAgICAs
IG1fY3JlYXRlZEJ5UGFyc2VyKGNyZWF0ZWRCeVBhcnNlcikKQEAgLTcwLDYgKzczLDExIEBAIEhU
TUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAgICAgICAgIGlmIChtX2xvYWRpbmcg
JiYgIWlzRGlzYWJsZWQoKSAmJiAhaXNBbHRlcm5hdGUoKSkKICAgICAgICAgICAgIGRvY3VtZW50
KCktPnJlbW92ZVBlbmRpbmdTaGVldCgpOwogICAgIH0KKyAgICAKKyNpZiBFTkFCTEUoTElOS19Q
UkVGRVRDSCkKKyAgICBpZiAobV9jYWNoZWRMaW5rUHJlZmV0Y2gpCisgICAgICAgIG1fY2FjaGVk
TGlua1ByZWZldGNoLT5yZW1vdmVDbGllbnQodGhpcyk7CisjZW5kaWYKIH0KIAogdm9pZCBIVE1M
TGlua0VsZW1lbnQ6OnNldERpc2FibGVkU3RhdGUoYm9vbCBfZGlzYWJsZWQpCkBAIC0xMzMsNiAr
MTQxLDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCiAgICAgICAgIHNldERpc2FibGVkU3RhdGUoIWF0dHItPmlzTnVsbCgpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNpZiBFTkFCTEUoTElO
S19QUkVGRVRDSCkKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKKyAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNlbmRpZgogICAgIGVs
c2UgewogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQog
ICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0ci0+dmFsdWUoKSk7CkBAIC0yMDMsOCAr
MjE1LDExIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9jZXNzKCkKICAgICB9CiAKICNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKLSAgICBpZiAobV9yZWxBdHRyaWJ1dGUubV9pc0xpbmtQcmVm
ZXRjaCAmJiBtX3VybC5pc1ZhbGlkKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVmZXRjaCht
X3VybCk7CisgICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2ggJiYgbV91cmwu
aXNWYWxpZCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpIHsKKyAgICAgICAgbV9jYWNoZWRMaW5r
UHJlZmV0Y2ggPSBkb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0TGlu
a1ByZWZldGNoKG1fdXJsKTsKKyAgICAgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQorICAg
ICAgICAgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPmFkZENsaWVudCh0aGlzKTsKKyAgICB9CiAj
ZW5kaWYKIAogICAgIGJvb2wgYWNjZXB0SWZUeXBlQ29udGFpbnNUZXh0Q1NTID0gZG9jdW1lbnQo
KS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+c2V0dGluZ3MoKSAmJiBkb2N1bWVudCgp
LT5wYWdlKCktPnNldHRpbmdzKCktPnRyZWF0c0FueVRleHRDU1NMaW5rQXNTdHlsZXNoZWV0KCk7
CkBAIC0zNTYsNiArMzcxLDIxIEBAIGJvb2wgSFRNTExpbmtFbGVtZW50Ojppc0xvYWRpbmcoKSBj
b25zdAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0ICo+KG1fc2hlZXQuZ2V0
KCkpLT5pc0xvYWRpbmcoKTsKIH0KIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQordm9pZCBI
VE1MTGlua0VsZW1lbnQ6Om9ubG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTExpbmtFbGVtZW50Piog
dGltZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fb25sb2FkVGlt
ZXIpOworICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2
ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKwordm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCByZXNvdXJjZSA9PSBtX2NhY2hlZExpbmtQcmVmZXRjaC5nZXQoKSk7CisgICAgbV9v
bmxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9jYWNoZWRMaW5rUHJlZmV0Y2gtPnJl
bW92ZUNsaWVudCh0aGlzKTsKK30KKyNlbmRpZgorCiBib29sIEhUTUxMaW5rRWxlbWVudDo6c2hl
ZXRMb2FkZWQoKQogewogICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIWlzRGlzYWJsZWQoKSAmJiAh
aXNBbHRlcm5hdGUoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDJmYjc1MjU5MzBiYWRk
ZjYxNTgxNGVmNThkZmM2NWFjYTRjMzVhZTEuLmYzNTliOGFlZWRlNmMwYTk2NDE5YTFlOTdjYjlm
YTNhNzkxYzc0MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKQEAgLTI3LDEwICsyNywxMiBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkQ1NTU3R5bGVTaGVldDsKK2Ns
YXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgS1VSTDsKIAogY2xhc3MgSFRNTExpbmtFbGVtZW50
IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewpAQCAt
NzcsNiArNzksOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQor
ICAgIHZvaWQgb25sb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTGlua0VsZW1lbnQ+Kik7CisjZW5k
aWYKICAgICB2b2lkIHByb2Nlc3MoKTsKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ2FsbGJhY2so
Tm9kZSopOwogCkBAIC04NSw2ICs5MCw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBmcm9tIENhY2hl
ZFJlc291cmNlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3Qg
U3RyaW5nJiBocmVmLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQs
IGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqIHNoZWV0KTsKKyNpZiBFTkFCTEUoTElOS19QUkVG
RVRDSCkKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsK
KyNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpOwogCiAgICAgYm9vbCBpc0Fs
dGVybmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAmJiBtX3Jl
bEF0dHJpYnV0ZS5tX2lzQWx0ZXJuYXRlOyB9CkBAIC0xMTIsNiArMTIwLDEwIEBAIHByaXZhdGU6
CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiBtX2NhY2hl
ZFNoZWV0OwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX3NoZWV0OworI2lmIEVOQUJMRShM
SU5LX1BSRUZFVENIKQorICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBt
X2NhY2hlZExpbmtQcmVmZXRjaDsKKyAgICBUaW1lcjxIVE1MTGlua0VsZW1lbnQ+IG1fb25sb2Fk
VGltZXI7CisjZW5kaWYKICAgICBLVVJMIG1fdXJsOwogICAgIFN0cmluZyBtX3R5cGU7CiAgICAg
U3RyaW5nIG1fbWVkaWE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5k
ZXggODQ0MDY1ZGE3MmYzY2FlZWM1ZTVlYzM4NzVmNTFhZGE3MWJiYjlkMS4uZTk1MmE1NDVhYzVh
NDYzMWUyZjJjM2I0NDk2MTYwYjk2M2VhZjg2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcApAQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRh
dGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBp
ZiAoIWFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIHNldExvYWRp
bmcoZmFsc2UpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyIHcobV9jbGllbnRzKTsK
ICAgICB3aGlsZSAoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKICAgICAgICAg
Yy0+bm90aWZ5RmluaXNoZWQodGhpcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75611</attachid>
            <date>2010-12-04 09:09:55 -0800</date>
            <delta_ts>2010-12-04 12:40:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50187-20101204120953.patch</filename>
            <type>text/plain</type>
            <size>16919</size>
            <attacher name="Gavin Peters">gavinp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YTE2NzQ2NzQxY2M3ZjNiNjJhZmY1ZDJkOWM4ZDUxNjVkNDZlODY5Li4zNmRlY2Q2
ZDNmMDVlYmM0M2NjZjlmZmY2MGNmOGQ4YjAzZWNmMTQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTAtMTItMDQgIEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IG9ubG9h
ZCBldmVudHMgZm9yIDxsaW5rIHJlbD1wcmVmZXRjaD4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTg3CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
TGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJj
ZS10ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9w
cmVmZXRjaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLW9ubG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDEw
LTEyLTAzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBBZGQgYSBwbGF0Zm9ybS1zcGVjaWZpYyBiYXNlbGluZSBmb3IgR1RLKyBhZnRlciByNzMxMjgu
IFRoaXMgdGVzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFjMWIxNzRmMTE3ZDRkYWE1OWRiOGY3NTkzYTEwNDQzYWZmYzBj
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorbmljay5qcGcgaGFzIE1JTUUgdHlwZSBpbWFnZS9qcGVnCituaWNrLmpwZyBoYXMgTUlNRSB0
eXBlIGltYWdlL2pwZWcKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIGltYWdlIHdoaWNoIGlz
IHByZWZldGNoZWQsIGFuZCB3aGljaCBpcyBhbHNvIGNvbnRhaW5lZCBhcyBhIHN1YnJlc291cmNl
IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNhbiBiZSBsb2FkZWQgY29ycmVjdGx5IGFzIGEgc3Vi
cmVzb3VyY2UuIFNlZSBidWcgNDkyMzYgaW4gd2hpY2ggdGhpcyB3YXNuJ3Qgd29ya2luZy4KKwor
V2hlbiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSdsbCBzZWUgYW4gaW1hZ2Ugb2YgTmljayBvbiBh
IHNhaWxib2F0IGltbWVkaWF0ZWx5IGJlbG93IHRoaXMgdGV4dC4gV2hlbiB0aGlzIHRlc3QgZmFp
bHMsIHlvdSB3aWxsIHNlZSBubyBpbWFnZXMgYXQgYWxsLiAgCisKK05JQ0tfT05MT0FEIGNhbGxl
ZAorTklDS19PTkxPQUQgY2FsbGVkCitTVUNDRVNTLiBUd28gbG9hZHMuCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJj
ZS10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1h
bmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NGVhZmRkMWI5OTMxNDczZmU2
NWJmNTU0NzMzYzk2MWU0MjRiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2UtdGVzdC5odG1sCkBAIC0w
LDAgKzEsMzkgQEAKKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCit7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAg
IGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7Cit9
CisKK25pY2tfbG9hZF9jb3VudCA9IDAKKworZnVuY3Rpb24gbmlja19vbmxvYWQoKQoreworICAg
IGxvZygiTklDS19PTkxPQUQgY2FsbGVkIik7CisgICAgKytuaWNrX2xvYWRfY291bnQ7CisgICAg
aWYgKG5pY2tfbG9hZF9jb3VudCA9PSAyKSB7CisgICAgICAgIGxvZygiU1VDQ0VTUy4gIFR3byBs
b2Fkcy4iKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0KK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlUmVzcG9u
c2VNSU1FVHlwZXMoKTsKK30KKzwvc2NyaXB0PgorPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
YW4gaW1hZ2Ugd2hpY2ggaXMgcHJlZmV0Y2hlZCwgYW5kIHdoaWNoIGlzIGFsc28gY29udGFpbmVk
IGFzIGEKK3N1YnJlc291cmNlIG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IGNhbiBiZSBsb2FkZWQg
Y29ycmVjdGx5IGFzIGEgc3VicmVzb3VyY2UuICBTZWUKK2J1ZyA0OTIzNiBpbiB3aGljaCB0aGlz
IHdhc24ndCB3b3JraW5nLgorPHA+V2hlbiB0aGlzIHRlc3Qgc3VjY2VlZHMsIHlvdSdsbCBzZWUg
YW4gaW1hZ2Ugb2YgTmljayBvbiBhIHNhaWxib2F0IGltbWVkaWF0ZWx5IGJlbG93Cit0aGlzIHRl
eHQuICBXaGVuIHRoaXMgdGVzdCBmYWlscywgeW91IHdpbGwgc2VlIG5vIGltYWdlcyBhdCBhbGwu
Cis8bGluayByZWw9InByZWZldGNoIiBocmVmPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0i
bmlja19vbmxvYWQoKSIgLz4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvbmljay5qcGciIG9ubG9hZD0i
bmlja19vbmxvYWQoKSIgLz4KKzxocj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8
L2JvZHk+PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TExpbmtFbGVtZW50L3ByZWZldGNoLWV4cGVjdGVkLnR4dAppbmRleCA3NWQ3N2RmMDkwMzAzNWRi
MWY5YzZjMmI3ZjI4ODkxNmY4ZTljNDNiLi45ZWE2NWRjMzZmNzNiMTk5NTEyMjc4ZjhiMmFjNTk5
Mzg5ZmEyNjBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MTGlua0VsZW1l
bnQvcHJlZmV0Y2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1leHBlY3RlZC50eHQKQEAgLTEsMiArMSw0IEBACiBwcmVmZXRj
aC5saW5rIGhhcyBNSU1FIHR5cGUgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCiBUaGlzIHRlc3Qg
cmVxdWlyZXMgRHVtcFJlbmRlclRyZWUgdG8gc2VlIHRoZSBsb2cgb2Ygd2hhdCByZXNvdXJjZXMg
YXJlIGxvYWRlZC4KKworU1VDQ0VTUyEgcHJlZmV0Y2ggb25sb2FkIGNhbGxlZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZl
dGNoLW9ubG9hZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFjNmU5M2ZhNGEyYWQ2ZmIyNzg1
MzAzMWEyYjQxZDM4OTI5NzI0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNiBAQAorVGhpcyB0ZXN0cyB0aGF0IG9ubG9hZCBldmVudHMgY2FuIGJlIGF0dGFjaGVkIHRv
IGxpbmsgZWxlbWVudHMgd2l0aCByZWw9cHJlZmV0Y2guIFNpbmNlIHByZWZldGNoIGxpbmtzIGFy
ZSBqdXN0IHRoZXJlIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCB0aGUgb25sb2FkIGV2
ZW50IGlzIHRoZWlyIG9ubHkgcHJvZ3JhbWF0aWMgc2lkZS1lZmZlY3QuCisKK0lmIGl0IHdvcmtz
IHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBzYXlpbmcgdGhlIHRlc3QgaGFzIHBhc3Nl
ZC4KKworVEVTVCBQQVNTRUQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2NmZGJm
YjUyZDkxZmU2YTAwZTEzMzIxNzExNGU4YWEwYTJmYWE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCkBA
IC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICB2YXIgaXRlbSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKK30KK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGxvZygi
VEVTVCBQQVNTRUQuIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworIH0KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBvbmxvYWQgZXZlbnRz
IGNhbiBiZSBhdHRhY2hlZCB0byBsaW5rIGVsZW1lbnRzIHdpdGggcmVsPXByZWZldGNoLiBTaW5j
ZSBwcmVmZXRjaCBsaW5rcyBhcmUganVzdCB0aGVyZSBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbiwgdGhlIG9ubG9hZCBldmVudCBpcyB0aGVpciBvbmx5IHByb2dyYW1hdGljIHNpZGUtZWZm
ZWN0LjwvcD4KKzxwPklmIGl0IHdvcmtzIHlvdSBzaG91bGQgc2VlIGEgbWVzc2FnZSBiZWxvdyBz
YXlpbmcgdGhlIHRlc3QgaGFzIHBhc3NlZC48L3A+Cis8bGluayBocmVmPSJwcmVmZXRjaC5saW5r
IiByZWw9InByZWZldGNoIiBvbmxvYWQ9ImRvbmUoKSIgPgorPGhyPgorPHA+PG9sIGlkPSJjb25z
b2xlIj48L29sPjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKaW5kZXggM2I1ZGQ5YjhlNWJhZmM3
MjNmZDNjMDRlMjE4NmRhNjRlOGIwYWIxNi4uNWMyMjNmOTdjNzY2OTBlM2Y4Y2M4YzFjMzhhMTIx
M2U5NzA4NmUwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTExpbmtFbGVt
ZW50L3ByZWZldGNoLmh0bWwKQEAgLTEsMTQgKzEsMjMgQEAKIDxib2R5PgogPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJsaSIpOworICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoaXRlbSk7Cit9CitmdW5jdGlvbiBwcmVmZXRjaF9vbmxvYWQoKSB7CisgICAgbG9nKCJT
VUNDRVNTISAgcHJlZmV0Y2ggb25sb2FkIGNhbGxlZC4iKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Cit9CiBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwotICAgIHNldFRpbWVvdXQoImxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKSIsNTApOwogfQogPC9zY3JpcHQ+CiA8aHRtbD4KIDxwPlRo
aXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSB0byBzZWUgdGhlIGxvZyBvZiB3aGF0IHJl
c291cmNlcyBhcmUgbG9hZGVkLgotPGxpbmsgaHJlZj0icHJlZmV0Y2gubGluayIgcmVsPSJwcmVm
ZXRjaCI+Cis8bGluayBocmVmPSJwcmVmZXRjaC5saW5rIiByZWw9InByZWZldGNoIiBvbmxvYWQ9
InByZWZldGNoX29ubG9hZCgpIj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD4KIDwvaHRtbD4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1wdXJwb3NlLmh0
bWwKaW5kZXggMTJmMTdlMWIwY2FkZTllYjhlNDJjZDliOTFiNzg2MWE1N2ExOGNhZC4uMmY5YTU4
MmY4MzdhYmEzM2YxNzgwMDNkY2YzNDkwMzA2YzZlYmZiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL3ByZWZldGNoLXB1cnBvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcHJlZmV0Y2gtcHVycG9zZS5odG1sCkBAIC0xMiw5ICsxMiw5IEBA
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwogfQogPC9zY3JpcHQ+Ci08bGlu
ayBocmVmPSJyZXNvdXJjZXMvcHJlZmV0Y2gtcHVycG9zZS5waHAiIHJlbD0icHJlZmV0Y2giPgor
PGxpbmsgaHJlZj0icmVzb3VyY2VzL3ByZWZldGNoLXB1cnBvc2UucGhwIiByZWw9InByZWZldGNo
IiBvbmxvYWQ9ImZpbmlzaFVwKCkiPgogPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0
KCdmaW5pc2hVcCgpJywgNTApOyI+Cis8Ym9keT4KIDxwPk5vdGhpbmcgdG8gc2VlIGhlcmUsIHRo
aXMgcGFnZSBzaG91bGQgcmVwbGFjZSBpdHNlbGYgd2l0aCByZXNvdXJjZXMvcHJlZmV0Y2gtcHVy
cG9zZS5waHAgYWxtb3N0IGluc3RhbnRseS4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQKaW5kZXggYWEzMzBiNTk1YTM0NDQxNjg3ZGFmMjhmZTVkNzk4NzFhM2VlMDhk
OC4uNTNmYjU0Y2ZiNjdkMTlkNzA3YjJhMGRhZTJlMTUzMDQ1Zjc2ZjljMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKQEAgLTUxMTgsNyArNTExOCw5IEBAIGZhc3QvZm9ybXMvc2xpZGVyLW1v
dXNlLWV2ZW50cy5odG1sCiBmYXN0L2Zvcm1zL3NsaWRlci16b29tZWQuaHRtbAogCiAjIExpbmsg
cHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRtbAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50
L3ByZWZldGNoLmh0bWwKK2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQu
aHRtbAogCiAjIExheW91dFRlc3RDb250cm9sbGVyOjpwYWdlUHJvcGVydHkgaXMgbm90IGltcGxl
bWVudGVkIGZvciBHVEsgeWV0LgogcHJpbnRpbmcvcGFnZS1ydWxlLXNlbGVjdGlvbi5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4IDNmZTU3NzAzNDdmNjhmZGMwNzIyZTdmNTBmNjVm
MjdjNWFmNjQwNDIuLjJmODg5OWM0NjhlN2QzMTQzZjdiYWVhY2U3OTQ0ZTA5OGY1Y2I4NTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBAIC0xODQsNyArMTg0LDkgQEAgZmFzdC9kb20vRGV2
aWNlT3JpZW50YXRpb24KIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Ut
b3JpZW50YXRpb24uaHRtbAogCiAjIExpbmsgcHJlZmV0Y2ggaXMgZGlzYWJsZWQgYnkgZGVmYXVs
dAorZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRt
bAogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLmh0bWwKK2Zhc3QvZG9tL0hUTUxM
aW5rRWxlbWVudC9wcmVmZXRjaC1vbmxvYWQuaHRtbAogaHR0cC90ZXN0cy9taXNjL3ByZWZldGNo
LXB1cnBvc2UuaHRtbAogCiAjIEZpbGVuYW1lcyBhcmVuJ3QgZmlsdGVyZWQgb3V0IGZyb20gZWRp
dCBkcmFncyB5ZXQsIHNlZSBodHRwczovL2J1Z3Mud2VraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODgyNgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMzRmNDlhMjc4M2E2MzUxM2UxMmQ0YTc0
ZmQ1MTlkNTU3NTMxZGMzYy4uYzYyN2QyNTAzYWUxZDU2ZDIxMzg4MGZlYzBkMzI3YWU0ZmY1Nzk0
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC01MTQ5LDcgKzUxNDksOSBAQCBtZWRpYS92
aWRlby1kZWxheS1sb2FkLWV2ZW50Lmh0bWwKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNr
LXRvLXJlbW90ZS1jb250ZXh0Mi5odG1sCiAKICMgTGluayBwcmVmZXRjaCBpcyBkaXNhYmxlZCBi
eSBkZWZhdWx0CitmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvbGluay1hbmQtc3VicmVzb3VyY2Ut
dGVzdC5odG1sCiBmYXN0L2RvbS9IVE1MTGlua0VsZW1lbnQvcHJlZmV0Y2guaHRtbAorZmFzdC9k
b20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9hZC5odG1sCiBodHRwL3Rlc3RzL21pc2Mv
cHJlZmV0Y2gtcHVycG9zZS5odG1sCiAKICMgW1F0XSBSZWdyZXNzaW9uKHI2MTc0OSk6IGluc3Bl
Y3Rvci9kZWJ1Z2dlci1wYXVzZS1vbi1kZWJ1Z2dlci1zdGF0ZW1lbnQuaHRtbCBmYWlscwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBjYmRjNDZhZTRjMWQ3MTNkM2Y5MmZlZDBiMWI4YTEy
ODVhZDQzMjE0Li4zMTE2ZmEzMGUxNDQwZWY5ZDY5YjlhZjllYzg4OGYzNDI2ZGI1MjM0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtOTQ2LDcgKzk0Niw5IEBAIGZhc3QvZG9tL0Rldmlj
ZU9yaWVudGF0aW9uCiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9y
aWVudGF0aW9uLmh0bWwKIAogIyBMaW5rIHByZWZldGNoIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
K2Zhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9saW5rLWFuZC1zdWJyZXNvdXJjZS10ZXN0Lmh0bWwK
IGZhc3QvZG9tL0hUTUxMaW5rRWxlbWVudC9wcmVmZXRjaC5odG1sCitmYXN0L2RvbS9IVE1MTGlu
a0VsZW1lbnQvcHJlZmV0Y2gtb25sb2FkLmh0bWwKIGh0dHAvdGVzdHMvbWlzYy9wcmVmZXRjaC1w
dXJwb3NlLmh0bWwKIAogIyBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGFnZVByb3BlcnR5IGlzIG5v
dCBpbXBsZW1lbnRlZCBmb3IgV0lOIHlldC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5MjNhNTNiZGU0N2YzZWFhN2I1NmI4MTA2MGM4
MWY2MjljMzYyZC4uYmU0NmMzYTlhNDg4NzIxOTRlMWU2NWRhZjk4NjQzNzNjZGUzZTVmZCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxMC0xMi0wNCAgR2F2aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBs
ZW1lbnQgb25sb2FkIGV2ZW50cyBmb3IgPGxpbmsgcmVsPXByZWZldGNoPgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTAxODcKKworICAgICAgICBUZXN0
czogZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L2xpbmstYW5kLXN1YnJlc291cmNlLXRlc3QuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9kb20vSFRNTExpbmtFbGVtZW50L3ByZWZldGNoLW9ubG9h
ZC5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OkhUTUxMaW5rRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTGlua0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExp
bmtFbGVtZW50OjpvbmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5r
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGh0bWwvSFRNTExpbmtFbGVtZW50
Lmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpkYXRhKToKKwogMjAxMC0xMi0wMyAgRGltaXRyaSBH
bGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRleCA4ZGQwNTVjOTc1NjFhNWQz
MDEwODgzYjFkMzhhYjdkYmEwNzlhNTYxLi4zMTllNzU5NjM2MWY2NTc3ZTc2MTBhMmY1NDI4MTNi
NDYyYjlhMTQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcApAQCAtNDgsNiArNDgsOSBAQCB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50OjpIVE1M
TGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQorI2lmIEVOQUJMRShMSU5LX1BSRUZFVENIKQorICAgICwgbV9vbmxvYWRUaW1lcih0
aGlzLCAmSFRNTExpbmtFbGVtZW50OjpvbmxvYWRUaW1lckZpcmVkKQorI2VuZGlmCiAgICAgLCBt
X2Rpc2FibGVkU3RhdGUoVW5zZXQpCiAgICAgLCBtX2xvYWRpbmcoZmFsc2UpCiAgICAgLCBtX2Ny
ZWF0ZWRCeVBhcnNlcihjcmVhdGVkQnlQYXJzZXIpCkBAIC03MCw2ICs3MywxMSBAQCBIVE1MTGlu
a0VsZW1lbnQ6On5IVE1MTGlua0VsZW1lbnQoKQogICAgICAgICBpZiAobV9sb2FkaW5nICYmICFp
c0Rpc2FibGVkKCkgJiYgIWlzQWx0ZXJuYXRlKCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5y
ZW1vdmVQZW5kaW5nU2hlZXQoKTsKICAgICB9CisgICAgCisjaWYgRU5BQkxFKExJTktfUFJFRkVU
Q0gpCisgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoKQorICAgICAgICBtX2NhY2hlZExpbmtQ
cmVmZXRjaC0+cmVtb3ZlQ2xpZW50KHRoaXMpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpzZXREaXNhYmxlZFN0YXRlKGJvb2wgX2Rpc2FibGVkKQpAQCAtMTMzLDYgKzE0MSwx
MCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
KiBhdHRyKQogICAgICAgICBzZXREaXNhYmxlZFN0YXRlKCFhdHRyLT5pc051bGwoKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCiAgICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjaWYgRU5BQkxFKExJTktfUFJF
RkVUQ0gpCisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjZW5kaWYKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAg
ICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZhbHVlKCkpOwpAQCAtMjAzLDggKzIxNSwx
MSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2VzcygpCiAgICAgfQogCiAjaWYgRU5BQkxF
KExJTktfUFJFRkVUQ0gpCi0gICAgaWYgKG1fcmVsQXR0cmlidXRlLm1faXNMaW5rUHJlZmV0Y2gg
JiYgbV91cmwuaXNWYWxpZCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGRvY3Vt
ZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RMaW5rUHJlZmV0Y2gobV91cmwp
OworICAgIGlmIChtX3JlbEF0dHJpYnV0ZS5tX2lzTGlua1ByZWZldGNoICYmIG1fdXJsLmlzVmFs
aWQoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgIG1fY2FjaGVkTGlua1ByZWZl
dGNoID0gZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdExpbmtQcmVm
ZXRjaChtX3VybCk7CisgICAgICAgIGlmIChtX2NhY2hlZExpbmtQcmVmZXRjaCkKKyAgICAgICAg
ICAgIG1fY2FjaGVkTGlua1ByZWZldGNoLT5hZGRDbGllbnQodGhpcyk7CisgICAgfQogI2VuZGlm
CiAKICAgICBib29sIGFjY2VwdElmVHlwZUNvbnRhaW5zVGV4dENTUyA9IGRvY3VtZW50KCktPnBh
Z2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+cGFn
ZSgpLT5zZXR0aW5ncygpLT50cmVhdHNBbnlUZXh0Q1NTTGlua0FzU3R5bGVzaGVldCgpOwpAQCAt
MzU2LDYgKzM3MSwyMyBAQCBib29sIEhUTUxMaW5rRWxlbWVudDo6aXNMb2FkaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCAqPihtX3NoZWV0LmdldCgpKS0+
aXNMb2FkaW5nKCk7CiB9CiAKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKK3ZvaWQgSFRNTExp
bmtFbGVtZW50OjpvbmxvYWRUaW1lckZpcmVkKFRpbWVyPEhUTUxMaW5rRWxlbWVudD4qIHRpbWVy
KQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX29ubG9hZFRpbWVyKTsK
KyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
ZmFsc2UsIGZhbHNlKSk7Cit9CisKK3ZvaWQgSFRNTExpbmtFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCit7CisgICAgbV9vbmxvYWRUaW1lci5zdGFydE9u
ZVNob3QoMCk7CisgICAgaWYgKG1fY2FjaGVkTGlua1ByZWZldGNoLmdldCgpID09IHJlc291cmNl
KSB7CisgICAgICAgIG1fY2FjaGVkTGlua1ByZWZldGNoLT5yZW1vdmVDbGllbnQodGhpcyk7Cisg
ICAgICAgIG1fY2FjaGVkTGlua1ByZWZldGNoID0gMDsKKyAgICB9Cit9CisjZW5kaWYKKwogYm9v
bCBIVE1MTGlua0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKIHsKICAgICBpZiAoIWlzTG9hZGluZygp
ICYmICFpc0Rpc2FibGVkKCkgJiYgIWlzQWx0ZXJuYXRlKCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
aAppbmRleCAyZmI3NTI1OTMwYmFkZGY2MTU4MTRlZjU4ZGZjNjVhY2E0YzM1YWUxLi5mMzU5Yjhh
ZWVkZTZjMGE5NjQxOWExZTk3Y2I5ZmEzYTc5MWM3NDA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5o
CkBAIC0yNywxMCArMjcsMTIgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENh
Y2hlZENTU1N0eWxlU2hlZXQ7CitjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIEtVUkw7CiAK
IGNsYXNzIEhUTUxMaW5rRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKQEAgLTc3LDYgKzc5LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyNpZiBF
TkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICB2b2lkIG9ubG9hZFRpbWVyRmlyZWQoVGltZXI8SFRN
TExpbmtFbGVtZW50PiopOworI2VuZGlmCiAgICAgdm9pZCBwcm9jZXNzKCk7CiAgICAgc3RhdGlj
IHZvaWQgcHJvY2Vzc0NhbGxiYWNrKE5vZGUqKTsKIApAQCAtODUsNiArOTAsOSBAQCBwcml2YXRl
OgogCiAgICAgLy8gZnJvbSBDYWNoZWRSZXNvdXJjZUNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgS1VSTCYgYmFzZVVSTCwg
Y29uc3QgU3RyaW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCk7
CisjaWYgRU5BQkxFKExJTktfUFJFRkVUQ0gpCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKik7CisjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2Fk
ZWQoKTsKIAogICAgIGJvb2wgaXNBbHRlcm5hdGUoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVk
U3RhdGUgPT0gVW5zZXQgJiYgbV9yZWxBdHRyaWJ1dGUubV9pc0FsdGVybmF0ZTsgfQpAQCAtMTEy
LDYgKzEyMCwxMCBAQCBwcml2YXRlOgogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
Q1NTU3R5bGVTaGVldD4gbV9jYWNoZWRTaGVldDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
bV9zaGVldDsKKyNpZiBFTkFCTEUoTElOS19QUkVGRVRDSCkKKyAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSZXNvdXJjZT4gbV9jYWNoZWRMaW5rUHJlZmV0Y2g7CisgICAgVGltZXI8SFRN
TExpbmtFbGVtZW50PiBtX29ubG9hZFRpbWVyOworI2VuZGlmCiAgICAgS1VSTCBtX3VybDsKICAg
ICBTdHJpbmcgbV90eXBlOwogICAgIFN0cmluZyBtX21lZGlhOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDg0NDA2NWRhNzJmM2NhZWVjNWU1ZWMzODc1ZjUxYWRh
NzFiYmI5ZDEuLmU5NTJhNTQ1YWM1YTQ2MzFlMmYyYzNiNDQ5NjE2MGI5NjNlYWY4NmUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTExNSw2ICsxMTUsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiAgICAgaWYgKCFhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVy
bjsKICAgICAKKyAgICBzZXRMb2FkaW5nKGZhbHNlKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVu
dFdhbGtlciB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENhY2hlZFJlc291cmNlQ2xpZW50KiBj
ID0gdy5uZXh0KCkpCiAgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>