<?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>61897</bug_id>
          
          <creation_ts>2011-06-01 17:42:16 -0700</creation_ts>
          <short_desc>Flash of broken page when exiting full screen at jerryseinfeld.com</short_desc>
          <delta_ts>2011-06-03 11:48:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>61911</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>bdakin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>413786</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-01 17:42:16 -0700</bug_when>
    <thetext>Flash of broken page when exiting full screen at jerryseinfeld.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413921</commentid>
    <comment_count>1</comment_count>
      <attachid>95724</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-01 22:44:17 -0700</bug_when>
    <thetext>Created attachment 95724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413922</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-01 22:44:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/9522985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413973</commentid>
    <comment_count>3</comment_count>
      <attachid>95732</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:45:25 -0700</bug_when>
    <thetext>Created attachment 95732
Patch

Added radar URL; moved some code between the two patches to allow them to apply cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414325</commentid>
    <comment_count>4</comment_count>
      <attachid>95724</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-02 12:04:20 -0700</bug_when>
    <thetext>Comment on attachment 95724
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61897

There should be a brief summary of the fix here.

&gt; Source/WebCore/dom/Document.cpp:4892
&gt; +    bool shouldCreatePlaceholder = m_fullScreenElement-&gt;renderer()-&gt;isBox();

Why does being a box require a placeholder? Needs an explanatory comment.

&gt; Source/WebCore/dom/Document.cpp:4894
&gt; +    IntRect frameRect = renderer-&gt;isBox() ? toRenderBox(renderer)-&gt;frameRect() : IntRect();

Why test renderer-&gt;isBox() rather than shouldCreatePlaceholder? Seems like an if () clause here would be easier to read.

&gt; Source/WebCore/dom/Document.cpp:4976
&gt; +        renderer-&gt;createPlaceholder(RenderStyle::clone(placeholder-&gt;style()), placeholder-&gt;frameRect());

So the style has been cloned twice?

&gt; Source/WebCore/rendering/RenderFullScreen.cpp:102
&gt; +    if (!m_placeholder) {
&gt; +        m_placeholder = new (document()-&gt;renderArena()) RenderBlock(document());
&gt; +        m_placeholder-&gt;setStyle(style);
&gt; +        m_placeholder-&gt;setIsAnonymous(false);
&gt; +        if (parent()) {
&gt; +            parent()-&gt;addChild(m_placeholder, this);
&gt; +            remove();
&gt; +            m_placeholder-&gt;addChild(this);
&gt; +        }
&gt; +    } else
&gt; +        m_placeholder-&gt;setStyle(style);
&gt; +    m_placeholder-&gt;setFrameRect(frameRect);

It&apos;s weird and a bit scarey that you&apos;re manipulating the render tree outside of layout, and expecting that the frameRect that you set will not be changed by layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414439</commentid>
    <comment_count>5</comment_count>
      <attachid>95724</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 14:27:49 -0700</bug_when>
    <thetext>Comment on attachment 95724
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:6
&gt;&gt; +        https://bugs.webkit.org/show_bug.cgi?id=61897
&gt; 
&gt; There should be a brief summary of the fix here.

Sure.

&gt;&gt; Source/WebCore/dom/Document.cpp:4892
&gt;&gt; +    bool shouldCreatePlaceholder = m_fullScreenElement-&gt;renderer()-&gt;isBox();
&gt; 
&gt; Why does being a box require a placeholder? Needs an explanatory comment.

Only a RenderBox and its subclasses has a frameRect().  I&apos;ll add a comment.

&gt;&gt; Source/WebCore/dom/Document.cpp:4894
&gt;&gt; +    IntRect frameRect = renderer-&gt;isBox() ? toRenderBox(renderer)-&gt;frameRect() : IntRect();
&gt; 
&gt; Why test renderer-&gt;isBox() rather than shouldCreatePlaceholder? Seems like an if () clause here would be easier to read.

This could be shouldCreatePlaceholder.  I&apos;ll change it.

&gt;&gt; Source/WebCore/dom/Document.cpp:4976
&gt;&gt; +        renderer-&gt;createPlaceholder(RenderStyle::clone(placeholder-&gt;style()), placeholder-&gt;frameRect());
&gt; 
&gt; So the style has been cloned twice?

Or many more times, depending on how many times this function is called while within full-screen mode.

I guess that, since RenderStyles are RefCounted, we don&apos;t have to clone them, but I didn&apos;t like the idea that two renderers might point to the same style, no matter how briefly.

&gt;&gt; Source/WebCore/rendering/RenderFullScreen.cpp:102
&gt;&gt; +    m_placeholder-&gt;setFrameRect(frameRect);
&gt; 
&gt; It&apos;s weird and a bit scarey that you&apos;re manipulating the render tree outside of layout, and expecting that the frameRect that you set will not be changed by layout.

It very well might be changed by layout.  If the style says, e.g., &quot;width: 50%&quot; I would absolutely expect that the frameRect will change during layout.  But it should change in a similar way to the full-screen element.  

And actually this function is called from within layout, in the case of wrapWithRenderFullScreen() above.  I could modify webkitWillEnterFullScreenForElement() so that the placeholder is added during layout instead of directly after, but that would require adding two new ivars to Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414517</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-06-02 16:02:50 -0700</bug_when>
    <thetext>I lived on this patch for a little while and did lot of video watching. Seems good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414991</commentid>
    <comment_count>7</comment_count>
      <attachid>95732</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-03 10:38:09 -0700</bug_when>
    <thetext>Comment on attachment 95732
Patch

Unflagging - Jer will be revising to address comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415005</commentid>
    <comment_count>8</comment_count>
      <attachid>95928</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:05:20 -0700</bug_when>
    <thetext>Created attachment 95928
Patch

Addressed Simon&apos;s comments by ensuring the creation of the placeholder renderer occurs entirely within layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415007</commentid>
    <comment_count>9</comment_count>
      <attachid>95928</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:06:05 -0700</bug_when>
    <thetext>Comment on attachment 95928
Patch

Whoops, somehow webkit-patch picked up two patches. Obseleting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415009</commentid>
    <comment_count>10</comment_count>
      <attachid>95930</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:06:39 -0700</bug_when>
    <thetext>Created attachment 95930
Patch

Addressed Simon&apos;s comments by ensuring the creation of the placeholder renderer occurs entirely within layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415012</commentid>
    <comment_count>11</comment_count>
      <attachid>95930</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-03 11:13:34 -0700</bug_when>
    <thetext>Comment on attachment 95930
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4788
&gt; +    // Only create a placeholder block for a RenderBox, as only a box will have a frameRect.

I&apos;d like this comment to say what you say in the changelog about the fullscreen element being taken out of normal flow. Otherwise the role of the placeholder is unclear.

&gt; Source/WebCore/rendering/RenderFullScreen.cpp:107
&gt; +    m_placeholder-&gt;setFrameRect(frameRect);

Is this necessary? Won&apos;t layout happen and set the frame?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415025</commentid>
    <comment_count>12</comment_count>
      <attachid>95930</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:27:43 -0700</bug_when>
    <thetext>Comment on attachment 95930
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:4788
&gt;&gt; +    // Only create a placeholder block for a RenderBox, as only a box will have a frameRect.
&gt; 
&gt; I&apos;d like this comment to say what you say in the changelog about the fullscreen element being taken out of normal flow. Otherwise the role of the placeholder is unclear.

Sure thing.

&gt;&gt; Source/WebCore/rendering/RenderFullScreen.cpp:107
&gt;&gt; +    m_placeholder-&gt;setFrameRect(frameRect);
&gt; 
&gt; Is this necessary? Won&apos;t layout happen and set the frame?

Not for the case of an element whose width and height are dependent on their contents.  Since the placeholder doesn&apos;t have any contents in the normal flow, it&apos;s width and height will remain zero. (In the case that the style&apos;s width or height are auto.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415033</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:35:54 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 95930 [details])
&gt; &gt;&gt; Source/WebCore/rendering/RenderFullScreen.cpp:107
&gt; &gt;&gt; +    m_placeholder-&gt;setFrameRect(frameRect);
&gt; &gt; 
&gt; &gt; Is this necessary? Won&apos;t layout happen and set the frame?
&gt; 
&gt; Not for the case of an element whose width and height are dependent on their contents.  Since the placeholder doesn&apos;t have any contents in the normal flow, it&apos;s width and height will remain zero. (In the case that the style&apos;s width or height are auto.)

Oh, I see what you&apos;re saying; we reset the style&apos;s width and height if they&apos;re auto, so these values should get replaced during layout.  Let me try that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415041</commentid>
    <comment_count>14</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:44:47 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 95930 [details] [details])
&gt; &gt; &gt;&gt; Source/WebCore/rendering/RenderFullScreen.cpp:107
&gt; &gt; &gt;&gt; +    m_placeholder-&gt;setFrameRect(frameRect);
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this necessary? Won&apos;t layout happen and set the frame?
&gt; &gt; 
&gt; &gt; Not for the case of an element whose width and height are dependent on their contents.  Since the placeholder doesn&apos;t have any contents in the normal flow, it&apos;s width and height will remain zero. (In the case that the style&apos;s width or height are auto.)
&gt; 
&gt; Oh, I see what you&apos;re saying; we reset the style&apos;s width and height if they&apos;re auto, so these values should get replaced during layout.  Let me try that out.

Yes, it looks like this is unnecessary.  I&apos;ll remove the frameRect stuff from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415045</commentid>
    <comment_count>15</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:48:25 -0700</bug_when>
    <thetext>Committed r88034: &lt;http://trac.webkit.org/changeset/88034&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95724</attachid>
            <date>2011-06-01 22:44:17 -0700</date>
            <delta_ts>2011-06-02 14:27:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61897-20110601224416.patch</filename>
            <type>text/plain</type>
            <size>11518</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZmZhYWNhMThlMWRiMDUzMTQ3YzMx
