<?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>25646</bug_id>
          
          <creation_ts>2009-05-08 09:47:54 -0700</creation_ts>
          <short_desc>[GTK] onscroll event is never sent</short_desc>
          <delta_ts>2009-05-26 22:27:18 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120432</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-08 09:47:54 -0700</bug_when>
    <thetext>The current main frame/frame view of WebKitWebView is currently never sending a onscroll event. This is due the ScrollView::valueChanged code being mostly dead code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120433</commentid>
    <comment_count>1</comment_count>
      <attachid>30133</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-08 09:48:58 -0700</bug_when>
    <thetext>Created attachment 30133
Make scrolling go through Scrollbar to get the ScrollbarClient invoked

proposed approach for the problem, only halfway through though. Please comment anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120520</commentid>
    <comment_count>2</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-09 10:46:35 -0700</bug_when>
    <thetext>&gt;         Using the wrapped GtkAdjustment approach we might be able to just have
&gt;         special case for the ScrollView::createScrollbar to create these
&gt;         scrollbars...
[...]
&gt; PassRefPtr&lt;ScrollbarGtk&gt; ScrollbarGtk::createScrollbar(ScrollbarClient* client, ScrollbarOrientation orientation, GtkAdjustment* adj)
&gt; {
&gt;     return adoptRef(new ScrollbarGtk(client, orientation, adj));
&gt; }

And using this we can ditch the createNativeScrollbar, you mean?

&gt; -        /*
&gt; -         * disable the scrollbars (if we have any) as the GtkAdjustment over
&gt; -         */

I like the patch in general, it&apos;s a good cleanup, but this comment has really blown off my mind while I was reading through this code last week, and I believe you could perhaps make it clearer at this point why we need to disable the scrollbars here:

