<?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>140352</bug_id>
          
          <creation_ts>2015-01-12 02:09:49 -0800</creation_ts>
          <short_desc>REGRESSION(r177075): Flickering when the WebView is realized</short_desc>
          <delta_ts>2015-02-26 13:34:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>Gtk, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140354</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>j.isorce</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060526</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-12 02:09:49 -0800</bug_when>
    <thetext>This is caused by the XReparentWindow instroduced in r177075. It&apos;s very easy to reproduce in Epiphany, when creating a new tab, you see like if the view was rendered in black for a while, causing a flickering effect. I think we should just use the web view visual and depth when creating the redirected x window instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060529</commentid>
    <comment_count>1</comment_count>
      <attachid>244437</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-12 02:15:15 -0800</bug_when>
    <thetext>Created attachment 244437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060531</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-12 02:17:04 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060570</commentid>
    <comment_count>3</comment_count>
      <attachid>244437</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-01-12 09:05:29 -0800</bug_when>
    <thetext>Comment on attachment 244437
Patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:323
&gt; +        GdkVisual* visual = gdk_window_get_visual(parentWindow);
&gt;          priv-&gt;redirectedWindow = RedirectedXCompositeWindow::create(
&gt;              GDK_DISPLAY_XDISPLAY(display),
&gt; -            parentWindow ? GDK_WINDOW_XID(parentWindow) : 0,
&gt; -            IntSize(1, 1),
&gt; +            GDK_VISUAL_XVISUAL(visual),
&gt; +            gdk_visual_get_depth(visual),

You are no longer handling the null parentWindow case here?

&gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:131
&gt; -std::unique_ptr&lt;RedirectedXCompositeWindow&gt; RedirectedXCompositeWindow::create(Display* display, Window parent, const IntSize&amp; size, std::function&lt;void()&gt; damageNotify)
&gt; +std::unique_ptr&lt;RedirectedXCompositeWindow&gt; RedirectedXCompositeWindow::create(Display* display, Visual* visual, int depth, std::function&lt;void()&gt; damageNotify)
&gt;  {
&gt; -    return supportsXDamageAndXComposite(display) ? std::unique_ptr&lt;RedirectedXCompositeWindow&gt;(new RedirectedXCompositeWindow(display, parent, size, damageNotify)) : nullptr;
&gt; +    return supportsXDamageAndXComposite(display) ? std::unique_ptr&lt;RedirectedXCompositeWindow&gt;(new RedirectedXCompositeWindow(display, visual, depth, damageNotify)) : nullptr;

I think we don&apos;t need to change the arguments here. You can get a window&apos;s visual and depth using XGetWindowAttributes.

&gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:152
&gt; +    // CWBorderPixel must be present when the depth doesn&apos;t match the parent&apos;s one.
&gt; +    // See http://cgit.freedesktop.org/xorg/xserver/tree/dix/window.c?id=xorg-server-1.16.0#n703.
&gt; +    windowAttributes.border_pixel = 0;

Why does the depth not match the parent&apos;s depth?

&gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:155
&gt; -        parent ? parent : RootWindowOfScreen(screen),
&gt; +        RootWindowOfScreen(screen),

Is there really no way to do this without properly parenting the window?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060574</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-12 09:27:10 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 244437 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244437&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:323
&gt; &gt; +        GdkVisual* visual = gdk_window_get_visual(parentWindow);
&gt; &gt;          priv-&gt;redirectedWindow = RedirectedXCompositeWindow::create(
&gt; &gt;              GDK_DISPLAY_XDISPLAY(display),
&gt; &gt; -            parentWindow ? GDK_WINDOW_XID(parentWindow) : 0,
&gt; &gt; -            IntSize(1, 1),
&gt; &gt; +            GDK_VISUAL_XVISUAL(visual),
&gt; &gt; +            gdk_visual_get_depth(visual),
&gt; 
&gt; You are no longer handling the null parentWindow case here?

hmm, widgets must be inside a toplevel window (or be a toplevel) before being realized. I&apos;ll check if this causes problems with uwing a web view inside a popup window, for example.

&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:131
&gt; &gt; -std::unique_ptr&lt;RedirectedXCompositeWindow&gt; RedirectedXCompositeWindow::create(Display* display, Window parent, const IntSize&amp; size, std::function&lt;void()&gt; damageNotify)
&gt; &gt; +std::unique_ptr&lt;RedirectedXCompositeWindow&gt; RedirectedXCompositeWindow::create(Display* display, Visual* visual, int depth, std::function&lt;void()&gt; damageNotify)
&gt; &gt;  {
&gt; &gt; -    return supportsXDamageAndXComposite(display) ? std::unique_ptr&lt;RedirectedXCompositeWindow&gt;(new RedirectedXCompositeWindow(display, parent, size, damageNotify)) : nullptr;
&gt; &gt; +    return supportsXDamageAndXComposite(display) ? std::unique_ptr&lt;RedirectedXCompositeWindow&gt;(new RedirectedXCompositeWindow(display, visual, depth, damageNotify)) : nullptr;
&gt; 
&gt; I think we don&apos;t need to change the arguments here. You can get a window&apos;s
&gt; visual and depth using XGetWindowAttributes.

Yes, but GTK+ keeps a internal list of GdkVisuals, so gdk_window_get_visual() and gdk_visual_get_depth() are just a simple return, we don&apos;t need to query the xwindow again.

&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:152
&gt; &gt; +    // CWBorderPixel must be present when the depth doesn&apos;t match the parent&apos;s one.
&gt; &gt; +    // See http://cgit.freedesktop.org/xorg/xserver/tree/dix/window.c?id=xorg-server-1.16.0#n703.
&gt; &gt; +    windowAttributes.border_pixel = 0;
&gt; 
&gt; Why does the depth not match the parent&apos;s depth?

The root window might have a 24 (which I think it&apos;s the default). When rgba visual has been explicitly set in the widget (to use transparencies), the depth is 32 and doesn&apos;t match the root window (24).

&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:155
&gt; &gt; -        parent ? parent : RootWindowOfScreen(screen),
&gt; &gt; +        RootWindowOfScreen(screen),
&gt; 
&gt; Is there really no way to do this without properly parenting the window?

This is properly parenting the window. We want a window whose parent is the root window. We are using the web view parent window as parent only to inherit the visual, colormap and depth values, and then reparenting to the root window. This patch uses the proper parent directly, passing the visual, colormap and depth desired, instead of using another window just to inherit the values and then having to reparent. The reparent is causing the flash effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060809</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-13 05:19:24 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 244437 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=244437&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:323
&gt; &gt; &gt; +        GdkVisual* visual = gdk_window_get_visual(parentWindow);
&gt; &gt; &gt;          priv-&gt;redirectedWindow = RedirectedXCompositeWindow::create(
&gt; &gt; &gt;              GDK_DISPLAY_XDISPLAY(display),
&gt; &gt; &gt; -            parentWindow ? GDK_WINDOW_XID(parentWindow) : 0,
&gt; &gt; &gt; -            IntSize(1, 1),
&gt; &gt; &gt; +            GDK_VISUAL_XVISUAL(visual),
&gt; &gt; &gt; +            gdk_visual_get_depth(visual),
&gt; &gt; 
&gt; &gt; You are no longer handling the null parentWindow case here?
&gt; 
&gt; hmm, widgets must be inside a toplevel window (or be a toplevel) before
&gt; being realized. I&apos;ll check if this causes problems with uwing a web view
&gt; inside a popup window, for example.
&gt; 

I&apos;ve checked this and the window shoulnd&apos;t be NULL at this point, there are a lot of widgets in GTK that call gtk_widget_get_parent_window() in the realize method without checking the return value too. I don&apos;t think we need an ASSERT(), because gdk_window_get_visual() has a g_return macro if the passed in window is not a GdkWindow, so I wouldn&apos;t change anything in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060813</commentid>
    <comment_count>6</comment_count>
      <attachid>244437</attachid>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-01-13 05:52:53 -0800</bug_when>
    <thetext>Comment on attachment 244437
Patch

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

&gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:148
&gt; +    windowAttributes.colormap = XCreateColormap(display, RootWindowOfScreen(screen), visual, AllocNone);

Don&apos;t you need to call XFreeColormap once the window is released in ::~RedirectedXCompositeWindow ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060837</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-13 09:36:36 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 244437 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244437&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:148
&gt; &gt; +    windowAttributes.colormap = XCreateColormap(display, RootWindowOfScreen(screen), visual, AllocNone);
&gt; 
&gt; Don&apos;t you need to call XFreeColormap once the window is released in
&gt; ::~RedirectedXCompositeWindow ?

Good point! But I don&apos;t think we need to wait until the RedirectedXCompositeWindow is destroyed, I think we can free the colormap after creating the second window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060838</commentid>
    <comment_count>8</comment_count>
      <attachid>244521</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-13 09:42:00 -0800</bug_when>
    <thetext>Created attachment 244521
Updated patch

Added XFreeColormap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060840</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-01-13 09:47:32 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:152
&gt; &gt; +    // CWBorderPixel must be present when the depth doesn&apos;t match the parent&apos;s one.
&gt; &gt; +    // See http://cgit.freedesktop.org/xorg/xserver/tree/dix/window.c?id=xorg-server-1.16.0#n703.
&gt; &gt; +    windowAttributes.border_pixel = 0;
&gt; 
&gt; Why does the depth not match the parent&apos;s depth?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:155
&gt; &gt; -        parent ? parent : RootWindowOfScreen(screen),
&gt; &gt; +        RootWindowOfScreen(screen),
&gt; 
&gt; Is there really no way to do this without properly parenting the window?

Okay. I see how it&apos;s nice for the visual, but the depth is a property of the visual. Getting the depth from the visual in RedirectedXCompositeWindow will prevent silly mistakes like passing a depth that doesn&apos;t match the visual. I would really prefer using XGetVisualInfo in RedirectedXCompositeWindow or to simply use GDK there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060841</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-13 10:05:03 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:152
&gt; &gt; &gt; +    // CWBorderPixel must be present when the depth doesn&apos;t match the parent&apos;s one.
&gt; &gt; &gt; +    // See http://cgit.freedesktop.org/xorg/xserver/tree/dix/window.c?id=xorg-server-1.16.0#n703.
&gt; &gt; &gt; +    windowAttributes.border_pixel = 0;
&gt; &gt; 
&gt; &gt; Why does the depth not match the parent&apos;s depth?
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/gtk/RedirectedXCompositeWindow.cpp:155
&gt; &gt; &gt; -        parent ? parent : RootWindowOfScreen(screen),
&gt; &gt; &gt; +        RootWindowOfScreen(screen),
&gt; &gt; 
&gt; &gt; Is there really no way to do this without properly parenting the window?
&gt; 
&gt; Okay. I see how it&apos;s nice for the visual, but the depth is a property of the
&gt; visual. Getting the depth from the visual in RedirectedXCompositeWindow will
&gt; prevent silly mistakes like passing a depth that doesn&apos;t match the visual. I
&gt; would really prefer using XGetVisualInfo in RedirectedXCompositeWindow or to
&gt; simply use GDK there.

XGetVisualInfo returns the list of all available visuals, that&apos;s already done by GTK+, and gdk_visual_get_depth returns the already cached value for the current visual, so we don&apos;t need to iterate the visuals again just ot get the depth. We already removed the GDK dependency in RedirectedXCompositeWindow. I don&apos;t think passing the depth is such a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060845</commentid>
    <comment_count>11</comment_count>
      <attachid>244522</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-13 11:07:18 -0800</bug_when>
    <thetext>Created attachment 244522
New patch

I had forgotten that RedirectedXCompositeWindow already depended on GDK, so passing the parent Gdkwindow to the constructor makes everything simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060846</commentid>
    <comment_count>12</comment_count>
      <attachid>244522</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-01-13 11:09:41 -0800</bug_when>
    <thetext>Comment on attachment 244522
New patch

Nice. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061114</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-01-14 00:55:58 -0800</bug_when>
    <thetext>Committed r178413: &lt;http://trac.webkit.org/changeset/178413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072472</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-02-26 13:34:21 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; This is caused by the XReparentWindow instroduced in r177075. It&apos;s very easy
&gt; to reproduce in Epiphany, when creating a new tab, you see like if the view
&gt; was rendered in black for a while, causing a flickering effect.

We have this bug or a bug with identical symptoms in Fedora with 2.6.5, which does not include r177075. It&apos;s a regression from 2.6.3; I don&apos;t have an easy way to check 2.6.4.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244437</attachid>
            <date>2015-01-12 02:15:15 -0800</date>
            <delta_ts>2015-01-13 09:42:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-redirected-xwindow-flickering.diff</filename>
            <type>text/plain</type>
            <size>6667</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYmMyMDBjLi5mZDc5OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTUtMDEtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJFR1JFU1NJT04ocjE3NzA3NSk6IEZsaWNrZXJpbmcgd2hlbiB0aGUgV2Vi
VmlldyBpcyByZWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQwMzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBQYXNzIHRoZSBWaXN1YWwgYW5kIGRlcHRo
IG9mIHRoZQorICAgICAgICBXZWJWaWV3IHdpbmRvdyB0byB0aGUgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpj
cmVhdGUpOiBSZWNlaXZlIFZpc3VhbCBhbmQKKyAgICAgICAgZGVwdGggaW5zdGVhZCBvZiB0aGUg
c2l6ZSB0aGF0IGlzIGFsd2F5cyAxeDEuCisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIFVzZSB0
aGUgcGFzc2VkIGluIFZpc3VhbCBhbmQgZGVwdGggdG8gY3JlYXRlIHRoZSBwYXJlbnQgWFdpbmRv
dworICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBXZWJWaWV3IHdpbmRvdyBhcyBwYXJlbnQg
YW5kIHJlcGFyZW50CisgICAgICAgIGFmdGVyd2FyZHMuCisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgorCiAyMDE1LTAxLTA4ICBCZW5qYW1pbiBQ
b3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbV0syXSBTdGFydCBhIHBy
b3RvdHlwZSBmb3IgZGVjbGFyYXRpdmUgc2l0ZSBzcGVjaWZpYyBleHRlbnNpb25zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKaW5kZXggNGJhOWU0NS4uZTQwZWY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMzE2LDEwICszMTYs
MTEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VSZWFsaXplKEd0a1dpZGdldCogd2lk
Z2V0KQogICAgIGlmIChHREtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKICAgICAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0
KS0+cHJpdjsKICAgICAgICAgR2RrV2luZG93KiBwYXJlbnRXaW5kb3cgPSBndGtfd2lkZ2V0X2dl
dF9wYXJlbnRfd2luZG93KHdpZGdldCk7CisgICAgICAgIEdka1Zpc3VhbCogdmlzdWFsID0gZ2Rr
X3dpbmRvd19nZXRfdmlzdWFsKHBhcmVudFdpbmRvdyk7CiAgICAgICAgIHByaXYtPnJlZGlyZWN0
ZWRXaW5kb3cgPSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKAogICAgICAgICAg
ICAgR0RLX0RJU1BMQVlfWERJU1BMQVkoZGlzcGxheSksCi0gICAgICAgICAgICBwYXJlbnRXaW5k
b3cgPyBHREtfV0lORE9XX1hJRChwYXJlbnRXaW5kb3cpIDogMCwKLSAgICAgICAgICAgIEludFNp
emUoMSwgMSksCisgICAgICAgICAgICBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwKKyAgICAg
ICAgICAgIGdka192aXN1YWxfZ2V0X2RlcHRoKHZpc3VhbCksCiAgICAgICAgICAgICBbd2lkZ2V0
XSB7CiAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KHdpZGdldCk7CiAgICAg
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggNTVmYzc4Ny4uMjlmOTA3MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBzdGF0aWMgYm9v
bCBzdXBwb3J0c1hEYW1hZ2VBbmRYQ29tcG9zaXRlKERpc3BsYXkqIGRpc3BsYXkpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRv
dz4gUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShEaXNwbGF5KiBkaXNwbGF5LCBX
aW5kb3cgcGFyZW50LCBjb25zdCBJbnRTaXplJiBzaXplLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZGFtYWdlTm90aWZ5KQorc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
PiBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKERpc3BsYXkqIGRpc3BsYXksIFZp
c3VhbCogdmlzdWFsLCBpbnQgZGVwdGgsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3Rp
ZnkpCiB7Ci0gICAgcmV0dXJuIHN1cHBvcnRzWERhbWFnZUFuZFhDb21wb3NpdGUoZGlzcGxheSkg
PyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5ldyBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdyhkaXNwbGF5LCBwYXJlbnQsIHNpemUsIGRhbWFnZU5vdGlmeSkp
IDogbnVsbHB0cjsKKyAgICByZXR1cm4gc3VwcG9ydHNYRGFtYWdlQW5kWENvbXBvc2l0ZShkaXNw
bGF5KSA/IHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4obmV3IFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGRpc3BsYXksIHZpc3VhbCwgZGVwdGgsIGRhbWFnZU5v
dGlmeSkpIDogbnVsbHB0cjsKIH0KIAotUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGly
ZWN0ZWRYQ29tcG9zaXRlV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRvdyBwYXJlbnQsIGNv
bnN0IEludFNpemUmIHNpemUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpCitS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coRGlz
cGxheSogZGlzcGxheSwgVmlzdWFsKiB2aXN1YWwsIGludCBkZXB0aCwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGRhbWFnZU5vdGlmeSkKICAgICA6IG1fZGlzcGxheShkaXNwbGF5KQotICAgICwgbV9z
aXplKHNpemUpCisgICAgLCBtX3NpemUoMSwgMSkKICAgICAsIG1fd2luZG93KDApCiAgICAgLCBt
X3BhcmVudFdpbmRvdygwKQogICAgICwgbV9waXhtYXAoMCkKQEAgLTE0NSwyNiArMTQ1LDI4IEBA
IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhE
aXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cKICAgICAvLyBUaGlzIGlzIGJhc2VkIG9uIGNvZGUgZnJv
bSBDaHJvbWl1bTogc3JjL2NvbnRlbnQvY29tbW9uL2dwdS9pbWFnZV90cmFuc3BvcnRfc3VyZmFj
ZV9saW51eC5jYwogICAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7CiAg
ICAgd2luZG93QXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IFRydWU7CisgICAgd2luZG93
QXR0cmlidXRlcy5jb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChkaXNwbGF5LCBSb290V2luZG93
T2ZTY3JlZW4oc2NyZWVuKSwgdmlzdWFsLCBBbGxvY05vbmUpOworCisgICAgLy8gQ1dCb3JkZXJQ
aXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVwdGggZG9lc24ndCBtYXRjaCB0aGUgcGFy
ZW50J3Mgb25lLgorICAgIC8vIFNlZSBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy94
c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmctc2VydmVyLTEuMTYuMCNuNzAzLgorICAg
IHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gMDsKKwogICAgIG1fcGFyZW50V2luZG93
ID0gWENyZWF0ZVdpbmRvdyhkaXNwbGF5LAotICAgICAgICBwYXJlbnQgPyBwYXJlbnQgOiBSb290
V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwKKyAgICAgICAgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVl
biksCiAgICAgICAgIFdpZHRoT2ZTY3JlZW4oc2NyZWVuKSArIDEsIDAsIDEsIDEsCiAgICAgICAg
IDAsCi0gICAgICAgIENvcHlGcm9tUGFyZW50LAorICAgICAgICBkZXB0aCwKICAgICAgICAgSW5w
dXRPdXRwdXQsCi0gICAgICAgIENvcHlGcm9tUGFyZW50LAotICAgICAgICBDV092ZXJyaWRlUmVk
aXJlY3QsCisgICAgICAgIHZpc3VhbCwKKyAgICAgICAgQ1dPdmVycmlkZVJlZGlyZWN0IHwgQ1dD
b2xvcm1hcCB8IENXQm9yZGVyUGl4ZWwsCiAgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKICAg
ICBYTWFwV2luZG93KGRpc3BsYXksIG1fcGFyZW50V2luZG93KTsKIAotICAgIC8vIFRoZSB0b3Ag
cGFyZW50IGlzIG9ubHkgbmVjZXNzYXJ5IHRvIGNvcHkgZnJvbSBwYXJlbnQgdGhlIHZpc3VhbCBh
bmQgZGVwdGggYXQgY3JlYXRpb24gdGltZS4KLSAgICBpZiAocGFyZW50KQotICAgICAgICBYUmVw
YXJlbnRXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRXaW5kb3csIFJvb3RXaW5kb3dPZlNjcmVlbihz
Y3JlZW4pLCBXaWR0aE9mU2NyZWVuKHNjcmVlbikgKyAxLCAwKTsKLQogICAgIHdpbmRvd0F0dHJp
YnV0ZXMuZXZlbnRfbWFzayA9IFN0cnVjdHVyZU5vdGlmeU1hc2s7CiAgICAgd2luZG93QXR0cmli
dXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IEZhbHNlOwogICAgIG1fd2luZG93ID0gWENyZWF0ZVdp
bmRvdyhkaXNwbGF5LAogICAgICAgICBtX3BhcmVudFdpbmRvdywKLSAgICAgICAgMCwgMCwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLAorICAgICAgICAwLCAwLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpLAogICAgICAgICAwLAogICAgICAgICBDb3B5RnJvbVBhcmVudCwKICAg
ICAgICAgSW5wdXRPdXRwdXQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKaW5kZXggNmIzNTkyZS4uNTdlZGZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzEsMTggKzMxLDE2IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZlB0ckNhaXJvLmg+CisjaW5j
bHVkZSA8WDExL1hsaWIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogCi10eXBlZGVmIHN0cnVj
dCBfWERpc3BsYXkgRGlzcGxheTsKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBEYW1hZ2U7Ci10eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgUGl4bWFwOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFdpbmRvdzsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9z
aXRlV2luZG93PiBjcmVhdGUoRGlzcGxheSosIFdpbmRvdyBwYXJlbnQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KTsKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PiBjcmVhdGUoRGlz
cGxheSosIFZpc3VhbCosIGludCBkZXB0aCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5v
dGlmeSk7CiAgICAgflJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCk7CiAKICAgICBXaW5kb3cg
d2luZG93SUQoKSBjb25zdCB7IHJldHVybiBtX3dpbmRvdzsgfQpAQCAtNTAsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKCk7CiAKIHByaXZhdGU6Ci0gICAg
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coRGlzcGxheSosIFdpbmRvdyBwYXJlbnQsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KTsK
KyAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhEaXNwbGF5KiwgVmlzdWFsKiwgaW50IGRl
cHRoLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KTsKICAgICB2b2lkIGNsZWFu
dXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7CiAKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244521</attachid>
            <date>2015-01-13 09:42:00 -0800</date>
            <delta_ts>2015-01-13 11:07:18 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-redirected-rgba.diff</filename>
            <type>text/plain</type>
            <size>7040</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZDc0M2MzLi4yNjBiMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTUtMDEtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJFR1JFU1NJT04ocjE3NzA3NSk6IEZsaWNrZXJpbmcgd2hlbiB0aGUgV2Vi
VmlldyBpcyByZWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQwMzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBQYXNzIHRoZSBWaXN1YWwgYW5kIGRlcHRo
IG9mIHRoZQorICAgICAgICBXZWJWaWV3IHdpbmRvdyB0byB0aGUgUmVkaXJlY3RlZFhDb21wb3Np
dGVXaW5kb3cuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Ojpj
cmVhdGUpOiBSZWNlaXZlIFZpc3VhbCBhbmQKKyAgICAgICAgZGVwdGggaW5zdGVhZCBvZiB0aGUg
c2l6ZSB0aGF0IGlzIGFsd2F5cyAxeDEuCisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0ZWRYQ29t
cG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyk6CisgICAgICAgIFVzZSB0
aGUgcGFzc2VkIGluIFZpc3VhbCBhbmQgZGVwdGggdG8gY3JlYXRlIHRoZSBwYXJlbnQgWFdpbmRv
dworICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBXZWJWaWV3IHdpbmRvdyBhcyBwYXJlbnQg
YW5kIHJlcGFyZW50CisgICAgICAgIGFmdGVyd2FyZHMuCisgICAgICAgICogVUlQcm9jZXNzL2d0
ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgorCiAyMDE1LTAxLTEyICBDYXJsb3MgQWxi
ZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0g
VW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE3ODMwOS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA0YmE5
ZTQ1Li5lNDBlZjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0zMTYsMTAgKzMxNiwxMSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgaWYg
KEdES19JU19YMTFfRElTUExBWShkaXNwbGF5KSkgewogICAgICAgICBXZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpLT5wcml2OwogICAg
ICAgICBHZGtXaW5kb3cqIHBhcmVudFdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3BhcmVudF93aW5k
b3cod2lkZ2V0KTsKKyAgICAgICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfd2luZG93X2dldF92
aXN1YWwocGFyZW50V2luZG93KTsKICAgICAgICAgcHJpdi0+cmVkaXJlY3RlZFdpbmRvdyA9IFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoCiAgICAgICAgICAgICBHREtfRElTUExB
WV9YRElTUExBWShkaXNwbGF5KSwKLSAgICAgICAgICAgIHBhcmVudFdpbmRvdyA/IEdES19XSU5E
T1dfWElEKHBhcmVudFdpbmRvdykgOiAwLAotICAgICAgICAgICAgSW50U2l6ZSgxLCAxKSwKKyAg
ICAgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAorICAgICAgICAgICAgZ2RrX3Zp
c3VhbF9nZXRfZGVwdGgodmlzdWFsKSwKICAgICAgICAgICAgIFt3aWRnZXRdIHsKICAgICAgICAg
ICAgICAgICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXcod2lkZ2V0KTsKICAgICAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcAppbmRleCA1NWZjNzg3Li5mNTA0NzE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93LmNwcApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgc3RhdGljIGJvb2wgc3VwcG9ydHNYRGFt
YWdlQW5kWENvbXBvc2l0ZShEaXNwbGF5KiBkaXNwbGF5KQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93OjpjcmVhdGUoRGlzcGxheSogZGlzcGxheSwgV2luZG93IHBhcmVudCwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSkK
K3N0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c6OmNyZWF0ZShEaXNwbGF5KiBkaXNwbGF5LCBWaXN1YWwqIHZpc3VhbCwg
aW50IGRlcHRoLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KQogewotICAgIHJl
dHVybiBzdXBwb3J0c1hEYW1hZ2VBbmRYQ29tcG9zaXRlKGRpc3BsYXkpID8gc3RkOjp1bmlxdWVf
cHRyPFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93PihuZXcgUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3coZGlzcGxheSwgcGFyZW50LCBzaXplLCBkYW1hZ2VOb3RpZnkpKSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIHN1cHBvcnRzWERhbWFnZUFuZFhDb21wb3NpdGUoZGlzcGxheSkgPyBzdGQ6OnVu
aXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+KG5ldyBSZWRpcmVjdGVkWENvbXBv
c2l0ZVdpbmRvdyhkaXNwbGF5LCB2aXN1YWwsIGRlcHRoLCBkYW1hZ2VOb3RpZnkpKSA6IG51bGxw
dHI7CiB9CiAKLVJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyhEaXNwbGF5KiBkaXNwbGF5LCBXaW5kb3cgcGFyZW50LCBjb25zdCBJbnRTaXplJiBz
aXplLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5KQorUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KERpc3BsYXkqIGRpc3BsYXks
IFZpc3VhbCogdmlzdWFsLCBpbnQgZGVwdGgsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VO
b3RpZnkpCiAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKLSAgICAsIG1fc2l6ZShzaXplKQorICAg
ICwgbV9zaXplKDEsIDEpCiAgICAgLCBtX3dpbmRvdygwKQogICAgICwgbV9wYXJlbnRXaW5kb3co
MCkKICAgICAsIG1fcGl4bWFwKDApCkBAIC0xNDIsMjkgKzE0MiwzMyBAQCBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coRGlzcGxheSogZGlzcGxh
eSwgV2luZG93CiB7CiAgICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5
KGRpc3BsYXkpOwogCisgICAgQ29sb3JtYXAgY29sb3JtYXAgPSBYQ3JlYXRlQ29sb3JtYXAoZGlz
cGxheSwgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIHZpc3VhbCwgQWxsb2NOb25lKTsKKwog
ICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gY29kZSBmcm9tIENocm9taXVtOiBzcmMvY29udGVudC9j
b21tb24vZ3B1L2ltYWdlX3RyYW5zcG9ydF9zdXJmYWNlX2xpbnV4LmNjCiAgICAgWFNldFdpbmRv
d0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKICAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJy
aWRlX3JlZGlyZWN0ID0gVHJ1ZTsKKyAgICB3aW5kb3dBdHRyaWJ1dGVzLmNvbG9ybWFwID0gY29s
b3JtYXA7CisKKyAgICAvLyBDV0JvcmRlclBpeGVsIG11c3QgYmUgcHJlc2VudCB3aGVuIHRoZSBk
ZXB0aCBkb2Vzbid0IG1hdGNoIHRoZSBwYXJlbnQncyBvbmUuCisgICAgLy8gU2VlIGh0dHA6Ly9j
Z2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvdHJlZS9kaXgvd2luZG93LmM/aWQ9eG9y
Zy1zZXJ2ZXItMS4xNi4wI243MDMuCisgICAgd2luZG93QXR0cmlidXRlcy5ib3JkZXJfcGl4ZWwg
PSAwOworCiAgICAgbV9wYXJlbnRXaW5kb3cgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksCi0gICAg
ICAgIHBhcmVudCA/IHBhcmVudCA6IFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAorICAgICAg
ICBSb290V2luZG93T2ZTY3JlZW4oc2NyZWVuKSwKICAgICAgICAgV2lkdGhPZlNjcmVlbihzY3Jl
ZW4pICsgMSwgMCwgMSwgMSwKICAgICAgICAgMCwKLSAgICAgICAgQ29weUZyb21QYXJlbnQsCisg
ICAgICAgIGRlcHRoLAogICAgICAgICBJbnB1dE91dHB1dCwKLSAgICAgICAgQ29weUZyb21QYXJl
bnQsCi0gICAgICAgIENXT3ZlcnJpZGVSZWRpcmVjdCwKKyAgICAgICAgdmlzdWFsLAorICAgICAg
ICBDV092ZXJyaWRlUmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAgICAg
ICAgJndpbmRvd0F0dHJpYnV0ZXMpOwogICAgIFhNYXBXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRX
aW5kb3cpOwogCi0gICAgLy8gVGhlIHRvcCBwYXJlbnQgaXMgb25seSBuZWNlc3NhcnkgdG8gY29w
eSBmcm9tIHBhcmVudCB0aGUgdmlzdWFsIGFuZCBkZXB0aCBhdCBjcmVhdGlvbiB0aW1lLgotICAg
IGlmIChwYXJlbnQpCi0gICAgICAgIFhSZXBhcmVudFdpbmRvdyhkaXNwbGF5LCBtX3BhcmVudFdp
bmRvdywgUm9vdFdpbmRvd09mU2NyZWVuKHNjcmVlbiksIFdpZHRoT2ZTY3JlZW4oc2NyZWVuKSAr
IDEsIDApOwotCiAgICAgd2luZG93QXR0cmlidXRlcy5ldmVudF9tYXNrID0gU3RydWN0dXJlTm90
aWZ5TWFzazsKICAgICB3aW5kb3dBdHRyaWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gRmFsc2U7
CiAgICAgbV93aW5kb3cgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXksCiAgICAgICAgIG1fcGFyZW50
V2luZG93LAotICAgICAgICAwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksCisgICAg
ICAgIDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksCiAgICAgICAgIDAsCiAg
ICAgICAgIENvcHlGcm9tUGFyZW50LAogICAgICAgICBJbnB1dE91dHB1dCwKQEAgLTE3Myw2ICsx
NzcsOCBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3coRGlzcGxheSogZGlzcGxheSwgV2luZG93CiAgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVz
KTsKICAgICBYTWFwV2luZG93KGRpc3BsYXksIG1fd2luZG93KTsKIAorICAgIFhGcmVlQ29sb3Jt
YXAoZGlzcGxheSwgY29sb3JtYXApOworCiAgICAgeERhbWFnZU5vdGlmaWVyKCkuYWRkKG1fd2lu
ZG93LCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CiAKICAgICB3aGlsZSAoMSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdy5oCmluZGV4IDZiMzU5MmUuLjU3ZWRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKQEAg
LTMxLDE4ICszMSwxNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVk
ZSA8ZnVuY3Rpb25hbD4KIAotdHlwZWRlZiBzdHJ1Y3QgX1hEaXNwbGF5IERpc3BsYXk7CiB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgRGFtYWdlOwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsK
LXR5cGVkZWYgdW5zaWduZWQgbG9uZyBXaW5kb3c7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKERpc3BsYXkq
LCBXaW5kb3cgcGFyZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGRhbWFnZU5vdGlmeSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKERpc3BsYXkqLCBWaXN1YWwqLCBpbnQgZGVwdGgs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpOwogICAgIH5SZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdygpOwogCiAgICAgV2luZG93IHdpbmRvd0lEKCkgY29uc3QgeyByZXR1cm4g
bV93aW5kb3c7IH0KQEAgLTUwLDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSgpOwogCiBwcml2YXRlOgotICAgIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KERpc3BsYXkqLCBXaW5kb3cgcGFyZW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CisgICAgUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3coRGlzcGxheSosIFZpc3VhbCosIGludCBkZXB0aCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGRhbWFnZU5vdGlmeSk7CiAgICAgdm9pZCBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgp
OwogCiAgICAgRGlzcGxheSogbV9kaXNwbGF5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244522</attachid>
            <date>2015-01-13 11:07:18 -0800</date>
            <delta_ts>2015-01-13 11:09:41 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-reidrected-flickering.diff</filename>
            <type>text/plain</type>
            <size>8804</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZDc0M2MzLi4xMjU3YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTUtMDEtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJFR1JFU1NJT04ocjE3NzA3NSk6IEZsaWNrZXJpbmcgd2hlbiB0aGUgV2Vi
VmlldyBpcyByZWFsaXplZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQwMzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUpOiBQYXNzIHRoZSBwYXJlbnQgR2RrV2luZG93
IHRvIHRoZQorICAgICAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6c3VwcG9ydHNYRGFtYWdlQW5kWENvbXBvc2l0ZSk6IEdldCB0aGUg
ZGlzcGxheSBmcm9tIHRoZQorICAgICAgICBnaXZlbiBHZGtXaW5kb3cuCisgICAgICAgIChXZWJL
aXQ6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUpOiBSZWNlaXZlIGEgR2RrV2lu
ZG93CisgICAgICAgIGluc3RlYWQgb2YgdGhlIERpc3BsYXkgYW5kIHNpc2UgdGhhdCBpcyBhbHdh
eXMgMXgxLgorICAgICAgICAoV2ViS2l0OjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3cpOgorICAgICAgICBVc2UgdGhlIHBhc3NlZCBpbiBHZGtX
aW5kb3cgdG8gZ2V0IHRoZSBEaXNwbGF5LCBWaXN1YWwgYW5kIERlcHRoCisgICAgICAgIGluc3Rl
YWQgb2YgdXNpbmcgdGhlIHdpbmRvdyBhcyBwYXJlbnQgYW5kIHJlcGFyZW50IGFmdGVyd2FyZHMu
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oOgor
CiAyMDE1LTAxLTEyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE3ODMw
OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlLmNwcAppbmRleCA0YmE5ZTQ1Li5lYzJjMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0z
MTUsMTEgKzMxNSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZShHdGtX
aWRnZXQqIHdpZGdldCkKICAgICBHZGtEaXNwbGF5KiBkaXNwbGF5ID0gZ2RrX2Rpc3BsYXlfbWFu
YWdlcl9nZXRfZGVmYXVsdF9kaXNwbGF5KGdka19kaXNwbGF5X21hbmFnZXJfZ2V0KCkpOwogICAg
IGlmIChHREtfSVNfWDExX0RJU1BMQVkoZGlzcGxheSkpIHsKICAgICAgICAgV2ViS2l0V2ViVmll
d0Jhc2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2lkZ2V0KS0+cHJpdjsK
LSAgICAgICAgR2RrV2luZG93KiBwYXJlbnRXaW5kb3cgPSBndGtfd2lkZ2V0X2dldF9wYXJlbnRf
d2luZG93KHdpZGdldCk7CiAgICAgICAgIHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cgPSBSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKAotICAgICAgICAgICAgR0RLX0RJU1BMQVlfWERJ
U1BMQVkoZGlzcGxheSksCi0gICAgICAgICAgICBwYXJlbnRXaW5kb3cgPyBHREtfV0lORE9XX1hJ
RChwYXJlbnRXaW5kb3cpIDogMCwKLSAgICAgICAgICAgIEludFNpemUoMSwgMSksCisgICAgICAg
ICAgICBndGtfd2lkZ2V0X2dldF9wYXJlbnRfd2luZG93KHdpZGdldCksCiAgICAgICAgICAgICBb
d2lkZ2V0XSB7CiAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3KHdpZGdldCk7
CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9n
dGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKaW5kZXggNTVmYzc4Ny4uZTM5
MDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9S
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIFhE
YW1hZ2VOb3RpZmllciYgeERhbWFnZU5vdGlmaWVyKCkKICAgICByZXR1cm4gbm90aWZpZXI7CiB9
CiAKLXN0YXRpYyBib29sIHN1cHBvcnRzWERhbWFnZUFuZFhDb21wb3NpdGUoRGlzcGxheSogZGlz
cGxheSkKK3N0YXRpYyBib29sIHN1cHBvcnRzWERhbWFnZUFuZFhDb21wb3NpdGUoR2RrV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBz
dGF0aWMgYm9vbCBoYXNFeHRlbnNpb25zID0gZmFsc2U7CkBAIC0xMDcsNiArMTA3LDcgQEAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNYRGFtYWdlQW5kWENvbXBvc2l0ZShEaXNwbGF5KiBkaXNwbGF5KQog
ICAgICAgICByZXR1cm4gaGFzRXh0ZW5zaW9uczsKIAogICAgIGluaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICBEaXNwbGF5KiBkaXNwbGF5ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX3dpbmRvd19n
ZXRfZGlzcGxheSh3aW5kb3cpKTsKIAogICAgIGludCBlcnJvckJhc2U7CiAgICAgaWYgKCFYRGFt
YWdlUXVlcnlFeHRlbnNpb24oZGlzcGxheSwgJlhEYW1hZ2VOb3RpZmllcjo6c19kYW1hZ2VFdmVu
dEJhc2UsICZlcnJvckJhc2UpKQpAQCAtMTI2LDY0ICsxMjcsNzIgQEAgc3RhdGljIGJvb2wgc3Vw
cG9ydHNYRGFtYWdlQW5kWENvbXBvc2l0ZShEaXNwbGF5KiBkaXNwbGF5KQogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IFJl
ZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjcmVhdGUoRGlzcGxheSogZGlzcGxheSwgV2luZG93
IHBhcmVudCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFn
ZU5vdGlmeSkKK3N0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gUmVk
aXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNyZWF0ZShHZGtXaW5kb3cqIHBhcmVudFdpbmRvdywg
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSkKIHsKLSAgICByZXR1cm4gc3VwcG9y
dHNYRGFtYWdlQW5kWENvbXBvc2l0ZShkaXNwbGF5KSA/IHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVj
dGVkWENvbXBvc2l0ZVdpbmRvdz4obmV3IFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KGRpc3Bs
YXksIHBhcmVudCwgc2l6ZSwgZGFtYWdlTm90aWZ5KSkgOiBudWxscHRyOworICAgIEFTU0VSVChH
REtfSVNfV0lORE9XKHBhcmVudFdpbmRvdykpOworICAgIHJldHVybiBzdXBwb3J0c1hEYW1hZ2VB
bmRYQ29tcG9zaXRlKHBhcmVudFdpbmRvdykgPyBzdGQ6OnVuaXF1ZV9wdHI8UmVkaXJlY3RlZFhD
b21wb3NpdGVXaW5kb3c+KG5ldyBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhwYXJlbnRXaW5k
b3csIGRhbWFnZU5vdGlmeSkpIDogbnVsbHB0cjsKIH0KIAotUmVkaXJlY3RlZFhDb21wb3NpdGVX
aW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KERpc3BsYXkqIGRpc3BsYXksIFdpbmRv
dyBwYXJlbnQsIGNvbnN0IEludFNpemUmIHNpemUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1h
Z2VOb3RpZnkpCi0gICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKLSAgICAsIG1fc2l6ZShzaXplKQor
UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KEdk
a1dpbmRvdyogcGFyZW50V2luZG93LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZGFtYWdlTm90aWZ5
KQorICAgIDogbV9kaXNwbGF5KEdES19ESVNQTEFZX1hESVNQTEFZKGdka193aW5kb3dfZ2V0X2Rp
c3BsYXkocGFyZW50V2luZG93KSkpCisgICAgLCBtX3NpemUoMSwgMSkKICAgICAsIG1fd2luZG93
KDApCiAgICAgLCBtX3BhcmVudFdpbmRvdygwKQogICAgICwgbV9waXhtYXAoMCkKICAgICAsIG1f
ZGFtYWdlKDApCiAgICAgLCBtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUoZmFsc2UpCiB7Ci0g
ICAgU2NyZWVuKiBzY3JlZW4gPSBEZWZhdWx0U2NyZWVuT2ZEaXNwbGF5KGRpc3BsYXkpOworICAg
IFNjcmVlbiogc2NyZWVuID0gRGVmYXVsdFNjcmVlbk9mRGlzcGxheShtX2Rpc3BsYXkpOworCisg
ICAgR2RrVmlzdWFsKiB2aXN1YWwgPSBnZGtfd2luZG93X2dldF92aXN1YWwocGFyZW50V2luZG93
KTsKKyAgICBDb2xvcm1hcCBjb2xvcm1hcCA9IFhDcmVhdGVDb2xvcm1hcChtX2Rpc3BsYXksIFJv
b3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLCBHREtfVklTVUFMX1hWSVNVQUwodmlzdWFsKSwgQWxs
b2NOb25lKTsKIAogICAgIC8vIFRoaXMgaXMgYmFzZWQgb24gY29kZSBmcm9tIENocm9taXVtOiBz
cmMvY29udGVudC9jb21tb24vZ3B1L2ltYWdlX3RyYW5zcG9ydF9zdXJmYWNlX2xpbnV4LmNjCiAg
ICAgWFNldFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmlidXRlczsKICAgICB3aW5kb3dBdHRy
aWJ1dGVzLm92ZXJyaWRlX3JlZGlyZWN0ID0gVHJ1ZTsKLSAgICBtX3BhcmVudFdpbmRvdyA9IFhD
cmVhdGVXaW5kb3coZGlzcGxheSwKLSAgICAgICAgcGFyZW50ID8gcGFyZW50IDogUm9vdFdpbmRv
d09mU2NyZWVuKHNjcmVlbiksCisgICAgd2luZG93QXR0cmlidXRlcy5jb2xvcm1hcCA9IGNvbG9y
bWFwOworCisgICAgLy8gQ1dCb3JkZXJQaXhlbCBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgZGVw
dGggZG9lc24ndCBtYXRjaCB0aGUgcGFyZW50J3Mgb25lLgorICAgIC8vIFNlZSBodHRwOi8vY2dp
dC5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL3RyZWUvZGl4L3dpbmRvdy5jP2lkPXhvcmct
c2VydmVyLTEuMTYuMCNuNzAzLgorICAgIHdpbmRvd0F0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0g
MDsKKworICAgIG1fcGFyZW50V2luZG93ID0gWENyZWF0ZVdpbmRvdyhtX2Rpc3BsYXksCisgICAg
ICAgIFJvb3RXaW5kb3dPZlNjcmVlbihzY3JlZW4pLAogICAgICAgICBXaWR0aE9mU2NyZWVuKHNj
cmVlbikgKyAxLCAwLCAxLCAxLAogICAgICAgICAwLAotICAgICAgICBDb3B5RnJvbVBhcmVudCwK
KyAgICAgICAgZ2RrX3Zpc3VhbF9nZXRfZGVwdGgodmlzdWFsKSwKICAgICAgICAgSW5wdXRPdXRw
dXQsCi0gICAgICAgIENvcHlGcm9tUGFyZW50LAotICAgICAgICBDV092ZXJyaWRlUmVkaXJlY3Qs
CisgICAgICAgIEdES19WSVNVQUxfWFZJU1VBTCh2aXN1YWwpLAorICAgICAgICBDV092ZXJyaWRl
UmVkaXJlY3QgfCBDV0NvbG9ybWFwIHwgQ1dCb3JkZXJQaXhlbCwKICAgICAgICAgJndpbmRvd0F0
dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3coZGlzcGxheSwgbV9wYXJlbnRXaW5kb3cpOwotCi0g
ICAgLy8gVGhlIHRvcCBwYXJlbnQgaXMgb25seSBuZWNlc3NhcnkgdG8gY29weSBmcm9tIHBhcmVu
dCB0aGUgdmlzdWFsIGFuZCBkZXB0aCBhdCBjcmVhdGlvbiB0aW1lLgotICAgIGlmIChwYXJlbnQp
Ci0gICAgICAgIFhSZXBhcmVudFdpbmRvdyhkaXNwbGF5LCBtX3BhcmVudFdpbmRvdywgUm9vdFdp
bmRvd09mU2NyZWVuKHNjcmVlbiksIFdpZHRoT2ZTY3JlZW4oc2NyZWVuKSArIDEsIDApOworICAg
IFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3BhcmVudFdpbmRvdyk7CiAKICAgICB3aW5kb3dBdHRy
aWJ1dGVzLmV2ZW50X21hc2sgPSBTdHJ1Y3R1cmVOb3RpZnlNYXNrOwogICAgIHdpbmRvd0F0dHJp
YnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBGYWxzZTsKLSAgICBtX3dpbmRvdyA9IFhDcmVhdGVX
aW5kb3coZGlzcGxheSwKKyAgICBtX3dpbmRvdyA9IFhDcmVhdGVXaW5kb3cobV9kaXNwbGF5LAog
ICAgICAgICBtX3BhcmVudFdpbmRvdywKLSAgICAgICAgMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpLAorICAgICAgICAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
LAogICAgICAgICAwLAogICAgICAgICBDb3B5RnJvbVBhcmVudCwKICAgICAgICAgSW5wdXRPdXRw
dXQsCiAgICAgICAgIENvcHlGcm9tUGFyZW50LAogICAgICAgICBDV0V2ZW50TWFzaywKICAgICAg
ICAgJndpbmRvd0F0dHJpYnV0ZXMpOwotICAgIFhNYXBXaW5kb3coZGlzcGxheSwgbV93aW5kb3cp
OworICAgIFhNYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7CisKKyAgICBYRnJlZUNvbG9y
bWFwKG1fZGlzcGxheSwgY29sb3JtYXApOwogCiAgICAgeERhbWFnZU5vdGlmaWVyKCkuYWRkKG1f
d2luZG93LCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CiAKICAgICB3aGlsZSAoMSkgewogICAg
ICAgICBYRXZlbnQgZXZlbnQ7Ci0gICAgICAgIFhXaW5kb3dFdmVudChkaXNwbGF5LCBtX3dpbmRv
dywgU3RydWN0dXJlTm90aWZ5TWFzaywgJmV2ZW50KTsKKyAgICAgICAgWFdpbmRvd0V2ZW50KG1f
ZGlzcGxheSwgbV93aW5kb3csIFN0cnVjdHVyZU5vdGlmeU1hc2ssICZldmVudCk7CiAgICAgICAg
IGlmIChldmVudC50eXBlID09IE1hcE5vdGlmeSAmJiBldmVudC54bWFwLndpbmRvdyA9PSBtX3dp
bmRvdykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBYU2VsZWN0SW5wdXQoZGlzcGxh
eSwgbV93aW5kb3csIE5vRXZlbnRNYXNrKTsKLSAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3co
ZGlzcGxheSwgbV93aW5kb3csIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKLSAgICBtX2RhbWFn
ZSA9IFhEYW1hZ2VDcmVhdGUoZGlzcGxheSwgbV93aW5kb3csIFhEYW1hZ2VSZXBvcnROb25FbXB0
eSk7CisgICAgWFNlbGVjdElucHV0KG1fZGlzcGxheSwgbV93aW5kb3csIE5vRXZlbnRNYXNrKTsK
KyAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdywgQ29tcG9z
aXRlUmVkaXJlY3RNYW51YWwpOworICAgIG1fZGFtYWdlID0gWERhbWFnZUNyZWF0ZShtX2Rpc3Bs
YXksIG1fd2luZG93LCBYRGFtYWdlUmVwb3J0Tm9uRW1wdHkpOwogfQogCiBSZWRpcmVjdGVkWENv
bXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5k
b3cuaAppbmRleCA2YjM1OTJlLi5hNDBhZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oCkBAIC0zMSwx
OCArMzEsMTcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgogI2luY2x1ZGUgPGZ1
bmN0aW9uYWw+CiAKLXR5cGVkZWYgc3RydWN0IF9YRGlzcGxheSBEaXNwbGF5OwordHlwZWRlZiBz
dHJ1Y3QgX0dka1dpbmRvdyBHZGtXaW5kb3c7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgRGFtYWdl
OwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFBpeG1hcDsKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBX
aW5kb3c7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZWRpcmVjdGVkWENvbXBvc2l0
ZVdpbmRvdyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVk
WENvbXBvc2l0ZVdpbmRvdz4gY3JlYXRlKERpc3BsYXkqLCBXaW5kb3cgcGFyZW50LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7Cisg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gY3Jl
YXRlKEdka1dpbmRvdyosIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBkYW1hZ2VOb3RpZnkpOwogICAg
IH5SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdygpOwogCiAgICAgV2luZG93IHdpbmRvd0lEKCkg
Y29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0KQEAgLTUwLDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSgpOwogCiBwcml2YXRlOgotICAgIFJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KERpc3BsYXkqLCBXaW5kb3cgcGFyZW50LCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRhbWFnZU5vdGlmeSk7CisgICAgUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3coR2RrV2luZG93Kiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGRh
bWFnZU5vdGlmeSk7CiAgICAgdm9pZCBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwog
CiAgICAgRGlzcGxheSogbV9kaXNwbGF5Owo=
</data>
<flag name="review"
          id="269456"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>