OTg0YjA4YTcyZGM2ZDgxZDIxLi4zZjU5MjgzNTFlN2VhZTljNzBlMGM1Y2Y2NDA5NmU5YjQ0OWM0
Yzc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMDEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRmxhc2ggb2YgYnJva2VuIHBhZ2Ugd2hlbiBleGl0aW5nIGZ1bGwgc2NyZWVuIGF0
IGplcnJ5c2VpbmZlbGQuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTg5NworCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1wbGFj
ZWhvbGRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcGxhY2Vob2xkZXIuaHRtbDogQWRkZWQuCisKIDIwMTEtMDYtMDEgIE5vZWwgR29yZG9u
ICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNl
aG9sZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
cGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhODdiMTk4ZTVhNTU3ODViZDBh
MWYxODk2ODY2NjQzMTY5NTgwODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3
IEBACitUaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRpb25zIG9m
IHRoZSBibHVlIGFuZCBncmVlbiBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSByZWQgZGl2
IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiBQcmVzcyBnbyBmdWxsLXNjcmVlbiB0byBiZWdpbi4K
K09uZQorVHdvCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3Vt
ZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRGl2RWxl
bWVudF0nKSBPSworRVhQRUNURUQgKG9uZS5vZmZzZXRMZWZ0ID09ICc1OCcpIE9LCitFWFBFQ1RF
RCAob25lLm9mZnNldFRvcCA9PSAnNDgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRMZWZ0ID09
ICc4JykgT0sKK0VYUEVDVEVEICh0d28ub2Zmc2V0VG9wID09ICc5OCcpIE9LCitFVkVOVCh3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldExlZnQgPT0g
JzU4JykgT0sKK0VYUEVDVEVEIChvbmUub2Zmc2V0VG9wID09ICc0OCcpIE9LCitFWFBFQ1RFRCAo
dHdvLm9mZnNldExlZnQgPT0gJzgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRUb3AgPT0gJzk4
JykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcGxhY2Vob2xkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmZlZjM0MjQ0MjExYWJkOWM0
NzQ4NWFiZTQ5NjYyMmRlYTViZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1wbGFjZWhvbGRlci5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxz
Y3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNmbG9h
dCB7IAorICAgIGhlaWdodDogNTBweDsKKyAgICB3aWR0aDogNTBweDsKKyAgICBmbG9hdDogbGVm
dDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9CisjY2xlYXIgeworICAgIGNsZWFyOmxl
ZnQ7Cit9Cisjb25lIHsgCisgICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyAKKyAgICBm
bG9hdDogbGVmdDsKK30KKyN0d28geyAKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVu
OworfQorPC9zdHlsZT4KKzxib2R5PgorPGRpdj5UaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0
IHRoZSBvZmZzZXQgcG9zaXRpb25zIG9mIHRoZSBibHVlIGFuZCBncmVlbiBkaXZzIGRvZXMgbm90
IGNoYW5nZSB3aGVuIHRoZSByZWQgZGl2IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiAgUHJlc3Mg
PGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmxvYXQnKS53ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpIj5nbyBmdWxsLXNjcmVlbjwvYT4gdG8gYmVnaW4uPC9kaXY+Cis8
ZGl2IGlkPSJmbG9hdCI+PC9kaXY+Cis8ZGl2IGlkPSJvbmUiPk9uZTwvZGl2PgorPGRpdiBpZD0i
Y2xlYXIiIC8+Cis8c3BhbiBpZD0idHdvIj5Ud288L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBv
bmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJyk7CisgICAgdmFyIHR3byA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKTsKKworICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRo
ZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAo
RWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7
CisgICAgICAgIGxvZ1Jlc3VsdChmYWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgdmFyIG9uZVN0YXRlID0geydvZmZzZXRMZWZ0Jzogb25lLm9mZnNldExl
ZnQsICdvZmZzZXRUb3AnOiBvbmUub2Zmc2V0VG9wIH07CisgICAgICAgIHZhciB0d29TdGF0ZSA9
IHsnb2Zmc2V0TGVmdCc6IHR3by5vZmZzZXRMZWZ0LCAnb2Zmc2V0VG9wJzogdHdvLm9mZnNldFRv
cCB9OworCisKKyAgICAgICAgdmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNo
YW5nZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAg
ICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNj
cmVlbkNoYW5nZWQpOworICAgIAorICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2Zsb2F0Jyk7CisKKyAgICAgICAgdmFyIGRpdkVudGVyZWRGdWxsU2NyZWVuID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCIsIGRpdik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9u
ZS5vZmZzZXRMZWZ0Iiwgb25lU3RhdGUub2Zmc2V0TGVmdCk7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoIm9uZS5vZmZzZXRUb3AiLCBvbmVTdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ0d28ub2Zmc2V0TGVmdCIsIHR3b1N0YXRlLm9mZnNldExlZnQpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0d28ub2Zmc2V0VG9wIiwgdHdvU3RhdGUub2Zmc2V0VG9w
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gY2FuY2VsbGVkRnVsbFNjcmVlbjsKKyAgICAgICAg
ICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNj
cmVlbigpfSk7CisgICAgICAgIH07CisgICAgCisgICAgICAgIHZhciBjYW5jZWxsZWRGdWxsU2Ny
ZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50Lndl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJvbmUub2Zmc2V0TGVmdCIsIG9uZVN0YXRlLm9mZnNldExlZnQpOworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJvbmUub2Zmc2V0VG9wIiwgb25lU3RhdGUub2Zmc2V0VG9wKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHdvLm9mZnNldExlZnQiLCB0d29TdGF0ZS5vZmZzZXRM
ZWZ0KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHdvLm9mZnNldFRvcCIsIHR3b1N0YXRl
Lm9mZnNldFRvcCk7CisgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICBl
bmRUZXN0KCk7CisgICAgICAgIH07CisKKyAgICAgICAgY2FsbGJhY2sgPSBkaXZFbnRlcmVkRnVs
bFNjcmVlbjsKKyAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4oKX0pOworICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY2NzYw
OWMyMTYxNjVhODY1MjU5NjI2YTI4NmFlZjMzM2VjYWYyZDYuLmNlNGE5Yjk0YTIyOGZiNjc3ZDQ0
NTc2OTM3ZTNiMTY2YWNmODEzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0w
Ni0wMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGbGFzaCBvZiBicm9rZW4gcGFnZSB3aGVu
IGV4aXRpbmcgZnVsbCBzY3JlZW4gYXQgamVycnlzZWluZmVsZC5jb20KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxODk3CisKKyAgICAgICAgVGVzdDog
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1wbGFjZWhvbGRlci5odG1sCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ3JlYXRlIGEgcGxhY2Vob2xkZXIKKyAgICAgICAgICAg
IGJhc2VkIG9uIHRoZSBzaXplIGFuZCBzdHlsZSBvZiB0aGUgZnVsbC1zY3JlZW4gZWxlbWVudC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXIpOiBQZXJz
aXN0IHRoZSBwbGFjZWhvbGRlciBzaXplIGFuZCAKKyAgICAgICAgICAgIHN0eWxlIGFjcm9zcyBu
ZXcgcmVuZGVyZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcDoK
KyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OlJlbmRlckZ1bGxTY3JlZW4pOiBBZGRlZCBpdmFy
LgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6ZGVzdHJveSk6IE1ha2Ugc3VyZSB0byBzYWZl
bHkgZGVzdHJveSBvdXIgcGxhY2Vob2xkZXIuCisgICAgICAgIChSZW5kZXJGdWxsU2NyZWVuOjpj
cmVhdGVQbGFjZWhvbGRlcik6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVuOjpwbGFjZWhvbGRl
cik6IEl2YXIgYWNjZXNzb3IuCisKIDIwMTEtMDYtMDEgIERhdmlkIENhcnNvbiAgPGRhY2Fyc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDBmYzkxNzk1M2U3ZDhjMWVlMDhjOGMwY2Q3ODEzZGM2YjU2
MjM3YTUuLjljZTBhYjI2ZTI2NTBjNDhkOTYwYTg1MjIyN2MzZWVmNDA1NDc2NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNDg4Nyw3ICs0ODg3LDEyIEBAIHZvaWQgRG9jdW1lbnQ6Ondl
YmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
QVNTRVJUKHBhZ2UoKSAmJiBwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkp
OwogCiAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgCisKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbV9mdWxsU2NyZWVuRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAg
ICBib29sIHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyID0gbV9mdWxsU2NyZWVuRWxlbWVudC0+cmVu
ZGVyZXIoKS0+aXNCb3goKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gc2hvdWxk
Q3JlYXRlUGxhY2Vob2xkZXIgPyBSZW5kZXJTdHlsZTo6Y2xvbmUocmVuZGVyZXItPnN0eWxlKCkp
IDogMDsKKyAgICBJbnRSZWN0IGZyYW1lUmVjdCA9IHJlbmRlcmVyLT5pc0JveCgpID8gdG9SZW5k
ZXJCb3gocmVuZGVyZXIpLT5mcmFtZVJlY3QoKSA6IEludFJlY3QoKTsKKwogICAgIGlmIChtX2Z1
bGxTY3JlZW5FbGVtZW50ICE9IGRvY3VtZW50RWxlbWVudCgpKQogICAgICAgICBtX2Z1bGxTY3Jl
ZW5FbGVtZW50LT5kZXRhY2goKTsKIApAQCAtNDg5Niw2ICs0OTAxLDggQEAgdm9pZCBEb2N1bWVu
dDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkK
ICAgICByZWNhbGNTdHlsZShGb3JjZSk7CiAgICAgCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRl
cmVyKSB7CisgICAgICAgIGlmIChzaG91bGRDcmVhdGVQbGFjZWhvbGRlcikKKyAgICAgICAgICAg
IG1fZnVsbFNjcmVlblJlbmRlcmVyLT5jcmVhdGVQbGFjZWhvbGRlcihzdHlsZSwgZnJhbWVSZWN0
KTsKICAgICAgICAgc2V0QW5pbWF0aW5nRnVsbFNjcmVlbih0cnVlKTsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIHZpZXcoKS0+dXBkYXRlQ29tcG9zaXRpbmdMYXll
cnMoKTsKQEAgLTQ5NjQsNiArNDk3MSwxMSBAQCB2b2lkIERvY3VtZW50OjpzZXRGdWxsU2NyZWVu
UmVuZGVyZXIoUmVuZGVyRnVsbFNjcmVlbiogcmVuZGVyZXIpCiAgICAgaWYgKHJlbmRlcmVyID09
IG1fZnVsbFNjcmVlblJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAocmVuZGVy
ZXIgJiYgbV9mdWxsU2NyZWVuUmVuZGVyZXIgJiYgbV9mdWxsU2NyZWVuUmVuZGVyZXItPnBsYWNl
aG9sZGVyKCkpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyID0gbV9mdWxsU2Ny
ZWVuUmVuZGVyZXItPnBsYWNlaG9sZGVyKCk7CisgICAgICAgIHJlbmRlcmVyLT5jcmVhdGVQbGFj
ZWhvbGRlcihSZW5kZXJTdHlsZTo6Y2xvbmUocGxhY2Vob2xkZXItPnN0eWxlKCkpLCBwbGFjZWhv
bGRlci0+ZnJhbWVSZWN0KCkpOworICAgIH0KKwogICAgIGlmIChtX2Z1bGxTY3JlZW5SZW5kZXJl
cikKICAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPmRlc3Ryb3koKTsKICAgICBBU1NFUlQo
IW1fZnVsbFNjcmVlblJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDhhNGVhNGQ4MWQ1YTE5ZjFmOTNiZTJhYzkxMmQwZGQ5ZDBhNTZk
ODMuLjNiZjI2NzQ1MzFiYmM3MmRjOWNkOTRjMjYwMGZiYmYwZTA2NzU5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBA
IFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmVyRmFjdG9yeTo6Y3JlYXRlUmVuZGVyZXJBbmRTdHls
ZSgpCiB9CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1zdGF0aWMgUmVuZGVyRnVsbFNj
cmVlbiogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQpCitzdGF0aWMgUmVuZGVyT2JqZWN0KiB3cmFwV2l0aFJlbmRlckZ1bGxT
Y3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBS
ZW5kZXJGdWxsU2NyZWVuKiBmdWxsc2NyZWVuUmVuZGVyZXIgPSBuZXcgKGRvY3VtZW50LT5yZW5k
ZXJBcmVuYSgpKSBSZW5kZXJGdWxsU2NyZWVuKGRvY3VtZW50KTsKICAgICBmdWxsc2NyZWVuUmVu
ZGVyZXItPnNldFN0eWxlKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgp
KTsKQEAgLTIyMiw2ICsyMjIsOCBAQCBzdGF0aWMgUmVuZGVyRnVsbFNjcmVlbiogd3JhcFdpdGhS
ZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1bWVudAogICAgIGlmIChv
YmplY3QpCiAgICAgICAgIGZ1bGxzY3JlZW5SZW5kZXJlci0+YWRkQ2hpbGQob2JqZWN0KTsKICAg
ICBkb2N1bWVudC0+c2V0RnVsbFNjcmVlblJlbmRlcmVyKGZ1bGxzY3JlZW5SZW5kZXJlcik7Cisg
ICAgaWYgKGZ1bGxzY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKSkKKyAgICAgICAgcmV0dXJu
IGZ1bGxzY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKTsKICAgICByZXR1cm4gZnVsbHNjcmVl
blJlbmRlcmVyOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5jcHAKaW5kZXggOTY4OGJhMDA1NDliZjRlYTg3YjYxMmZjNmJjYTkxMmEwODY1
NDI2ZC4uZmE2NmM4OTQ2ODM3ZDA4MzYzYWU0OTc4NDcyMmE1ODY3OGI0ZDM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcApAQCAtMzYsOCArMzYs
MjIgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK1JlbmRlckZ1bGxTY3JlZW46OlJl
bmRlckZ1bGxTY3JlZW4oTm9kZSogbm9kZSkgCisgICAgOiBSZW5kZXJGbGV4aWJsZUJveChub2Rl
KSAKKyAgICAsIG1fcGxhY2Vob2xkZXIoMCkKK3sgCisgICAgc2V0UmVwbGFjZWQoZmFsc2UpOyAK
K30KKwogdm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpkZXN0cm95KCkKIHsKKyAgICBpZiAobV9wbGFj
ZWhvbGRlcikgeworICAgICAgICByZW1vdmUoKTsKKyAgICAgICAgaWYgKCFtX3BsYWNlaG9sZGVy
LT5iZWluZ0Rlc3Ryb3llZCgpKQorICAgICAgICAgICAgbV9wbGFjZWhvbGRlci0+ZGVzdHJveSgp
OworICAgICAgICBtX3BsYWNlaG9sZGVyID0gMDsKKyAgICB9CisKICAgICAvLyBSZW5kZXJPYmpl
Y3RzIGFyZSB1bnJldGFpbmVkLCBzbyBub3RpZnkgdGhlIGRvY3VtZW50ICh3aGljaCBob2xkcyBh
IHBvaW50ZXIgdG8gYSBSZW5kZXJGdWxsU2NyZWVuKQogICAgIC8vIGlmIGl0J3MgUmVuZGVyRnVs
bFNjcmVlbiBpcyBkZXN0cm95ZWQuCiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+
ZnVsbFNjcmVlblJlbmRlcmVyKCkgPT0gdGhpcykKQEAgLTcyLDQgKzg2LDIwIEBAIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZUZ1bGxTY3JlZW5TdHlsZSgp
CiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5TdHlsZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgUmVuZGVy
RnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCkKK3sKKyAgICBpZiAoIW1fcGxhY2Vob2xkZXIp
IHsKKyAgICAgICAgbV9wbGFjZWhvbGRlciA9IG5ldyAoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEo
KSkgUmVuZGVyQmxvY2soZG9jdW1lbnQoKSk7CisgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFN0
eWxlKHN0eWxlKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0SXNBbm9ueW1vdXMoZmFsc2Up
OworICAgICAgICBpZiAocGFyZW50KCkpIHsKKyAgICAgICAgICAgIHBhcmVudCgpLT5hZGRDaGls
ZChtX3BsYWNlaG9sZGVyLCB0aGlzKTsKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgICAgICAg
ICAgbV9wbGFjZWhvbGRlci0+YWRkQ2hpbGQodGhpcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U3R5bGUoc3R5bGUpOworICAgIG1fcGxhY2Vob2xk
ZXItPnNldEZyYW1lUmVjdChmcmFtZVJlY3QpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCmluZGV4IDliYTE3YTcwMTdkNTA5MDNjZTg3
MjY0NGRlZWYyZjc3MjZjNzExM2UuLjBhODcxOGMyYTdiNmM1Zjc0MTM2YjhjMzBmNTIzMjQ5NTg3
M2U5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaApA
QCAtMzMsMTUgKzMzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRnVs
bFNjcmVlbiA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVy
RnVsbFNjcmVlbihOb2RlKiBub2RlKSA6IFJlbmRlckZsZXhpYmxlQm94KG5vZGUpIHsgc2V0UmVw
bGFjZWQoZmFsc2UpOyB9CisgICAgUmVuZGVyRnVsbFNjcmVlbihOb2RlKik7CiAgICAgdmlydHVh
bCB2b2lkIGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJGdWxsU2NyZWVuIjsgfQotICAgIAorCisgICAgUmVu
ZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhvbGRlcjsgfQorICAgIHZv
aWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFJl
Y3QmIGZyYW1lUmVjdCk7CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3Jl
YXRlRnVsbFNjcmVlblN0eWxlKCk7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2lzQW5p
bWF0aW5nOworICAgIFJlbmRlckJsb2NrKiBtX3BsYWNlaG9sZGVyOwogfTsKICAgICAKIGlubGlu
ZSBSZW5kZXJGdWxsU2NyZWVuKiB0b1JlbmRlckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95732</attachid>
            <date>2011-06-02 00:45:25 -0700</date>
            <delta_ts>2011-06-03 11:05:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61897-20110602004524.patch</filename>
            <type>text/plain</type>
            <size>11779</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNzBiNzJmMWE2MzNhMDM1ZGIwNzQ2