&gt; +    } else {
&gt; +        m_horizontalAdjustment = ScrollbarGtk::createScrollbar(this, HorizontalScrollbar, hadj);
&gt; +        m_verticalAdjustment = ScrollbarGtk::createScrollbar(this, VerticalScrollbar, vadj);
&gt;          setHasVerticalScrollbar(false);
&gt;          setHasHorizontalScrollbar(false);

[...]

&gt; +        m_horizontalAdjustment-&gt;setSteps(visibleWidth() / 10.0, visibleWidth() * 0.9, 1);
&gt; +        m_horizontalAdjustment-&gt;setProportion(visibleWidth(), contentsWidth());
&gt; +        m_horizontalAdjustment-&gt;setCurrentPos(scroll.width());

Xan has done some work recently on the scrolling code to use the WebCore constants instead of magic numbers, which I think we should use here as well; See r43390.

&gt; +        m_verticalAdjustment-&gt;setSteps(visibleHeight() / 10.0, visibleHeight() * 0.9, 1);
&gt; +        m_verticalAdjustment-&gt;setProportion(visibleHeight(), contentsHeight());
&gt; +        m_verticalAdjustment-&gt;setCurrentPos(scroll.height());

Same here.

&gt; +// Wrap a GtkAdjustment into a WebCore::Scrollbar to properly use the ScrollbarClient
&gt; +// for things like valueChanged.
&gt; +ScrollbarGtk::ScrollbarGtk(ScrollbarClient* client, ScrollbarOrientation orientation, GtkAdjustment* adjustment)
&gt; +    : Scrollbar(client, orientation, RegularScrollbar)
&gt; +    , m_adjustment(adjustment)
&gt; +{
&gt; +    // reset the adjustment to a known state
&gt; +    m_adjustment-&gt;lower = 0;
&gt; +    if (m_adjustment-&gt;value != 0) {
&gt; +        m_adjustment-&gt;value = 0;
&gt; +        gtk_adjustment_value_changed(m_adjustment);
&gt; +    }

Is this wanted? I&apos;m thinking of a javascript call that forces a scrollbar to appear, by using the overflow CSS property, for instance. Will it make the scrolled content go to the top?

&gt; +    // We have nothing to show as we are solely operating on the GtkAdjustment
&gt; +    resize(0, 0);

I don&apos;t get it =(.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120555</commentid>
    <comment_count>3</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-10 10:59:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; And using this we can ditch the createNativeScrollbar, you mean?
&gt; 
&gt; &gt; -        /*
&gt; &gt; -         * disable the scrollbars (if we have any) as the GtkAdjustment over
&gt; &gt; -         */
&gt; 
&gt; I like the patch in general, it&apos;s a good cleanup, but this comment has really
&gt; blown off my mind while I was reading through this code last week, and I
&gt; believe you could perhaps make it clearer at this point why we need to disable
&gt; the scrollbars here:

That&apos;s because when you set the adjustments you are telling the View that you&apos;ll handle the scrolling yourself (for example, through a GtkScrolledWindow), so you want to disable WebKit&apos;s scrollbars. I&apos;m not sure why Holger is removing the comment though...


&gt; &gt; +        m_horizontalAdjustment-&gt;setSteps(visibleWidth() / 10.0, visibleWidth() * 0.9, 1);
&gt; &gt; +        m_horizontalAdjustment-&gt;setProportion(visibleWidth(), contentsWidth());
&gt; &gt; +        m_horizontalAdjustment-&gt;setCurrentPos(scroll.width());
&gt; 
&gt; Xan has done some work recently on the scrolling code to use the WebCore
&gt; constants instead of magic numbers, which I think we should use here as well;
&gt; See r43390.

/me nods (although the WebCore constants are more &apos;magic numbers&apos; than what we were using :D)

I&apos;ll try to look at this tomorrow!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120600</commentid>
    <comment_count>4</comment_count>
      <attachid>30172</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-10 22:46:12 -0700</bug_when>
    <thetext>Created attachment 30172
Completely kill the &quot;adjustment&quot;

The only special case we have in GTK+ after this patch is that we have a custom ::createScrollbar implementation that will create a ScrollbarGtk to operate on the external GtkAdjustment. This way we will go through the normal Scrollbar paths and fix the sendScrollEvent bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123005</commentid>
    <comment_count>5</comment_count>
      <attachid>30172</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-24 23:28:48 -0700</bug_when>
    <thetext>Comment on attachment 30172
Completely kill the &quot;adjustment&quot;

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123233</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-26 22:27:18 -0700</bug_when>
    <thetext>Landed in r44177.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30133</attachid>
            <date>2009-05-08 09:48:58 -0700</date>
            <delta_ts>2009-05-10 22:46:12 -0700</delta_ts>
            <desc>Make scrolling go through Scrollbar to get the ScrollbarClient invoked</desc>
            <filename>0001--GTK-Send-onscroll-events-for-the-main-FrameView.patch</filename>
            <type>text/plain</type>
            <size>16867</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA3M2IyMGY2MTJhZDU2NGI2NGQwZjViOWIyYTZjZGQ3Njc3ZWZmNDgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IEZyaSwgOCBNYXkgMjAwOSAxODo0NDoxMCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIFtHVEtdIFNlbmQgb25zY3JvbGwgZXZlbnRzIGZvciB0aGUgbWFpbiBGcmFtZVZpZXcK
CjIwMDktMDUtMDggIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5v
cmc+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBDdXJyZW50
bHkgb25seSBtYW51YWwgdGVzdGluZyBpcyBwb3NzaWJsZQoKICAgICAgICBXZWJLaXQvR3RrKyBp
cyBjdXJyZW50bHkgbm90IHNlbmRpbmcgYW55IG9uc2Nyb2xsCiAgICAgICAgZXZlbnRzLiBUaGlz
IGlzIGR1ZSB0aGUgc2Nyb2xsYmFyIGltcGxlbWVudGF0aW9uIGFuZCB0aGF0CiAgICAgICAgdGhl
IFNjcm9sbGJhckNsaWVudDo6dmFsdWVDaGFuZ2VkIGltcGxlbWVudGVkIGJ5IEZyYW1lVmlldwog
ICAgICAgIGlzIG5ldmVyIGNhbGxlZC4KCiAgICAgICAgQ2hhbmdlIFNjcm9sbGJhckd0ayB0byB0
YWtlIGEgR3RrQWRqdXN0bWVudCBhbmQgaW4gdGhpcyBjYXNlCiAgICAgICAgbm90IGNyZWF0ZSBh
IEd0a1Njcm9sbGJhciBhcm91bmQgdGhpcy4gVGhpcyBpcyB1c2VkIGJ5IFNjcm9sbFZpZXcKICAg
ICAgICB0byB3cmFwIHRoZSBleHRlcm5hbCBHdGtBZGp1c3RtZW50IGFuZCBtYWtlIHNjcm9sbGlu
ZyBnbyB0aHJvdWdoCiAgICAgICAgdGhlIG5vcm1hbCBTY3JvbGxiYXIgcGF0aHMuIENoYW5nZSBT
Y3JvbGxWaWV3OjptX2hvcml6b250YWxBZGp1c3RtZW50CiAgICAgICAgYW5kIFNjcm9sbFZpZXc6
Om1fdmVydGljYWxBZGp1c3RtZW50IHRvIGhvbGQgdGhlIHdyYXBwZWQgR3RrQWRqdXN0bWVudC4K
CiAgICAgICAgQ2hhbmdlIFNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZCB0byB1c2UgdGhlIFNjcm9s
bGJhcjo6b3JpZW50YXRpb24oKQogICAgICAgIHRvIGZpZ3VyZSBvdXQgdGhlIG9yaWVudGF0aW9u
IGFuZCBkaXJlY3Rpb24gdG8gc2Nyb2xsLgoKICAgICAgICBVc2luZyB0aGUgd3JhcHBlZCBHdGtB
ZGp1c3RtZW50IGFwcHJvYWNoIHdlIG1pZ2h0IGJlIGFibGUgdG8ganVzdCBoYXZlCiAgICAgICAg
c3BlY2lhbCBjYXNlIGZvciB0aGUgU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyIHRvIGNyZWF0
ZSB0aGVzZQogICAgICAgIHNjcm9sbGJhcnMuLi4KCiAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxW
aWV3LmNwcDoKICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkKToKICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3Jv
bGxWaWV3R3RrLmNwcDoKICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1Jbml0
KToKICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1EZXN0cm95KToKICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMpOgogICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZUhvcml6b250YWxBZGp1c3RtZW50KToKICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1IYW5kbGVWZXJ0aWNhbEFkanVzdG1l
bnQpOgogICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhc0hvcml6b250YWxB
ZGp1c3RtZW50KToKICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1IYXNWZXJ0
aWNhbEFkanVzdG1lbnQpOgogICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHA6
CiAgICAgICAgKFNjcm9sbGJhckd0azo6Y3JlYXRlU2Nyb2xsYmFyKToKICAgICAgICAoU2Nyb2xs
YmFyR3RrOjpTY3JvbGxiYXJHdGspOgogICAgICAgIChTY3JvbGxiYXJHdGs6On5TY3JvbGxiYXJH
dGspOgogICAgICAgIChTY3JvbGxiYXJHdGs6OmZyYW1lUmVjdHNDaGFuZ2VkKToKICAgICAgICAo
U2Nyb2xsYmFyR3RrOjp1cGRhdGVUaHVtYlBvc2l0aW9uKToKICAgICAgICAqIHBsYXRmb3JtL2d0
ay9TY3JvbGxiYXJHdGsuaDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICB8ICAgNDMgKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5j
cHAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmggICAgICAg
ICAgfCAgICA2ICstCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcCB8ICAg
OTUgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhckd0ay5jcHAgIHwgICA0NCArKysrKysrKysrKysrLS0KIFdlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhckd0ay5oICAgIHwgICAgNSArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTAg
aW5zZXJ0aW9ucygrKSwgODcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWJkMjlkLi4xMmYwYzFmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ2IEBACisyMDA5LTA1LTA4ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNl
bGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEN1cnJlbnRseSBvbmx5IG1hbnVhbCB0ZXN0aW5nIGlzIHBvc3NpYmxlCisKKyAgICAgICAg
V2ViS2l0L0d0aysgaXMgY3VycmVudGx5IG5vdCBzZW5kaW5nIGFueSBvbnNjcm9sbAorICAgICAg
ICBldmVudHMuIFRoaXMgaXMgZHVlIHRoZSBzY3JvbGxiYXIgaW1wbGVtZW50YXRpb24gYW5kIHRo
YXQKKyAgICAgICAgdGhlIFNjcm9sbGJhckNsaWVudDo6dmFsdWVDaGFuZ2VkIGltcGxlbWVudGVk
IGJ5IEZyYW1lVmlldworICAgICAgICBpcyBuZXZlciBjYWxsZWQuCisKKyAgICAgICAgQ2hhbmdl
IFNjcm9sbGJhckd0ayB0byB0YWtlIGEgR3RrQWRqdXN0bWVudCBhbmQgaW4gdGhpcyBjYXNlCisg
ICAgICAgIG5vdCBjcmVhdGUgYSBHdGtTY3JvbGxiYXIgYXJvdW5kIHRoaXMuIFRoaXMgaXMgdXNl
ZCBieSBTY3JvbGxWaWV3CisgICAgICAgIHRvIHdyYXAgdGhlIGV4dGVybmFsIEd0a0FkanVzdG1l
bnQgYW5kIG1ha2Ugc2Nyb2xsaW5nIGdvIHRocm91Z2gKKyAgICAgICAgdGhlIG5vcm1hbCBTY3Jv
bGxiYXIgcGF0aHMuIENoYW5nZSBTY3JvbGxWaWV3OjptX2hvcml6b250YWxBZGp1c3RtZW50Cisg
ICAgICAgIGFuZCBTY3JvbGxWaWV3OjptX3ZlcnRpY2FsQWRqdXN0bWVudCB0byBob2xkIHRoZSB3
cmFwcGVkIEd0a0FkanVzdG1lbnQuCisKKyAgICAgICAgQ2hhbmdlIFNjcm9sbFZpZXc6OnZhbHVl
Q2hhbmdlZCB0byB1c2UgdGhlIFNjcm9sbGJhcjo6b3JpZW50YXRpb24oKQorICAgICAgICB0byBm
aWd1cmUgb3V0IHRoZSBvcmllbnRhdGlvbiBhbmQgZGlyZWN0aW9uIHRvIHNjcm9sbC4KKworICAg
ICAgICBVc2luZyB0aGUgd3JhcHBlZCBHdGtBZGp1c3RtZW50IGFwcHJvYWNoIHdlIG1pZ2h0IGJl
IGFibGUgdG8ganVzdCBoYXZlCisgICAgICAgIHNwZWNpYWwgY2FzZSBmb3IgdGhlIFNjcm9sbFZp
ZXc6OmNyZWF0ZVNjcm9sbGJhciB0byBjcmVhdGUgdGhlc2UKKyAgICAgICAgc2Nyb2xsYmFycy4u
LgorCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2YWx1ZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnNldEd0a0FkanVzdG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBs
YXRmb3JtSGFuZGxlSG9yaXpvbnRhbEFkanVzdG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGxhdGZvcm1IYW5kbGVWZXJ0aWNhbEFkanVzdG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1IYXNIb3Jpem9udGFsQWRqdXN0bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhc1ZlcnRpY2FsQWRqdXN0bWVudCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHA6CisgICAgICAgIChTY3Jv
bGxiYXJHdGs6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChTY3JvbGxiYXJHdGs6OlNjcm9s
bGJhckd0ayk6CisgICAgICAgIChTY3JvbGxiYXJHdGs6On5TY3JvbGxiYXJHdGspOgorICAgICAg
ICAoU2Nyb2xsYmFyR3RrOjpmcmFtZVJlY3RzQ2hhbmdlZCk6CisgICAgICAgIChTY3JvbGxiYXJH
dGs6OnVwZGF0ZVRodW1iUG9zaXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJHdGsuaDoKKwogMjAwOS0wNS0wNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZp
ZXJzLmNvbT4KIAogICAgICAgICB3eCBidWlsZCBmaXgsIGZpeGVzIGZvciB3eCB0cnVuayBidWls
ZHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAyOGZlMWM1Li42MDQzNjIzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKQEAgLTIzOCw5ICsyMzgsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OnZh
bHVlQ2hhbmdlZChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAvLyBGaWd1cmUgb3V0IGlmIHdl
IHJlYWxseSBtb3ZlZC4KICAgICBJbnRTaXplIG5ld09mZnNldCA9IG1fc2Nyb2xsT2Zmc2V0Owog
ICAgIGlmIChzY3JvbGxiYXIpIHsKLSAgICAgICAgaWYgKHNjcm9sbGJhciA9PSBtX2hvcml6b250
YWxTY3JvbGxiYXIpCisgICAgICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcikKICAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzY3JvbGxi
YXItPnZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChzY3JvbGxiYXIgPT0gbV92ZXJ0aWNhbFNj
cm9sbGJhcikKKyAgICAgICAgZWxzZSBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZl
cnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldEhlaWdodChzY3JvbGxi
YXItPnZhbHVlKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmggYi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCA3ODJjNTQ0Li42
OGNkYmM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDYgKzQxLDcgQEAKIAogI2lm
IFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HdGtBZGp1c3RtZW50IEd0a0FkanVzdG1l
bnQ7CisjaW5jbHVkZSAiU2Nyb2xsYmFyR3RrLmgiCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdY
KQpAQCAtMzA1LDggKzMwNyw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogcHVibGlj
OgogICAgIHZvaWQgc2V0R3RrQWRqdXN0bWVudHMoR3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRq
dXN0bWVudCogdmFkaik7Ci0gICAgR3RrQWRqdXN0bWVudCogbV9ob3Jpem9udGFsQWRqdXN0bWVu
dDsKLSAgICBHdGtBZGp1c3RtZW50KiBtX3ZlcnRpY2FsQWRqdXN0bWVudDsKKyAgICBSZWZQdHI8
U2Nyb2xsYmFyR3RrPiBtX2hvcml6b250YWxBZGp1c3RtZW50OworICAgIFJlZlB0cjxTY3JvbGxi
YXJHdGs+IG1fdmVydGljYWxBZGp1c3RtZW50OwogICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNv
bnN0IEludFNpemUmIG9mZnNldCkgeyBtX3Njcm9sbE9mZnNldCA9IG9mZnNldDsgfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKaW5kZXggYjg3Y2JjNC4uN2Q4
NTM5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIENvbXB1dGVy
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFl
bCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQotICogQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRk
LgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC00Niw0NSArNDYsMTQgQEAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBhZGp1
c3RtZW50Q2hhbmdlZChHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50LCBncG9pbnRlciBfdGhhdCkK
LXsKLSAgICBTY3JvbGxWaWV3KiB0aGF0ID0gcmVpbnRlcnByZXRfY2FzdDxTY3JvbGxWaWV3Kj4o
X3RoYXQpOwotCi0gICAgLy8gRmlndXJlIG91dCBpZiB3ZSByZWFsbHkgbW92ZWQuCi0gICAgSW50
U2l6ZSBuZXdPZmZzZXQgPSB0aGF0LT5zY3JvbGxPZmZzZXQoKTsKLSAgICBpZiAoYWRqdXN0bWVu
dCA9PSB0aGF0LT5tX2hvcml6b250YWxBZGp1c3RtZW50KQotICAgICAgICBuZXdPZmZzZXQuc2V0
V2lkdGgoc3RhdGljX2Nhc3Q8aW50PihndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqdXN0bWVu
dCkpKTsKLSAgICBlbHNlIGlmIChhZGp1c3RtZW50ID09IHRoYXQtPm1fdmVydGljYWxBZGp1c3Rt
ZW50KQotICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0KHN0YXRpY19jYXN0PGludD4oZ3RrX2Fk
anVzdG1lbnRfZ2V0X3ZhbHVlKGFkanVzdG1lbnQpKSk7Ci0KLSAgICBJbnRTaXplIHNjcm9sbERl
bHRhID0gbmV3T2Zmc2V0IC0gdGhhdC0+c2Nyb2xsT2Zmc2V0KCk7Ci0gICAgaWYgKHNjcm9sbERl
bHRhID09IEludFNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRoYXQtPnNldFNjcm9sbE9m
ZnNldChuZXdPZmZzZXQpOwotCi0gICAgaWYgKHRoYXQtPnNjcm9sbGJhcnNTdXBwcmVzc2VkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHRoYXQtPnNjcm9sbENvbnRlbnRzKHNjcm9sbERlbHRh
KTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQogewotICAgIG1faG9yaXpv
bnRhbEFkanVzdG1lbnQgPSAwOwotICAgIG1fdmVydGljYWxBZGp1c3RtZW50ID0gMDsKIH0KIAog
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybURlc3Ryb3koKQogewotICAgIGlmIChtX2hvcml6b250
YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlf
ZnVuYyhHX09CSkVDVChtX2hvcml6b250YWxBZGp1c3RtZW50KSwgKGdwb2ludGVyKWFkanVzdG1l
bnRDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYobV9ob3Jpem9udGFsQWRq
dXN0bWVudCk7Ci0gICAgfQotCi0gICAgaWYgKG1fdmVydGljYWxBZGp1c3RtZW50KSB7Ci0gICAg
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChtX3ZlcnRp
Y2FsQWRqdXN0bWVudCksIChncG9pbnRlcilhZGp1c3RtZW50Q2hhbmdlZCwgdGhpcyk7Ci0gICAg
ICAgIGdfb2JqZWN0X3VucmVmKG1fdmVydGljYWxBZGp1c3RtZW50KTsKLSAgICB9CisgICAgbV9o
b3Jpem9udGFsQWRqdXN0bWVudC5jbGVhcigpOworICAgIG1fdmVydGljYWxBZGp1c3RtZW50LmNs
ZWFyKCk7CiB9CiAKIC8qCkBAIC05NSwyOCArNjQsMTQgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRH
dGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1c3RtZW50KiB2YWRqKQog
ewogICAgIEFTU0VSVCghaGFkaiA9PSAhdmFkaik7CiAKLSAgICBpZiAobV9ob3Jpem9udGFsQWRq
dXN0bWVudCkgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMo
R19PQkpFQ1QobV9ob3Jpem9udGFsQWRqdXN0bWVudCksIChncG9pbnRlcilhZGp1c3RtZW50Q2hh
bmdlZCwgdGhpcyk7Ci0gICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhHX09CSkVDVChtX3ZlcnRpY2FsQWRqdXN0bWVudCksIChncG9pbnRlcilhZGp1c3RtZW50Q2hh
bmdlZCwgdGhpcyk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKG1faG9yaXpvbnRhbEFkanVzdG1l
bnQpOwotICAgICAgICBnX29iamVjdF91bnJlZihtX3ZlcnRpY2FsQWRqdXN0bWVudCk7Ci0gICAg
fQotCi0gICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudCA9IGhhZGo7Ci0gICAgbV92ZXJ0aWNhbEFk
anVzdG1lbnQgPSB2YWRqOwotCi0gICAgaWYgKG1faG9yaXpvbnRhbEFkanVzdG1lbnQpIHsKLSAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChtX2hvcml6b250YWxBZGp1c3RtZW50LCAidmFsdWUtY2hh
bmdlZCIsIEdfQ0FMTEJBQ0soYWRqdXN0bWVudENoYW5nZWQpLCB0aGlzKTsKLSAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtX3ZlcnRpY2FsQWRqdXN0bWVudCwgInZhbHVlLWNoYW5nZWQiLCBHX0NB
TExCQUNLKGFkanVzdG1lbnRDaGFuZ2VkKSwgdGhpcyk7Ci0KLSAgICAgICAgLyoKLSAgICAgICAg
ICogZGlzYWJsZSB0aGUgc2Nyb2xsYmFycyAoaWYgd2UgaGF2ZSBhbnkpIGFzIHRoZSBHdGtBZGp1
c3RtZW50IG92ZXIKLSAgICAgICAgICovCisgICAgaWYgKCFoYWRqKSB7CisgICAgICAgIG1faG9y
aXpvbnRhbEFkanVzdG1lbnQuY2xlYXIoKTsKKyAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQu
Y2xlYXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50ID0g
U2Nyb2xsYmFyR3RrOjpjcmVhdGVTY3JvbGxiYXIodGhpcywgSG9yaXpvbnRhbFNjcm9sbGJhciwg
aGFkaik7CisgICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50ID0gU2Nyb2xsYmFyR3RrOjpjcmVh
dGVTY3JvbGxiYXIodGhpcywgVmVydGljYWxTY3JvbGxiYXIsIHZhZGopOwogICAgICAgICBzZXRI
YXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSk7CiAgICAgICAgIHNldEhhc0hvcml6b250YWxTY3Jv
bGxiYXIoZmFsc2UpOwotCi0gICAgICAgIGdfb2JqZWN0X3JlZihtX2hvcml6b250YWxBZGp1c3Rt
ZW50KTsKLSAgICAgICAgZ19vYmplY3RfcmVmKG1fdmVydGljYWxBZGp1c3RtZW50KTsKICAgICB9
CiAKICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKQEAgLTE0NiwxNyArMTAx
LDkgQEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVJlbW92ZUNoaWxkKFdpZGdldCogY2hpbGQp
CiBib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSGFuZGxlSG9yaXpvbnRhbEFkanVzdG1lbnQoY29u
c3QgSW50U2l6ZSYgc2Nyb2xsKQogewogICAgIGlmIChtX2hvcml6b250YWxBZGp1c3RtZW50KSB7
Ci0gICAgICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPnBhZ2Vfc2l6ZSA9IHZpc2libGVXaWR0
aCgpOwotICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT5zdGVwX2luY3JlbWVudCA9IHZp
c2libGVXaWR0aCgpIC8gMTAuMDsKLSAgICAgICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudC0+cGFn
ZV9pbmNyZW1lbnQgPSB2aXNpYmxlV2lkdGgoKSAqIDAuOTsKLSAgICAgICAgbV9ob3Jpem9udGFs
QWRqdXN0bWVudC0+bG93ZXIgPSAwOwotICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT51
cHBlciA9IGNvbnRlbnRzV2lkdGgoKTsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZCht
X2hvcml6b250YWxBZGp1c3RtZW50KTsKLQotICAgICAgICBpZiAobV9ob3Jpem9udGFsQWRqdXN0
bWVudC0+dmFsdWUgIT0gc2Nyb2xsLndpZHRoKCkpIHsKLSAgICAgICAgICAgIG1faG9yaXpvbnRh
bEFkanVzdG1lbnQtPnZhbHVlID0gc2Nyb2xsLndpZHRoKCk7Ci0gICAgICAgICAgICBndGtfYWRq
dXN0bWVudF92YWx1ZV9jaGFuZ2VkKG1faG9yaXpvbnRhbEFkanVzdG1lbnQpOwotICAgICAgICB9
CisgICAgICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPnNldFN0ZXBzKHZpc2libGVXaWR0aCgp
IC8gMTAuMCwgdmlzaWJsZVdpZHRoKCkgKiAwLjksIDEpOworICAgICAgICBtX2hvcml6b250YWxB
ZGp1c3RtZW50LT5zZXRQcm9wb3J0aW9uKHZpc2libGVXaWR0aCgpLCBjb250ZW50c1dpZHRoKCkp
OworICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT5zZXRDdXJyZW50UG9zKHNjcm9sbC53
aWR0aCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
QEAgLTE2NSwxNyArMTEyLDkgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZUhvcml6
b250YWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmIHNjcm9sbCkKIGJvb2wgU2Nyb2xsVmlldzo6
cGxhdGZvcm1IYW5kbGVWZXJ0aWNhbEFkanVzdG1lbnQoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKQog
ewogICAgIGlmIChtX3ZlcnRpY2FsQWRqdXN0bWVudCkgewotICAgICAgICBtX3ZlcnRpY2FsQWRq
dXN0bWVudC0+cGFnZV9zaXplID0gdmlzaWJsZUhlaWdodCgpOwotICAgICAgICBtX3ZlcnRpY2Fs
QWRqdXN0bWVudC0+c3RlcF9pbmNyZW1lbnQgPSB2aXNpYmxlSGVpZ2h0KCkgLyAxMC4wOwotICAg
ICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+cGFnZV9pbmNyZW1lbnQgPSB2aXNpYmxlSGVpZ2h0
KCkgKiAwLjk7Ci0gICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50LT5sb3dlciA9IDA7Ci0gICAg
ICAgIG1fdmVydGljYWxBZGp1c3RtZW50LT51cHBlciA9IGNvbnRlbnRzSGVpZ2h0KCk7Ci0gICAg
ICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQobV92ZXJ0aWNhbEFkanVzdG1lbnQpOwotCi0gICAg
ICAgIGlmIChtX3ZlcnRpY2FsQWRqdXN0bWVudC0+dmFsdWUgIT0gc2Nyb2xsLmhlaWdodCgpKSB7
Ci0gICAgICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+dmFsdWUgPSBzY3JvbGwuaGVpZ2h0
KCk7Ci0gICAgICAgICAgICBndGtfYWRqdXN0bWVudF92YWx1ZV9jaGFuZ2VkKG1fdmVydGljYWxB
ZGp1c3RtZW50KTsKLSAgICAgICAgfQorICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+c2V0
U3RlcHModmlzaWJsZUhlaWdodCgpIC8gMTAuMCwgdmlzaWJsZUhlaWdodCgpICogMC45LCAxKTsK
KyAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnNldFByb3BvcnRpb24odmlzaWJsZUhlaWdo
dCgpLCBjb250ZW50c0hlaWdodCgpKTsKKyAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnNl
dEN1cnJlbnRQb3Moc2Nyb2xsLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fSAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODMsMTIgKzEyMiwxMiBAQCBib29sIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtSGFuZGxlVmVydGljYWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmIHNjcm9s
bCkKIAogYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhc0hvcml6b250YWxBZGp1c3RtZW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9ob3Jpem9udGFsQWRqdXN0bWVudCAhPSAwOworICAgIHJl
dHVybiBtX2hvcml6b250YWxBZGp1c3RtZW50OwogfQogCiBib29sIFNjcm9sbFZpZXc6OnBsYXRm
b3JtSGFzVmVydGljYWxBZGp1c3RtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV92ZXJ0aWNh
bEFkanVzdG1lbnQgIT0gMDsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbEFkanVzdG1lbnQ7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuY3BwCmluZGV4IDkzNjMxODUuLjYwZDlm
OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyIHpl
Y2tlQHNlbGZpc2gub3JnCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEhvbGdlciBIYW5z
IFBldGVyIEZyZXl0aGVyIHplY2tlQHNlbGZpc2gub3JnCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0zNCw2ICszNCwxMSBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gU2Nyb2xsYmFyOjpjcmVhdGVO
YXRpdmVTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiBjbGllbnQsCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTY3JvbGxiYXJHdGsoY2xpZW50LCBvcmllbnRhdGlvbiwgc2l6ZSkpOwogfQogCitQ
YXNzUmVmUHRyPFNjcm9sbGJhckd0az4gU2Nyb2xsYmFyR3RrOjpjcmVhdGVTY3JvbGxiYXIoU2Ny
b2xsYmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBH
dGtBZGp1c3RtZW50KiBhZGopCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxiYXJH
dGsoY2xpZW50LCBvcmllbnRhdGlvbiwgYWRqKSk7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiBndGtT
Y3JvbGxFdmVudENhbGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFNjcm9sbCogZXZl
bnQsIFNjcm9sbGJhckd0ayopCiB7CiAgICAgLyogU2Nyb2xsIG9ubHkgaWYgb3VyIHBhcmVudCBy
ZWplY3RzIHRoZSBzY3JvbGwgZXZlbnQuIFRoZSByYXRpb25hbGUgZm9yCkBAIC01MSw3ICs1Niw4
IEBAIFNjcm9sbGJhckd0azo6U2Nyb2xsYmFyR3RrKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
dGtfaHNjcm9sbGJhcl9uZXcobV9hZGp1c3RtZW50KToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd0a192c2Nyb2xsYmFyX25ldyhtX2FkanVzdG1lbnQpOwogICAgIGd0a193aWRnZXRfc2hv
dyhzY3JvbGxCYXIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2Nyb2xsQmFyLCAidmFsdWUtY2hh
bmdlZCIsIEdfQ0FMTEJBQ0soU2Nyb2xsYmFyR3RrOjpndGtWYWx1ZUNoYW5nZWQpLCB0aGlzKTsK
KyAgICBnX29iamVjdF9yZWYobV9hZGp1c3RtZW50KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG1f
YWRqdXN0bWVudCwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKFNjcm9sbGJhckd0azo6Z3Rr
VmFsdWVDaGFuZ2VkKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdChzY3JvbGxCYXIsICJz
Y3JvbGwtZXZlbnQiLCBHX0NBTExCQUNLKGd0a1Njcm9sbEV2ZW50Q2FsbGJhY2spLCB0aGlzKTsK
IAogICAgIHNldFBsYXRmb3JtV2lkZ2V0KHNjcm9sbEJhcik7CkBAIC02NCw2ICs3MCwzNCBAQCBT
Y3JvbGxiYXJHdGs6OlNjcm9sbGJhckd0ayhTY3JvbGxiYXJDbGllbnQqIGNsaWVudCwgU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YQogICAgICAgICAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZl
VGhlbWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCkpOwogfQogCisvLyBXcmFwIGEgR3RrQWRqdXN0
bWVudCBpbnRvIGEgV2ViQ29yZTo6U2Nyb2xsYmFyIHRvIHByb3Blcmx5IHVzZSB0aGUgU2Nyb2xs
YmFyQ2xpZW50CisvLyBmb3IgdGhpbmdzIGxpa2UgdmFsdWVDaGFuZ2VkLgorU2Nyb2xsYmFyR3Rr
OjpTY3JvbGxiYXJHdGsoU2Nyb2xsYmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBHdGtBZGp1c3RtZW50KiBhZGp1c3RtZW50KQorICAgIDogU2Nyb2xs
YmFyKGNsaWVudCwgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxiYXIpCisgICAgLCBtX2FkanVz
dG1lbnQoYWRqdXN0bWVudCkKK3sKKyAgICAvLyByZXNldCB0aGUgYWRqdXN0bWVudCB0byBhIGtu
b3duIHN0YXRlCisgICAgbV9hZGp1c3RtZW50LT5sb3dlciA9IDA7CisgICAgaWYgKG1fYWRqdXN0
bWVudC0+dmFsdWUgIT0gMCkgeworICAgICAgICBtX2FkanVzdG1lbnQtPnZhbHVlID0gMDsKKyAg
ICAgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hhbmdlZChtX2FkanVzdG1lbnQpOworICAgIH0K
KyAgICAgICAgCisgICAgCisgICAgZ19vYmplY3RfcmVmKG1fYWRqdXN0bWVudCk7CisgICAgZ19z
aWduYWxfY29ubmVjdChtX2FkanVzdG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhT
Y3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOworCisgICAgLy8gV2UgaGF2ZSBu
b3RoaW5nIHRvIHNob3cgYXMgd2UgYXJlIHNvbGVseSBvcGVyYXRpbmcgb24gdGhlIEd0a0FkanVz
dG1lbnQKKyAgICByZXNpemUoMCwgMCk7CisKK30KKworU2Nyb2xsYmFyR3RrOjp+U2Nyb2xsYmFy
R3RrKCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpF
Q1QobV9hZGp1c3RtZW50KSwgKGdwb2ludGVyKVNjcm9sbGJhckd0azo6Z3RrVmFsdWVDaGFuZ2Vk
LCB0aGlzKTsKKyAgICBnX29iamVjdF91bnJlZihtX2FkanVzdG1lbnQpOworfQorCiBJbnRQb2lu
dCBTY3JvbGxiYXJHdGs6OmdldExvY2F0aW9uSW5QYXJlbnRXaW5kb3coY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICBJbnRQb2ludCBsb2M7CkBAIC03OCw3ICsxMTIsNyBAQCBJbnRQb2ludCBT
Y3JvbGxiYXJHdGs6OmdldExvY2F0aW9uSW5QYXJlbnRXaW5kb3coY29uc3QgSW50UmVjdCYgcmVj
dCkKIAogdm9pZCBTY3JvbGxiYXJHdGs6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKIHsKLSAgICBpZiAo
IXBhcmVudCgpKQorICAgIGlmICghcGFyZW50KCkgfHwgIXBsYXRmb3JtV2lkZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEludFBvaW50IGxvYyA9IGdldExvY2F0aW9uSW5QYXJlbnRXaW5k
b3coZnJhbWVSZWN0KCkpOwpAQCAtOTMsOCArMTI3LDggQEAgdm9pZCBTY3JvbGxiYXJHdGs6OmZy
YW1lUmVjdHNDaGFuZ2VkKCkKIAogdm9pZCBTY3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUG9zaXRp
b24oKQogewotICAgIGlmIChtX2FkanVzdG1lbnQtPnZhbHVlICE9IG1fY3VycmVudFBvcykgewot
ICAgICAgICBtX2FkanVzdG1lbnQtPnZhbHVlID0gbV9jdXJyZW50UG9zOworICAgIGlmIChtX2Fk
anVzdG1lbnQtPnZhbHVlICE9IHZhbHVlKCkpIHsKKyAgICAgICAgbV9hZGp1c3RtZW50LT52YWx1
ZSA9IHZhbHVlKCk7CiAgICAgICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9hZGp1
c3RtZW50KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJHdGsuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oCmluZGV4IDFl
ZjRjNDkuLmI0YjU5ODkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJh
ckd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oCkBAIC0zNiw2
ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGJhckd0ayA6IHB1Ymxp
YyBTY3JvbGxiYXIgewogcHVibGljOgogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxiYXI7CisgICAg
ZnJpZW5kIGNsYXNzIFNjcm9sbFZpZXc7CisgICAgflNjcm9sbGJhckd0aygpOwogCiAgICAgdmly
dHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKQEAgLTUwLDcgKzUyLDEw
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKTsKIAogcHJv
dGVjdGVkOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckd0az4gY3JlYXRlU2Nyb2xs
YmFyKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbiwgR3RrQWRqdXN0bWVudCopOworCiAgICAgU2Nyb2xsYmFyR3RrKFNjcm9sbGJhckNsaWVu
dCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSk7CisgICAgU2Ny
b2xsYmFyR3RrKFNjcm9sbGJhckNsaWVudCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBHdGtBZGp1
c3RtZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGh1bWJQb3NpdGlvbigpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlByb3BvcnRpb24oKTsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30172</attachid>
            <date>2009-05-10 22:46:12 -0700</date>
            <delta_ts>2009-05-24 23:28:48 -0700</delta_ts>
            <desc>Completely kill the &quot;adjustment&quot;</desc>
            <filename>0001--GTK-Send-onscroll-events-for-the-main-FrameView.patch</filename>
            <type>text/plain</type>
            <size>18813</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSAyZGFhNDk5ODYyNDAzNmVlY2JmYmFmZWJkNGZjYWNjYWNlMmQ1Yzk5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IE1vbiwgMTEgTWF5IDIwMDkgMDc6MzI6MTkgKzAyMDAKU3ViamVjdDog
W1BBVENIXSBbR1RLXSBTZW5kIG9uc2Nyb2xsIGV2ZW50cyBmb3IgdGhlIG1haW4gRnJhbWVWaWV3
CgoyMDA5LTA1LTEwICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gu
b3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjQ2CgogICAgICAgIFtHVEtdIFNl
bmQgb25zY3JvbGwgZXZlbnRzIGZvciB0aGUgbWFpbiBGcmFtZVZpZXcKCiAgICAgICAgV2ViS2l0
L0dUSysgaXMgY3VycmVudGx5IG5vdCBzZW5kaW5nIGFueSBvbnNjcm9sbAogICAgICAgIGV2ZW50
cyBmb3IgYSBmcmFtZSB3aXRoIGV4dGVybmFsIGFkanVzdG1lbnRzLiBUaGlzIGlzCiAgICAgICAg
ZHVlIHRoZSBmYWN0IHRoYXQgdGhlIHZhbHVlLWNoYW5nZWQgc2lnbmFsIG9mIHRoZSBHdGtBZGp1
c3RtZW50CiAgICAgICAgaXMgaGFuZGxlZCBieSBXZWJDb3JlOjpTY3JvbGxWaWV3IGRpcmVjdGx5
IGFuZCBpcyBub3QgZ29pbmcgdGhyb3VnaAogICAgICAgIHRoZSBXZWJDb3JlOjpTY3JvbGxiYXIg
LT4gV2ViQ29yZTo6U2Nyb2xsYmFyQ2xpZW50IC0+CiAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3
Ojp2YWx1ZUNoYW5nZWQgLT4gV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmFsdWVDaGFuZ2VkCiAgICAg
ICAgcGF0aC4KCiAgICAgICAgRml4IHRoZSBhYm92ZSBwcm9ibGVtIGJ5IHdyYXBwaW5nIHRoZSBH
dGtBZGp1c3RtZW50IHdlIGdldAogICAgICAgIGFzc2lnbmVkIGZyb20gR1RLKyBpbiBhIFNjcm9s
bGJhckd0ayB0aGF0IHdpbGwgbm90IGhhdmUgYW55CiAgICAgICAgdmlzdWFsIGFwcGVhcmFuY2Uu
IFJlbW92ZSBjb2RlIGZyb20gU2Nyb2xsVmlldyB0aGF0IGtub3dzCiAgICAgICAgYWJvdXQgYWRq
dXN0bWVudHMgYW5kIGNyZWF0ZSBhIHNwZWNpYWwgY2FzZSBmb3IKICAgICAgICBXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpjcmVhdGVTY3JvbGxiYXIgdGhhdCB3aWxsIGNyZWF0ZSBzdWNoCiAgICAgICAg
YSBzcGVjaWFsIFdlYkNvcmU6OlNjcm9sbGJhckd0ay4KCiAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxWaWV3LmNwcDogUmVtb3ZlIGFkanVzdG1lbnQgY29kZQogICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIpOgogICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKToKICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
d2hlZWxFdmVudCk6CiAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6IFJlbW92ZSBhZGp1
c3RtZW50IGNvZGUKICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1EZXN0cm95KToKICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKToKICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMpOgogICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhckd0ay5jcHA6CiAgICAgICAgKFNjcm9sbGJhckd0azo6Y3JlYXRlU2Nyb2xsYmFyKTogU3Bl
Y2lhbCBjYXNlLgogICAgICAgIChTY3JvbGxiYXJHdGs6OlNjcm9sbGJhckd0ayk6ICBOZXcgY3Rv
ciBhbmQgd29yayBvbiB0aGUgYWRqdXN0bWVudAogICAgICAgIChTY3JvbGxiYXJHdGs6On5TY3Jv
bGxiYXJHdGspOiBEaXNjb25uZWN0IHNpZ25hbAogICAgICAgIChTY3JvbGxiYXJHdGs6OmZyYW1l
UmVjdHNDaGFuZ2VkKTogRG8gbm90aGluZyB3aGVuIHdlIGxhY2sgYSBwbGF0Zm9ybVdpZGdldAog
ICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5oOgotLS0KIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrCiBXZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwICAgICAgICB8ICAgMzMgKystLS0tLS0tCiBXZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaCAgICAgICAgICB8ICAgIDUgKy0KIFdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbFZpZXdHdGsuY3BwIHwgIDEyMiArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcCAgfCAgIDM0ICsrKysrKysr
LQogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmggICAgfCAgICA1ICsrCiA2IGZp
bGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCAxMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4M2E1MTcy
Li4yMzQ0NDlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDA5LTA1LTEwICBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNTY0NgorCisgICAgICAgIFtHVEtdIFNlbmQgb25zY3JvbGwgZXZlbnRzIGZvciB0aGUg
bWFpbiBGcmFtZVZpZXcKKworICAgICAgICBXZWJLaXQvR1RLKyBpcyBjdXJyZW50bHkgbm90IHNl
bmRpbmcgYW55IG9uc2Nyb2xsCisgICAgICAgIGV2ZW50cyBmb3IgYSBmcmFtZSB3aXRoIGV4dGVy
bmFsIGFkanVzdG1lbnRzLiBUaGlzIGlzCisgICAgICAgIGR1ZSB0aGUgZmFjdCB0aGF0IHRoZSB2
YWx1ZS1jaGFuZ2VkIHNpZ25hbCBvZiB0aGUgR3RrQWRqdXN0bWVudAorICAgICAgICBpcyBoYW5k
bGVkIGJ5IFdlYkNvcmU6OlNjcm9sbFZpZXcgZGlyZWN0bHkgYW5kIGlzIG5vdCBnb2luZyB0aHJv
dWdoCisgICAgICAgIHRoZSBXZWJDb3JlOjpTY3JvbGxiYXIgLT4gV2ViQ29yZTo6U2Nyb2xsYmFy
Q2xpZW50IC0+CisgICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldzo6dmFsdWVDaGFuZ2VkIC0+IFdl
YkNvcmU6OlNjcm9sbFZpZXc6OnZhbHVlQ2hhbmdlZAorICAgICAgICBwYXRoLgorCisgICAgICAg
IEZpeCB0aGUgYWJvdmUgcHJvYmxlbSBieSB3cmFwcGluZyB0aGUgR3RrQWRqdXN0bWVudCB3ZSBn
ZXQKKyAgICAgICAgYXNzaWduZWQgZnJvbSBHVEsrIGluIGEgU2Nyb2xsYmFyR3RrIHRoYXQgd2ls
bCBub3QgaGF2ZSBhbnkKKyAgICAgICAgdmlzdWFsIGFwcGVhcmFuY2UuIFJlbW92ZSBjb2RlIGZy
b20gU2Nyb2xsVmlldyB0aGF0IGtub3dzCisgICAgICAgIGFib3V0IGFkanVzdG1lbnRzIGFuZCBj
cmVhdGUgYSBzcGVjaWFsIGNhc2UgZm9yCisgICAgICAgIFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNy
ZWF0ZVNjcm9sbGJhciB0aGF0IHdpbGwgY3JlYXRlIHN1Y2gKKyAgICAgICAgYSBzcGVjaWFsIFdl
YkNvcmU6OlNjcm9sbGJhckd0ay4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OiBSZW1vdmUgYWRqdXN0bWVudCBjb2RlCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpz
ZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxF
dmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOiBSZW1vdmUgYWRqdXN0bWVu
dCBjb2RlCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhckd0ay5jcHA6CisgICAgICAgIChTY3JvbGxiYXJHdGs6OmNyZWF0ZVNjcm9sbGJhcik6IFNw
ZWNpYWwgY2FzZS4KKyAgICAgICAgKFNjcm9sbGJhckd0azo6U2Nyb2xsYmFyR3RrKTogIE5ldyBj
dG9yIGFuZCB3b3JrIG9uIHRoZSBhZGp1c3RtZW50CisgICAgICAgIChTY3JvbGxiYXJHdGs6On5T
Y3JvbGxiYXJHdGspOiBEaXNjb25uZWN0IHNpZ25hbAorICAgICAgICAoU2Nyb2xsYmFyR3RrOjpm
cmFtZVJlY3RzQ2hhbmdlZCk6IERvIG5vdGhpbmcgd2hlbiB3ZSBsYWNrIGEgcGxhdGZvcm1XaWRn
ZXQKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmg6CisKIDIwMDktMDUtMTAg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDI4ZmUxYzUuLjViYTdiZGMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogY2hpbGQpCiAKIHZvaWQgU2Nyb2xsVmlldzo6c2V0SGFz
SG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIHsKLSAgICBpZiAoaGFzQmFyICYmICFt
X2hvcml6b250YWxTY3JvbGxiYXIgJiYgIXBsYXRmb3JtSGFzSG9yaXpvbnRhbEFkanVzdG1lbnQo
KSkgeworICAgIGlmIChoYXNCYXIgJiYgIW1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAg
ICBtX2hvcml6b250YWxTY3JvbGxiYXIgPSBjcmVhdGVTY3JvbGxiYXIoSG9yaXpvbnRhbFNjcm9s
bGJhcik7CiAgICAgICAgIGFkZENoaWxkKG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSk7CiAg
ICAgfSBlbHNlIGlmICghaGFzQmFyICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtODks
NyArODksNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9v
bCBoYXNCYXIpCiAKIHZvaWQgU2Nyb2xsVmlldzo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9v
bCBoYXNCYXIpCiB7Ci0gICAgaWYgKGhhc0JhciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAh
cGxhdGZvcm1IYXNWZXJ0aWNhbEFkanVzdG1lbnQoKSkgeworICAgIGlmIChoYXNCYXIgJiYgIW1f
dmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IGNyZWF0
ZVNjcm9sbGJhcihWZXJ0aWNhbFNjcm9sbGJhcik7CiAgICAgICAgIGFkZENoaWxkKG1fdmVydGlj
YWxTY3JvbGxiYXIuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CkBAIC05OCwxMCArOTgsMTIgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRIYXNW
ZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0JhcikKICAgICB9CiB9CiAKKyNpZiAhUExBVEZPUk0o
R1RLKQogUGFzc1JlZlB0cjxTY3JvbGxiYXI+IFNjcm9sbFZpZXc6OmNyZWF0ZVNjcm9sbGJhcihT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKIHsKICAgICByZXR1cm4gU2Nyb2xsYmFy
OjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgb3JpZW50YXRpb24sIFJlZ3VsYXJTY3JvbGxi
YXIpOwogfQorI2VuZGlmCiAKIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyTW9kZXMoU2Ny
b2xsYmFyTW9kZSBob3Jpem9udGFsTW9kZSwgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbE1vZGUpCiB7
CkBAIC0zOTksNyArNDAxLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNv
bnN0IEludFNpemUmIGRlc2lyZWRPZmZzZXQpCiAgICAgSW50U2l6ZSBzY3JvbGwgPSBkZXNpcmVk
T2Zmc2V0LnNocnVua1RvKG1heFNjcm9sbFBvc2l0aW9uKTsKICAgICBzY3JvbGwuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOwogIAotICAgIGlmICghcGxhdGZvcm1IYW5kbGVIb3Jpem9udGFsQWRqdXN0
bWVudChzY3JvbGwpICYmIG1faG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgIGlmIChtX2hvcml6
b250YWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudFdpZHRoID0gdmlzaWJsZVdpZHRo
KCk7CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c1dp
ZHRoKCkgPiBjbGllbnRXaWR0aCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRXaWR0
aCAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKQEAgLTQyMyw3ICs0MjUsNyBAQCB2b2lkIFNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkK
ICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRp
b24oZmFsc2UpOyAKICAgICB9IAogCi0gICAgaWYgKCFwbGF0Zm9ybUhhbmRsZVZlcnRpY2FsQWRq
dXN0bWVudChzY3JvbGwpICYmIG1fdmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICBpZiAobV92ZXJ0
aWNhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gdmlzaWJsZUhlaWdo
dCgpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVp
Z2h0KCkgPiBjbGllbnRIZWlnaHQpOwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50SGVp
Z2h0IC0gY0Ftb3VudFRvS2VlcFdoZW5QYWdpbmcpOwpAQCAtOTM0LDI4ICs5MzYsNSBAQCBib29s
IFNjcm9sbFZpZXc6OnBsYXRmb3JtSXNPZmZzY3JlZW4oKSBjb25zdAogfQogI2VuZGlmCiAKLSNp
ZiAhUExBVEZPUk0oR1RLKQotYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZUhvcml6b250
YWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ym9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZVZlcnRpY2FsQWRqdXN0bWVudChjb25zdCBJ
bnRTaXplJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgU2Nyb2xsVmlldzo6cGxh
dGZvcm1IYXNIb3Jpem9udGFsQWRqdXN0bWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIFNjcm9sbFZpZXc6OnBsYXRmb3JtSGFzVmVydGljYWxBZGp1c3RtZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLSNlbmRpZgotCiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKaW5kZXggNzgyYzU0NC4uMDAzNmU2ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxWaWV3LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBI
b2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yODEsMTAgKzI4Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9s
bGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVwYWludE9uVW5zdXBwcmVzcyk7CiAgICAgdm9pZCBwbGF0
Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKGNvbnN0IEludFJlY3QmLCBib29sIG5vdyk7CiAg
ICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgY29uc3Q7Ci0gICAgYm9vbCBwbGF0Zm9ybUhh
bmRsZUhvcml6b250YWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmKTsKLSAgICBib29sIHBsYXRm
b3JtSGFuZGxlVmVydGljYWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmKTsKLSAgICBib29sIHBs
YXRmb3JtSGFzSG9yaXpvbnRhbEFkanVzdG1lbnQoKSBjb25zdDsKLSAgICBib29sIHBsYXRmb3Jt
SGFzVmVydGljYWxBZGp1c3RtZW50KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShNQUMpICYmIGRl
ZmluZWQgX19PQkpDX18KIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbFZpZXdHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5j
cHAKaW5kZXggYWM3NGZlMC4uMGYwNjZmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsVmlld0d0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmll
d0d0ay5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQotICogQ29w
eXJpZ2h0IChDKSAyMDA3IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdodCAo
QykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC00
NiwyOCArNDYsNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyB2b2lkIGFkanVzdG1lbnRDaGFuZ2VkKEd0a0FkanVzdG1lbnQqIGFkanVzdG1l
bnQsIGdwb2ludGVyIF90aGF0KQotewotICAgIFNjcm9sbFZpZXcqIHRoYXQgPSByZWludGVycHJl
dF9jYXN0PFNjcm9sbFZpZXcqPihfdGhhdCk7Ci0KLSAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIHJl
YWxseSBtb3ZlZC4KLSAgICBJbnRTaXplIG5ld09mZnNldCA9IHRoYXQtPnNjcm9sbE9mZnNldCgp
OwotICAgIGlmIChhZGp1c3RtZW50ID09IHRoYXQtPm1faG9yaXpvbnRhbEFkanVzdG1lbnQpCi0g
ICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50
X2dldF92YWx1ZShhZGp1c3RtZW50KSkpOwotICAgIGVsc2UgaWYgKGFkanVzdG1lbnQgPT0gdGhh
dC0+bV92ZXJ0aWNhbEFkanVzdG1lbnQpCi0gICAgICAgIG5ld09mZnNldC5zZXRIZWlnaHQoc3Rh
dGljX2Nhc3Q8aW50PihndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqdXN0bWVudCkpKTsKLQot
ICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBuZXdPZmZzZXQgLSB0aGF0LT5zY3JvbGxPZmZzZXQo
KTsKLSAgICBpZiAoc2Nyb2xsRGVsdGEgPT0gSW50U2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgdGhhdC0+c2V0U2Nyb2xsT2Zmc2V0KG5ld09mZnNldCk7Ci0KLSAgICBpZiAodGhhdC0+c2Ny
b2xsYmFyc1N1cHByZXNzZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdGhhdC0+c2Nyb2xs
Q29udGVudHMoc2Nyb2xsRGVsdGEpOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtSW5p
dCgpCiB7CiAgICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudCA9IDA7CkBAIC03NiwxNSArNTQsMTgg
QEAgdm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUluaXQoKQogCiB2b2lkIFNjcm9sbFZpZXc6OnBs
YXRmb3JtRGVzdHJveSgpCiB7Ci0gICAgaWYgKG1faG9yaXpvbnRhbEFkanVzdG1lbnQpIHsKLSAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JKRUNUKG1faG9y
aXpvbnRhbEFkanVzdG1lbnQpLCAoZ3BvaW50ZXIpYWRqdXN0bWVudENoYW5nZWQsIHRoaXMpOwot
ICAgICAgICBnX29iamVjdF91bnJlZihtX2hvcml6b250YWxBZGp1c3RtZW50KTsKLSAgICB9Cisg
ICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudCA9IDA7CisgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQg
PSAwOworfQogCi0gICAgaWYgKG1fdmVydGljYWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChtX3ZlcnRpY2FsQWRqdXN0
bWVudCksIChncG9pbnRlcilhZGp1c3RtZW50Q2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIGdfb2Jq
ZWN0X3VucmVmKG1fdmVydGljYWxBZGp1c3RtZW50KTsKLSAgICB9CitQYXNzUmVmUHRyPFNjcm9s
bGJhcj4gU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKQoreworICAgIGlmIChvcmllbnRhdGlvbiA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ICYmIG1faG9yaXpvbnRhbEFkanVzdG1lbnQpCisgICAgICAgIHJldHVybiBTY3JvbGxiYXJHdGs6
OmNyZWF0ZVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgbV9ob3Jpem9udGFsQWRqdXN0bWVu
dCk7CisgICAgZWxzZSBpZiAob3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIgJiYgbV92
ZXJ0aWNhbEFkanVzdG1lbnQpCisgICAgICAgIHJldHVybiBTY3JvbGxiYXJHdGs6OmNyZWF0ZVNj
cm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgbV92ZXJ0aWNhbEFkanVzdG1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgcmV0dXJuIFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMs
IG9yaWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKTsKIH0KIAogLyoKQEAgLTk1LDMwICs3Niwy
NyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldEd0a0FkanVzdG1lbnRzKEd0a0FkanVzdG1lbnQqIGhh
ZGosIEd0a0FkanVzdG1lbnQqIHZhZGopCiB7CiAgICAgQVNTRVJUKCFoYWRqID09ICF2YWRqKTsK
IAotICAgIGlmIChtX2hvcml6b250YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVChtX2hvcml6b250YWxBZGp1c3RtZW50
KSwgKGdwb2ludGVyKWFkanVzdG1lbnRDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgZ19zaWduYWxf
aGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JKRUNUKG1fdmVydGljYWxBZGp1c3RtZW50
KSwgKGdwb2ludGVyKWFkanVzdG1lbnRDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgZ19vYmplY3Rf
dW5yZWYobV9ob3Jpem9udGFsQWRqdXN0bWVudCk7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKG1f
dmVydGljYWxBZGp1c3RtZW50KTsKLSAgICB9Ci0KICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50
ID0gaGFkajsKICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudCA9IHZhZGo7CiAKKyAgICAvLyBSZXNl
dCB0aGUgYWRqdXN0bWVudHMgdG8gYSBzYW5lIGRlZmF1bHQKICAgICBpZiAobV9ob3Jpem9udGFs
QWRqdXN0bWVudCkgewotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1faG9yaXpvbnRhbEFkanVz
dG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyhhZGp1c3RtZW50Q2hhbmdlZCksIHRo
aXMpOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdmVydGljYWxBZGp1c3RtZW50LCAidmFs
dWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soYWRqdXN0bWVudENoYW5nZWQpLCB0aGlzKTsKLQotICAg
ICAgICAvKgotICAgICAgICAgKiBkaXNhYmxlIHRoZSBzY3JvbGxiYXJzIChpZiB3ZSBoYXZlIGFu
eSkgYXMgdGhlIEd0a0FkanVzdG1lbnQgb3ZlcgotICAgICAgICAgKi8KLSAgICAgICAgc2V0SGFz
VmVydGljYWxTY3JvbGxiYXIoZmFsc2UpOwotICAgICAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyKGZhbHNlKTsKKyAgICAgICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudC0+bG93ZXIgPSAwOwor
ICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT51cHBlciA9IDA7CisgICAgICAgIG1faG9y
aXpvbnRhbEFkanVzdG1lbnQtPnZhbHVlID0gMDsKKyAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hh
bmdlZChtX2hvcml6b250YWxBZGp1c3RtZW50KTsKKyAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFs
dWVfY2hhbmdlZChtX2hvcml6b250YWxBZGp1c3RtZW50KTsKIAotICAgICAgICBnX29iamVjdF9y
ZWYobV9ob3Jpem9udGFsQWRqdXN0bWVudCk7Ci0gICAgICAgIGdfb2JqZWN0X3JlZihtX3ZlcnRp
Y2FsQWRqdXN0bWVudCk7CisgICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50LT5sb3dlciA9IDA7
CisgICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50LT51cHBlciA9IDA7CisgICAgICAgIG1fdmVy
dGljYWxBZGp1c3RtZW50LT52YWx1ZSA9IDA7CisgICAgICAgIGd0a19hZGp1c3RtZW50X2NoYW5n
ZWQobV92ZXJ0aWNhbEFkanVzdG1lbnQpOworICAgICAgICBndGtfYWRqdXN0bWVudF92YWx1ZV9j
aGFuZ2VkKG1fdmVydGljYWxBZGp1c3RtZW50KTsKICAgICB9CiAKKyAgICAvKiByZWNvbnNpZGVy
IGhhdmluZyBhIHNjcm9sbGJhciAqLworICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGZhbHNl
KTsKKyAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZhbHNlKTsKICAgICB1cGRhdGVTY3Jv
bGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIApAQCAtMTQzLDUyICsxMjEsNCBAQCB2b2lkIFNj
cm9sbFZpZXc6OnBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkZ2V0KiBjaGlsZCkKICAgICAgICAgZ3Rr
X2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihwYXJlbnQpLCBjaGlsZC0+cGxhdGZvcm1X
aWRnZXQoKSk7CiB9CiAKLWJvb2wgU2Nyb2xsVmlldzo6cGxhdGZvcm1IYW5kbGVIb3Jpem9udGFs
QWRqdXN0bWVudChjb25zdCBJbnRTaXplJiBzY3JvbGwpCi17Ci0gICAgaWYgKG1faG9yaXpvbnRh
bEFkanVzdG1lbnQpIHsKLSAgICAgICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudC0+cGFnZV9zaXpl
ID0gdmlzaWJsZVdpZHRoKCk7Ci0gICAgICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPnN0ZXBf
aW5jcmVtZW50ID0gY1Njcm9sbGJhclBpeGVsc1BlckxpbmVTdGVwOwotICAgICAgICBtX2hvcml6
b250YWxBZGp1c3RtZW50LT5wYWdlX2luY3JlbWVudCA9IHZpc2libGVXaWR0aCgpIC0gY0Ftb3Vu
dFRvS2VlcFdoZW5QYWdpbmc7Ci0gICAgICAgIG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPmxvd2Vy
ID0gMDsKLSAgICAgICAgbV9ob3Jpem9udGFsQWRqdXN0bWVudC0+dXBwZXIgPSBjb250ZW50c1dp
ZHRoKCk7Ci0gICAgICAgIGd0a19hZGp1c3RtZW50X2NoYW5nZWQobV9ob3Jpem9udGFsQWRqdXN0
bWVudCk7Ci0KLSAgICAgICAgaWYgKG1faG9yaXpvbnRhbEFkanVzdG1lbnQtPnZhbHVlICE9IHNj
cm9sbC53aWR0aCgpKSB7Ci0gICAgICAgICAgICBtX2hvcml6b250YWxBZGp1c3RtZW50LT52YWx1
ZSA9IHNjcm9sbC53aWR0aCgpOwotICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFsdWVfY2hh
bmdlZChtX2hvcml6b250YWxBZGp1c3RtZW50KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNjcm9sbFZpZXc6OnBs
YXRmb3JtSGFuZGxlVmVydGljYWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmIHNjcm9sbCkKLXsK
LSAgICBpZiAobV92ZXJ0aWNhbEFkanVzdG1lbnQpIHsKLSAgICAgICAgbV92ZXJ0aWNhbEFkanVz
dG1lbnQtPnBhZ2Vfc2l6ZSA9IHZpc2libGVIZWlnaHQoKTsKLSAgICAgICAgbV92ZXJ0aWNhbEFk
anVzdG1lbnQtPnN0ZXBfaW5jcmVtZW50ID0gY1Njcm9sbGJhclBpeGVsc1BlckxpbmVTdGVwOwot
ICAgICAgICBtX3ZlcnRpY2FsQWRqdXN0bWVudC0+cGFnZV9pbmNyZW1lbnQgPSB2aXNpYmxlSGVp
Z2h0KCkgLSBjQW1vdW50VG9LZWVwV2hlblBhZ2luZzsKLSAgICAgICAgbV92ZXJ0aWNhbEFkanVz
dG1lbnQtPmxvd2VyID0gMDsKLSAgICAgICAgbV92ZXJ0aWNhbEFkanVzdG1lbnQtPnVwcGVyID0g
Y29udGVudHNIZWlnaHQoKTsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChtX3ZlcnRp
Y2FsQWRqdXN0bWVudCk7Ci0KLSAgICAgICAgaWYgKG1fdmVydGljYWxBZGp1c3RtZW50LT52YWx1
ZSAhPSBzY3JvbGwuaGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIG1fdmVydGljYWxBZGp1c3RtZW50
LT52YWx1ZSA9IHNjcm9sbC5oZWlnaHQoKTsKLSAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X3Zh
bHVlX2NoYW5nZWQobV92ZXJ0aWNhbEFkanVzdG1lbnQpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0gCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNjcm9sbFZp
ZXc6OnBsYXRmb3JtSGFzSG9yaXpvbnRhbEFkanVzdG1lbnQoKSBjb25zdAotewotICAgIHJldHVy
biBtX2hvcml6b250YWxBZGp1c3RtZW50ICE9IDA7Ci19Ci0KLWJvb2wgU2Nyb2xsVmlldzo6cGxh
dGZvcm1IYXNWZXJ0aWNhbEFkanVzdG1lbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ZlcnRp
Y2FsQWRqdXN0bWVudCAhPSAwOwotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3Rr
LmNwcAppbmRleCA5MzYzMTg1Li45ZDI1NDM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJh
ckd0ay5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdodCAoQykgMjAwNyBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9yZworICogIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9y
ZwogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzQsNiArMzQsMTEgQEAgUGFzc1JlZlB0cjxTY3Jv
bGxiYXI+IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCog
Y2xpZW50LAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Nyb2xsYmFyR3RrKGNsaWVudCwgb3Jp
ZW50YXRpb24sIHNpemUpKTsKIH0KIAorUGFzc1JlZlB0cjxTY3JvbGxiYXJHdGs+IFNjcm9sbGJh
ckd0azo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgR3RrQWRqdXN0bWVudCogYWRqKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU2Nyb2xsYmFyR3RrKGNsaWVudCwgb3JpZW50YXRpb24sIGFkaikpOwor
fQorCiBzdGF0aWMgZ2Jvb2xlYW4gZ3RrU2Nyb2xsRXZlbnRDYWxsYmFjayhHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnRTY3JvbGwqIGV2ZW50LCBTY3JvbGxiYXJHdGsqKQogewogICAgIC8qIFNj
cm9sbCBvbmx5IGlmIG91ciBwYXJlbnQgcmVqZWN0cyB0aGUgc2Nyb2xsIGV2ZW50LiBUaGUgcmF0
aW9uYWxlIGZvcgpAQCAtNTEsNyArNTYsOCBAQCBTY3JvbGxiYXJHdGs6OlNjcm9sbGJhckd0ayhT
Y3JvbGxiYXJDbGllbnQqIGNsaWVudCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX2hzY3JvbGxiYXJfbmV3KG1fYWRqdXN0bWVudCk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfdnNjcm9sbGJhcl9uZXcobV9hZGp1c3Rt
ZW50KTsKICAgICBndGtfd2lkZ2V0X3Nob3coc2Nyb2xsQmFyKTsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0KHNjcm9sbEJhciwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKFNjcm9sbGJhckd0azo6
Z3RrVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CisgICAgZ19vYmplY3RfcmVmKG1fYWRqdXN0bWVudCk7
CisgICAgZ19zaWduYWxfY29ubmVjdChtX2FkanVzdG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19D
QUxMQkFDSyhTY3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOwogICAgIGdfc2ln
bmFsX2Nvbm5lY3Qoc2Nyb2xsQmFyLCAic2Nyb2xsLWV2ZW50IiwgR19DQUxMQkFDSyhndGtTY3Jv
bGxFdmVudENhbGxiYWNrKSwgdGhpcyk7CiAKICAgICBzZXRQbGF0Zm9ybVdpZGdldChzY3JvbGxC
YXIpOwpAQCAtNjQsNiArNzAsMjggQEAgU2Nyb2xsYmFyR3RrOjpTY3JvbGxiYXJHdGsoU2Nyb2xs
YmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGEKICAgICAgICAg
ICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpKTsK
IH0KIAorLy8gQ3JlYXRlIGEgU2Nyb2xsYmFyR3RrIG9uIHRvcCBvZiBhbiBleGlzdGluZyBHdGtB
ZGp1c3RtZW50IGJ1dCBkbyBub3QgY3JlYXRlIGEKKy8vIEd0a1Njcm9sbGJhciBvbiB0b3Agb2Yg
dGhpcyBhZGp1c3RtZW50LiBUaGUgZ29hbCBpcyB0byBoYXZlIGEgV2ViQ29yZTo6U2Nyb2xsYmFy
CisvLyB0aGF0IHdpbGwgbWFuaXB1bGF0ZSB0aGUgR3RrQWRqdXN0bWVudCBwcm9wZXJ0aWVzLCB3
aWxsIHJlYWN0IHRvIHRoZSBjaGFuZ2VkCisvLyB2YWx1ZSBidXQgd2lsbCBub3QgY29uc3VtZSBh
bnkgc3BhY2Ugb24gdGhlIHNjcmVlbiBhbmQgd2lsbCBub3QgYmUgcGFpbnRlZAorLy8gYXQgYWxs
LiBJdCBpcyBhY2hpZXZlZCBieSBub3QgY2FsbGluZyBzZXRQbGF0Zm9ybVdpZGdldC4KK1Njcm9s
bGJhckd0azo6U2Nyb2xsYmFyR3RrKFNjcm9sbGJhckNsaWVudCogY2xpZW50LCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKKyAgICA6
IFNjcm9sbGJhcihjbGllbnQsIG9yaWVudGF0aW9uLCBSZWd1bGFyU2Nyb2xsYmFyKQorICAgICwg
bV9hZGp1c3RtZW50KGFkanVzdG1lbnQpCit7CisgICAgZ19vYmplY3RfcmVmKG1fYWRqdXN0bWVu
dCk7CisgICAgZ19zaWduYWxfY29ubmVjdChtX2FkanVzdG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwg
R19DQUxMQkFDSyhTY3JvbGxiYXJHdGs6Omd0a1ZhbHVlQ2hhbmdlZCksIHRoaXMpOworCisgICAg
Ly8gV2UgaGF2ZSBub3RoaW5nIHRvIHNob3cgYXMgd2UgYXJlIHNvbGVseSBvcGVyYXRpbmcgb24g
dGhlIEd0a0FkanVzdG1lbnQKKyAgICByZXNpemUoMCwgMCk7Cit9CisKK1Njcm9sbGJhckd0azo6
flNjcm9sbGJhckd0aygpCit7CisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9m
dW5jKEdfT0JKRUNUKG1fYWRqdXN0bWVudCksIChncG9pbnRlcilTY3JvbGxiYXJHdGs6Omd0a1Zh
bHVlQ2hhbmdlZCwgdGhpcyk7CisgICAgZ19vYmplY3RfdW5yZWYobV9hZGp1c3RtZW50KTsKK30K
KwogSW50UG9pbnQgU2Nyb2xsYmFyR3RrOjpnZXRMb2NhdGlvbkluUGFyZW50V2luZG93KGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAgICAgSW50UG9pbnQgbG9jOwpAQCAtNzgsNyArMTA2LDcgQEAg
SW50UG9pbnQgU2Nyb2xsYmFyR3RrOjpnZXRMb2NhdGlvbkluUGFyZW50V2luZG93KGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKIHZvaWQgU2Nyb2xsYmFyR3RrOjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiB7
Ci0gICAgaWYgKCFwYXJlbnQoKSkKKyAgICBpZiAoIXBhcmVudCgpIHx8ICFwbGF0Zm9ybVdpZGdl
dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRQb2ludCBsb2MgPSBnZXRMb2NhdGlvbklu
UGFyZW50V2luZG93KGZyYW1lUmVjdCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhckd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmgK
aW5kZXggMWVmNGM0OS4uYjRiNTk4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmgK
QEAgLTM2LDYgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2Nyb2xsYmFyR3Rr
IDogcHVibGljIFNjcm9sbGJhciB7CiBwdWJsaWM6CiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGJh
cjsKKyAgICBmcmllbmQgY2xhc3MgU2Nyb2xsVmlldzsKKyAgICB+U2Nyb2xsYmFyR3RrKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwpAQCAtNTAs
NyArNTIsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgp
OwogCiBwcm90ZWN0ZWQ6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Nyb2xsYmFyR3RrPiBjcmVh
dGVTY3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiBjbGllbnQsIFNjcm9sbGJhck9yaWVudGF0aW9u
IG9yaWVudGF0aW9uLCBHdGtBZGp1c3RtZW50Kik7CisKICAgICBTY3JvbGxiYXJHdGsoU2Nyb2xs
YmFyQ2xpZW50KiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplKTsK
KyAgICBTY3JvbGxiYXJHdGsoU2Nyb2xsYmFyQ2xpZW50KiwgU2Nyb2xsYmFyT3JpZW50YXRpb24s
IEd0a0FkanVzdG1lbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaHVtYlBvc2l0aW9u
KCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRodW1iUHJvcG9ydGlvbigpOwotLSAKMS42LjAu
NAoK
</data>
<flag name="review"
          id="15162"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>