ZmE0MGQ5ZDU1ZTFlNDdkYTQ0Li45ZDMxMjE5ZDE4YTE4MWMwOTU3NTg4ZmFiOWFjNGJkZjQzOTU0
MTYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRmxhc2ggb2YgYnJva2VuIHBhZ2Ugd2hlbiBleGl0aW5nIGZ1bGwgc2NyZWVuIGF0
IGplcnJ5c2VpbmZlbGQuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTg5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTUyMjk4NT4KKworICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLmh0bWw6
IEFkZGVkLgorCiAyMDExLTA2LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBhODdiMTk4ZTVhNTU3ODViZDBhMWYxODk2ODY2NjQzMTY5NTgwODMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBs
YWNlaG9sZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIGxheW91dCB0ZXN0
IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRpb25zIG9mIHRoZSBibHVlIGFuZCBncmVlbiBk
aXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSByZWQgZGl2IGVudGVycyBmdWxsLXNjcmVlbiBt
b2RlLiBQcmVzcyBnbyBmdWxsLXNjcmVlbiB0byBiZWdpbi4KK09uZQorVHdvCitFVkVOVCh3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRGl2RWxlbWVudF0nKSBPSworRVhQRUNURUQg
KG9uZS5vZmZzZXRMZWZ0ID09ICc1OCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldFRvcCA9PSAn
NDgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRMZWZ0ID09ICc4JykgT0sKK0VYUEVDVEVEICh0
d28ub2Zmc2V0VG9wID09ICc5OCcpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQor
RVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnbnVs
bCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldExlZnQgPT0gJzU4JykgT0sKK0VYUEVDVEVEIChv
bmUub2Zmc2V0VG9wID09ICc0OCcpIE9LCitFWFBFQ1RFRCAodHdvLm9mZnNldExlZnQgPT0gJzgn
KSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRUb3AgPT0gJzk4JykgT0sKK0VORCBPRiBURVNUCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xk
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMmZlZjM0MjQ0MjExYWJkOWM0NzQ4NWFiZTQ5NjYyMmRlYTViZTg0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1w
bGFjZWhvbGRlci5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVl
bi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNmbG9hdCB7IAorICAgIGhlaWdodDogNTBw
eDsKKyAgICB3aWR0aDogNTBweDsKKyAgICBmbG9hdDogbGVmdDsKKyAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7Cit9CisjY2xlYXIgeworICAgIGNsZWFyOmxlZnQ7Cit9Cisjb25lIHsgCisgICAg
YmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyAKKyAgICBmbG9hdDogbGVmdDsKK30KKyN0d28g
eyAKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOworfQorPC9zdHlsZT4KKzxib2R5
PgorPGRpdj5UaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRpb25z
IG9mIHRoZSBibHVlIGFuZCBncmVlbiBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSByZWQg
ZGl2IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiAgUHJlc3MgPGJ1dHRvbiBvbmNsaWNrPSJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZmxvYXQnKS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpIj5n
byBmdWxsLXNjcmVlbjwvYT4gdG8gYmVnaW4uPC9kaXY+Cis8ZGl2IGlkPSJmbG9hdCI+PC9kaXY+
Cis8ZGl2IGlkPSJvbmUiPk9uZTwvZGl2PgorPGRpdiBpZD0iY2xlYXIiIC8+Cis8c3BhbiBpZD0i
dHdvIj5Ud288L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBvbmUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnb25lJyk7CisgICAgdmFyIHR3byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
d28nKTsKKworICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMg
bm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3VsdChm
YWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVm
aW5lZCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIG9u
ZVN0YXRlID0geydvZmZzZXRMZWZ0Jzogb25lLm9mZnNldExlZnQsICdvZmZzZXRUb3AnOiBvbmUu
b2Zmc2V0VG9wIH07CisgICAgICAgIHZhciB0d29TdGF0ZSA9IHsnb2Zmc2V0TGVmdCc6IHR3by5v
ZmZzZXRMZWZ0LCAnb2Zmc2V0VG9wJzogdHdvLm9mZnNldFRvcCB9OworCisKKyAgICAgICAgdmFy
IGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihldmVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1l
bnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworICAgIAor
ICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb2F0Jyk7CisKKyAg
ICAgICAgdmFyIGRpdkVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIs
IGRpdik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRMZWZ0Iiwgb25lU3Rh
dGUub2Zmc2V0TGVmdCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRUb3Ai
LCBvbmVTdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0d28ub2Zm
c2V0TGVmdCIsIHR3b1N0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJ0d28ub2Zmc2V0VG9wIiwgdHdvU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIGNhbGxi
YWNrID0gY2FuY2VsbGVkRnVsbFNjcmVlbjsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1
bmN0aW9uKCl7ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpfSk7CisgICAgICAgIH07
CisgICAgCisgICAgICAgIHZhciBjYW5jZWxsZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudCIsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJvbmUub2Zmc2V0TGVm
dCIsIG9uZVN0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJvbmUu
b2Zmc2V0VG9wIiwgb25lU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHdvLm9mZnNldExlZnQiLCB0d29TdGF0ZS5vZmZzZXRMZWZ0KTsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidHdvLm9mZnNldFRvcCIsIHR3b1N0YXRlLm9mZnNldFRvcCk7CisgICAgICAg
ICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH07
CisKKyAgICAgICAgY2FsbGJhY2sgPSBkaXZFbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgcnVu
V2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKX0pOwor
ICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFlOGFhZTE3YjFhOTg1YTk5YWE0Y2JmY2Vk
YTM3NmJhNzJiYjI2YjUuLjNhNzk2Y2Q5ZTliMTRjYWNiNjZkYTc1YWE2ZDU1NGU4ZGUyYjZiMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wNi0wMSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGbGFzaCBvZiBicm9rZW4gcGFnZSB3aGVuIGV4aXRpbmcgZnVsbCBzY3JlZW4g
YXQgamVycnlzZWluZmVsZC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxODk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTIyOTg1PgorCisg
ICAgICAgIFRlc3Q6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXIuaHRtbAorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3
ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIHBsYWNlaG9sZGVy
CisgICAgICAgICAgICBiYXNlZCBvbiB0aGUgc2l6ZSBhbmQgc3R5bGUgb2YgdGhlIGZ1bGwtc2Ny
ZWVuIGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJl
bmRlcmVyKTogUGVyc2lzdCB0aGUgcGxhY2Vob2xkZXIgc2l6ZSBhbmQgCisgICAgICAgICAgICBz
dHlsZSBhY3Jvc3MgbmV3IHJlbmRlcmVycy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5jcHA6CisgICAgICAgIChSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVu
KTogQWRkZWQgaXZhci4KKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OmRlc3Ryb3kpOiBNYWtl
IHN1cmUgdG8gc2FmZWx5IGRlc3Ryb3kgb3VyIHBsYWNlaG9sZGVyLgorICAgICAgICAoUmVuZGVy
RnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVl
bjo6cGxhY2Vob2xkZXIpOiBJdmFyIGFjY2Vzc29yLgorCiAyMDExLTA2LTAxICBEYW4gQmVybnN0
ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMWM3ZDZkY2MwY2M2M2ZiMmNjNmMxNzIy
YmIzYzc1YTRjOTJmZjc4Ny4uNDM3NjA5MTdhZjE0MzI1NGI4MTJlNDdlNTVhZDcxMGMyMmNlNzcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00Nzg0LDcgKzQ3ODQsMTIgQEAgdm9pZCBE
b2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKICAgICBBU1NFUlQocGFnZSgpICYmIHBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSk7CiAKICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKLSAgICAK
KworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2Z1bGxTY3JlZW5FbGVtZW50LT5yZW5k
ZXJlcigpOworICAgIGJvb2wgc2hvdWxkQ3JlYXRlUGxhY2Vob2xkZXIgPSBtX2Z1bGxTY3JlZW5F
bGVtZW50LT5yZW5kZXJlcigpLT5pc0JveCgpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5
bGUgPSBzaG91bGRDcmVhdGVQbGFjZWhvbGRlciA/IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJl
ci0+c3R5bGUoKSkgOiAwOworICAgIEludFJlY3QgZnJhbWVSZWN0ID0gcmVuZGVyZXItPmlzQm94
KCkgPyB0b1JlbmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpIDogSW50UmVjdCgpOworCiAg
ICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgIT0gZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRldGFjaCgpOwogCkBAIC00NzkzLDYgKzQ3OTgsOCBAQCB2
b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
KiBlbGVtZW50KQogICAgIHJlY2FsY1N0eWxlKEZvcmNlKTsKICAgICAKICAgICBpZiAobV9mdWxs
U2NyZWVuUmVuZGVyZXIpIHsKKyAgICAgICAgaWYgKHNob3VsZENyZWF0ZVBsYWNlaG9sZGVyKQor
ICAgICAgICAgICAgbV9mdWxsU2NyZWVuUmVuZGVyZXItPmNyZWF0ZVBsYWNlaG9sZGVyKHN0eWxl
LCBmcmFtZVJlY3QpOwogICAgICAgICBzZXRBbmltYXRpbmdGdWxsU2NyZWVuKHRydWUpOwogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgdmlldygpLT51cGRhdGVDb21w
b3NpdGluZ0xheWVycygpOwpAQCAtNDg2MSw2ICs0ODY4LDExIEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dEZ1bGxTY3JlZW5SZW5kZXJlcihSZW5kZXJGdWxsU2NyZWVuKiByZW5kZXJlcikKICAgICBpZiAo
cmVuZGVyZXIgPT0gbV9mdWxsU2NyZWVuUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChyZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5k
ZXJlci0+cGxhY2Vob2xkZXIoKSkgeworICAgICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIg
PSBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKTsKKyAgICAgICAgcmVuZGVyZXIt
PmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0eWxlOjpjbG9uZShwbGFjZWhvbGRlci0+c3R5bGUo
KSksIHBsYWNlaG9sZGVyLT5mcmFtZVJlY3QoKSk7CisgICAgfQorCiAgICAgaWYgKG1fZnVsbFNj
cmVlblJlbmRlcmVyKQogICAgICAgICBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+ZGVzdHJveSgpOwog
ICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuUmVuZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOGE0ZWE0ZDgxZDVhMTlmMWY5M2JlMmFjOTEy
ZDBkZDlkMGE1NmQ4My4uM2JmMjY3NDUzMWJiYzcyZGM5Y2Q5NGMyNjAwZmJiZjBlMDY3NTk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMTMs
NyArMjEzLDcgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyZXJGYWN0b3J5OjpjcmVhdGVSZW5k
ZXJlckFuZFN0eWxlKCkKIH0KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLXN0YXRpYyBS
ZW5kZXJGdWxsU2NyZWVuKiB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBv
YmplY3QsIERvY3VtZW50KiBkb2N1bWVudCkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIHdyYXBXaXRo
UmVuZGVyRnVsbFNjcmVlbihSZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50
KQogewogICAgIFJlbmRlckZ1bGxTY3JlZW4qIGZ1bGxzY3JlZW5SZW5kZXJlciA9IG5ldyAoZG9j
dW1lbnQtPnJlbmRlckFyZW5hKCkpIFJlbmRlckZ1bGxTY3JlZW4oZG9jdW1lbnQpOwogICAgIGZ1
bGxzY3JlZW5SZW5kZXJlci0+c2V0U3R5bGUoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKCkpOwpAQCAtMjIyLDYgKzIyMiw4IEBAIHN0YXRpYyBSZW5kZXJGdWxsU2NyZWVu
KiB3cmFwV2l0aFJlbmRlckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QsIERvY3VtZW50
CiAgICAgaWYgKG9iamVjdCkKICAgICAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5hZGRDaGlsZChv
YmplY3QpOwogICAgIGRvY3VtZW50LT5zZXRGdWxsU2NyZWVuUmVuZGVyZXIoZnVsbHNjcmVlblJl
bmRlcmVyKTsKKyAgICBpZiAoZnVsbHNjcmVlblJlbmRlcmVyLT5wbGFjZWhvbGRlcigpKQorICAg
ICAgICByZXR1cm4gZnVsbHNjcmVlblJlbmRlcmVyLT5wbGFjZWhvbGRlcigpOwogICAgIHJldHVy
biBmdWxsc2NyZWVuUmVuZGVyZXI7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAppbmRleCA5Njg4YmEwMDU0OWJmNGVhODdiNjEyZmM2
YmNhOTEyYTA4NjU0MjZkLi40NjE1MTAyYjUwZmI1MzgyYWRhOTAyMWU4OGZmODYzMTI1NGI2ZDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCkBA
IC0zNiw4ICszNiwyMiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorUmVuZGVyRnVs
bFNjcmVlbjo6UmVuZGVyRnVsbFNjcmVlbihOb2RlKiBub2RlKSAKKyAgICA6IFJlbmRlckZsZXhp
YmxlQm94KG5vZGUpIAorICAgICwgbV9wbGFjZWhvbGRlcigwKQoreyAKKyAgICBzZXRSZXBsYWNl
ZChmYWxzZSk7IAorfQorCiB2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmRlc3Ryb3koKQogeworICAg
IGlmIChtX3BsYWNlaG9sZGVyKSB7CisgICAgICAgIHJlbW92ZSgpOworICAgICAgICBpZiAoIW1f
cGxhY2Vob2xkZXItPmJlaW5nRGVzdHJveWVkKCkpCisgICAgICAgICAgICBtX3BsYWNlaG9sZGVy
LT5kZXN0cm95KCk7CisgICAgICAgIG1fcGxhY2Vob2xkZXIgPSAwOworICAgIH0KKwogICAgIC8v
IFJlbmRlck9iamVjdHMgYXJlIHVucmV0YWluZWQsIHNvIG5vdGlmeSB0aGUgZG9jdW1lbnQgKHdo
aWNoIGhvbGRzIGEgcG9pbnRlciB0byBhIFJlbmRlckZ1bGxTY3JlZW4pCiAgICAgLy8gaWYgaXQn
cyBSZW5kZXJGdWxsU2NyZWVuIGlzIGRlc3Ryb3llZC4KICAgICBpZiAoZG9jdW1lbnQoKSAmJiBk
b2N1bWVudCgpLT5mdWxsU2NyZWVuUmVuZGVyZXIoKSA9PSB0aGlzKQpAQCAtNzIsNCArODYsMjUg
QEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlRnVsbFNj
cmVlblN0eWxlKCkKICAgICByZXR1cm4gZnVsbHNjcmVlblN0eWxlLnJlbGVhc2UoKTsKIH0KIAor
dm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcihQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZSwgY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0KQoreworICAgIGlmIChzdHls
ZS0+d2lkdGgoKS5pc0F1dG8oKSkKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChmcmFt
ZVJlY3Qud2lkdGgoKSwgRml4ZWQpKTsKKyAgICBpZiAoc3R5bGUtPmhlaWdodCgpLmlzQXV0bygp
KQorICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KExlbmd0aChmcmFtZVJlY3QuaGVpZ2h0KCksIEZp
eGVkKSk7CisKKyAgICBpZiAoIW1fcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgbV9wbGFjZWhvbGRl
ciA9IG5ldyAoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyQmxvY2soZG9jdW1lbnQo
KSk7CisgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFN0eWxlKHN0eWxlKTsKKyAgICAgICAgbV9w
bGFjZWhvbGRlci0+c2V0SXNBbm9ueW1vdXMoZmFsc2UpOworICAgICAgICBpZiAocGFyZW50KCkp
IHsKKyAgICAgICAgICAgIHBhcmVudCgpLT5hZGRDaGlsZChtX3BsYWNlaG9sZGVyLCB0aGlzKTsK
KyAgICAgICAgICAgIHJlbW92ZSgpOworICAgICAgICAgICAgbV9wbGFjZWhvbGRlci0+YWRkQ2hp
bGQodGhpcyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9wbGFjZWhvbGRlci0+
c2V0U3R5bGUoc3R5bGUpOworICAgIG1fcGxhY2Vob2xkZXItPnNldEZyYW1lUmVjdChmcmFtZVJl
Y3QpOworfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5oCmluZGV4IDliYTE3YTcwMTdkNTA5MDNjZTg3MjY0NGRlZWYyZjc3MjZjNzExM2UuLjBh
ODcxOGMyYTdiNmM1Zjc0MTM2YjhjMzBmNTIzMjQ5NTg3M2U5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaApAQCAtMzMsMTUgKzMzLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyRnVsbFNjcmVlbiA6IHB1YmxpYyBSZW5kZXJG
bGV4aWJsZUJveCB7CiBwdWJsaWM6Ci0gICAgUmVuZGVyRnVsbFNjcmVlbihOb2RlKiBub2RlKSA6
IFJlbmRlckZsZXhpYmxlQm94KG5vZGUpIHsgc2V0UmVwbGFjZWQoZmFsc2UpOyB9CisgICAgUmVu
ZGVyRnVsbFNjcmVlbihOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5k
ZXJGdWxsU2NyZWVuIjsgfQotICAgIAorCisgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkg
eyByZXR1cm4gbV9wbGFjZWhvbGRlcjsgfQorICAgIHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCk7CisKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlRnVsbFNjcmVlblN0eWxlKCk7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2lzQW5pbWF0aW5nOworICAgIFJlbmRlckJsb2Nr
KiBtX3BsYWNlaG9sZGVyOwogfTsKICAgICAKIGlubGluZSBSZW5kZXJGdWxsU2NyZWVuKiB0b1Jl
bmRlckZ1bGxTY3JlZW4oUmVuZGVyT2JqZWN0KiBvYmplY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95928</attachid>
            <date>2011-06-03 11:05:20 -0700</date>
            <delta_ts>2011-06-03 11:06:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61897-20110603110519.patch</filename>
            <type>text/plain</type>
            <size>23634</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgwMjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxODNlZjBmYTljYTc5OGI2ZTA2MDRk
ZjBmYzQwNjA3OTg1NzRmNGFjLi42ODhhZDk5OGZmZGRlNTAyYjllMjY2ZGQzYWM0ZWYyN2NjOGFm
Mjg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRmxhc2ggb2YgYnJva2VuIHBhZ2Ugd2hlbiBleGl0aW5nIGZ1bGwgc2NyZWVuIGF0
IGplcnJ5c2VpbmZlbGQuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTg5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTUyMjk4NT4KKworICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLmh0bWw6
IEFkZGVkLgorCiAyMDExLTA2LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhODdiMTk4ZTVhNTU3ODViZDBhMWYxODk2ODY2NjQzMTY5NTgw
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIGxheW91dCB0
ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRpb25zIG9mIHRoZSBibHVlIGFuZCBncmVl
biBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSByZWQgZGl2IGVudGVycyBmdWxsLXNjcmVl
biBtb2RlLiBQcmVzcyBnbyBmdWxsLXNjcmVlbiB0byBiZWdpbi4KK09uZQorVHdvCitFVkVOVCh3
ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRGl2RWxlbWVudF0nKSBPSworRVhQRUNU
RUQgKG9uZS5vZmZzZXRMZWZ0ID09ICc1OCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldFRvcCA9
PSAnNDgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRMZWZ0ID09ICc4JykgT0sKK0VYUEVDVEVE
ICh0d28ub2Zmc2V0VG9wID09ICc5OCcpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAn
bnVsbCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldExlZnQgPT0gJzU4JykgT0sKK0VYUEVDVEVE
IChvbmUub2Zmc2V0VG9wID09ICc0OCcpIE9LCitFWFBFQ1RFRCAodHdvLm9mZnNldExlZnQgPT0g
JzgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRUb3AgPT0gJzk4JykgT0sKK0VORCBPRiBURVNU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vo
b2xkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xk
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMmZlZjM0MjQ0MjExYWJkOWM0NzQ4NWFiZTQ5NjYyMmRlYTVi
ZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1wbGFjZWhvbGRlci5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxzY3JpcHQgc3JjPSJmdWxsLXNj
cmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNmbG9hdCB7IAorICAgIGhlaWdodDog
NTBweDsKKyAgICB3aWR0aDogNTBweDsKKyAgICBmbG9hdDogbGVmdDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7Cit9CisjY2xlYXIgeworICAgIGNsZWFyOmxlZnQ7Cit9Cisjb25lIHsgCisg
ICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyAKKyAgICBmbG9hdDogbGVmdDsKK30KKyN0
d28geyAKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOworfQorPC9zdHlsZT4KKzxi
b2R5PgorPGRpdj5UaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRp
b25zIG9mIHRoZSBibHVlIGFuZCBncmVlbiBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSBy
ZWQgZGl2IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiAgUHJlc3MgPGJ1dHRvbiBvbmNsaWNrPSJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmxvYXQnKS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
Ij5nbyBmdWxsLXNjcmVlbjwvYT4gdG8gYmVnaW4uPC9kaXY+Cis8ZGl2IGlkPSJmbG9hdCI+PC9k
aXY+Cis8ZGl2IGlkPSJvbmUiPk9uZTwvZGl2PgorPGRpdiBpZD0iY2xlYXIiIC8+Cis8c3BhbiBp
ZD0idHdvIj5Ud288L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBvbmUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb25lJyk7CisgICAgdmFyIHR3byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0d28nKTsKKworICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkg
aXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUu
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3Vs
dChmYWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVu
ZGVmaW5lZCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFy
IG9uZVN0YXRlID0geydvZmZzZXRMZWZ0Jzogb25lLm9mZnNldExlZnQsICdvZmZzZXRUb3AnOiBv
bmUub2Zmc2V0VG9wIH07CisgICAgICAgIHZhciB0d29TdGF0ZSA9IHsnb2Zmc2V0TGVmdCc6IHR3
by5vZmZzZXRMZWZ0LCAnb2Zmc2V0VG9wJzogdHdvLm9mZnNldFRvcCB9OworCisKKyAgICAgICAg
dmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihl
dmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9j
dW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworICAg
IAorICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb2F0Jyk7CisK
KyAgICAgICAgdmFyIGRpdkVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dCIsIGRpdik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRMZWZ0Iiwgb25l
U3RhdGUub2Zmc2V0TGVmdCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRU
b3AiLCBvbmVTdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0d28u
b2Zmc2V0TGVmdCIsIHR3b1N0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0d28ub2Zmc2V0VG9wIiwgdHdvU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrID0gY2FuY2VsbGVkRnVsbFNjcmVlbjsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3du
KGZ1bmN0aW9uKCl7ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpfSk7CisgICAgICAg
IH07CisgICAgCisgICAgICAgIHZhciBjYW5jZWxsZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCIsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJvbmUub2Zmc2V0
TGVmdCIsIG9uZVN0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJv
bmUub2Zmc2V0VG9wIiwgb25lU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHdvLm9mZnNldExlZnQiLCB0d29TdGF0ZS5vZmZzZXRMZWZ0KTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHdvLm9mZnNldFRvcCIsIHR3b1N0YXRlLm9mZnNldFRvcCk7CisgICAg
ICAgICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
IH07CisKKyAgICAgICAgY2FsbGJhY2sgPSBkaXZFbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAg
cnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKX0p
OworICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNWExODg0NGI5OTMwNmM1Yzk0ZmJj
YjFmNjEzNGFlM2IxZjJhYzEuLjY4OTMyOWVmY2NlNDE0MjAyNjA0YzcyMTJlYjY1ZjZhNDEyNzZh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wNi0wMSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGbGFzaCBvZiBicm9rZW4gcGFnZSB3aGVuIGV4aXRpbmcgZnVsbCBzY3Jl
ZW4gYXQgamVycnlzZWluZmVsZC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxODk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTIyOTg1Pgor
CisgICAgICAgIFRlc3Q6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXIuaHRtbAor
CisgICAgICAgIEVudGVyaW5nIGZ1bGwtc2NyZWVuIG1vZGUgaXMgY2F1c2luZyB0aGUgcGFnZSBs
YXlvdXQgdG8gY2hhbmdlIGJlY2F1c2UgdGhlIGZ1bGwtc2NyZWVuCisgICAgICAgIGVsZW1lbnQg
aXMgdGFrZW4gb3V0IG9mIHRoZSBub3JtYWwgZmxvdy4gIFRvIGNvdW50ZXJhY3QgdGhpcyBlZmZl
Y3QsIGluc2VydCBhIHBsYWNlaG9sZGVyCisgICAgICAgIGJsb2NrIGFzIGEgcGFyZW50IG9mIHRo
ZSBmdWxsLXNjcmVlbiByZW5kZXJlciB3aXRoIHRoZSBzYW1lIHNpemUgYW5kIHN0eWxlIGFzIHRo
ZSBmdWxsLXNjcmVlbgorICAgICAgICBlbGVtZW50IHByZS1mdWxsLXNjcmVlbi4KKworICAgICAg
ICBPbmx5IGNyZWF0ZSBhIHBsYWNlaG9sZGVyIGZvciBibG9jay1sZXZlbCBlbGVtZW50czsgdGhl
IHRlY2huaXF1ZSByZXF1aXJlZCBmb3IgaW5saW5lIGVsZW1lbnRzCisgICAgICAgIHdvdWxkIGJl
IHZhc3RseSBtb3JlIGNvbXBsaWNhdGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudCk6IENyZWF0ZSBhIHBsYWNlaG9sZGVyCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUg
c2l6ZSBhbmQgc3R5bGUgb2YgdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKTogUGVyc2lzdCB0aGUgcGxhY2Vo
b2xkZXIgc2l6ZSBhbmQgCisgICAgICAgICAgICBzdHlsZSBhY3Jvc3MgbmV3IHJlbmRlcmVycy4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChSZW5k
ZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKTogQWRkZWQgaXZhci4KKyAgICAgICAgKFJl
bmRlckZ1bGxTY3JlZW46OmRlc3Ryb3kpOiBNYWtlIHN1cmUgdG8gc2FmZWx5IGRlc3Ryb3kgb3Vy
IHBsYWNlaG9sZGVyLgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xk
ZXIpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlbjo6cGxhY2Vob2xkZXIpOiBJdmFyIGFjY2Vz
c29yLgorCiAyMDExLTA2LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAxYzdkNmRjYzBjYzYzZmIyY2M2YzE3MjJiYjNjNzVhNGM5MmZmNzg3Li40YmUz
NTQxYThiOGE5MTUzNDExZDBlNjVmZDY1ZTBmZWViNzk5ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTQ3ODQsNyArNDc4NCwxNSBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIEFTU0VSVChwYWdl
KCkgJiYgcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKIAogICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OwotICAgIAorCisgICAgLy8gT25seSBjcmVhdGUg
YSBwbGFjZWhvbGRlciBibG9jayBmb3IgYSBSZW5kZXJCb3gsIGFzIG9ubHkgYSBib3ggd2lsbCBo
YXZlIGEgZnJhbWVSZWN0LgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2Z1bGxTY3Jl
ZW5FbGVtZW50LT5yZW5kZXJlcigpOworICAgIGJvb2wgc2hvdWxkQ3JlYXRlUGxhY2Vob2xkZXIg
PSBtX2Z1bGxTY3JlZW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0JveCgpOworICAgIGlmIChzaG91
bGRDcmVhdGVQbGFjZWhvbGRlcikgeworICAgICAgICBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJl
Y3QgPSB0b1JlbmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAgICAgICBtX3NhdmVk
UGxhY2Vob2xkZXJSZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci0+c3R5
bGUoKSk7CisgICAgfQorCiAgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgIT0gZG9jdW1lbnRF
bGVtZW50KCkpCiAgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRldGFjaCgpOwogCkBAIC00
ODYxLDYgKzQ4NjksMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJl
bmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVyKQogICAgIGlmIChyZW5kZXJlciA9PSBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHJlbmRlcmVyICYmIG1fc2F2
ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlKSAKKyAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNl
aG9sZGVyKG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlLnJlbGVhc2UoKSwgbV9zYXZlZFBs
YWNlaG9sZGVyRnJhbWVSZWN0KTsKKyAgICBlbHNlIGlmIChyZW5kZXJlciAmJiBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKSkgeworICAg
ICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIgPSBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxh
Y2Vob2xkZXIoKTsKKyAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0
eWxlOjpjbG9uZShwbGFjZWhvbGRlci0+c3R5bGUoKSksIHBsYWNlaG9sZGVyLT5mcmFtZVJlY3Qo
KSk7CisgICAgfQorCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRlcmVyKQogICAgICAgICBtX2Z1
bGxTY3JlZW5SZW5kZXJlci0+ZGVzdHJveSgpOwogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuUmVu
ZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwZTUxNDc5NTY3MjljMDY2YzRmYzMzZGUx
YTFhODExN2UwNmQ3OTQyLi45MjdiNDY1Yjk2MzU5MmNkNWU5OGE4NjA5ZjE2ZjhiZTExNmE2Njg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRPTVRp
bWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiSWNvblVS
TC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRl
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKQEAgLTEzNzEsNiArMTM3Miw4IEBAIHByaXZhdGU6CiAgICAgVGltZXI8RG9j
dW1lbnQ+IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXI7CiAgICAgRGVxdWU8UmVmUHRyPEVs
ZW1lbnQ+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZTsKICAgICBib29sIG1f
aXNBbmltYXRpbmdGdWxsU2NyZWVuOworICAgIEludFJlY3QgbV9zYXZlZFBsYWNlaG9sZGVyRnJh
bWVSZWN0OworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVy
U3R5bGU7CiAjZW5kaWYKIAogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4NWFhNzUxMjRhOTIy
NDIwMTg1YjY1YWM3YzUwNTg5NDA3MjhjNDBjLi42OTNmZTUyNTljNjNmYjZmODA4M2Y1ODZiYzcx
ZWQ1ZTljYjNmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rv
cnk6OmNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKQogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihS
ZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGljIFJlbmRlck9i
amVjdCogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbHNjcmVlblJlbmRl
cmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbihkb2N1
bWVudCk7CiAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGdWxsU2NyZWVu
OjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7CkBAIC0yMzcsNiArMjM3LDggQEAgc3RhdGljIFJl
bmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgRG9jdW1lbnQKICAgICBpZiAob2JqZWN0KQogICAgICAgICBmdWxsc2NyZWVuUmVuZGVy
ZXItPmFkZENoaWxkKG9iamVjdCk7CiAgICAgZG9jdW1lbnQtPnNldEZ1bGxTY3JlZW5SZW5kZXJl
cihmdWxsc2NyZWVuUmVuZGVyZXIpOworICAgIGlmIChmdWxsc2NyZWVuUmVuZGVyZXItPnBsYWNl
aG9sZGVyKCkpCisgICAgICAgIHJldHVybiBmdWxsc2NyZWVuUmVuZGVyZXItPnBsYWNlaG9sZGVy
KCk7CiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4IDk2ODhiYTAwNTQ5
YmY0ZWE4N2I2MTJmYzZiY2E5MTJhMDg2NTQyNmQuLjFlYTI3YmViOWE0MGZlZDNiOTYwZDQ3Y2Q2
ZjQzNzgwNmVjMzk4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5jcHAKQEAgLTM2LDggKzM2LDIyIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCitSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKE5vZGUqIG5vZGUpIAorICAg
IDogUmVuZGVyRmxleGlibGVCb3gobm9kZSkgCisgICAgLCBtX3BsYWNlaG9sZGVyKDApCit7IAor
ICAgIHNldFJlcGxhY2VkKGZhbHNlKTsgCit9CisKIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6ZGVz
dHJveSgpCiB7CisgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgcmVtb3ZlKCk7Cisg
ICAgICAgIGlmICghbV9wbGFjZWhvbGRlci0+YmVpbmdEZXN0cm95ZWQoKSkKKyAgICAgICAgICAg
IG1fcGxhY2Vob2xkZXItPmRlc3Ryb3koKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7Cisg
ICAgfQorCiAgICAgLy8gUmVuZGVyT2JqZWN0cyBhcmUgdW5yZXRhaW5lZCwgc28gbm90aWZ5IHRo
ZSBkb2N1bWVudCAod2hpY2ggaG9sZHMgYSBwb2ludGVyIHRvIGEgUmVuZGVyRnVsbFNjcmVlbikK
ICAgICAvLyBpZiBpdCdzIFJlbmRlckZ1bGxTY3JlZW4gaXMgZGVzdHJveWVkLgogICAgIGlmIChk
b2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZ1bGxTY3JlZW5SZW5kZXJlcigpID09IHRoaXMpCkBA
IC03Miw0ICs4NiwyNSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGdWxsU2NyZWVu
OjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQogICAgIHJldHVybiBmdWxsc2NyZWVuU3R5bGUucmVs
ZWFzZSgpOwogfQogCit2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyKFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QpCit7
CisgICAgaWYgKHN0eWxlLT53aWR0aCgpLmlzQXV0bygpKQorICAgICAgICBzdHlsZS0+c2V0V2lk
dGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgpLCBGaXhlZCkpOworICAgIGlmIChzdHlsZS0+aGVp
Z2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVj
dC5oZWlnaHQoKSwgRml4ZWQpKTsKKworICAgIGlmICghbV9wbGFjZWhvbGRlcikgeworICAgICAg
ICBtX3BsYWNlaG9sZGVyID0gbmV3IChkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJC
bG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U3R5bGUoc3R5bGUp
OworICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRJc0Fub255bW91cyhmYWxzZSk7CisgICAgICAg
IGlmIChwYXJlbnQoKSkgeworICAgICAgICAgICAgcGFyZW50KCktPmFkZENoaWxkKG1fcGxhY2Vo
b2xkZXIsIHRoaXMpOworICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgIH0KKyAgICAgICAg
bV9wbGFjZWhvbGRlci0+YWRkQ2hpbGQodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGxh
Y2Vob2xkZXItPnNldFN0eWxlKHN0eWxlKTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRGcmFtZVJl
Y3QoZnJhbWVSZWN0KTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaAppbmRleCA5YmExN2E3MDE3ZDUwOTAzY2U4NzI2NDRkZWVmMmY3NzI2
YzcxMTNlLi4wYTg3MThjMmE3YjZjNWY3NDEzNmI4YzMwZjUyMzI0OTU4NzNlOWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTMzLDE1ICszMywx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW4gOiBwdWJs
aWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckZ1bGxTY3JlZW4oTm9k
ZSogbm9kZSkgOiBSZW5kZXJGbGV4aWJsZUJveChub2RlKSB7IHNldFJlcGxhY2VkKGZhbHNlKTsg
fQorICAgIFJlbmRlckZ1bGxTY3JlZW4oTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
KCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyRnVsbFNjcmVlbiI7IH0KLSAgICAKKworICAgIFJlbmRlckJsb2NrKiBwbGFj
ZWhvbGRlcigpIHsgcmV0dXJuIG1fcGxhY2Vob2xkZXI7IH0KKyAgICB2b2lkIGNyZWF0ZVBsYWNl
aG9sZGVyKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3Qp
OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZ1bGxTY3JlZW5T
dHlsZSgpOwogICAgIAogcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FuaW1hdGluZzsKKyAgICBS
ZW5kZXJCbG9jayogbV9wbGFjZWhvbGRlcjsKIH07CiAgICAgCiBpbmxpbmUgUmVuZGVyRnVsbFNj
cmVlbiogdG9SZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDJlYjMyMjg1MTIzOTc1ZGIyOGY2YTFmODg2N2MzMjgwNGMxNDU3NzAuLjU4YTIy
OWI0ZGJiMTEyZTZhMDU3YmJjZWU4ZjJlMmJmMjJlOWIyMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMCBAQAorMjAxMS0wNi0wMiAgSmVyZW15IE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1lbWJlciB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCByZXN0b3JlIGFmdGVyIGV4aXRpbmcgZnVs
bC1zY3JlZW4gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxOTU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTQ0NDYxPgorCisgICAgICAg
IENhbGwgaW50byB0aGUgbWFpbiBGcmFtZVZpZXcgdG8gc2F2ZSB0aGUgc2Nyb2xsIHBvc2l0aW9u
IGJlZm9yZSBzd2FwcGluZyB0aGUKKyAgICAgICAgV2ViVmlldyBpbnRvIHRoZSBmdWxsLXNjcmVl
biB3aW5kb3csIGFuZCByZXN0b3JlIHRoZSBzY3JvbGwgcG9zaXRpb24gYWZ0ZXIgCisgICAgICAg
IHN3YXBwaW5nIHRoZSBXZWJWaWV3IGJhY2sgaW50byB0aGUgYnJvd3NlciB3aW5kb3cuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV2ViRnVsbFNjcmVl
bkNvbnRyb2xsZXIgd2luZG93RGlkRW50ZXJGdWxsc2NyZWVuOl0pOiBTYXZlIHRoZSBzY3JvbGwg
cG9zaXRpb24uCisgICAgICAgICgtW1dlYkZ1bGxTY3JlZW5Db250cm9sbGVyIGV4aXRGdWxsc2Ny
ZWVuXSk6IFJlc3RvcmUgdGhlIHNjcm9sbCBwb3NpdGlvbi4KKwogMjAxMS0wNi0wMiAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxT
Y3JlZW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3Jl
ZW5Db250cm9sbGVyLmgKaW5kZXggMGY1NWJkMGUzMWZkNzkyYjNiZTdhOWU0Y2RiMTNjNjlkYTM1
MTIxNi4uOTEzYzUxNmJkMjkyZDY3YzgzYjZjZjA1ODQyYzA1ZTQ3MDI3ZTJiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogCisjaW1wb3J0
IDxXZWJDb3JlL0ludFBvaW50Lmg+CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAKIEBjbGFzcyBX
ZWJXaW5kb3dGYWRlQW5pbWF0aW9uOwpAQCAtNTksNiArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgU3lzdGVtVUlNb2RlIF9zYXZlZFVJTW9kZTsKICAgICBTeXN0ZW1VSU9wdGlvbnMg
X3NhdmVkVUlPcHRpb25zOwogICAgIENHUmVjdCBfaW5pdGlhbEZyYW1lOworICAgIFdlYkNvcmU6
OkludFBvaW50IF9zY3JvbGxQb3NpdGlvbjsKIH0KIAogLSAoV2ViVmlldyopd2ViVmlldzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZ1bGxTY3JlZW5Db250cm9sbGVy
Lm1tCmluZGV4IDg5OTc1ZjYzZDM4YjBmOTYxYWNlMGU2MDk0MzRjMzMyODgwNGRkMWMuLmQ2ZmEy
YzM4MWQzMzgzNWE4OGNjYzQ3Mjk1NGI2YWU1ZjFjNTlmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnVsbFNjcmVlbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGdWxsU2NyZWVuQ29udHJvbGxlci5tbQpAQCAtNDMsNiAr
NDMsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9ET01XaW5kb3cuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RXZlbnRMaXN0ZW5lci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudE5hbWVzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9IVE1MRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgpAQCAtMjYwLDYgKzI2Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIGFzc3VtaW5nIHRoZSBwbGFjZWhvbGRlcidzIHdpbmRvdyB3
aWxsIGFsd2F5cyBiZSB0aGUgd2ViVmlldydzIAogICAgICAgICAvLyBvcmlnaW5hbCB3aW5kb3cu
CiAgICAgICAgIGlmICghW19wbGFjZWhvbGRlclZpZXcgd2luZG93XSkgeworICAgICAgICAgICAg
X3Njcm9sbFBvc2l0aW9uID0gW3dlYlZpZXcgX21haW5Db3JlRnJhbWVdLT52aWV3KCktPnNjcm9s
bFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBbX3BsYWNlaG9sZGVyVmlldyBzZXRGcmFtZTpbd2Vi
VmlldyBmcmFtZV1dOyAgICAgICAgCiAgICAgICAgICAgICBbX3BsYWNlaG9sZGVyVmlldyBzZXRB
dXRvcmVzaXppbmdNYXNrOlt3ZWJWaWV3IGF1dG9yZXNpemluZ01hc2tdXTsKICAgICAgICAgICAg
IFtfcGxhY2Vob2xkZXJWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwpAQCAtNTA4LDYgKzUxMSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBbc2VsZiB3ZWJWaWV3XTsK
ICAgICAgICAgTlNSZXNwb25kZXIgKmZ1bGxTY3JlZW5XaW5kb3dGaXJzdFJlc3BvbmRlciA9IFtb
c2VsZiB3aW5kb3ddIGZpcnN0UmVzcG9uZGVyXTsKICAgICAgICAgW3dlYlZpZXcgc2V0RnJhbWU6
W19wbGFjZWhvbGRlclZpZXcgZnJhbWVdXTsKKyAgICAgICAgW3dlYlZpZXcgX21haW5Db3JlRnJh
bWVdLT52aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKF9zY3JvbGxQb3NpdGlvbik7CiAgICAgICAg
IFt3ZWJWaWV3IHNldEF1dG9yZXNpemluZ01hc2s6W19wbGFjZWhvbGRlclZpZXcgYXV0b3Jlc2l6
aW5nTWFza11dOwogICAgICAgICBbd2ViVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAg
ICAgW1tfcGxhY2Vob2xkZXJWaWV3IHN1cGVydmlld10gcmVwbGFjZVN1YnZpZXc6X3BsYWNlaG9s
ZGVyVmlldyB3aXRoOndlYlZpZXddOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFkYWIwYTMyNWM1YjkzZDU2MzI2
MTkwMjVkM2NkMjAwMzg3YjY0NmYuLjY4MWMyMTViN2I4MzQ3ODU0YzdiOTc3OTRmZTFjNjk3NmVl
ODI2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wNi0wMiAgSmVyZW15IE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1lbWJlciB0aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCByZXN0
b3JlIGFmdGVyIGV4aXRpbmcgZnVsbC1zY3JlZW4gbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS85NTQ0NDYxPgorCisgICAgICAgIENhbGwgaW50byB0aGUgbWFpbiBGcmFtZVZpZXcgdG8gc2F2
ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uIGJlZm9yZSBzd2FwcGluZyB0aGUKKyAgICAgICAgV2ViVmll
dyBpbnRvIHRoZSBmdWxsLXNjcmVlbiB3aW5kb3csIGFuZCByZXN0b3JlIHRoZSBzY3JvbGwgcG9z
aXRpb24gYWZ0ZXIgCisgICAgICAgIHN3YXBwaW5nIHRoZSBXZWJWaWV3IGJhY2sgaW50byB0aGUg
YnJvd3NlciB3aW5kb3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldp
bmRvd0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIgZmluaXNoZWRFbnRlckZ1bGxTY3JlZW5BbmltYXRpb246XSk6CisgICAgICAgICgtW1dLRnVs
bFNjcmVlbldpbmRvd0NvbnRyb2xsZXIgYmVnYW5FeGl0RnVsbFNjcmVlbkFuaW1hdGlvbl0pOgor
CisgICAgICAgIEluIFdlYktpdDIsIHRoaXMgcmVxdWlyZXMgc29tZSBjb21tdW5pY2F0aW9uIGJl
dHdlZW4gdGhlIFdlYlByb2Nlc3MgYW5kIHRoZQorICAgICAgICBVSVByb2Nlc3MsIHNvIGFkZCB0
d28gbmV3IG1lc3NhZ2VzIHRvIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyIHRvIGJlIGNhbGxlZCBieQor
ICAgICAgICBpdHMgcHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2F2
ZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Z1bGxT
Y3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNhdmVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpyZXN0b3JlU2Nyb2xsUG9zaXRpb24pOgorCiAy
MDExLTA2LTAzICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAppbmRleCA3Mjli
NjJlOWRjNTc2Njc0ZDNmZTMwMzZkM2EwNTNlOWIyMTRmOGMzLi5hYzhhNmI1MDY0ZGQ5OWYxNDRm
MTgwMGVmZDc0OWU5MTllMjBjOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDcsNiArMTA3LDE2IEBA
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wg
d2l0aEtleWJvYXJkLCBib29sJiBzdXBwCiAgICAgICAgIHN1cHBvcnRzID0gdHJ1ZTsKIH0KIAor
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xsUG9zaXRpb24oKQorewor
ICAgIG1fcGFnZS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS0+cGFnZUlEKCkpOworfQorCit2b2lkIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCit7CisgICAg
bV9wYWdlLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgK
aW5kZXggODE1NjcwMDc4NDgzMjA0OWQ5ZWIxNjViYjg3MDZhOTQ3MGE0YWMwNC4uODZlNjM1ODgy
ZGU2YjM3ZDQwYzg0MGI2MzI4ZDAzODBlZjMwMzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC04Miw2ICs4Miw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luRW50ZXJGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0
IGR1cmF0aW9uKTsKICAgICB2b2lkIGJlZ2luRXhpdEZ1bGxTY3JlZW5BbmltYXRpb24oZmxvYXQg
ZHVyYXRpb24pOwogICAgIHZvaWQgZGlzcG9zZU9mTGF5ZXJDbGllbnQoKTsKKyAgICB2b2lkIHNh
dmVTY3JvbGxQb3NpdGlvbigpOworICAgIHZvaWQgcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAK
IHByaXZhdGU6CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eShXZWJQYWdlUHJveHkqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2lu
ZG93Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2Ny
ZWVuV2luZG93Q29udHJvbGxlci5tbQppbmRleCBhMzA1YjU0NGI3N2NhZGFlZTBkZTQyOGY2ZWE3
NWVjZTFiZmMzNjQ1Li4xOTgzNjc2MzI1YWNiMzJkYmY0NGZlNGJkZjc0YTZlZjBjZWRmNzAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxT
Y3JlZW5XaW5kb3dDb250cm9sbGVyLm1tCkBAIC0yNTEsNiArMjUxLDcgQEAgc3RhdGljIHZvaWQg
ZXhpdENvbXBvc2l0ZWRNb2RlUmVwYWludENvbXBsZXRlZChXS0Vycm9yUmVmLCB2b2lkKiBjb250
ZXh0KTsKICAgICAgICAgaWYgKCFfd2ViVmlld1BsYWNlaG9sZGVyKQogICAgICAgICAgICAgX3dl
YlZpZXdQbGFjZWhvbGRlci5hZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgICAg
IE5TUmVzcG9uZGVyICp3ZWJXaW5kb3dGaXJzdFJlc3BvbmRlciA9IFtbX3dlYlZpZXcgd2luZG93
XSBmaXJzdFJlc3BvbmRlcl07CisgICAgICAgIFtzZWxmIF9tYW5hZ2VyXS0+c2F2ZVNjcm9sbFBv
c2l0aW9uKCk7CiAgICAgICAgIFtzZWxmIF9zd2FwVmlldzpfd2ViVmlldyB3aXRoOl93ZWJWaWV3
UGxhY2Vob2xkZXIuZ2V0KCldOwogICAgICAgICAKICAgICAgICAgLy8gVGhlbiBpbnNlcnQgdGhl
IFdlYlZpZXcgaW50byB0aGUgZnVsbCBzY3JlZW4gd2luZG93CkBAIC0zMTUsNiArMzE2LDcgQEAg
c3RhdGljIHZvaWQgZXhpdENvbXBvc2l0ZWRNb2RlUmVwYWludENvbXBsZXRlZChXS0Vycm9yUmVm
LCB2b2lkKiBjb250ZXh0KTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIFtzZWxmIF9zd2Fw
Vmlldzpfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHdpdGg6X3dlYlZpZXddOworICAgICAgICBb
c2VsZiBfbWFuYWdlcl0tPnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogICAgICAgICBbW193ZWJW
aWV3IHdpbmRvd10gbWFrZVJlc3BvbmRlcjpmdWxsU2NyZWVuV2luZG93Rmlyc3RSZXNwb25kZXIg
Zmlyc3RSZXNwb25kZXJJZkRlc2NlbmRhbnRPZlZpZXc6X3dlYlZpZXddOwogICAgICAgICBOU1dp
bmRvdyogd2ViV2luZG93ID0gW193ZWJWaWV3IHdpbmRvd107CiAjaWYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fU05PV19MRU9QQVJEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJG
dWxsU2NyZWVuTWFuYWdlci5jcHAKaW5kZXggZWQ4NjkzNDgxYTY4M2E1NjNiN2JlMjI0ZWM3YzM2
N2E2OTVjZTdlMS4uMjcxMjUwOGNjODliZjEyYjE3YzcyNmY5NzEzMjA3MWY3MzM0YTEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4v
V2ViRnVsbFNjcmVlbk1hbmFnZXIuY3BwCkBAIC0zMCwxMSArMzAsMTQgQEAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0VsZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAKQEAgLTE0MSw2ICsxNDQsMTUgQEAgdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogICAgIG1fZWxlbWVudC0+ZG9j
dW1lbnQoKS0+c2V0RnVsbFNjcmVlblJlbmRlcmVyQmFja2dyb3VuZENvbG9yKENvbG9yOjpibGFj
ayk7CiB9CiAKK3ZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXI6OnNhdmVTY3JvbGxQb3NpdGlvbigp
Cit7CisgICAgbV9zY3JvbGxQb3NpdGlvbiA9IG1fcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKTsKK30KKwordm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKK3sKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLT52aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsUG9zaXRpb24p
OworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaAppbmRl
eCBhMmI5OTJmOGYxYWE1ZDA3NjljMzgxNzRlNzFkM2M4YWRkYTU0YjllLi44NzYxY2QxMDQyMGQ4
ZjMzZTY2NTJlYTA5ZGY2OGUyOWZlNzliY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIuaApAQCAt
NzcsMTAgKzc3LDEzIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5FeGl0RnVs
bFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJhdGlvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwb3NlT2ZMYXllckNsaWVudCgpIHsgfQogICAgIFdlYkNvcmU6OkludFJlY3QgZ2V0RnVsbFNj
cmVlblJlY3QoKTsKKyAgICB2b2lkIHNhdmVTY3JvbGxQb3NpdGlvbigpOworICAgIHZvaWQgcmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJGdWxsU2NyZWVu
TWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1faW5p
dGlhbEZyYW1lOworICAgIFdlYkNvcmU6OkludFBvaW50IG1fc2Nyb2xsUG9zaXRpb247CiAgICAg
UmVmUHRyPFdlYlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4gbV9l
bGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRnVsbFNj
cmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvRnVsbFNjcmVlbi9XZWJGdWxsU2NyZWVuTWFuYWdlci5tZXNzYWdlcy5pbgppbmRl
eCA4MmVlZTNkYTYxMTJkZjBmZGI1MDNhYmFkMjEzODVkYTYwMjc2NWFjLi4yYmIyYzg1NTE5NDA3
ZjM3ZTZkZmRiZWM4NjYxODBiNDljZGRlMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vV2ViRnVsbFNjcmVlbk1hbmFnZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyLm1lc3NhZ2VzLmluCkBAIC0yOSw1ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyIHsKICAgICBCZWdpbkVudGVyRnVsbFNjcmVlbkFuaW1hdGlvbihmbG9hdCBkdXJh
dGlvbikKICAgICBCZWdpbkV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uKGZsb2F0IGR1cmF0aW9uKQog
ICAgIERpc3Bvc2VPZkxheWVyQ2xpZW50KCkKKyAgICBTYXZlU2Nyb2xsUG9zaXRpb24oKQorICAg
IFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95930</attachid>
            <date>2011-06-03 11:06:39 -0700</date>
            <delta_ts>2011-06-03 11:27:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61897-20110603110638.patch</filename>
            <type>text/plain</type>
            <size>12929</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgwMjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxODNlZjBmYTljYTc5OGI2ZTA2MDRk
ZjBmYzQwNjA3OTg1NzRmNGFjLi42ODhhZDk5OGZmZGRlNTAyYjllMjY2ZGQzYWM0ZWYyN2NjOGFm
Mjg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDEgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRmxhc2ggb2YgYnJva2VuIHBhZ2Ugd2hlbiBleGl0aW5nIGZ1bGwgc2NyZWVuIGF0
IGplcnJ5c2VpbmZlbGQuY29tCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTg5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTUyMjk4NT4KKworICAg
ICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLmh0bWw6
IEFkZGVkLgorCiAyMDExLTA2LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhODdiMTk4ZTVhNTU3ODViZDBhMWYxODk2ODY2NjQzMTY5NTgw
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXBsYWNlaG9sZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE3IEBACitUaGlzIGxheW91dCB0
ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRpb25zIG9mIHRoZSBibHVlIGFuZCBncmVl
biBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSByZWQgZGl2IGVudGVycyBmdWxsLXNjcmVl
biBtb2RlLiBQcmVzcyBnbyBmdWxsLXNjcmVlbiB0byBiZWdpbi4KK09uZQorVHdvCitFVkVOVCh3
ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRGl2RWxlbWVudF0nKSBPSworRVhQRUNU
RUQgKG9uZS5vZmZzZXRMZWZ0ID09ICc1OCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldFRvcCA9
PSAnNDgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRMZWZ0ID09ICc4JykgT0sKK0VYUEVDVEVE
ICh0d28ub2Zmc2V0VG9wID09ICc5OCcpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAn
bnVsbCcpIE9LCitFWFBFQ1RFRCAob25lLm9mZnNldExlZnQgPT0gJzU4JykgT0sKK0VYUEVDVEVE
IChvbmUub2Zmc2V0VG9wID09ICc0OCcpIE9LCitFWFBFQ1RFRCAodHdvLm9mZnNldExlZnQgPT0g
JzgnKSBPSworRVhQRUNURUQgKHR3by5vZmZzZXRUb3AgPT0gJzk4JykgT0sKK0VORCBPRiBURVNU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vo
b2xkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xk
ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMmZlZjM0MjQ0MjExYWJkOWM0NzQ4NWFiZTQ5NjYyMmRlYTVi
ZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1wbGFjZWhvbGRlci5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxzY3JpcHQgc3JjPSJmdWxsLXNj
cmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyNmbG9hdCB7IAorICAgIGhlaWdodDog
NTBweDsKKyAgICB3aWR0aDogNTBweDsKKyAgICBmbG9hdDogbGVmdDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZWQ7Cit9CisjY2xlYXIgeworICAgIGNsZWFyOmxlZnQ7Cit9Cisjb25lIHsgCisg
ICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyAKKyAgICBmbG9hdDogbGVmdDsKK30KKyN0
d28geyAKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuOworfQorPC9zdHlsZT4KKzxi
b2R5PgorPGRpdj5UaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgcG9zaXRp
b25zIG9mIHRoZSBibHVlIGFuZCBncmVlbiBkaXZzIGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSBy
ZWQgZGl2IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiAgUHJlc3MgPGJ1dHRvbiBvbmNsaWNrPSJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmxvYXQnKS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
Ij5nbyBmdWxsLXNjcmVlbjwvYT4gdG8gYmVnaW4uPC9kaXY+Cis8ZGl2IGlkPSJmbG9hdCI+PC9k
aXY+Cis8ZGl2IGlkPSJvbmUiPk9uZTwvZGl2PgorPGRpdiBpZD0iY2xlYXIiIC8+Cis8c3BhbiBp
ZD0idHdvIj5Ud288L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBvbmUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnb25lJyk7CisgICAgdmFyIHR3byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0d28nKTsKKworICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkg
aXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUu
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAgICAgIGxvZ1Jlc3Vs
dChmYWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVu
ZGVmaW5lZCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdmFy
IG9uZVN0YXRlID0geydvZmZzZXRMZWZ0Jzogb25lLm9mZnNldExlZnQsICdvZmZzZXRUb3AnOiBv
bmUub2Zmc2V0VG9wIH07CisgICAgICAgIHZhciB0d29TdGF0ZSA9IHsnb2Zmc2V0TGVmdCc6IHR3
by5vZmZzZXRMZWZ0LCAnb2Zmc2V0VG9wJzogdHdvLm9mZnNldFRvcCB9OworCisKKyAgICAgICAg
dmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihl
dmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9j
dW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworICAg
IAorICAgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Zsb2F0Jyk7CisK
KyAgICAgICAgdmFyIGRpdkVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dCIsIGRpdik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRMZWZ0Iiwgb25l
U3RhdGUub2Zmc2V0TGVmdCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoIm9uZS5vZmZzZXRU
b3AiLCBvbmVTdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0d28u
b2Zmc2V0TGVmdCIsIHR3b1N0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0d28ub2Zmc2V0VG9wIiwgdHdvU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrID0gY2FuY2VsbGVkRnVsbFNjcmVlbjsKKyAgICAgICAgICAgIHJ1bldpdGhLZXlEb3du
KGZ1bmN0aW9uKCl7ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpfSk7CisgICAgICAg
IH07CisgICAgCisgICAgICAgIHZhciBjYW5jZWxsZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCIsIG51bGwpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJvbmUub2Zmc2V0
TGVmdCIsIG9uZVN0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJv
bmUub2Zmc2V0VG9wIiwgb25lU3RhdGUub2Zmc2V0VG9wKTsKKyAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidHdvLm9mZnNldExlZnQiLCB0d29TdGF0ZS5vZmZzZXRMZWZ0KTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidHdvLm9mZnNldFRvcCIsIHR3b1N0YXRlLm9mZnNldFRvcCk7CisgICAg
ICAgICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
IH07CisKKyAgICAgICAgY2FsbGJhY2sgPSBkaXZFbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAg
cnVuV2l0aEtleURvd24oZnVuY3Rpb24oKXtkaXYud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKX0p
OworICAgIH0KKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhmNWExODg0NGI5OTMwNmM1Yzk0ZmJj
YjFmNjEzNGFlM2IxZjJhYzEuLjY4OTMyOWVmY2NlNDE0MjAyNjA0YzcyMTJlYjY1ZjZhNDEyNzZh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMS0wNi0wMSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGbGFzaCBvZiBicm9rZW4gcGFnZSB3aGVuIGV4aXRpbmcgZnVsbCBzY3Jl
ZW4gYXQgamVycnlzZWluZmVsZC5jb20KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYxODk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS85NTIyOTg1Pgor
CisgICAgICAgIFRlc3Q6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcGxhY2Vob2xkZXIuaHRtbAor
CisgICAgICAgIEVudGVyaW5nIGZ1bGwtc2NyZWVuIG1vZGUgaXMgY2F1c2luZyB0aGUgcGFnZSBs
YXlvdXQgdG8gY2hhbmdlIGJlY2F1c2UgdGhlIGZ1bGwtc2NyZWVuCisgICAgICAgIGVsZW1lbnQg
aXMgdGFrZW4gb3V0IG9mIHRoZSBub3JtYWwgZmxvdy4gIFRvIGNvdW50ZXJhY3QgdGhpcyBlZmZl
Y3QsIGluc2VydCBhIHBsYWNlaG9sZGVyCisgICAgICAgIGJsb2NrIGFzIGEgcGFyZW50IG9mIHRo
ZSBmdWxsLXNjcmVlbiByZW5kZXJlciB3aXRoIHRoZSBzYW1lIHNpemUgYW5kIHN0eWxlIGFzIHRo
ZSBmdWxsLXNjcmVlbgorICAgICAgICBlbGVtZW50IHByZS1mdWxsLXNjcmVlbi4KKworICAgICAg
ICBPbmx5IGNyZWF0ZSBhIHBsYWNlaG9sZGVyIGZvciBibG9jay1sZXZlbCBlbGVtZW50czsgdGhl
IHRlY2huaXF1ZSByZXF1aXJlZCBmb3IgaW5saW5lIGVsZW1lbnRzCisgICAgICAgIHdvdWxkIGJl
IHZhc3RseSBtb3JlIGNvbXBsaWNhdGVkLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudCk6IENyZWF0ZSBhIHBsYWNlaG9sZGVyCisgICAgICAgICAgICBiYXNlZCBvbiB0aGUg
c2l6ZSBhbmQgc3R5bGUgb2YgdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKTogUGVyc2lzdCB0aGUgcGxhY2Vo
b2xkZXIgc2l6ZSBhbmQgCisgICAgICAgICAgICBzdHlsZSBhY3Jvc3MgbmV3IHJlbmRlcmVycy4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChSZW5k
ZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKTogQWRkZWQgaXZhci4KKyAgICAgICAgKFJl
bmRlckZ1bGxTY3JlZW46OmRlc3Ryb3kpOiBNYWtlIHN1cmUgdG8gc2FmZWx5IGRlc3Ryb3kgb3Vy
IHBsYWNlaG9sZGVyLgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xk
ZXIpOiBBZGRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRnVsbFNjcmVlbjo6cGxhY2Vob2xkZXIpOiBJdmFyIGFjY2Vz
c29yLgorCiAyMDExLTA2LTAyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCAxYzdkNmRjYzBjYzYzZmIyY2M2YzE3MjJiYjNjNzVhNGM5MmZmNzg3Li40YmUz
NTQxYThiOGE5MTUzNDExZDBlNjVmZDY1ZTBmZWViNzk5ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTQ3ODQsNyArNDc4NCwxNSBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogICAgIEFTU0VSVChwYWdl
KCkgJiYgcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKIAogICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OwotICAgIAorCisgICAgLy8gT25seSBjcmVhdGUg
YSBwbGFjZWhvbGRlciBibG9jayBmb3IgYSBSZW5kZXJCb3gsIGFzIG9ubHkgYSBib3ggd2lsbCBo
YXZlIGEgZnJhbWVSZWN0LgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2Z1bGxTY3Jl
ZW5FbGVtZW50LT5yZW5kZXJlcigpOworICAgIGJvb2wgc2hvdWxkQ3JlYXRlUGxhY2Vob2xkZXIg
PSBtX2Z1bGxTY3JlZW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0JveCgpOworICAgIGlmIChzaG91
bGRDcmVhdGVQbGFjZWhvbGRlcikgeworICAgICAgICBtX3NhdmVkUGxhY2Vob2xkZXJGcmFtZVJl
Y3QgPSB0b1JlbmRlckJveChyZW5kZXJlciktPmZyYW1lUmVjdCgpOworICAgICAgICBtX3NhdmVk
UGxhY2Vob2xkZXJSZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShyZW5kZXJlci0+c3R5
bGUoKSk7CisgICAgfQorCiAgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQgIT0gZG9jdW1lbnRF
bGVtZW50KCkpCiAgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRldGFjaCgpOwogCkBAIC00
ODYxLDYgKzQ4NjksMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJl
bmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVyKQogICAgIGlmIChyZW5kZXJlciA9PSBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHJlbmRlcmVyICYmIG1fc2F2
ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlKSAKKyAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNl
aG9sZGVyKG1fc2F2ZWRQbGFjZWhvbGRlclJlbmRlclN0eWxlLnJlbGVhc2UoKSwgbV9zYXZlZFBs
YWNlaG9sZGVyRnJhbWVSZWN0KTsKKyAgICBlbHNlIGlmIChyZW5kZXJlciAmJiBtX2Z1bGxTY3Jl
ZW5SZW5kZXJlciAmJiBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxhY2Vob2xkZXIoKSkgeworICAg
ICAgICBSZW5kZXJCbG9jayogcGxhY2Vob2xkZXIgPSBtX2Z1bGxTY3JlZW5SZW5kZXJlci0+cGxh
Y2Vob2xkZXIoKTsKKyAgICAgICAgcmVuZGVyZXItPmNyZWF0ZVBsYWNlaG9sZGVyKFJlbmRlclN0
eWxlOjpjbG9uZShwbGFjZWhvbGRlci0+c3R5bGUoKSksIHBsYWNlaG9sZGVyLT5mcmFtZVJlY3Qo
KSk7CisgICAgfQorCiAgICAgaWYgKG1fZnVsbFNjcmVlblJlbmRlcmVyKQogICAgICAgICBtX2Z1
bGxTY3JlZW5SZW5kZXJlci0+ZGVzdHJveSgpOwogICAgIEFTU0VSVCghbV9mdWxsU2NyZWVuUmVu
ZGVyZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwZTUxNDc5NTY3MjljMDY2YzRmYzMzZGUx
YTFhODExN2UwNmQ3OTQyLi45MjdiNDY1Yjk2MzU5MmNkNWU5OGE4NjA5ZjE2ZjhiZTExNmE2Njg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRPTVRp
bWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCiAjaW5jbHVkZSAiSWNvblVS
TC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRl
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKQEAgLTEzNzEsNiArMTM3Miw4IEBAIHByaXZhdGU6CiAgICAgVGltZXI8RG9j
dW1lbnQ+IG1fZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXI7CiAgICAgRGVxdWU8UmVmUHRyPEVs
ZW1lbnQ+ID4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZTsKICAgICBib29sIG1f
aXNBbmltYXRpbmdGdWxsU2NyZWVuOworICAgIEludFJlY3QgbV9zYXZlZFBsYWNlaG9sZGVyRnJh
bWVSZWN0OworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zYXZlZFBsYWNlaG9sZGVyUmVuZGVy
U3R5bGU7CiAjZW5kaWYKIAogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA4NWFhNzUxMjRhOTIy
NDIwMTg1YjY1YWM3YzUwNTg5NDA3MjhjNDBjLi42OTNmZTUyNTljNjNmYjZmODA4M2Y1ODZiYzcx
ZWQ1ZTljYjNmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJlckZhY3Rv
cnk6OmNyZWF0ZVJlbmRlcmVyQW5kU3R5bGUoKQogfQogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQotc3RhdGljIFJlbmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihS
ZW5kZXJPYmplY3QqIG9iamVjdCwgRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGljIFJlbmRlck9i
amVjdCogd3JhcFdpdGhSZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0LCBEb2N1
bWVudCogZG9jdW1lbnQpCiB7CiAgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbHNjcmVlblJlbmRl
cmVyID0gbmV3IChkb2N1bWVudC0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyRnVsbFNjcmVlbihkb2N1
bWVudCk7CiAgICAgZnVsbHNjcmVlblJlbmRlcmVyLT5zZXRTdHlsZShSZW5kZXJGdWxsU2NyZWVu
OjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKSk7CkBAIC0yMzcsNiArMjM3LDggQEAgc3RhdGljIFJl
bmRlckZ1bGxTY3JlZW4qIHdyYXBXaXRoUmVuZGVyRnVsbFNjcmVlbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgRG9jdW1lbnQKICAgICBpZiAob2JqZWN0KQogICAgICAgICBmdWxsc2NyZWVuUmVuZGVy
ZXItPmFkZENoaWxkKG9iamVjdCk7CiAgICAgZG9jdW1lbnQtPnNldEZ1bGxTY3JlZW5SZW5kZXJl
cihmdWxsc2NyZWVuUmVuZGVyZXIpOworICAgIGlmIChmdWxsc2NyZWVuUmVuZGVyZXItPnBsYWNl
aG9sZGVyKCkpCisgICAgICAgIHJldHVybiBmdWxsc2NyZWVuUmVuZGVyZXItPnBsYWNlaG9sZGVy
KCk7CiAgICAgcmV0dXJuIGZ1bGxzY3JlZW5SZW5kZXJlcjsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4IDk2ODhiYTAwNTQ5
YmY0ZWE4N2I2MTJmYzZiY2E5MTJhMDg2NTQyNmQuLjFlYTI3YmViOWE0MGZlZDNiOTYwZDQ3Y2Q2
ZjQzNzgwNmVjMzk4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVs
bFNjcmVlbi5jcHAKQEAgLTM2LDggKzM2LDIyIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCitSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKE5vZGUqIG5vZGUpIAorICAg
IDogUmVuZGVyRmxleGlibGVCb3gobm9kZSkgCisgICAgLCBtX3BsYWNlaG9sZGVyKDApCit7IAor
ICAgIHNldFJlcGxhY2VkKGZhbHNlKTsgCit9CisKIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6ZGVz
dHJveSgpCiB7CisgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKKyAgICAgICAgcmVtb3ZlKCk7Cisg
ICAgICAgIGlmICghbV9wbGFjZWhvbGRlci0+YmVpbmdEZXN0cm95ZWQoKSkKKyAgICAgICAgICAg
IG1fcGxhY2Vob2xkZXItPmRlc3Ryb3koKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7Cisg
ICAgfQorCiAgICAgLy8gUmVuZGVyT2JqZWN0cyBhcmUgdW5yZXRhaW5lZCwgc28gbm90aWZ5IHRo
ZSBkb2N1bWVudCAod2hpY2ggaG9sZHMgYSBwb2ludGVyIHRvIGEgUmVuZGVyRnVsbFNjcmVlbikK
ICAgICAvLyBpZiBpdCdzIFJlbmRlckZ1bGxTY3JlZW4gaXMgZGVzdHJveWVkLgogICAgIGlmIChk
b2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZ1bGxTY3JlZW5SZW5kZXJlcigpID09IHRoaXMpCkBA
IC03Miw0ICs4NiwyNSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJGdWxsU2NyZWVu
OjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQogICAgIHJldHVybiBmdWxsc2NyZWVuU3R5bGUucmVs
ZWFzZSgpOwogfQogCit2b2lkIFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyKFBh
c3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3QpCit7
CisgICAgaWYgKHN0eWxlLT53aWR0aCgpLmlzQXV0bygpKQorICAgICAgICBzdHlsZS0+c2V0V2lk
dGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgpLCBGaXhlZCkpOworICAgIGlmIChzdHlsZS0+aGVp
Z2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVj
dC5oZWlnaHQoKSwgRml4ZWQpKTsKKworICAgIGlmICghbV9wbGFjZWhvbGRlcikgeworICAgICAg
ICBtX3BsYWNlaG9sZGVyID0gbmV3IChkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJC
bG9jayhkb2N1bWVudCgpKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U3R5bGUoc3R5bGUp
OworICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRJc0Fub255bW91cyhmYWxzZSk7CisgICAgICAg
IGlmIChwYXJlbnQoKSkgeworICAgICAgICAgICAgcGFyZW50KCktPmFkZENoaWxkKG1fcGxhY2Vo
b2xkZXIsIHRoaXMpOworICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgIH0KKyAgICAgICAg
bV9wbGFjZWhvbGRlci0+YWRkQ2hpbGQodGhpcyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGxh
Y2Vob2xkZXItPnNldFN0eWxlKHN0eWxlKTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRGcmFtZVJl
Y3QoZnJhbWVSZWN0KTsKK30KKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uaAppbmRleCA5YmExN2E3MDE3ZDUwOTAzY2U4NzI2NDRkZWVmMmY3NzI2
YzcxMTNlLi4wYTg3MThjMmE3YjZjNWY3NDEzNmI4YzMwZjUyMzI0OTU4NzNlOWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTMzLDE1ICszMywx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlckZ1bGxTY3JlZW4gOiBwdWJs
aWMgUmVuZGVyRmxleGlibGVCb3ggewogcHVibGljOgotICAgIFJlbmRlckZ1bGxTY3JlZW4oTm9k
ZSogbm9kZSkgOiBSZW5kZXJGbGV4aWJsZUJveChub2RlKSB7IHNldFJlcGxhY2VkKGZhbHNlKTsg
fQorICAgIFJlbmRlckZ1bGxTY3JlZW4oTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
KCk7CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyRnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJl
dHVybiAiUmVuZGVyRnVsbFNjcmVlbiI7IH0KLSAgICAKKworICAgIFJlbmRlckJsb2NrKiBwbGFj
ZWhvbGRlcigpIHsgcmV0dXJuIG1fcGxhY2Vob2xkZXI7IH0KKyAgICB2b2lkIGNyZWF0ZVBsYWNl
aG9sZGVyKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBJbnRSZWN0JiBmcmFtZVJlY3Qp
OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZ1bGxTY3JlZW5T
dHlsZSgpOwogICAgIAogcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FuaW1hdGluZzsKKyAgICBS
ZW5kZXJCbG9jayogbV9wbGFjZWhvbGRlcjsKIH07CiAgICAgCiBpbmxpbmUgUmVuZGVyRnVsbFNj
cmVlbiogdG9SZW5kZXJGdWxsU2NyZWVuKFJlbmRlck9iamVjdCogb2JqZWN0KQo=
</data>
<flag name="review"
          id="89526"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>