<?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>106582</bug_id>
          
          <creation_ts>2013-01-10 11:02:48 -0800</creation_ts>
          <short_desc>[EFL][WebGL] Add error handling to carefully manage Window backing pixmaps</short_desc>
          <delta_ts>2013-01-15 00:58:13 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>104506</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kalyan">kalyan.kondapally</reporter>
          <assigned_to name="Kalyan">kalyan.kondapally</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>804546</commentid>
    <comment_count>0</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-10 11:02:48 -0800</bug_when>
    <thetext>we use XCompositeNameWindowPixmap to create a pixmap that serves as a reference to the off-screen storage for the Window Handle. We expect the window to be valid and the created glx pixmap to be a valid drawable. This may not be valid always, we need to ensure this by adding appropriate X error checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804815</commentid>
    <comment_count>1</comment_count>
      <attachid>182222</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-10 16:36:05 -0800</bug_when>
    <thetext>Created attachment 182222
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804833</commentid>
    <comment_count>2</comment_count>
      <attachid>182222</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-10 17:25:40 -0800</bug_when>
    <thetext>Comment on attachment 182222
patch

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

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:57
&gt; +static int handleXError(Display *, XErrorEvent *event)

style... we position * differently

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:79
&gt; +class scopedErrorHandler {

classes start with uppercase!

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:87
&gt; +        m_orginalErrHandler = XSetErrorHandler(handleXError);

why not spell out error in originalErrorHandler

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:98
&gt; +        ValidOperation = true;

g_validOperation to show that it is a static?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805180</commentid>
    <comment_count>3</comment_count>
      <attachid>182322</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 04:51:58 -0800</bug_when>
    <thetext>Created attachment 182322
patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805185</commentid>
    <comment_count>4</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 04:56:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 182222 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182222&amp;action=review

&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:79
&gt; &gt; +class scopedErrorHandler {
&gt; 
&gt; classes start with uppercase!

done
 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:87
&gt; &gt; +        m_orginalErrHandler = XSetErrorHandler(handleXError);
&gt; 
&gt; why not spell out error in originalErrorHandler
originalErrorHandler may be set by application or other object which GraphicsSurfaceGLX cannot have control on. 

&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:98
&gt; &gt; +        ValidOperation = true;
&gt; 
&gt; g_validOperation to show that it is a static?
changed it to gValidOperation, style checker complaints about underscore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805227</commentid>
    <comment_count>5</comment_count>
      <attachid>182322</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-11 06:35:42 -0800</bug_when>
    <thetext>Comment on attachment 182322
patch v2

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

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:60
&gt; +    if (event-&gt;error_code == BadMatch || event-&gt;error_code == BadWindow || event-&gt;error_code == BadAlloc)
&gt; +        gValidOperation = false;

why not 

else gValidOperation = true?

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:85
&gt; +        // XSync() needs to be called to ensure that current errors are handled by the original handler.

must be called

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:87
&gt; +        m_orginalErrHandler = XSetErrorHandler(handleXError);

spelling error... &quot;original&quot; -&gt; m_previousErrorHandler = ...

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:284
&gt; +        ScopedErrorHandler errHandler(m_display);
&gt; +        m_xPixmap = XCompositeNameWindowPixmap(m_display, winId);
&gt; +
&gt; +        if (!errHandler.isValidOperation()) {
&gt; +            reset();

ScopedXErrorHandler handler(m_display)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805266</commentid>
    <comment_count>6</comment_count>
      <attachid>182344</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 07:36:04 -0800</bug_when>
    <thetext>Created attachment 182344
patchv3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805270</commentid>
    <comment_count>7</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 07:39:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 182322 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182322&amp;action=review

&gt; why not 
&gt; 
&gt; else gValidOperation = true?
&gt; 
This flag is reset to true (i.e in isValidOperation ) before checking for any errors.

&gt; 
&gt; must be called
&gt;
&gt; spelling error... &quot;original&quot; -&gt; m_previousErrorHandler = ...
&gt; 

&gt; ScopedXErrorHandler handler(m_display)

fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805286</commentid>
    <comment_count>8</comment_count>
      <attachid>182344</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-11 08:45:38 -0800</bug_when>
    <thetext>Comment on attachment 182344
patchv3

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

would like someone else to have a look

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:79
&gt; +class ScopedErrorHandler {

I would add an X here... like ScopedXErrorHandler... also as it only treads some errors, it should maybe be renamed.

like ScopedXWindowCreationErrorHandler or so

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:93
&gt; +        XSetErrorHandler(m_originalErrHandler);

I dont like Err... I would just called it m_previousHandler here

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:278
&gt; +        // Ensure that the window is mapped.
&gt; +        if (attr.map_state == IsUnmapped || attr.map_state == IsUnviewable)
&gt; +            return;

these changes are not explained in the changelog

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:420
&gt; +    void reset()

this seems more like a clear() than a reset.. as it doesnt set anything again

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:539
&gt; +
&gt; +    if (m_private-&gt;isReceiver() &amp;&amp; platformGetTextureID()) {
&gt;          glBindTexture(GL_TEXTURE_2D, platformGetTextureID());

these changes should be explained

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:553
&gt; +    return m_private ? m_private-&gt;size() : IntSize();

ditto

&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:93
&gt;  
&gt;      XSetWindowBackgroundPixmap(display, tempHandleId, 0);
&gt; +#if USE(GRAPHICS_SURFACE)
&gt;      XCompositeRedirectWindow(display, tempHandleId, CompositeRedirectManual);
&gt; +#endif
&gt;      *handleId = tempHandleId;

no error handling needed herE?

&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:157
&gt; +        for (int i = 0; i&lt; matchingCount; i++) {

space after i please. change needs to be explained</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805311</commentid>
    <comment_count>9</comment_count>
      <attachid>182344</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-11 09:15:45 -0800</bug_when>
    <thetext>Comment on attachment 182344
patchv3

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

It seems like this patch is doing many changes at once, maybe it could be split?

&gt; Source/WebCore/ChangeLog:3
&gt; +        [EFL] [WebGL]Add error handling to carefully manage Window backing pixmaps.

No space between the tags and there should be one space between the last tag and the title.

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:56
&gt; +static bool gValidOperation = true;

why are you using &apos;g&apos; prefix? I think usual style would be &quot;validOperation&quot;.

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:86
&gt; +        XSync(m_display, FALSE);

false

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:92
&gt; +        // Restore the orginal handler.

original

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:96
&gt; +    bool isValidOperation()

Feels like this should be const.

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:100
&gt; +        XSync(m_display, FALSE);

false

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:425
&gt; +        m_glxPixmap = 0;

zero assignments could be inside the if() scope.

&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:142
&gt; +        if (!m_configVisualInfo &amp;&amp; chosenVisualInfo-&gt;depth == 32)

&amp;&amp; visualDepth?

&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:152
&gt; +    XVisualInfo* matchingVisuals;

This can be defined when assigned.

&gt;&gt; Source/WebCore/platform/graphics/surfaces/glx/X11WindowResources.cpp:157
&gt;&gt; +        for (int i = 0; i&lt; matchingCount; i++) {
&gt; 
&gt; space after i please. change needs to be explained

We usually use prefixed increment when possible (style).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805506</commentid>
    <comment_count>10</comment_count>
      <attachid>182391</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 12:14:38 -0800</bug_when>
    <thetext>Created attachment 182391
patchv4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805511</commentid>
    <comment_count>11</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 12:17:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 182344 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182344&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:79
&gt; &gt; +class ScopedErrorHandler {

changed name to ScopedXPixmapCreationErrorHandler

&gt;        XSetErrorHandler(m_originalErrHandler); 
&gt; I dont like Err... I would just called it m_previousHandler here

done

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:420
&gt; &gt; +    void reset()
&gt;
&gt; this seems more like a clear() than a reset.. as it doesnt set anything again
done
 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:539
&gt; &gt; +
&gt; &gt; +    if (m_private-&gt;isReceiver() &amp;&amp; platformGetTextureID()) {
&gt; &gt;          glBindTexture(GL_TEXTURE_2D, platformGetTextureID());
&gt; 
&gt; these changes should be explained
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:553
&gt; &gt; +    return m_private ? m_private-&gt;size() : IntSize();
&gt; 
&gt; ditto
 done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805524</commentid>
    <comment_count>12</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-11 12:23:59 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 182344 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182344&amp;action=review
&gt; 
&gt; It seems like this patch is doing many changes at once, maybe it could be split?

k, done

&gt; &gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:56
&gt; &gt; +static bool gValidOperation = true;
&gt; 
&gt; why are you using &apos;g&apos; prefix? I think usual style would be &quot;validOperation&quot;.
comment2 had a proposal to use g_validOperation. I haven&apos;t found any guidelines on this. Class static data members are supposed to use s_ prefix.
Some classes seem to use caps for the first letter for global static variables. 
 
&gt; false
&gt; 
&gt; original
&gt; Feels like this should be const. 
&gt; false
&gt; zero assignments could be inside the if() scope.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805534</commentid>
    <comment_count>13</comment_count>
      <attachid>182391</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2013-01-11 12:40:27 -0800</bug_when>
    <thetext>Comment on attachment 182391
patchv4

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

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:86
&gt; +        XSync(m_display, false);

Of course it will slow down things, but it is better than crash and only during canvas setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806001</commentid>
    <comment_count>14</comment_count>
      <attachid>182489</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-13 13:36:13 -0800</bug_when>
    <thetext>Created attachment 182489
patchv5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806484</commentid>
    <comment_count>15</comment_count>
      <attachid>182489</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2013-01-14 11:16:33 -0800</bug_when>
    <thetext>Comment on attachment 182489
patchv5

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

&gt; Source/WebCore/ChangeLog:23
&gt; +
&gt; +        Helper Class to catch XErrors.

Seems to be an extra or misplaced line.

&gt; Source/WebCore/ChangeLog:35
&gt; +
&gt; +         Added null ptr checks.

Same here - extra line.

&gt; Source/WebCore/platform/graphics/surfaces/glx/GraphicsSurfaceGLX.cpp:56
&gt; +static bool gValidOperation = true;

I saw the previous comment from Kenneth but it seems to me that this should be validOperation to match the rest of the code in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806551</commentid>
    <comment_count>16</comment_count>
      <attachid>182615</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-14 13:23:09 -0800</bug_when>
    <thetext>Created attachment 182615
patchv6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807011</commentid>
    <comment_count>17</comment_count>
      <attachid>182615</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-14 22:51:42 -0800</bug_when>
    <thetext>Comment on attachment 182615
patchv6

Found regression with latest code, some WebGL demo&apos;s crash(Without this patch though).

Removing the request for cq till we are able to find the root cause for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807051</commentid>
    <comment_count>18</comment_count>
      <attachid>182615</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-01-15 00:28:32 -0800</bug_when>
    <thetext>Comment on attachment 182615
patchv6

created a new bug to handle the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807070</commentid>
    <comment_count>19</comment_count>
      <attachid>182615</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 00:58:08 -0800</bug_when>
    <thetext>Comment on attachment 182615
patchv6

Clearing flags on attachment: 182615

Committed r139725: &lt;http://trac.webkit.org/changeset/139725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>807071</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-15 00:58:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182222</attachid>
            <date>2013-01-10 16:36:05 -0800</date>
            <delta_ts>2013-01-11 04:51:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>x11checks.patch</filename>
            <type>text/plain</type>
            <size>14765</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVhOGUzMTMuLjcyNTNkODcgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEz
LTAxLTEwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29u
ZmlnU2VsZWN0b3I6OmNyZWF0ZUNvbmZpZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNw
b3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZmluZEZCQ29uZmlnV2l0aEFscGhhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnJlc2V0KToKKyAgICAgICAgKEdy
YXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybUdldFRleHR1cmVJRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIFhF
cnJvciBjaGVja2luZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
WDExV2luZG93UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldp
bmRvdzo6ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OnNldFZpc3VhbElkKToKKworICAgICAgICBVbnJlZGlyZWN0cyB0aGUgd2luZG93IGJlZm9y
ZSBkZXN0cm95aW5nIGl0LgorCiAyMDEzLTAxLTA4ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGdv
b2dsZS5jb20+CgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKaW5kZXggOTkyYjNhNi4uYTFmMmNkZSAxMDA2
NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xT
dXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC0xMDgsMTAgKzEwOCwxMSBAQCB2b2lkIEVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OnN3YXBCdWZmZXJzKCkKIAogdm9pZCBFR0xXaW5kb3dUcmFuc3BvcnRT
dXJmYWNlOjpkZXN0cm95KCkKIHsKKyAgICBHTFBsYXRmb3JtU3VyZmFjZTo6ZGVzdHJveSgpOwog
ICAgIG1fbmF0aXZlUmVzb3VyY2UtPmRlc3Ryb3lXaW5kb3cobV9idWZmZXJIYW5kbGUpOwogICAg
IGZyZWVFR0xSZXNvdXJjZXMoKTsKLSAgICBtX25hdGl2ZVJlc291cmNlID0gbnVsbHB0cjsKICAg
ICBtX2NvbmZpZ1NlbGVjdG9yID0gbnVsbHB0cjsKKyAgICBtX25hdGl2ZVJlc291cmNlID0gbnVs
bHB0cjsKICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2Vs
ZWN0b3IuaAppbmRleCBhMWIxNGJlLi43ZTBjZmMwIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxl
Y3Rvci5oCkBAIC0xMjEsNiArMTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBmb3VuZCA9
IGZhbHNlOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmln
czsgKytpKSB7CisgICAgICAgICAgICBpZiAobV92aXN1YWxJbmZvKQorICAgICAgICAgICAgICAg
IFhGcmVlKG1fdmlzdWFsSW5mbyk7CisKICAgICAgICAgICAgIG1fdmlzdWFsSW5mbyA9IGdsWEdl
dFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBbaV0pOwogICAgICAgICAg
ICAgaWYgKCFtX3Zpc3VhbEluZm8pCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZh
Y2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhT
dXJmYWNlLmNwcAppbmRleCAwYzc3NDZlLi5mZWM3MzY3IDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAK
QEAgLTk0LDE0ICs5NCwxNiBAQCB2b2lkIEdMWFRyYW5zcG9ydFN1cmZhY2U6OnN3YXBCdWZmZXJz
KCkKIAogdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCkKIHsKKyAgICBHTFBsYXRm
b3JtU3VyZmFjZTo6ZGVzdHJveSgpOworCiAgICAgaWYgKG1fYnVmZmVySGFuZGxlKSB7CiAgICAg
ICAgIG1fbmF0aXZlUmVzb3VyY2UtPmRlc3Ryb3lXaW5kb3cobV9idWZmZXJIYW5kbGUpOwogICAg
ICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiAgICAgICAgIG1fZHJhd2FibGUgPSAwOwogICAgIH0K
IAotICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxscHRyOwogICAgIG1fY29uZmlnU2VsZWN0b3Ig
PSBudWxscHRyOworICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxscHRyOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAppbmRleCAwNTY5NTkxLi4zMDBhMTg5
IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgogI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUg
PFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2lu
Y2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KIApAQCAtNTEsNiArNTIsMTYgQEAgc3Rh
dGljIFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQyBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSAwOwogc3Rh
dGljIFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQyBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSAw
Owogc3RhdGljIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DIHBHbEZyYW1lYnVmZmVyVGV4
dHVyZTJEID0gMDsKIAorLy8gVXNlZCBmb3IgaGFuZGxpbmcgWEVycm9yLgorc3RhdGljIGJvb2wg
VmFsaWRPcGVyYXRpb24gPSB0cnVlOworc3RhdGljIGludCBoYW5kbGVYRXJyb3IoRGlzcGxheSAq
LCBYRXJyb3JFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5lcnJvcl9jb2RlID09IEJh
ZE1hdGNoIHx8IGV2ZW50LT5lcnJvcl9jb2RlID09IEJhZFdpbmRvdyB8fCBldmVudC0+ZXJyb3Jf
Y29kZSA9PSBCYWRBbGxvYykKKyAgICAgICAgVmFsaWRPcGVyYXRpb24gPSBmYWxzZTsKKworICAg
IHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKICAgICBHTFhfTEVW
RUwsIDAsCiAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULApAQCAtNjUsNiAr
NzYsMzYgQEAgc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CiAgICAgTm9uZQogfTsKIAorY2xh
c3Mgc2NvcGVkRXJyb3JIYW5kbGVyIHsKKworcHVibGljOgorICAgIHNjb3BlZEVycm9ySGFuZGxl
cihEaXNwbGF5KiBkaXNwbGF5KQorICAgICAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgIHsK
KyAgICAgICAgLy8gWFN5bmMoKSBuZWVkcyB0byBiZSBjYWxsZWQgdG8gZW5zdXJlIHRoYXQgY3Vy
cmVudCBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgdGhlIG9yaWdpbmFsIGhhbmRsZXIuCisgICAgICAg
IFhTeW5jKG1fZGlzcGxheSwgRkFMU0UpOworICAgICAgICBtX29yZ2luYWxFcnJIYW5kbGVyID0g
WFNldEVycm9ySGFuZGxlcihoYW5kbGVYRXJyb3IpOworICAgIH0KKworICAgIH5zY29wZWRFcnJv
ckhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JnaW5hbCBoYW5kbGVy
LgorICAgICAgICBYU2V0RXJyb3JIYW5kbGVyKG1fb3JnaW5hbEVyckhhbmRsZXIpOworICAgIH0K
KworICAgIGJvb2wgaXNWYWxpZE9wZXJhdGlvbigpCisgICAgeworICAgICAgICBWYWxpZE9wZXJh
dGlvbiA9IHRydWU7CisgICAgICAgIC8vIFhTeW5jIGlzIG5lZWRlZCB0byBjYXRjaCBwb3NzaWJs
ZSBlcnJvcnMgYXMgdGhleSBhcmUgZ2VuZXJhdGVkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICBY
U3luYyhtX2Rpc3BsYXksIEZBTFNFKTsKKyAgICAgICAgcmV0dXJuIFZhbGlkT3BlcmF0aW9uOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBYRXJyb3JIYW5kbGVyIG1fb3JnaW5hbEVyckhhbmRsZXI7
CisgICAgRGlzcGxheSogbV9kaXNwbGF5OworfTsKKwogY2xhc3MgT2ZmU2NyZWVuUm9vdFdpbmRv
dyB7CiBwdWJsaWM6CiAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdygpCkBAIC0xOTMsMTYgKzIzNCw3
IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIH5HcmFwaGljc1N1cmZh
Y2VQcml2YXRlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX2dseFBpeG1hcCkKLSAgICAgICAgICAg
IGdsWERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7Ci0gICAgICAgIG1fZ2x4
UGl4bWFwID0gMDsKLQotICAgICAgICBpZiAobV94UGl4bWFwKQotICAgICAgICAgICAgWEZyZWVQ
aXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOwotICAgICAgICBtX3hQaXhtYXAgPSAwOwotCi0g
ICAgICAgIGlmIChtX2dsQ29udGV4dCkKLSAgICAgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KG1f
ZGlzcGxheSwgbV9nbENvbnRleHQpOworICAgICAgICByZXNldCgpOwogICAgIH0KIAogICAgIHVp
bnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTIzOSw2ICsyNzEs
MTkgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAgICBYV2luZG93QXR0
cmlidXRlcyBhdHRyOwogICAgICAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1fZGlzcGxh
eSwgd2luSWQsICZhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBFbnN1
cmUgdGhhdCB0aGUgd2luZG93IGlzIG1hcHBlZC4KKyAgICAgICAgaWYgKGF0dHIubWFwX3N0YXRl
ID09IElzVW5tYXBwZWQgfHwgYXR0ci5tYXBfc3RhdGUgPT0gSXNVbnZpZXdhYmxlKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHNjb3BlZEVycm9ySGFuZGxlciBlcnJIYW5kbGVyKG1f
ZGlzcGxheSk7CisgICAgICAgIG1feFBpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFw
KG1fZGlzcGxheSwgd2luSWQpOworCisgICAgICAgIGlmICghZXJySGFuZGxlci5pc1ZhbGlkT3Bl
cmF0aW9uKCkpIHsKKyAgICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKwogICAgICAgICBtX3NpemUgPSBJbnRTaXplKGF0dHIud2lkdGgsIGF0dHIuaGVp
Z2h0KTsKIAogICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRW
aXN1YWxGb3JtYXQobV9kaXNwbGF5LCBhdHRyLnZpc3VhbCk7CkBAIC0yNDksMTMgKzI5NCwxNSBA
QCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAKICAgICAgICAgLy8gSWYgb3JpZ2lu
IHdpbmRvdyBoYXMgYWxwaGEgdGhlbiBmaW5kIGNvbmZpZyB3aXRoIGFscGhhLgogICAgICAgICBH
TFhGQkNvbmZpZyYgY29uZmlnID0gbV9oYXNBbHBoYSA/IGZpbmRGQkNvbmZpZ1dpdGhBbHBoYShj
b25maWdzLCBudW1iZXJPZkNvbmZpZ3MpIDogY29uZmlnc1swXTsKLQotICAgICAgICBtX3hQaXht
YXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIHdpbklkKTsKICAgICAg
ICAgbV9nbHhQaXhtYXAgPSBnbFhDcmVhdGVQaXhtYXAobV9kaXNwbGF5LCBjb25maWcsIG1feFBp
eG1hcCwgZ2x4QXR0cmlidXRlcyk7CiAKLSAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7Ci0gICAg
ICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNwbGF5LCBtX2dseFBpeG1hcCwgR0xYX1lfSU5WRVJU
RURfRVhULCAmaW52ZXJ0ZWQpOwotICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEhaW52
ZXJ0ZWQ7CisgICAgICAgIGlmICghZXJySGFuZGxlci5pc1ZhbGlkT3BlcmF0aW9uKCkpCisgICAg
ICAgICAgICByZXNldCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQgaW52ZXJ0
ZWQgPSAwOworICAgICAgICAgICAgZ2xYUXVlcnlEcmF3YWJsZShtX2Rpc3BsYXksIG1fZ2x4UGl4
bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7CisgICAgICAgICAgICBtX3RleHR1
cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0ZWQ7CisgICAgICAgIH0KIAogICAgICAgICBYRnJlZShj
b25maWdzKTsKICAgICB9CkBAIC0zNjAsMTYgKzQwNywzMyBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQo
bV9kaXNwbGF5LCB2aXN1YWxJbmZvLT52aXN1YWwpOwogICAgICAgICAgICAgWEZyZWUodmlzdWFs
SW5mbyk7Ci0gICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFz
ayA+IDApIHsKKworICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBo
YU1hc2sgPiAwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYkNvbmZpZ3NbaV07Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBS
ZXR1cm4gMXN0IGNvbmZpZyBhcyBhIGZhbGxiYWNrIHdpdGggbm8gYWxwaGEgc3VwcG9ydC4KICAg
ICAgICAgcmV0dXJuIGZiQ29uZmlnc1swXTsKICAgICB9CiAKKyAgICB2b2lkIHJlc2V0KCkKKyAg
ICB7CisgICAgICAgIGlmIChtX2dseFBpeG1hcCkKKyAgICAgICAgICAgIGdsWERlc3Ryb3lQaXht
YXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7CisKKyAgICAgICAgbV9nbHhQaXhtYXAgPSAwOwor
CisgICAgICAgIGlmIChtX3hQaXhtYXApCisgICAgICAgICAgICBYRnJlZVBpeG1hcChtX2Rpc3Bs
YXksIG1feFBpeG1hcCk7CisKKyAgICAgICAgbV94UGl4bWFwID0gMDsKKworICAgICAgICBpZiAo
bV9nbENvbnRleHQpCisgICAgICAgICAgICBnbFhEZXN0cm95Q29udGV4dChtX2Rpc3BsYXksIG1f
Z2xDb250ZXh0KTsKKworICAgICAgICBtX2dsQ29udGV4dCA9IDA7CisgICAgfQorCiAgICAgT2Zm
U2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKICAgICBJbnRTaXplIG1fc2l6ZTsK
ICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CkBAIC00MTIsNiArNDc2LDkgQEAgR3JhcGhpY3NTdXJm
YWNlVG9rZW4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCiB1aW50MzJfdCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKIHsKICAgICBpZiAoIW1fdGV4dHVy
ZSkgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiAwOworCiAg
ICAgICAgIEdMWFBpeG1hcCBwaXhtYXAgPSBtX3ByaXZhdGUtPmdseFBpeG1hcCgpOwogICAgICAg
ICBpZiAoIXBpeG1hcCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNDQyLDEyICs1MDksMTQg
QEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKIHsKICAgICBUZXh0dXJl
TWFwcGVyR0wqIHRleE1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVy
ZU1hcHBlcik7Ci0gICAgSW50U2l6ZSBzaXplID0gbV9wcml2YXRlLT5zaXplKCk7CisgICAgSW50
U2l6ZSBzaXplID0gcGxhdGZvcm1TaXplKCk7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CisKICAgICB1aW50MzJfdCB0ZXh0dXJlID0gcGxhdGZvcm1HZXRUZXh0dXJl
SUQoKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybjsKKwogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVk
VHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KEZsb2F0
UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpLCB0YXJnZXRSZWN0KSk7CiAgICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fcHJpdmF0ZS0+dGV4dHVyZUlzWUludmVydGVkKCkg
PyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIDogMDsKQEAgLTQ2MiwxMSArNTMx
LDE1IEBAIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNv
bnN0CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVmZmVycygpCiB7
Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aXNSZWNlaXZlcigpKSB7CisgICAgaWYgKCFtX3ByaXZhdGUp
CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fcHJpdmF0ZS0+aXNSZWNlaXZlcigpICYm
IHBsYXRmb3JtR2V0VGV4dHVyZUlEKCkpIHsKICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBwbGF0Zm9ybUdldFRleHR1cmVJRCgpKTsKICAgICAgICAgLy8gUmVsZWFzZSBwcmV2
aW91cyBsb2NrIGFuZCByZWJpbmQgdGV4dHVyZSB0byBzdXJmYWNlIHRvIGdldCBmcmFtZSB1cGRh
dGUuCiAgICAgICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5kaXNwbGF5KCks
IG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCksIEdMWF9GUk9OVF9FWFQpOwogICAgICAgICBwR2xYQmlu
ZFRleEltYWdlRVhUKG1fcHJpdmF0ZS0+ZGlzcGxheSgpLCBtX3ByaXZhdGUtPmdseFBpeG1hcCgp
LCBHTFhfRlJPTlRfRVhULCAwKTsKKwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTQ3
Niw3ICs1NDksNyBAQCB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU3dhcEJ1ZmZl
cnMoKQogCiBJbnRTaXplIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1TaXplKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5zaXplKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZSA/IG1f
cHJpdmF0ZS0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQogCiBQYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LCBGbGFncyBmbGFncywgY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBzaGFyZUNvbnRl
eHQpCkBAIC01MjksNiArNjAyLDkgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtVW5s
b2NrKCkKIAogdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSgpCiB7CisgICAg
aWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RleHR1cmUpIHsK
ICAgICAgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVChtX3ByaXZhdGUtPmRpc3BsYXkoKSwgbV9w
cml2YXRlLT5nbHhQaXhtYXAoKSwgR0xYX0ZST05UX0VYVCk7CiAgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1fdGV4dHVyZSk7CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAK
aW5kZXggODAwOGFmYi4uN2E0Y2VlYiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3BwCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2Vz
LmNwcApAQCAtODcsMTIgKzg3LDExIEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpjcmVhdGVP
ZmZzY3JlZW5XaW5kb3codWludDMyX3QqIGhhbmRsZUlkKQogICAgIH0KIAogICAgIFhTZXRXaW5k
b3dCYWNrZ3JvdW5kUGl4bWFwKGRpc3BsYXksIHRlbXBIYW5kbGVJZCwgMCk7CisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCiAgICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXksIHRl
bXBIYW5kbGVJZCwgQ29tcG9zaXRlUmVkaXJlY3RNYW51YWwpOworI2VuZGlmCiAgICAgKmhhbmRs
ZUlkID0gdGVtcEhhbmRsZUlkOwotCi0gICAgaWYgKG1fc2hhcmVkUmVzb3VyY2VzLT5pc1hSZW5k
ZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkKLSAgICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1w
SGFuZGxlSWQpOwotCisgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQpOwogfQog
CiB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVzdHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCB3
aW5kb3dJZCkKQEAgLTEwMyw3ICsxMDIsOSBAQCB2b2lkIFgxMU9mZlNjcmVlbldpbmRvdzo6ZGVz
dHJveVdpbmRvdyhjb25zdCB1aW50MzJfdCB3aW5kb3dJZCkKICAgICBEaXNwbGF5KiBkaXNwbGF5
ID0gbV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKTsKICAgICBpZiAoIWRpc3BsYXkpCiAg
ICAgICAgIHJldHVybjsKLQorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIFhDb21wb3Np
dGVVbnJlZGlyZWN0V2luZG93KGRpc3BsYXksIHdpbmRvd0lkLCBDb21wb3NpdGVSZWRpcmVjdEF1
dG9tYXRpYyk7CisjZW5kaWYKICAgICBYRGVzdHJveVdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCk7
CiB9CiAKQEAgLTEyOCwzNCArMTI5LDM5IEBAIGJvb2wgWDExT2ZmU2NyZWVuV2luZG93OjpzZXRW
aXN1YWxJZChjb25zdCBFR0xpbnQgaWQpCiAgICAgWFZpc3VhbEluZm8qIGNob3NlblZpc3VhbElu
Zm87CiAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOwogICAgIGNob3NlblZpc3VhbEluZm8gPSBY
R2V0VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxJRE1h
c2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKKyAgICBpbnQgdmlzdWFs
RGVwdGggPSBjaG9zZW5WaXN1YWxJbmZvLT5kZXB0aDsKKwogICAgIGlmIChjaG9zZW5WaXN1YWxJ
bmZvKSB7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAgICAgIGlmIChtX3NoYXJlZFJl
c291cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgIFhS
ZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX3NoYXJl
ZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBjaG9zZW5WaXN1YWxJbmZvLT52aXN1YWwpOwotICAg
ICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKSB7Cisg
ICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCiAg
ICAgICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hvc2VuVmlzdWFsSW5mbzsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogI2Vu
ZGlmCi0gICAgICAgIGlmIChjaG9zZW5WaXN1YWxJbmZvLT5kZXB0aCA9PSAzMikgeworICAgICAg
ICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbyAmJiBjaG9zZW5WaXN1YWxJbmZvLT5kZXB0aCA9PSAz
MikKICAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IGNob3NlblZpc3VhbEluZm87Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghbV9j
b25maWdWaXN1YWxJbmZvKSB7Ci0gICAgICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBsYXRlLCAw
LCBzaXplb2YoWFZpc3VhbEluZm8pKTsKLSAgICAgICAgWFZpc3VhbEluZm8qIG1hdGNoaW5nVmlz
dWFsczsKLSAgICAgICAgaW50IG1hdGNoaW5nQ291bnQgPSAwOworICAgIFhGcmVlKGNob3NlblZp
c3VhbEluZm8pOworCisgICAgaWYgKG1fY29uZmlnVmlzdWFsSW5mbykKKyAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICAgICAgdmlzdWFsSW5mb1RlbXBsYXRlLmRlcHRoID0gY2hvc2VuVmlzdWFs
SW5mby0+ZGVwdGg7Ci0gICAgICAgIG1hdGNoaW5nVmlzdWFscyA9IFhHZXRWaXN1YWxJbmZvKG1f
c2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbERlcHRoTWFzaywgJnZpc3VhbElu
Zm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOworICAgIG1lbXNldCgmdmlzdWFsSW5mb1RlbXBs
YXRlLCAwLCBzaXplb2YoWFZpc3VhbEluZm8pKTsKKyAgICBYVmlzdWFsSW5mbyogbWF0Y2hpbmdW
aXN1YWxzOworICAgIHZpc3VhbEluZm9UZW1wbGF0ZS5kZXB0aCA9IHZpc3VhbERlcHRoOworICAg
IG1hdGNoaW5nVmlzdWFscyA9IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFE
aXNwbGF5KCksIFZpc3VhbERlcHRoTWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5n
Q291bnQpOworCisgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgeworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaTwgbWF0Y2hpbmdDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBjaG9zZW5WaXN1YWxJ
bmZvID0gJm1hdGNoaW5nVmlzdWFsc1swXTsKKyAgICAgICAgICAgIGlmIChjaG9zZW5WaXN1YWxJ
bmZvLT5kZXB0aCA9PSAzMikgeworICAgICAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9
IGNob3NlblZpc3VhbEluZm87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG1hdGNoaW5nVmlzdWFscykgewotICAgICAgICAgICAgbV9jb25maWdW
aXN1YWxJbmZvID0gJm1hdGNoaW5nVmlzdWFsc1swXTsKICAgICAgICAgICAgIFhGcmVlKG1hdGNo
aW5nVmlzdWFscyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0K
IAo=
</data>
<flag name="review"
          id="200146"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182322</attachid>
            <date>2013-01-11 04:51:58 -0800</date>
            <delta_ts>2013-01-11 07:36:04 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>reviewXErrors.patch</filename>
            <type>text/plain</type>
            <size>14835</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVhOGUzMTMuLjcyNTNkODcgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEz
LTAxLTEwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29u
ZmlnU2VsZWN0b3I6OmNyZWF0ZUNvbmZpZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNw
b3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZmluZEZCQ29uZmlnV2l0aEFscGhhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnJlc2V0KToKKyAgICAgICAgKEdy
YXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybUdldFRleHR1cmVJRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIFhF
cnJvciBjaGVja2luZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
WDExV2luZG93UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldp
bmRvdzo6ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OnNldFZpc3VhbElkKToKKworICAgICAgICBVbnJlZGlyZWN0cyB0aGUgd2luZG93IGJlZm9y
ZSBkZXN0cm95aW5nIGl0LgorCiAyMDEzLTAxLTA4ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGdv
b2dsZS5jb20+CgpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKaW5kZXggOTkyYjNhNi4uYTFmMmNkZSAxMDA2
NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xT
dXJmYWNlLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFN1cmZhY2UuY3BwCkBAIC0xMDgsMTAgKzEwOCwxMSBAQCB2b2lkIEVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OnN3YXBCdWZmZXJzKCkKIAogdm9pZCBFR0xXaW5kb3dUcmFuc3BvcnRT
dXJmYWNlOjpkZXN0cm95KCkKIHsKKyAgICBHTFBsYXRmb3JtU3VyZmFjZTo6ZGVzdHJveSgpOwog
ICAgIG1fbmF0aXZlUmVzb3VyY2UtPmRlc3Ryb3lXaW5kb3cobV9idWZmZXJIYW5kbGUpOwogICAg
IGZyZWVFR0xSZXNvdXJjZXMoKTsKLSAgICBtX25hdGl2ZVJlc291cmNlID0gbnVsbHB0cjsKICAg
ICBtX2NvbmZpZ1NlbGVjdG9yID0gbnVsbHB0cjsKKyAgICBtX25hdGl2ZVJlc291cmNlID0gbnVs
bHB0cjsKICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2VsZWN0b3IuaCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2Vs
ZWN0b3IuaAppbmRleCBhMWIxNGJlLi43ZTBjZmMwIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxl
Y3Rvci5oCkBAIC0xMjEsNiArMTIxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBmb3VuZCA9
IGZhbHNlOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQXZhaWxhYmxlQ29uZmln
czsgKytpKSB7CisgICAgICAgICAgICBpZiAobV92aXN1YWxJbmZvKQorICAgICAgICAgICAgICAg
IFhGcmVlKG1fdmlzdWFsSW5mbyk7CisKICAgICAgICAgICAgIG1fdmlzdWFsSW5mbyA9IGdsWEdl
dFZpc3VhbEZyb21GQkNvbmZpZyhtX3NoYXJlZERpc3BsYXksIHRlbXBbaV0pOwogICAgICAgICAg
ICAgaWYgKCFtX3Zpc3VhbEluZm8pCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZh
Y2UuY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhT
dXJmYWNlLmNwcAppbmRleCAwYzc3NDZlLi5mZWM3MzY3IDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAK
QEAgLTk0LDE0ICs5NCwxNiBAQCB2b2lkIEdMWFRyYW5zcG9ydFN1cmZhY2U6OnN3YXBCdWZmZXJz
KCkKIAogdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCkKIHsKKyAgICBHTFBsYXRm
b3JtU3VyZmFjZTo6ZGVzdHJveSgpOworCiAgICAgaWYgKG1fYnVmZmVySGFuZGxlKSB7CiAgICAg
ICAgIG1fbmF0aXZlUmVzb3VyY2UtPmRlc3Ryb3lXaW5kb3cobV9idWZmZXJIYW5kbGUpOwogICAg
ICAgICBtX2J1ZmZlckhhbmRsZSA9IDA7CiAgICAgICAgIG1fZHJhd2FibGUgPSAwOwogICAgIH0K
IAotICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxscHRyOwogICAgIG1fY29uZmlnU2VsZWN0b3Ig
PSBudWxscHRyOworICAgIG1fbmF0aXZlUmVzb3VyY2UgPSBudWxscHRyOwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
R3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAppbmRleCAwNTY5NTkxLi5hMzJiM2E4
IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgogI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUg
PFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2lu
Y2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KIApAQCAtNTEsNiArNTIsMTYgQEAgc3Rh
dGljIFBGTkdMR0VORlJBTUVCVUZGRVJTUFJPQyBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSAwOwogc3Rh
dGljIFBGTkdMREVMRVRFRlJBTUVCVUZGRVJTUFJPQyBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSAw
Owogc3RhdGljIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRQUk9DIHBHbEZyYW1lYnVmZmVyVGV4
dHVyZTJEID0gMDsKIAorLy8gVXNlZCBmb3IgaGFuZGxpbmcgWEVycm9yLgorc3RhdGljIGJvb2wg
Z1ZhbGlkT3BlcmF0aW9uID0gdHJ1ZTsKK3N0YXRpYyBpbnQgaGFuZGxlWEVycm9yKERpc3BsYXkq
LCBYRXJyb3JFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5lcnJvcl9jb2RlID09IEJh
ZE1hdGNoIHx8IGV2ZW50LT5lcnJvcl9jb2RlID09IEJhZFdpbmRvdyB8fCBldmVudC0+ZXJyb3Jf
Y29kZSA9PSBCYWRBbGxvYykKKyAgICAgICAgZ1ZhbGlkT3BlcmF0aW9uID0gZmFsc2U7CisKKyAg
ICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CiAgICAgR0xYX0xF
VkVMLCAwLAogICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKQEAgLTY1LDYg
Kzc2LDM3IEBAIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0gewogICAgIE5vbmUKIH07CiAKK2Ns
YXNzIFNjb3BlZEVycm9ySGFuZGxlciB7CisKK3B1YmxpYzoKKyAgICBTY29wZWRFcnJvckhhbmRs
ZXIoRGlzcGxheSogZGlzcGxheSkKKyAgICAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICB7
CisgICAgICAgIC8vIFhTeW5jKCkgbmVlZHMgdG8gYmUgY2FsbGVkIHRvIGVuc3VyZSB0aGF0IGN1
cnJlbnQgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5IHRoZSBvcmlnaW5hbCBoYW5kbGVyLgorICAgICAg
ICBYU3luYyhtX2Rpc3BsYXksIEZBTFNFKTsKKyAgICAgICAgbV9vcmdpbmFsRXJySGFuZGxlciA9
IFhTZXRFcnJvckhhbmRsZXIoaGFuZGxlWEVycm9yKTsKKyAgICB9CisKKyAgICB+U2NvcGVkRXJy
b3JIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIG9yZ2luYWwgaGFuZGxl
ci4KKyAgICAgICAgWFNldEVycm9ySGFuZGxlcihtX29yZ2luYWxFcnJIYW5kbGVyKTsKKyAgICB9
CisKKyAgICBib29sIGlzVmFsaWRPcGVyYXRpb24oKQorICAgIHsKKyAgICAgICAgZ1ZhbGlkT3Bl
cmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgLy8gWFN5bmMgaXMgbmVlZGVkIHRvIGNhdGNoIHBvc3Np
YmxlIGVycm9ycyBhcyB0aGV5IGFyZSBnZW5lcmF0ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAg
IFhTeW5jKG1fZGlzcGxheSwgRkFMU0UpOworICAgICAgICByZXR1cm4gZ1ZhbGlkT3BlcmF0aW9u
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBYRXJyb3JIYW5kbGVyIG1fb3JnaW5hbEVyckhhbmRs
ZXI7CisgICAgRGlzcGxheSogbV9kaXNwbGF5OworfTsKKworLy8gRklYTUU6IFRha2UgWDExV2lu
ZG93UmVzb3VyY2VzIGFuZCBHTFhDb25maWdTZWxlY3RvciBpbnRvIHVzZS4KIGNsYXNzIE9mZlNj
cmVlblJvb3RXaW5kb3cgewogcHVibGljOgogICAgIE9mZlNjcmVlblJvb3RXaW5kb3coKQpAQCAt
MTkzLDE2ICsyMzUsNyBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAKICAgICB+
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSgpCiAgICAgewotICAgICAgICBpZiAobV9nbHhQaXhtYXAp
Ci0gICAgICAgICAgICBnbFhEZXN0cm95UGl4bWFwKG1fZGlzcGxheSwgbV9nbHhQaXhtYXApOwot
ICAgICAgICBtX2dseFBpeG1hcCA9IDA7Ci0KLSAgICAgICAgaWYgKG1feFBpeG1hcCkKLSAgICAg
ICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV94UGl4bWFwKTsKLSAgICAgICAgbV94UGl4
bWFwID0gMDsKLQotICAgICAgICBpZiAobV9nbENvbnRleHQpCi0gICAgICAgICAgICBnbFhEZXN0
cm95Q29udGV4dChtX2Rpc3BsYXksIG1fZ2xDb250ZXh0KTsKKyAgICAgICAgcmVzZXQoKTsKICAg
ICB9CiAKICAgICB1aW50MzJfdCBjcmVhdGVTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpemUpCkBA
IC0yMzksNiArMjcyLDE5IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKICAgICAg
ICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cjsKICAgICAgICAgaWYgKCFYR2V0V2luZG93QXR0cmli
dXRlcyhtX2Rpc3BsYXksIHdpbklkLCAmYXR0cikpCiAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHdpbmRvdyBpcyBtYXBwZWQuCisgICAgICAgIGlmIChh
dHRyLm1hcF9zdGF0ZSA9PSBJc1VubWFwcGVkIHx8IGF0dHIubWFwX3N0YXRlID09IElzVW52aWV3
YWJsZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBTY29wZWRFcnJvckhhbmRsZXIg
ZXJySGFuZGxlcihtX2Rpc3BsYXkpOworICAgICAgICBtX3hQaXhtYXAgPSBYQ29tcG9zaXRlTmFt
ZVdpbmRvd1BpeG1hcChtX2Rpc3BsYXksIHdpbklkKTsKKworICAgICAgICBpZiAoIWVyckhhbmRs
ZXIuaXNWYWxpZE9wZXJhdGlvbigpKSB7CisgICAgICAgICAgICByZXNldCgpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgbV9zaXplID0gSW50U2l6ZShhdHRyLndp
ZHRoLCBhdHRyLmhlaWdodCk7CiAKICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9
IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fZGlzcGxheSwgYXR0ci52aXN1YWwpOwpAQCAtMjQ5
LDEzICsyOTUsMTUgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAgICAg
IC8vIElmIG9yaWdpbiB3aW5kb3cgaGFzIGFscGhhIHRoZW4gZmluZCBjb25maWcgd2l0aCBhbHBo
YS4KICAgICAgICAgR0xYRkJDb25maWcmIGNvbmZpZyA9IG1faGFzQWxwaGEgPyBmaW5kRkJDb25m
aWdXaXRoQWxwaGEoY29uZmlncywgbnVtYmVyT2ZDb25maWdzKSA6IGNvbmZpZ3NbMF07Ci0KLSAg
ICAgICAgbV94UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5kb3dQaXhtYXAobV9kaXNwbGF5LCB3
aW5JZCk7CiAgICAgICAgIG1fZ2x4UGl4bWFwID0gZ2xYQ3JlYXRlUGl4bWFwKG1fZGlzcGxheSwg
Y29uZmlnLCBtX3hQaXhtYXAsIGdseEF0dHJpYnV0ZXMpOwogCi0gICAgICAgIHVpbnQgaW52ZXJ0
ZWQgPSAwOwotICAgICAgICBnbFhRdWVyeURyYXdhYmxlKG1fZGlzcGxheSwgbV9nbHhQaXhtYXAs
IEdMWF9ZX0lOVkVSVEVEX0VYVCwgJmludmVydGVkKTsKLSAgICAgICAgbV90ZXh0dXJlSXNZSW52
ZXJ0ZWQgPSAhIWludmVydGVkOworICAgICAgICBpZiAoIWVyckhhbmRsZXIuaXNWYWxpZE9wZXJh
dGlvbigpKQorICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB1aW50IGludmVydGVkID0gMDsKKyAgICAgICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNw
bGF5LCBtX2dseFBpeG1hcCwgR0xYX1lfSU5WRVJURURfRVhULCAmaW52ZXJ0ZWQpOworICAgICAg
ICAgICAgbV90ZXh0dXJlSXNZSW52ZXJ0ZWQgPSAhIWludmVydGVkOworICAgICAgICB9CiAKICAg
ICAgICAgWEZyZWUoY29uZmlncyk7CiAgICAgfQpAQCAtMzYwLDE2ICs0MDgsMzMgQEAgcHJpdmF0
ZToKIAogICAgICAgICAgICAgWFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5k
VmlzdWFsRm9ybWF0KG1fZGlzcGxheSwgdmlzdWFsSW5mby0+dmlzdWFsKTsKICAgICAgICAgICAg
IFhGcmVlKHZpc3VhbEluZm8pOwotICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRp
cmVjdC5hbHBoYU1hc2sgPiAwKSB7CisKKyAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0
LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmJDb25maWdz
W2ldOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAK
ICAgICAgICAgLy8gUmV0dXJuIDFzdCBjb25maWcgYXMgYSBmYWxsYmFjayB3aXRoIG5vIGFscGhh
IHN1cHBvcnQuCiAgICAgICAgIHJldHVybiBmYkNvbmZpZ3NbMF07CiAgICAgfQogCisgICAgdm9p
ZCByZXNldCgpCisgICAgeworICAgICAgICBpZiAobV9nbHhQaXhtYXApCisgICAgICAgICAgICBn
bFhEZXN0cm95UGl4bWFwKG1fZGlzcGxheSwgbV9nbHhQaXhtYXApOworCisgICAgICAgIG1fZ2x4
UGl4bWFwID0gMDsKKworICAgICAgICBpZiAobV94UGl4bWFwKQorICAgICAgICAgICAgWEZyZWVQ
aXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOworCisgICAgICAgIG1feFBpeG1hcCA9IDA7CisK
KyAgICAgICAgaWYgKG1fZ2xDb250ZXh0KQorICAgICAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQo
bV9kaXNwbGF5LCBtX2dsQ29udGV4dCk7CisKKyAgICAgICAgbV9nbENvbnRleHQgPSAwOworICAg
IH0KKwogICAgIE9mZlNjcmVlblJvb3RXaW5kb3cgbV9vZmZTY3JlZW5XaW5kb3c7CiAgICAgSW50
U2l6ZSBtX3NpemU7CiAgICAgRGlzcGxheSogbV9kaXNwbGF5OwpAQCAtNDEyLDYgKzQ3Nyw5IEBA
IEdyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1FeHBvcnQoKQog
dWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUdldFRleHR1cmVJRCgpCiB7CiAgICAg
aWYgKCFtX3RleHR1cmUpIHsKKyAgICAgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKwogICAgICAgICBHTFhQaXhtYXAgcGl4bWFwID0gbV9wcml2YXRlLT5nbHhQaXht
YXAoKTsKICAgICAgICAgaWYgKCFwaXhtYXApCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTQ0
MiwxMiArNTEwLDE0IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNvcHlGcm9tVGV4
dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzCiB2b2lkIEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spCiB7
CiAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhNYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBw
ZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgIEludFNpemUgc2l6ZSA9IG1fcHJpdmF0ZS0+c2l6
ZSgpOworICAgIEludFNpemUgc2l6ZSA9IHBsYXRmb3JtU2l6ZSgpOwogICAgIGlmIChzaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgdWludDMyX3QgdGV4dHVyZSA9IHBsYXRm
b3JtR2V0VGV4dHVyZUlEKCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm47CisK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybSA9IHRyYW5zZm9ybTsK
ICAgICBhZGp1c3RlZFRyYW5zZm9ybS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVj
dFRvUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBzaXplKSwgdGFyZ2V0UmVjdCkp
OwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX3ByaXZhdGUtPnRleHR1cmVJ
c1lJbnZlcnRlZCgpID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSA6IDA7CkBA
IC00NjIsMTEgKzUzMiwxNSBAQCB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJv
bnRCdWZmZXIoKSBjb25zdAogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU3dh
cEJ1ZmZlcnMoKQogewotICAgIGlmIChtX3ByaXZhdGUtPmlzUmVjZWl2ZXIoKSkgeworICAgIGlm
ICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX3ByaXZhdGUtPmlz
UmVjZWl2ZXIoKSAmJiBwbGF0Zm9ybUdldFRleHR1cmVJRCgpKSB7CiAgICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgcGxhdGZvcm1HZXRUZXh0dXJlSUQoKSk7CiAgICAgICAgIC8v
IFJlbGVhc2UgcHJldmlvdXMgbG9jayBhbmQgcmViaW5kIHRleHR1cmUgdG8gc3VyZmFjZSB0byBn
ZXQgZnJhbWUgdXBkYXRlLgogICAgICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUKG1fcHJpdmF0
ZS0+ZGlzcGxheSgpLCBtX3ByaXZhdGUtPmdseFBpeG1hcCgpLCBHTFhfRlJPTlRfRVhUKTsKICAg
ICAgICAgcEdsWEJpbmRUZXhJbWFnZUVYVChtX3ByaXZhdGUtPmRpc3BsYXkoKSwgbV9wcml2YXRl
LT5nbHhQaXhtYXAoKSwgR0xYX0ZST05UX0VYVCwgMCk7CisKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCkBAIC00NzYsNyArNTUwLDcgQEAgdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0
Zm9ybVN3YXBCdWZmZXJzKCkKIAogSW50U2l6ZSBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU2l6
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2l6ZSgpOworICAgIHJldHVybiBt
X3ByaXZhdGUgPyBtX3ByaXZhdGUtPnNpemUoKSA6IEludFNpemUoKTsKIH0KIAogUGFzc1JlZlB0
cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0Qgc2hhcmVDb250ZXh0KQpAQCAtNTI5LDYgKzYwMyw5IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVVubG9jaygpCiAKIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybURlc3Ry
b3koKQogeworICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAo
bV90ZXh0dXJlKSB7CiAgICAgICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5k
aXNwbGF5KCksIG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCksIEdMWF9GUk9OVF9FWFQpOwogICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3RleHR1cmUpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJjZXMuY3Bw
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dS
ZXNvdXJjZXMuY3BwCmluZGV4IDgwMDhhZmIuLjdhNGNlZWIgMTAwNjQ0Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNw
cAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdp
bmRvd1Jlc291cmNlcy5jcHAKQEAgLTg3LDEyICs4NywxMSBAQCB2b2lkIFgxMU9mZlNjcmVlbldp
bmRvdzo6Y3JlYXRlT2Zmc2NyZWVuV2luZG93KHVpbnQzMl90KiBoYW5kbGVJZCkKICAgICB9CiAK
ICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcChkaXNwbGF5LCB0ZW1wSGFuZGxlSWQsIDAp
OworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIFhDb21wb3NpdGVSZWRpcmVjdFdpbmRv
dyhkaXNwbGF5LCB0ZW1wSGFuZGxlSWQsIENvbXBvc2l0ZVJlZGlyZWN0TWFudWFsKTsKKyNlbmRp
ZgogICAgICpoYW5kbGVJZCA9IHRlbXBIYW5kbGVJZDsKLQotICAgIGlmIChtX3NoYXJlZFJlc291
cmNlcy0+aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkpCi0gICAgICAgIFhNYXBXaW5kb3co
ZGlzcGxheSwgdGVtcEhhbmRsZUlkKTsKLQorICAgIFhNYXBXaW5kb3coZGlzcGxheSwgdGVtcEhh
bmRsZUlkKTsKIH0KIAogdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3coY29u
c3QgdWludDMyX3Qgd2luZG93SWQpCkBAIC0xMDMsNyArMTAyLDkgQEAgdm9pZCBYMTFPZmZTY3Jl
ZW5XaW5kb3c6OmRlc3Ryb3lXaW5kb3coY29uc3QgdWludDMyX3Qgd2luZG93SWQpCiAgICAgRGlz
cGxheSogZGlzcGxheSA9IG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCk7CiAgICAgaWYg
KCFkaXNwbGF5KQogICAgICAgICByZXR1cm47Ci0KKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyAgICBYQ29tcG9zaXRlVW5yZWRpcmVjdFdpbmRvdyhkaXNwbGF5LCB3aW5kb3dJZCwgQ29tcG9z
aXRlUmVkaXJlY3RBdXRvbWF0aWMpOworI2VuZGlmCiAgICAgWERlc3Ryb3lXaW5kb3coZGlzcGxh
eSwgd2luZG93SWQpOwogfQogCkBAIC0xMjgsMzQgKzEyOSwzOSBAQCBib29sIFgxMU9mZlNjcmVl
bldpbmRvdzo6c2V0VmlzdWFsSWQoY29uc3QgRUdMaW50IGlkKQogICAgIFhWaXN1YWxJbmZvKiBj
aG9zZW5WaXN1YWxJbmZvOwogICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKICAgICBjaG9zZW5W
aXN1YWxJbmZvID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXko
KSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCk7Cisg
ICAgaW50IHZpc3VhbERlcHRoID0gY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGg7CisKICAgICBpZiAo
Y2hvc2VuVmlzdWFsSW5mbykgewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgICAgICBp
ZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKSB7CiAg
ICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxG
b3JtYXQobV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgY2hvc2VuVmlzdWFsSW5mby0+
dmlzdWFsKTsKLSAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFN
YXNrID4gMCkgeworICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBo
YU1hc2sgPiAwKQogICAgICAgICAgICAgICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9IGNob3NlblZp
c3VhbEluZm87Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KICNlbmRpZgotICAgICAgICBpZiAoY2hvc2VuVmlzdWFsSW5mby0+ZGVwdGggPT0g
MzIpIHsKKyAgICAgICAgaWYgKCFtX2NvbmZpZ1Zpc3VhbEluZm8gJiYgY2hvc2VuVmlzdWFsSW5m
by0+ZGVwdGggPT0gMzIpCiAgICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSBjaG9zZW5W
aXN1YWxJbmZvOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoIW1fY29uZmlnVmlzdWFsSW5mbykgewotICAgICAgICBtZW1zZXQoJnZpc3VhbElu
Zm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7Ci0gICAgICAgIFhWaXN1YWxJbmZv
KiBtYXRjaGluZ1Zpc3VhbHM7Ci0gICAgICAgIGludCBtYXRjaGluZ0NvdW50ID0gMDsKKyAgICBY
RnJlZShjaG9zZW5WaXN1YWxJbmZvKTsKKworICAgIGlmIChtX2NvbmZpZ1Zpc3VhbEluZm8pCisg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIHZpc3VhbEluZm9UZW1wbGF0ZS5kZXB0aCA9
IGNob3NlblZpc3VhbEluZm8tPmRlcHRoOwotICAgICAgICBtYXRjaGluZ1Zpc3VhbHMgPSBYR2V0
VmlzdWFsSW5mbyhtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxEZXB0aE1h
c2ssICZ2aXN1YWxJbmZvVGVtcGxhdGUsICZtYXRjaGluZ0NvdW50KTsKKyAgICBtZW1zZXQoJnZp
c3VhbEluZm9UZW1wbGF0ZSwgMCwgc2l6ZW9mKFhWaXN1YWxJbmZvKSk7CisgICAgWFZpc3VhbElu
Zm8qIG1hdGNoaW5nVmlzdWFsczsKKyAgICB2aXN1YWxJbmZvVGVtcGxhdGUuZGVwdGggPSB2aXN1
YWxEZXB0aDsKKyAgICBtYXRjaGluZ1Zpc3VhbHMgPSBYR2V0VmlzdWFsSW5mbyhtX3NoYXJlZFJl
c291cmNlcy0+eDExRGlzcGxheSgpLCBWaXN1YWxEZXB0aE1hc2ssICZ2aXN1YWxJbmZvVGVtcGxh
dGUsICZtYXRjaGluZ0NvdW50KTsKKworICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGk8IG1hdGNoaW5nQ291bnQ7IGkrKykgeworICAgICAgICAgICAg
Y2hvc2VuVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07CisgICAgICAgICAgICBpZiAo
Y2hvc2VuVmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKKyAgICAgICAgICAgICAgICBtX2NvbmZp
Z1Zpc3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChtYXRjaGluZ1Zpc3VhbHMpIHsKLSAgICAgICAg
ICAgIG1fY29uZmlnVmlzdWFsSW5mbyA9ICZtYXRjaGluZ1Zpc3VhbHNbMF07CiAgICAgICAgICAg
ICBYRnJlZShtYXRjaGluZ1Zpc3VhbHMpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182344</attachid>
            <date>2013-01-11 07:36:04 -0800</date>
            <delta_ts>2013-01-11 12:14:38 -0800</delta_ts>
            <desc>patchv3</desc>
            <filename>reviewchangesx11.patch</filename>
            <type>text/plain</type>
            <size>14824</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDVhOGUzMTMuLjcyNTNkODcgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEz
LTAxLTEwICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXSBbV2ViR0xdQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1Ry
YW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6R0xYQ29u
ZmlnU2VsZWN0b3I6OmNyZWF0ZUNvbmZpZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNw
b3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhhbmRsZVhFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6ZmluZEZCQ29uZmlnV2l0aEFscGhhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnJlc2V0KToKKyAgICAgICAgKEdy
YXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybUdldFRleHR1cmVJRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIFhF
cnJvciBjaGVja2luZy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
WDExV2luZG93UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlgxMU9mZlNjcmVlbldp
bmRvdzo6ZGVzdHJveVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpYMTFPZmZTY3JlZW5XaW5k
b3c6OnNldFZpc3VhbElkKToKKworICAgICAgICBVbnJlZGlyZWN0cyB0aGUgd2luZG93IGJlZm9y
ZSBkZXN0cm95aW5nIGl0LgorCiAyMDEzLTAxLTA4ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGdv
b2dsZS5jb20+CiAKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCmluZGV4IDk5MmIzYTYuLmExZjJjZGUgMTAw
NjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdM
U3VyZmFjZS5jcHAKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VnbC9FR0xTdXJmYWNlLmNwcApAQCAtMTA4LDEwICsxMDgsMTEgQEAgdm9pZCBFR0xXaW5kb3dU
cmFuc3BvcnRTdXJmYWNlOjpzd2FwQnVmZmVycygpCiAKIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0
U3VyZmFjZTo6ZGVzdHJveSgpCiB7CisgICAgR0xQbGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsK
ICAgICBtX25hdGl2ZVJlc291cmNlLT5kZXN0cm95V2luZG93KG1fYnVmZmVySGFuZGxlKTsKICAg
ICBmcmVlRUdMUmVzb3VyY2VzKCk7Ci0gICAgbV9uYXRpdmVSZXNvdXJjZSA9IG51bGxwdHI7CiAg
ICAgbV9jb25maWdTZWxlY3RvciA9IG51bGxwdHI7CisgICAgbV9uYXRpdmVSZXNvdXJjZSA9IG51
bGxwdHI7CiAgICAgbV9idWZmZXJIYW5kbGUgPSAwOwogfQogCmRpZmYgLS1naXQgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1NlbGVjdG9yLmgg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbmZpZ1Nl
bGVjdG9yLmgKaW5kZXggYTFiMTRiZS4uN2UwY2ZjMCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb25maWdTZWxlY3Rvci5oCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29uZmlnU2Vs
ZWN0b3IuaApAQCAtMTIxLDYgKzEyMSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgZm91bmQg
PSBmYWxzZTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUF2YWlsYWJsZUNvbmZp
Z3M7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fdmlzdWFsSW5mbykKKyAgICAgICAgICAgICAg
ICBYRnJlZShtX3Zpc3VhbEluZm8pOworCiAgICAgICAgICAgICBtX3Zpc3VhbEluZm8gPSBnbFhH
ZXRWaXN1YWxGcm9tRkJDb25maWcobV9zaGFyZWREaXNwbGF5LCB0ZW1wW2ldKTsKICAgICAgICAg
ICAgIGlmICghbV92aXN1YWxJbmZvKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0t
Z2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJm
YWNlLmNwcCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xY
U3VyZmFjZS5jcHAKaW5kZXggMGM3NzQ2ZS4uZmVjNzM2NyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcAorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
CkBAIC05NCwxNCArOTQsMTYgQEAgdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpzd2FwQnVmZmVy
cygpCiAKIHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSgpCiB7CisgICAgR0xQbGF0
Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsKKwogICAgIGlmIChtX2J1ZmZlckhhbmRsZSkgewogICAg
ICAgICBtX25hdGl2ZVJlc291cmNlLT5kZXN0cm95V2luZG93KG1fYnVmZmVySGFuZGxlKTsKICAg
ICAgICAgbV9idWZmZXJIYW5kbGUgPSAwOwogICAgICAgICBtX2RyYXdhYmxlID0gMDsKICAgICB9
CiAKLSAgICBtX25hdGl2ZVJlc291cmNlID0gbnVsbHB0cjsKICAgICBtX2NvbmZpZ1NlbGVjdG9y
ID0gbnVsbHB0cjsKKyAgICBtX25hdGl2ZVJlc291cmNlID0gbnVsbHB0cjsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4
L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5kZXggMDU2OTU5MS4uYmNiNzZh
NiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcApAQCAtMzYsNiArMzYsNyBA
QAogCiAjaW5jbHVkZSA8R0wvZ2xleHQuaD4KICNpbmNsdWRlIDxHTC9nbHguaD4KKyNpbmNsdWRl
IDxYMTEvWGxpYi5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hjb21wb3NpdGUuaD4KICNp
bmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+CiAKQEAgLTUxLDYgKzUyLDE2IEBAIHN0
YXRpYyBQRk5HTEdFTkZSQU1FQlVGRkVSU1BST0MgcEdsR2VuRnJhbWVidWZmZXJzID0gMDsKIHN0
YXRpYyBQRk5HTERFTEVURUZSQU1FQlVGRkVSU1BST0MgcEdsRGVsZXRlRnJhbWVidWZmZXJzID0g
MDsKIHN0YXRpYyBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJEUFJPQyBwR2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRCA9IDA7CiAKKy8vIFVzZWQgZm9yIGhhbmRsaW5nIFhFcnJvci4KK3N0YXRpYyBib29s
IGdWYWxpZE9wZXJhdGlvbiA9IHRydWU7CitzdGF0aWMgaW50IGhhbmRsZVhFcnJvcihEaXNwbGF5
KiwgWEVycm9yRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+ZXJyb3JfY29kZSA9PSBC
YWRNYXRjaCB8fCBldmVudC0+ZXJyb3JfY29kZSA9PSBCYWRXaW5kb3cgfHwgZXZlbnQtPmVycm9y
X2NvZGUgPT0gQmFkQWxsb2MpCisgICAgICAgIGdWYWxpZE9wZXJhdGlvbiA9IGZhbHNlOworCisg
ICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0gewogICAgIEdMWF9M
RVZFTCwgMCwKICAgICBHTFhfRFJBV0FCTEVfVFlQRSwgR0xYX1dJTkRPV19CSVQsCkBAIC02NSw2
ICs3NiwzNyBAQCBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKICAgICBOb25lCiB9OwogCitj
bGFzcyBTY29wZWRFcnJvckhhbmRsZXIgeworCitwdWJsaWM6CisgICAgU2NvcGVkRXJyb3JIYW5k
bGVyKERpc3BsYXkqIGRpc3BsYXkpCisgICAgICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAg
eworICAgICAgICAvLyBYU3luYyBtdXN0IGJlIGNhbGxlZCB0byBlbnN1cmUgdGhhdCBjdXJyZW50
IGVycm9ycyBhcmUgaGFuZGxlZCBieSB0aGUgb3JpZ2luYWwgaGFuZGxlci4KKyAgICAgICAgWFN5
bmMobV9kaXNwbGF5LCBGQUxTRSk7CisgICAgICAgIG1fb3JpZ2luYWxFcnJIYW5kbGVyID0gWFNl
dEVycm9ySGFuZGxlcihoYW5kbGVYRXJyb3IpOworICAgIH0KKworICAgIH5TY29wZWRFcnJvckhh
bmRsZXIoKQorICAgIHsKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JnaW5hbCBoYW5kbGVyLgor
ICAgICAgICBYU2V0RXJyb3JIYW5kbGVyKG1fb3JpZ2luYWxFcnJIYW5kbGVyKTsKKyAgICB9CisK
KyAgICBib29sIGlzVmFsaWRPcGVyYXRpb24oKQorICAgIHsKKyAgICAgICAgZ1ZhbGlkT3BlcmF0
aW9uID0gdHJ1ZTsKKyAgICAgICAgLy8gWFN5bmMgaXMgbmVlZGVkIHRvIGNhdGNoIHBvc3NpYmxl
IGVycm9ycyBhcyB0aGV5IGFyZSBnZW5lcmF0ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIFhT
eW5jKG1fZGlzcGxheSwgRkFMU0UpOworICAgICAgICByZXR1cm4gZ1ZhbGlkT3BlcmF0aW9uOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBYRXJyb3JIYW5kbGVyIG1fb3JpZ2luYWxFcnJIYW5kbGVy
OworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKK307CisKKy8vIEZJWE1FOiBUYWtlIFgxMVdpbmRv
d1Jlc291cmNlcyBhbmQgR0xYQ29uZmlnU2VsZWN0b3IgaW50byB1c2UuCiBjbGFzcyBPZmZTY3Jl
ZW5Sb290V2luZG93IHsKIHB1YmxpYzoKICAgICBPZmZTY3JlZW5Sb290V2luZG93KCkKQEAgLTE5
MywxNiArMjM1LDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogCiAgICAgfkdy
YXBoaWNzU3VyZmFjZVByaXZhdGUoKQogICAgIHsKLSAgICAgICAgaWYgKG1fZ2x4UGl4bWFwKQot
ICAgICAgICAgICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwKTsKLSAg
ICAgICAgbV9nbHhQaXhtYXAgPSAwOwotCi0gICAgICAgIGlmIChtX3hQaXhtYXApCi0gICAgICAg
ICAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1feFBpeG1hcCk7Ci0gICAgICAgIG1feFBpeG1h
cCA9IDA7Ci0KLSAgICAgICAgaWYgKG1fZ2xDb250ZXh0KQotICAgICAgICAgICAgZ2xYRGVzdHJv
eUNvbnRleHQobV9kaXNwbGF5LCBtX2dsQ29udGV4dCk7CisgICAgICAgIHJlc2V0KCk7CiAgICAg
fQogCiAgICAgdWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
MjM5LDYgKzI3MiwxOSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAgICAgICAg
IFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7CiAgICAgICAgIGlmICghWEdldFdpbmRvd0F0dHJpYnV0
ZXMobV9kaXNwbGF5LCB3aW5JZCwgJmF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSB3aW5kb3cgaXMgbWFwcGVkLgorICAgICAgICBpZiAoYXR0
ci5tYXBfc3RhdGUgPT0gSXNVbm1hcHBlZCB8fCBhdHRyLm1hcF9zdGF0ZSA9PSBJc1Vudmlld2Fi
bGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgU2NvcGVkRXJyb3JIYW5kbGVyIGhh
bmRsZXIobV9kaXNwbGF5KTsKKyAgICAgICAgbV94UGl4bWFwID0gWENvbXBvc2l0ZU5hbWVXaW5k
b3dQaXhtYXAobV9kaXNwbGF5LCB3aW5JZCk7CisKKyAgICAgICAgaWYgKCFoYW5kbGVyLmlzVmFs
aWRPcGVyYXRpb24oKSkgeworICAgICAgICAgICAgcmVzZXQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIG1fc2l6ZSA9IEludFNpemUoYXR0ci53aWR0aCwgYXR0
ci5oZWlnaHQpOwogCiAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVy
RmluZFZpc3VhbEZvcm1hdChtX2Rpc3BsYXksIGF0dHIudmlzdWFsKTsKQEAgLTI0OSwxMyArMjk1
LDE1IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgICAgICAvLyBJZiBv
cmlnaW4gd2luZG93IGhhcyBhbHBoYSB0aGVuIGZpbmQgY29uZmlnIHdpdGggYWxwaGEuCiAgICAg
ICAgIEdMWEZCQ29uZmlnJiBjb25maWcgPSBtX2hhc0FscGhhID8gZmluZEZCQ29uZmlnV2l0aEFs
cGhhKGNvbmZpZ3MsIG51bWJlck9mQ29uZmlncykgOiBjb25maWdzWzBdOwotCi0gICAgICAgIG1f
eFBpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgd2luSWQpOwog
ICAgICAgICBtX2dseFBpeG1hcCA9IGdsWENyZWF0ZVBpeG1hcChtX2Rpc3BsYXksIGNvbmZpZywg
bV94UGl4bWFwLCBnbHhBdHRyaWJ1dGVzKTsKIAotICAgICAgICB1aW50IGludmVydGVkID0gMDsK
LSAgICAgICAgZ2xYUXVlcnlEcmF3YWJsZShtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9J
TlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7Ci0gICAgICAgIG1fdGV4dHVyZUlzWUludmVydGVkID0g
ISFpbnZlcnRlZDsKKyAgICAgICAgaWYgKCFoYW5kbGVyLmlzVmFsaWRPcGVyYXRpb24oKSkKKyAg
ICAgICAgICAgIHJlc2V0KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdWludCBpbnZl
cnRlZCA9IDA7CisgICAgICAgICAgICBnbFhRdWVyeURyYXdhYmxlKG1fZGlzcGxheSwgbV9nbHhQ
aXhtYXAsIEdMWF9ZX0lOVkVSVEVEX0VYVCwgJmludmVydGVkKTsKKyAgICAgICAgICAgIG1fdGV4
dHVyZUlzWUludmVydGVkID0gISFpbnZlcnRlZDsKKyAgICAgICAgfQogCiAgICAgICAgIFhGcmVl
KGNvbmZpZ3MpOwogICAgIH0KQEAgLTM2MCwxNiArNDA4LDMzIEBAIHByaXZhdGU6CiAKICAgICAg
ICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3JtYXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1h
dChtX2Rpc3BsYXksIHZpc3VhbEluZm8tPnZpc3VhbCk7CiAgICAgICAgICAgICBYRnJlZSh2aXN1
YWxJbmZvKTsKLSAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFN
YXNrID4gMCkgeworCisgICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFs
cGhhTWFzayA+IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZiQ29uZmlnc1tpXTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIC8v
IFJldHVybiAxc3QgY29uZmlnIGFzIGEgZmFsbGJhY2sgd2l0aCBubyBhbHBoYSBzdXBwb3J0Lgog
ICAgICAgICByZXR1cm4gZmJDb25maWdzWzBdOwogICAgIH0KIAorICAgIHZvaWQgcmVzZXQoKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fZ2x4UGl4bWFwKQorICAgICAgICAgICAgZ2xYRGVzdHJveVBp
eG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwKTsKKworICAgICAgICBtX2dseFBpeG1hcCA9IDA7
CisKKyAgICAgICAgaWYgKG1feFBpeG1hcCkKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKG1fZGlz
cGxheSwgbV94UGl4bWFwKTsKKworICAgICAgICBtX3hQaXhtYXAgPSAwOworCisgICAgICAgIGlm
IChtX2dsQ29udGV4dCkKKyAgICAgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwg
bV9nbENvbnRleHQpOworCisgICAgICAgIG1fZ2xDb250ZXh0ID0gMDsKKyAgICB9CisKICAgICBP
ZmZTY3JlZW5Sb290V2luZG93IG1fb2ZmU2NyZWVuV2luZG93OwogICAgIEludFNpemUgbV9zaXpl
OwogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKQEAgLTQxMiw2ICs0NzcsOSBAQCBHcmFwaGljc1N1
cmZhY2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKIHVpbnQzMl90IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1HZXRUZXh0dXJlSUQoKQogewogICAgIGlmICghbV90ZXh0
dXJlKSB7CisgICAgICAgIGlmICghbV9wcml2YXRlKQorICAgICAgICAgICAgcmV0dXJuIDA7CisK
ICAgICAgICAgR0xYUGl4bWFwIHBpeG1hcCA9IG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCk7CiAgICAg
ICAgIGlmICghcGl4bWFwKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC00NDIsMTIgKzUxMCwx
NCBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgcwogdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKQogewogICAgIFRleHR1
cmVNYXBwZXJHTCogdGV4TWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0
dXJlTWFwcGVyKTsKLSAgICBJbnRTaXplIHNpemUgPSBtX3ByaXZhdGUtPnNpemUoKTsKKyAgICBJ
bnRTaXplIHNpemUgPSBwbGF0Zm9ybVNpemUoKTsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKKwogICAgIHVpbnQzMl90IHRleHR1cmUgPSBwbGF0Zm9ybUdldFRleHR1
cmVJRCgpOwogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAgICAgYWRqdXN0
ZWRUcmFuc2Zvcm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQ6Onplcm8oKSwgc2l6ZSksIHRhcmdldFJlY3QpKTsKICAgICBUZXh0
dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gbV9wcml2YXRlLT50ZXh0dXJlSXNZSW52ZXJ0ZWQo
KSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgOiAwOwpAQCAtNDYyLDExICs1
MzIsMTUgQEAgdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVmZmVyKCkg
Y29uc3QKIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVN3YXBCdWZmZXJzKCkK
IHsKLSAgICBpZiAobV9wcml2YXRlLT5pc1JlY2VpdmVyKCkpIHsKKyAgICBpZiAoIW1fcHJpdmF0
ZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobV9wcml2YXRlLT5pc1JlY2VpdmVyKCkg
JiYgcGxhdGZvcm1HZXRUZXh0dXJlSUQoKSkgewogICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHBsYXRmb3JtR2V0VGV4dHVyZUlEKCkpOwogICAgICAgICAvLyBSZWxlYXNlIHBy
ZXZpb3VzIGxvY2sgYW5kIHJlYmluZCB0ZXh0dXJlIHRvIHN1cmZhY2UgdG8gZ2V0IGZyYW1lIHVw
ZGF0ZS4KICAgICAgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVChtX3ByaXZhdGUtPmRpc3BsYXko
KSwgbV9wcml2YXRlLT5nbHhQaXhtYXAoKSwgR0xYX0ZST05UX0VYVCk7CiAgICAgICAgIHBHbFhC
aW5kVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5kaXNwbGF5KCksIG1fcHJpdmF0ZS0+Z2x4UGl4bWFw
KCksIEdMWF9GUk9OVF9FWFQsIDApOworCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
NDc2LDcgKzU1MCw3IEBAIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVm
ZmVycygpCiAKIEludFNpemUgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVNpemUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNpemUoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlID8g
bV9wcml2YXRlLT5zaXplKCkgOiBJbnRTaXplKCk7CiB9CiAKIFBhc3NSZWZQdHI8R3JhcGhpY3NT
dXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ3JlYXRlKGNvbnN0IEludFNpemUmIHNp
emUsIEZsYWdzIGZsYWdzLCBjb25zdCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHNoYXJlQ29u
dGV4dCkKQEAgLTUyOSw2ICs2MDMsOSBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1V
bmxvY2soKQogCiB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1EZXN0cm95KCkKIHsKKyAg
ICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1fdGV4dHVyZSkg
ewogICAgICAgICBwR2xYUmVsZWFzZVRleEltYWdlRVhUKG1fcHJpdmF0ZS0+ZGlzcGxheSgpLCBt
X3ByaXZhdGUtPmdseFBpeG1hcCgpLCBHTFhfRlJPTlRfRVhUKTsKICAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNwcCBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExV2luZG93UmVzb3VyY2VzLmNw
cAppbmRleCA4MDA4YWZiLi43YTRjZWViIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMVdpbmRvd1Jlc291cmNlcy5jcHAKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9YMTFXaW5kb3dSZXNvdXJj
ZXMuY3BwCkBAIC04NywxMiArODcsMTEgQEAgdm9pZCBYMTFPZmZTY3JlZW5XaW5kb3c6OmNyZWF0
ZU9mZnNjcmVlbldpbmRvdyh1aW50MzJfdCogaGFuZGxlSWQpCiAgICAgfQogCiAgICAgWFNldFdp
bmRvd0JhY2tncm91bmRQaXhtYXAoZGlzcGxheSwgdGVtcEhhbmRsZUlkLCAwKTsKKyNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICBYQ29tcG9zaXRlUmVkaXJlY3RXaW5kb3coZGlzcGxheSwg
dGVtcEhhbmRsZUlkLCBDb21wb3NpdGVSZWRpcmVjdE1hbnVhbCk7CisjZW5kaWYKICAgICAqaGFu
ZGxlSWQgPSB0ZW1wSGFuZGxlSWQ7Ci0KLSAgICBpZiAobV9zaGFyZWRSZXNvdXJjZXMtPmlzWFJl
bmRlckV4dGVuc2lvblN1cHBvcnRlZCgpKQotICAgICAgICBYTWFwV2luZG93KGRpc3BsYXksIHRl
bXBIYW5kbGVJZCk7Ci0KKyAgICBYTWFwV2luZG93KGRpc3BsYXksIHRlbXBIYW5kbGVJZCk7CiB9
CiAKIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93OjpkZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90
IHdpbmRvd0lkKQpAQCAtMTAzLDcgKzEwMiw5IEBAIHZvaWQgWDExT2ZmU2NyZWVuV2luZG93Ojpk
ZXN0cm95V2luZG93KGNvbnN0IHVpbnQzMl90IHdpbmRvd0lkKQogICAgIERpc3BsYXkqIGRpc3Bs
YXkgPSBtX3NoYXJlZFJlc291cmNlcy0+eDExRGlzcGxheSgpOwogICAgIGlmICghZGlzcGxheSkK
ICAgICAgICAgcmV0dXJuOwotCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgWENvbXBv
c2l0ZVVucmVkaXJlY3RXaW5kb3coZGlzcGxheSwgd2luZG93SWQsIENvbXBvc2l0ZVJlZGlyZWN0
QXV0b21hdGljKTsKKyNlbmRpZgogICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIHdpbmRvd0lk
KTsKIH0KIApAQCAtMTI4LDM0ICsxMjksMzkgQEAgYm9vbCBYMTFPZmZTY3JlZW5XaW5kb3c6OnNl
dFZpc3VhbElkKGNvbnN0IEVHTGludCBpZCkKICAgICBYVmlzdWFsSW5mbyogY2hvc2VuVmlzdWFs
SW5mbzsKICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7CiAgICAgY2hvc2VuVmlzdWFsSW5mbyA9
IFhHZXRWaXN1YWxJbmZvKG1fc2hhcmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIFZpc3VhbElE
TWFzaywgJnZpc3VhbEluZm9UZW1wbGF0ZSwgJm1hdGNoaW5nQ291bnQpOworICAgIGludCB2aXN1
YWxEZXB0aCA9IGNob3NlblZpc3VhbEluZm8tPmRlcHRoOworCiAgICAgaWYgKGNob3NlblZpc3Vh
bEluZm8pIHsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAgICAgaWYgKG1fc2hhcmVk
UmVzb3VyY2VzLT5pc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQoKSkgewogICAgICAgICAgICAg
WFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fc2hh
cmVkUmVzb3VyY2VzLT54MTFEaXNwbGF5KCksIGNob3NlblZpc3VhbEluZm8tPnZpc3VhbCk7Ci0g
ICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsK
KyAgICAgICAgICAgIGlmIChmb3JtYXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkK
ICAgICAgICAgICAgICAgICBtX2NvbmZpZ1Zpc3VhbEluZm8gPSBjaG9zZW5WaXN1YWxJbmZvOwot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAj
ZW5kaWYKLSAgICAgICAgaWYgKGNob3NlblZpc3VhbEluZm8tPmRlcHRoID09IDMyKSB7CisgICAg
ICAgIGlmICghbV9jb25maWdWaXN1YWxJbmZvICYmIGNob3NlblZpc3VhbEluZm8tPmRlcHRoID09
IDMyKQogICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZvID0gY2hvc2VuVmlzdWFsSW5mbzsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFt
X2NvbmZpZ1Zpc3VhbEluZm8pIHsKLSAgICAgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVtcGxhdGUs
IDAsIHNpemVvZihYVmlzdWFsSW5mbykpOwotICAgICAgICBYVmlzdWFsSW5mbyogbWF0Y2hpbmdW
aXN1YWxzOwotICAgICAgICBpbnQgbWF0Y2hpbmdDb3VudCA9IDA7CisgICAgWEZyZWUoY2hvc2Vu
VmlzdWFsSW5mbyk7CisKKyAgICBpZiAobV9jb25maWdWaXN1YWxJbmZvKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgICAgICB2aXN1YWxJbmZvVGVtcGxhdGUuZGVwdGggPSBjaG9zZW5WaXN1
YWxJbmZvLT5kZXB0aDsKLSAgICAgICAgbWF0Y2hpbmdWaXN1YWxzID0gWEdldFZpc3VhbEluZm8o
bV9zaGFyZWRSZXNvdXJjZXMtPngxMURpc3BsYXkoKSwgVmlzdWFsRGVwdGhNYXNrLCAmdmlzdWFs
SW5mb1RlbXBsYXRlLCAmbWF0Y2hpbmdDb3VudCk7CisgICAgbWVtc2V0KCZ2aXN1YWxJbmZvVGVt
cGxhdGUsIDAsIHNpemVvZihYVmlzdWFsSW5mbykpOworICAgIFhWaXN1YWxJbmZvKiBtYXRjaGlu
Z1Zpc3VhbHM7CisgICAgdmlzdWFsSW5mb1RlbXBsYXRlLmRlcHRoID0gdmlzdWFsRGVwdGg7Cisg
ICAgbWF0Y2hpbmdWaXN1YWxzID0gWEdldFZpc3VhbEluZm8obV9zaGFyZWRSZXNvdXJjZXMtPngx
MURpc3BsYXkoKSwgVmlzdWFsRGVwdGhNYXNrLCAmdmlzdWFsSW5mb1RlbXBsYXRlLCAmbWF0Y2hp
bmdDb3VudCk7CisKKyAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpPCBtYXRjaGluZ0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGNob3NlblZpc3Vh
bEluZm8gPSAmbWF0Y2hpbmdWaXN1YWxzWzBdOworICAgICAgICAgICAgaWYgKGNob3NlblZpc3Vh
bEluZm8tPmRlcHRoID09IDMyKSB7CisgICAgICAgICAgICAgICAgbV9jb25maWdWaXN1YWxJbmZv
ID0gY2hvc2VuVmlzdWFsSW5mbzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KIAotICAgICAgICBpZiAobWF0Y2hpbmdWaXN1YWxzKSB7Ci0gICAgICAgICAgICBtX2NvbmZp
Z1Zpc3VhbEluZm8gPSAmbWF0Y2hpbmdWaXN1YWxzWzBdOwogICAgICAgICAgICAgWEZyZWUobWF0
Y2hpbmdWaXN1YWxzKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
fQogCg==
</data>
<flag name="review"
          id="200313"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182391</attachid>
            <date>2013-01-11 12:14:38 -0800</date>
            <delta_ts>2013-01-13 13:36:13 -0800</delta_ts>
            <desc>patchv4</desc>
            <filename>graphicssurfaceglxchanges.patch</filename>
            <type>text/plain</type>
            <size>9547</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDQ3MWU5MTkuLmQ3YTNlMWEgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEz
LTAxLTExICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXZWJHTF0gQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpoYW5kbGVYUGl4bWFwQ3JlYXRpb25FcnJvcik6CisgICAgICAgIChTY29wZWRY
UGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBp
eG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyOjpTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVy
Ojp+U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlcjo6aXNWYWxpZE9wZXJhdGlvbik6CisK
KyAgICAgICAgSGVscGVyIGNsYXNzIHRvIGNhdGNoIFhFcnJvcnMuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOiBBZGRl
ZCBzdXBwb3J0IHRvIGNoZWNrIGZvciBhbnkgZ2VuZXJhdGVkIFhFcnJvcnMuCisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpmaW5kRkJDb25maWdXaXRoQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y2xlYXIpOiBEZXN0cm95
cyBHTCBSZXNvdXJjZXMuCisgICAgICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1HZXRUZXh0dXJlSUQpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFw
cGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVm
ZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSk6CisK
KyAgICAgICAgIEFkZGVkIG51bGwgcHRyIGNoZWNrcy4KKwogMjAxMy0wMS0wOCAgWW9zaGlmdW1p
IElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgoKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNl
R0xYLmNwcAppbmRleCAwNTY5NTkxLi40ODMwMGU4IDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGljc1N1
cmZhY2VHTFguY3BwCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlIDxHTC9nbGV4dC5oPgog
I2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8WDEx
L2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5k
ZXIuaD4KIApAQCAtNTEsNiArNTIsMTYgQEAgc3RhdGljIFBGTkdMR0VORlJBTUVCVUZGRVJTUFJP
QyBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSAwOwogc3RhdGljIFBGTkdMREVMRVRFRlJBTUVCVUZGRVJT
UFJPQyBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSAwOwogc3RhdGljIFBGTkdMRlJBTUVCVUZGRVJU
RVhUVVJFMkRQUk9DIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gMDsKIAorLy8gVXNlZCBmb3Ig
aGFuZGxpbmcgWEVycm9yLgorc3RhdGljIGJvb2wgZ1ZhbGlkT3BlcmF0aW9uID0gdHJ1ZTsKK3N0
YXRpYyBpbnQgaGFuZGxlWFBpeG1hcENyZWF0aW9uRXJyb3IoRGlzcGxheSosIFhFcnJvckV2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmVycm9yX2NvZGUgPT0gQmFkTWF0Y2ggfHwgZXZl
bnQtPmVycm9yX2NvZGUgPT0gQmFkV2luZG93IHx8IGV2ZW50LT5lcnJvcl9jb2RlID09IEJhZEFs
bG9jKQorICAgICAgICBnVmFsaWRPcGVyYXRpb24gPSBmYWxzZTsKKworICAgIHJldHVybiAwOwor
fQorCiBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKICAgICBHTFhfTEVWRUwsIDAsCiAgICAg
R0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULApAQCAtNjUsNiArNzYsMzcgQEAgc3Rh
dGljIGludCBhdHRyaWJ1dGVzW10gPSB7CiAgICAgTm9uZQogfTsKIAorY2xhc3MgU2NvcGVkWFBp
eG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyIHsKKworcHVibGljOgorICAgIFNjb3BlZFhQaXhtYXBD
cmVhdGlvbkVycm9ySGFuZGxlcihEaXNwbGF5KiBkaXNwbGF5KQorICAgICAgICA6IG1fZGlzcGxh
eShkaXNwbGF5KQorICAgIHsKKyAgICAgICAgLy8gWFN5bmMgbXVzdCBiZSBjYWxsZWQgdG8gZW5z
dXJlIHRoYXQgY3VycmVudCBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgdGhlIG9yaWdpbmFsIGhhbmRs
ZXIuCisgICAgICAgIFhTeW5jKG1fZGlzcGxheSwgZmFsc2UpOworICAgICAgICBtX3ByZXZpb3Vz
RXJyb3JIYW5kbGVyID0gWFNldEVycm9ySGFuZGxlcihoYW5kbGVYUGl4bWFwQ3JlYXRpb25FcnJv
cik7CisgICAgfQorCisgICAgflNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlcigpCisg
ICAgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBoYW5kbGVyLgorICAgICAgICBY
U2V0RXJyb3JIYW5kbGVyKG1fcHJldmlvdXNFcnJvckhhbmRsZXIpOworICAgIH0KKworICAgIGJv
b2wgaXNWYWxpZE9wZXJhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBnVmFsaWRPcGVyYXRp
b24gPSB0cnVlOworICAgICAgICAvLyBYU3luYyBpcyBuZWVkZWQgdG8gY2F0Y2ggcG9zc2libGUg
ZXJyb3JzIGFzIHRoZXkgYXJlIGdlbmVyYXRlZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgWFN5
bmMobV9kaXNwbGF5LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBnVmFsaWRPcGVyYXRpb247Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFhFcnJvckhhbmRsZXIgbV9wcmV2aW91c0Vycm9ySGFuZGxl
cjsKKyAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Cit9OworCisvLyBGSVhNRTogVGFrZSBYMTFXaW5k
b3dSZXNvdXJjZXMgYW5kIEdMWENvbmZpZ1NlbGVjdG9yIGludG8gdXNlLgogY2xhc3MgT2ZmU2Ny
ZWVuUm9vdFdpbmRvdyB7CiBwdWJsaWM6CiAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdygpCkBAIC0x
OTMsMTYgKzIzNSw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAgIH5H
cmFwaGljc1N1cmZhY2VQcml2YXRlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX2dseFBpeG1hcCkK
LSAgICAgICAgICAgIGdsWERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7Ci0g
ICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKLQotICAgICAgICBpZiAobV94UGl4bWFwKQotICAgICAg
ICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOwotICAgICAgICBtX3hQaXht
YXAgPSAwOwotCi0gICAgICAgIGlmIChtX2dsQ29udGV4dCkKLSAgICAgICAgICAgIGdsWERlc3Ry
b3lDb250ZXh0KG1fZGlzcGxheSwgbV9nbENvbnRleHQpOworICAgICAgICBjbGVhcigpOwogICAg
IH0KIAogICAgIHVpbnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAg
LTIzOSw2ICsyNzIsMTkgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAgICAg
ICBYV2luZG93QXR0cmlidXRlcyBhdHRyOwogICAgICAgICBpZiAoIVhHZXRXaW5kb3dBdHRyaWJ1
dGVzKG1fZGlzcGxheSwgd2luSWQsICZhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgd2luZG93IGlzIG1hcHBlZC4KKyAgICAgICAgaWYgKGF0
dHIubWFwX3N0YXRlID09IElzVW5tYXBwZWQgfHwgYXR0ci5tYXBfc3RhdGUgPT0gSXNVbnZpZXdh
YmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFNjb3BlZFhQaXhtYXBDcmVhdGlv
bkVycm9ySGFuZGxlciBoYW5kbGVyKG1fZGlzcGxheSk7CisgICAgICAgIG1feFBpeG1hcCA9IFhD
b21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgd2luSWQpOworCisgICAgICAgIGlm
ICghaGFuZGxlci5pc1ZhbGlkT3BlcmF0aW9uKCkpIHsKKyAgICAgICAgICAgIGNsZWFyKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBtX3NpemUgPSBJbnRTaXpl
KGF0dHIud2lkdGgsIGF0dHIuaGVpZ2h0KTsKIAogICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCog
Zm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5LCBhdHRyLnZpc3VhbCk7
CkBAIC0yNDksMTMgKzI5NSwxNSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSB7CiAK
ICAgICAgICAgLy8gSWYgb3JpZ2luIHdpbmRvdyBoYXMgYWxwaGEgdGhlbiBmaW5kIGNvbmZpZyB3
aXRoIGFscGhhLgogICAgICAgICBHTFhGQkNvbmZpZyYgY29uZmlnID0gbV9oYXNBbHBoYSA/IGZp
bmRGQkNvbmZpZ1dpdGhBbHBoYShjb25maWdzLCBudW1iZXJPZkNvbmZpZ3MpIDogY29uZmlnc1sw
XTsKLQotICAgICAgICBtX3hQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcChtX2Rp
c3BsYXksIHdpbklkKTsKICAgICAgICAgbV9nbHhQaXhtYXAgPSBnbFhDcmVhdGVQaXhtYXAobV9k
aXNwbGF5LCBjb25maWcsIG1feFBpeG1hcCwgZ2x4QXR0cmlidXRlcyk7CiAKLSAgICAgICAgdWlu
dCBpbnZlcnRlZCA9IDA7Ci0gICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUobV9kaXNwbGF5LCBtX2ds
eFBpeG1hcCwgR0xYX1lfSU5WRVJURURfRVhULCAmaW52ZXJ0ZWQpOwotICAgICAgICBtX3RleHR1
cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0ZWQ7CisgICAgICAgIGlmICghaGFuZGxlci5pc1ZhbGlk
T3BlcmF0aW9uKCkpCisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIHVpbnQgaW52ZXJ0ZWQgPSAwOworICAgICAgICAgICAgZ2xYUXVlcnlEcmF3YWJsZSht
X2Rpc3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7Cisg
ICAgICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0ZWQ7CisgICAgICAgIH0K
IAogICAgICAgICBYRnJlZShjb25maWdzKTsKICAgICB9CkBAIC0zNjAsMTYgKzQwOCwzMyBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRl
ckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5LCB2aXN1YWxJbmZvLT52aXN1YWwpOwogICAgICAg
ICAgICAgWEZyZWUodmlzdWFsSW5mbyk7Ci0gICAgICAgICAgICBpZiAoZm9ybWF0ICYmIGZvcm1h
dC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKKworICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBm
b3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKQogICAgICAgICAgICAgICAgIHJldHVybiBmYkNv
bmZpZ3NbaV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBSZXR1cm4gMXN0IGNvbmZpZyBhcyBhIGZhbGxiYWNrIHdpdGggbm8g
YWxwaGEgc3VwcG9ydC4KICAgICAgICAgcmV0dXJuIGZiQ29uZmlnc1swXTsKICAgICB9CiAKKyAg
ICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dseFBpeG1hcCkgeworICAgICAg
ICAgICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwKTsKKyAgICAgICAg
ICAgIG1fZ2x4UGl4bWFwID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3hQaXhtYXAp
IHsKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV94UGl4bWFwKTsKKyAgICAg
ICAgICAgIG1feFBpeG1hcCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAobV9nbENvbnRl
eHQpIHsKKyAgICAgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9nbENvbnRl
eHQpOworICAgICAgICAgICAgbV9nbENvbnRleHQgPSAwOworICAgICAgICB9CisgICAgfQorCiAg
ICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsKICAgICBJbnRTaXplIG1f
c2l6ZTsKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CkBAIC00MTIsNiArNDc3LDkgQEAgR3JhcGhp
Y3NTdXJmYWNlVG9rZW4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCiB1aW50MzJf
dCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKIHsKICAgICBpZiAoIW1f
dGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAgICAgICAgIHJldHVybiAw
OworCiAgICAgICAgIEdMWFBpeG1hcCBwaXhtYXAgPSBtX3ByaXZhdGUtPmdseFBpeG1hcCgpOwog
ICAgICAgICBpZiAoIXBpeG1hcCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNDQyLDEyICs1
MTAsMTQgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVp
bnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpw
bGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKIHsKICAgICBU
ZXh0dXJlTWFwcGVyR0wqIHRleE1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlcik7Ci0gICAgSW50U2l6ZSBzaXplID0gbV9wcml2YXRlLT5zaXplKCk7Cisg
ICAgSW50U2l6ZSBzaXplID0gcGxhdGZvcm1TaXplKCk7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CisKICAgICB1aW50MzJfdCB0ZXh0dXJlID0gcGxhdGZvcm1HZXRU
ZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybjsKKwogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFk
anVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpLCB0YXJnZXRSZWN0KSk7CiAgICAg
VGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fcHJpdmF0ZS0+dGV4dHVyZUlzWUludmVy
dGVkKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIDogMDsKQEAgLTQ2Miwx
MSArNTMyLDE1IEBAIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Gcm9udEJ1ZmZl
cigpIGNvbnN0CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2FwQnVmZmVy
cygpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aXNSZWNlaXZlcigpKSB7CisgICAgaWYgKCFtX3By
aXZhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fcHJpdmF0ZS0+aXNSZWNlaXZl
cigpICYmIHBsYXRmb3JtR2V0VGV4dHVyZUlEKCkpIHsKICAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBwbGF0Zm9ybUdldFRleHR1cmVJRCgpKTsKICAgICAgICAgLy8gUmVsZWFz
ZSBwcmV2aW91cyBsb2NrIGFuZCByZWJpbmQgdGV4dHVyZSB0byBzdXJmYWNlIHRvIGdldCBmcmFt
ZSB1cGRhdGUuCiAgICAgICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQobV9wcml2YXRlLT5kaXNw
bGF5KCksIG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCksIEdMWF9GUk9OVF9FWFQpOwogICAgICAgICBw
R2xYQmluZFRleEltYWdlRVhUKG1fcHJpdmF0ZS0+ZGlzcGxheSgpLCBtX3ByaXZhdGUtPmdseFBp
eG1hcCgpLCBHTFhfRlJPTlRfRVhULCAwKTsKKwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
QEAgLTQ3Niw3ICs1NTAsNyBAQCB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU3dh
cEJ1ZmZlcnMoKQogCiBJbnRTaXplIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1TaXplKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaXplKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZSA/IG1fcHJpdmF0ZS0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQogCiBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBzaGFy
ZUNvbnRleHQpCkBAIC01MjksNiArNjAzLDkgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtVW5sb2NrKCkKIAogdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSgpCiB7
CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX3RleHR1
cmUpIHsKICAgICAgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVChtX3ByaXZhdGUtPmRpc3BsYXko
KSwgbV9wcml2YXRlLT5nbHhQaXhtYXAoKSwgR0xYX0ZST05UX0VYVCk7CiAgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182489</attachid>
            <date>2013-01-13 13:36:13 -0800</date>
            <delta_ts>2013-01-14 13:23:09 -0800</delta_ts>
            <desc>patchv5</desc>
            <filename>xpixmapcrashfix.patch</filename>
            <type>text/plain</type>
            <size>9448</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDQ3MWU5MTkuLmQ3YTNlMWEgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEz
LTAxLTExICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXZWJHTF0gQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpoYW5kbGVYUGl4bWFwQ3JlYXRpb25FcnJvcik6CisgICAgICAgIChTY29wZWRY
UGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBp
eG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyOjpTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVy
Ojp+U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlcjo6aXNWYWxpZE9wZXJhdGlvbik6CisK
KyAgICAgICAgSGVscGVyIENsYXNzIHRvIGNhdGNoIFhFcnJvcnMuCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOiBBZGRl
ZCBzdXBwb3J0IHRvIGNoZWNrIGFuZCBoYW5kbGUgZ2VuZXJhdGVkIFhFcnJvcnMuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpmaW5kRkJDb25maWdXaXRoQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y2xlYXIpOiBEZXN0
cm95cyBHTCBSZXNvdXJjZXMuCisgICAgICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1HZXRUZXh0dXJlSUQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJl
TWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Td2Fw
QnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRGVzdHJveSk6
CisKKyAgICAgICAgIEFkZGVkIG51bGwgcHRyIGNoZWNrcy4KKwogMjAxMy0wMS0wOCAgWW9zaGlm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgoKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhpY3NTdXJm
YWNlR0xYLmNwcAppbmRleCAwNTY5NTkxLi4zMjYzMDNmIDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGlj
c1N1cmZhY2VHTFguY3BwCkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlIDxHTC9nbGV4dC5o
PgogI2luY2x1ZGUgPEdML2dseC5oPgorI2luY2x1ZGUgPFgxMS9YbGliLmg+CiAjaW5jbHVkZSA8
WDExL2V4dGVuc2lvbnMvWGNvbXBvc2l0ZS5oPgogI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hy
ZW5kZXIuaD4KIApAQCAtNTEsNiArNTIsMTYgQEAgc3RhdGljIFBGTkdMR0VORlJBTUVCVUZGRVJT
UFJPQyBwR2xHZW5GcmFtZWJ1ZmZlcnMgPSAwOwogc3RhdGljIFBGTkdMREVMRVRFRlJBTUVCVUZG
RVJTUFJPQyBwR2xEZWxldGVGcmFtZWJ1ZmZlcnMgPSAwOwogc3RhdGljIFBGTkdMRlJBTUVCVUZG
RVJURVhUVVJFMkRQUk9DIHBHbEZyYW1lYnVmZmVyVGV4dHVyZTJEID0gMDsKIAorLy8gVXNlZCBm
b3IgaGFuZGxpbmcgWEVycm9yLgorc3RhdGljIGJvb2wgZ1ZhbGlkT3BlcmF0aW9uID0gdHJ1ZTsK
K3N0YXRpYyBpbnQgaGFuZGxlWFBpeG1hcENyZWF0aW9uRXJyb3IoRGlzcGxheSosIFhFcnJvckV2
ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPmVycm9yX2NvZGUgPT0gQmFkTWF0Y2ggfHwg
ZXZlbnQtPmVycm9yX2NvZGUgPT0gQmFkV2luZG93IHx8IGV2ZW50LT5lcnJvcl9jb2RlID09IEJh
ZEFsbG9jKQorICAgICAgICBnVmFsaWRPcGVyYXRpb24gPSBmYWxzZTsKKworICAgIHJldHVybiAw
OworfQorCiBzdGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKICAgICBHTFhfTEVWRUwsIDAsCiAg
ICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULApAQCAtNjUsNiArNzYsMzcgQEAg
c3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CiAgICAgTm9uZQogfTsKIAorY2xhc3MgU2NvcGVk
WFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyIHsKKworcHVibGljOgorICAgIFNjb3BlZFhQaXht
YXBDcmVhdGlvbkVycm9ySGFuZGxlcihEaXNwbGF5KiBkaXNwbGF5KQorICAgICAgICA6IG1fZGlz
cGxheShkaXNwbGF5KQorICAgIHsKKyAgICAgICAgLy8gWFN5bmMgbXVzdCBiZSBjYWxsZWQgdG8g
ZW5zdXJlIHRoYXQgY3VycmVudCBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgdGhlIG9yaWdpbmFsIGhh
bmRsZXIuCisgICAgICAgIFhTeW5jKG1fZGlzcGxheSwgZmFsc2UpOworICAgICAgICBtX3ByZXZp
b3VzRXJyb3JIYW5kbGVyID0gWFNldEVycm9ySGFuZGxlcihoYW5kbGVYUGl4bWFwQ3JlYXRpb25F
cnJvcik7CisgICAgfQorCisgICAgflNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlcigp
CisgICAgeworICAgICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBoYW5kbGVyLgorICAgICAg
ICBYU2V0RXJyb3JIYW5kbGVyKG1fcHJldmlvdXNFcnJvckhhbmRsZXIpOworICAgIH0KKworICAg
IGJvb2wgaXNWYWxpZE9wZXJhdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBnVmFsaWRPcGVy
YXRpb24gPSB0cnVlOworICAgICAgICAvLyBYU3luYyBpcyBuZWVkZWQgdG8gY2F0Y2ggcG9zc2li
bGUgZXJyb3JzIGFzIHRoZXkgYXJlIGdlbmVyYXRlZCBhc3luY2hyb25vdXNseS4KKyAgICAgICAg
WFN5bmMobV9kaXNwbGF5LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBnVmFsaWRPcGVyYXRpb247
CisgICAgfQorCitwcml2YXRlOgorICAgIFhFcnJvckhhbmRsZXIgbV9wcmV2aW91c0Vycm9ySGFu
ZGxlcjsKKyAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7Cit9OworCisvLyBGSVhNRTogVGFrZSBYMTFX
aW5kb3dSZXNvdXJjZXMgYW5kIEdMWENvbmZpZ1NlbGVjdG9yIGludG8gdXNlLgogY2xhc3MgT2Zm
U2NyZWVuUm9vdFdpbmRvdyB7CiBwdWJsaWM6CiAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdygpCkBA
IC0xOTMsMTYgKzIzNSw3IEBAIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIAogICAg
IH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKICAgICB7Ci0gICAgICAgIGlmIChtX2dseFBpeG1h
cCkKLSAgICAgICAgICAgIGdsWERlc3Ryb3lQaXhtYXAobV9kaXNwbGF5LCBtX2dseFBpeG1hcCk7
Ci0gICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKLQotICAgICAgICBpZiAobV94UGl4bWFwKQotICAg
ICAgICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBtX3hQaXhtYXApOwotICAgICAgICBtX3hQ
aXhtYXAgPSAwOwotCi0gICAgICAgIGlmIChtX2dsQ29udGV4dCkKLSAgICAgICAgICAgIGdsWERl
c3Ryb3lDb250ZXh0KG1fZGlzcGxheSwgbV9nbENvbnRleHQpOworICAgICAgICBjbGVhcigpOwog
ICAgIH0KIAogICAgIHVpbnQzMl90IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
QEAgLTIzOSw2ICsyNzIsMTMgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewogICAg
ICAgICBYV2luZG93QXR0cmlidXRlcyBhdHRyOwogICAgICAgICBpZiAoIVhHZXRXaW5kb3dBdHRy
aWJ1dGVzKG1fZGlzcGxheSwgd2luSWQsICZhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgd2luZG93IGlzIG1hcHBlZC4KKyAgICAgICAgaWYg
KGF0dHIubWFwX3N0YXRlID09IElzVW5tYXBwZWQgfHwgYXR0ci5tYXBfc3RhdGUgPT0gSXNVbnZp
ZXdhYmxlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFNjb3BlZFhQaXhtYXBDcmVh
dGlvbkVycm9ySGFuZGxlciBoYW5kbGVyKG1fZGlzcGxheSk7CisgICAgICAgIG1feFBpeG1hcCA9
IFhDb21wb3NpdGVOYW1lV2luZG93UGl4bWFwKG1fZGlzcGxheSwgd2luSWQpOwogICAgICAgICBt
X3NpemUgPSBJbnRTaXplKGF0dHIud2lkdGgsIGF0dHIuaGVpZ2h0KTsKIAogICAgICAgICBYUmVu
ZGVyUGljdEZvcm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5
LCBhdHRyLnZpc3VhbCk7CkBAIC0yNDksMTMgKzI4OSwxNSBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJm
YWNlUHJpdmF0ZSB7CiAKICAgICAgICAgLy8gSWYgb3JpZ2luIHdpbmRvdyBoYXMgYWxwaGEgdGhl
biBmaW5kIGNvbmZpZyB3aXRoIGFscGhhLgogICAgICAgICBHTFhGQkNvbmZpZyYgY29uZmlnID0g
bV9oYXNBbHBoYSA/IGZpbmRGQkNvbmZpZ1dpdGhBbHBoYShjb25maWdzLCBudW1iZXJPZkNvbmZp
Z3MpIDogY29uZmlnc1swXTsKLQotICAgICAgICBtX3hQaXhtYXAgPSBYQ29tcG9zaXRlTmFtZVdp
bmRvd1BpeG1hcChtX2Rpc3BsYXksIHdpbklkKTsKICAgICAgICAgbV9nbHhQaXhtYXAgPSBnbFhD
cmVhdGVQaXhtYXAobV9kaXNwbGF5LCBjb25maWcsIG1feFBpeG1hcCwgZ2x4QXR0cmlidXRlcyk7
CiAKLSAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7Ci0gICAgICAgIGdsWFF1ZXJ5RHJhd2FibGUo
bV9kaXNwbGF5LCBtX2dseFBpeG1hcCwgR0xYX1lfSU5WRVJURURfRVhULCAmaW52ZXJ0ZWQpOwot
ICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0ZWQ7CisgICAgICAgIGlmICgh
aGFuZGxlci5pc1ZhbGlkT3BlcmF0aW9uKCkpCisgICAgICAgICAgICBjbGVhcigpOworICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQgaW52ZXJ0ZWQgPSAwOworICAgICAgICAgICAgZ2xY
UXVlcnlEcmF3YWJsZShtX2Rpc3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQs
ICZpbnZlcnRlZCk7CisgICAgICAgICAgICBtX3RleHR1cmVJc1lJbnZlcnRlZCA9ICEhaW52ZXJ0
ZWQ7CisgICAgICAgIH0KIAogICAgICAgICBYRnJlZShjb25maWdzKTsKICAgICB9CkBAIC0zNjAs
MTYgKzQwMiwzMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBYUmVuZGVyUGljdEZvcm1hdCog
Zm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQobV9kaXNwbGF5LCB2aXN1YWxJbmZvLT52
aXN1YWwpOwogICAgICAgICAgICAgWEZyZWUodmlzdWFsSW5mbyk7Ci0gICAgICAgICAgICBpZiAo
Zm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApIHsKKworICAgICAgICAgICAg
aWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRpcmVjdC5hbHBoYU1hc2sgPiAwKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYkNvbmZpZ3NbaV07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBSZXR1cm4gMXN0IGNvbmZpZyBhcyBhIGZh
bGxiYWNrIHdpdGggbm8gYWxwaGEgc3VwcG9ydC4KICAgICAgICAgcmV0dXJuIGZiQ29uZmlnc1sw
XTsKICAgICB9CiAKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGlmIChtX2dseFBp
eG1hcCkgeworICAgICAgICAgICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXksIG1fZ2x4UGl4
bWFwKTsKKyAgICAgICAgICAgIG1fZ2x4UGl4bWFwID0gMDsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtX3hQaXhtYXApIHsKKyAgICAgICAgICAgIFhGcmVlUGl4bWFwKG1fZGlzcGxheSwgbV94
UGl4bWFwKTsKKyAgICAgICAgICAgIG1feFBpeG1hcCA9IDA7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAobV9nbENvbnRleHQpIHsKKyAgICAgICAgICAgIGdsWERlc3Ryb3lDb250ZXh0KG1fZGlz
cGxheSwgbV9nbENvbnRleHQpOworICAgICAgICAgICAgbV9nbENvbnRleHQgPSAwOworICAgICAg
ICB9CisgICAgfQorCiAgICAgT2ZmU2NyZWVuUm9vdFdpbmRvdyBtX29mZlNjcmVlbldpbmRvdzsK
ICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBEaXNwbGF5KiBtX2Rpc3BsYXk7CkBAIC00MTIsNiAr
NDcxLDkgQEAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4
cG9ydCgpCiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkK
IHsKICAgICBpZiAoIW1fdGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZSkKKyAgICAg
ICAgICAgIHJldHVybiAwOworCiAgICAgICAgIEdMWFBpeG1hcCBwaXhtYXAgPSBtX3ByaXZhdGUt
PmdseFBpeG1hcCgpOwogICAgICAgICBpZiAoIXBpeG1hcCkKICAgICAgICAgICAgIHJldHVybiAw
OwpAQCAtNDQyLDEyICs1MDQsMTQgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtQ29w
eUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHMKIHZvaWQgR3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSog
bWFzaykKIHsKICAgICBUZXh0dXJlTWFwcGVyR0wqIHRleE1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0gICAgSW50U2l6ZSBzaXplID0gbV9wcml2
YXRlLT5zaXplKCk7CisgICAgSW50U2l6ZSBzaXplID0gcGxhdGZvcm1TaXplKCk7CiAgICAgaWYg
KHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CisKICAgICB1aW50MzJfdCB0ZXh0dXJl
ID0gcGxhdGZvcm1HZXRUZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybjsKKwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJh
bnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0
cml4OjpyZWN0VG9SZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIHNpemUpLCB0YXJn
ZXRSZWN0KSk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fcHJpdmF0ZS0+
dGV4dHVyZUlzWUludmVydGVkKCkgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJl
IDogMDsKQEAgLTQ2MiwxMSArNTI2LDE1IEBAIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0CiAKIHVpbnQzMl90IEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1Td2FwQnVmZmVycygpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aXNSZWNlaXZlcigpKSB7
CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fcHJp
dmF0ZS0+aXNSZWNlaXZlcigpICYmIHBsYXRmb3JtR2V0VGV4dHVyZUlEKCkpIHsKICAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBwbGF0Zm9ybUdldFRleHR1cmVJRCgpKTsKICAg
ICAgICAgLy8gUmVsZWFzZSBwcmV2aW91cyBsb2NrIGFuZCByZWJpbmQgdGV4dHVyZSB0byBzdXJm
YWNlIHRvIGdldCBmcmFtZSB1cGRhdGUuCiAgICAgICAgIHBHbFhSZWxlYXNlVGV4SW1hZ2VFWFQo
bV9wcml2YXRlLT5kaXNwbGF5KCksIG1fcHJpdmF0ZS0+Z2x4UGl4bWFwKCksIEdMWF9GUk9OVF9F
WFQpOwogICAgICAgICBwR2xYQmluZFRleEltYWdlRVhUKG1fcHJpdmF0ZS0+ZGlzcGxheSgpLCBt
X3ByaXZhdGUtPmdseFBpeG1hcCgpLCBHTFhfRlJPTlRfRVhULCAwKTsKKwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKQEAgLTQ3Niw3ICs1NDQsNyBAQCB1aW50MzJfdCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtU3dhcEJ1ZmZlcnMoKQogCiBJbnRTaXplIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1TaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaXplKCk7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZSA/IG1fcHJpdmF0ZS0+c2l6ZSgpIDogSW50U2l6ZSgpOwogfQogCiBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0
ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHQzRCBzaGFyZUNvbnRleHQpCkBAIC01MjksNiArNTk3LDkgQEAgdm9pZCBHcmFwaGlj
c1N1cmZhY2U6OnBsYXRmb3JtVW5sb2NrKCkKIAogdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRm
b3JtRGVzdHJveSgpCiB7CisgICAgaWYgKCFtX3ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKwog
ICAgIGlmIChtX3RleHR1cmUpIHsKICAgICAgICAgcEdsWFJlbGVhc2VUZXhJbWFnZUVYVChtX3By
aXZhdGUtPmRpc3BsYXkoKSwgbV9wcml2YXRlLT5nbHhQaXhtYXAoKSwgR0xYX0ZST05UX0VYVCk7
CiAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182615</attachid>
            <date>2013-01-14 13:23:09 -0800</date>
            <delta_ts>2013-01-15 00:58:08 -0800</delta_ts>
            <desc>patchv6</desc>
            <filename>glxfixes.patch</filename>
            <type>text/plain</type>
            <size>7792</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDY3ZjliYmMuLjg2ZTcwODMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEz
LTAxLTE0ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4K
KworICAgICAgICBbRUZMXVtXZWJHTF0gQWRkIGVycm9yIGhhbmRsaW5nIHRvIGNhcmVmdWxseSBt
YW5hZ2UgV2luZG93IGJhY2tpbmcgcGl4bWFwcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHVzZSBYQ29tcG9zaXRlTmFtZVdpbmRvd1BpeG1hcCB0
byBjcmVhdGUgYSBwaXhtYXAgdGhhdCBzZXJ2ZXMgYXMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAg
dGhlIG9mZi1zY3JlZW4gc3RvcmFnZSBmb3IgYSBXaW5kb3cgSGFuZGxlLiBXZSBleHBlY3QgdGhl
IFdpbmRvdyB0byBiZSB2YWxpZCBhbmQKKyAgICAgICAgdGhlIGNyZWF0ZWQgZ2x4IHBpeG1hcCB0
byBiZSBhIHZhbGlkIGRyYXdhYmxlLiBUaGlzIG1heSBub3QgYmUgdHJ1ZSBhbHdheXMuCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBYIEVycm9yIGNoZWNrcyBhbmQgaGFuZGxl
cyB0aGUgZ2VuZXJhdGVkIGVycm9ycy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdl
YkdMIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpoYW5kbGVYUGl4bWFwQ3JlYXRpb25FcnJvcik6CisgICAgICAgIChTY29wZWRY
UGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBp
eG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyOjpTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVy
Ojp+U2NvcGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlcjo6aXNWYWxpZE9wZXJhdGlvbik6Cisg
ICAgICAgIEhlbHBlciBDbGFzcyB0byBjYXRjaCBYRXJyb3JzLgorCisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjp+R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpjcmVhdGVQaXhtYXApOiBBZGRl
ZCBzdXBwb3J0IHRvIGNoZWNrIGFuZCBoYW5kbGUgZ2VuZXJhdGVkIFhFcnJvcnMuCisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpmaW5kRkJDb25maWdXaXRoQWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6Y2xlYXIpOiBEZXN0
cm95cyBHTCBSZXNvdXJjZXMuCisgICAgICAgIChHcmFwaGljc1N1cmZhY2VQcml2YXRlKToKKwog
MjAxMy0wMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CgpkaWZmIC0t
Z2l0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HcmFwaGlj
c1N1cmZhY2VHTFguY3BwIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HcmFwaGljc1N1cmZhY2VHTFguY3BwCmluZGV4IDA1Njk1OTEuLjIyZjZiMTkgMTAwNjQ0
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR3JhcGhp
Y3NTdXJmYWNlR0xYLmNwcAorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvZ2x4L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2lu
Y2x1ZGUgPEdML2dsZXh0Lmg+CiAjaW5jbHVkZSA8R0wvZ2x4Lmg+CisjaW5jbHVkZSA8WDExL1hs
aWIuaD4KICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YY29tcG9zaXRlLmg+CiAjaW5jbHVkZSA8
WDExL2V4dGVuc2lvbnMvWHJlbmRlci5oPgogCkBAIC01MSw2ICs1MiwzMSBAQCBzdGF0aWMgUEZO
R0xHRU5GUkFNRUJVRkZFUlNQUk9DIHBHbEdlbkZyYW1lYnVmZmVycyA9IDA7CiBzdGF0aWMgUEZO
R0xERUxFVEVGUkFNRUJVRkZFUlNQUk9DIHBHbERlbGV0ZUZyYW1lYnVmZmVycyA9IDA7CiBzdGF0
aWMgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRFBST0MgcEdsRnJhbWVidWZmZXJUZXh0dXJlMkQg
PSAwOwogCisvLyBVc2VkIGZvciBoYW5kbGluZyBYRXJyb3IuCitzdGF0aWMgYm9vbCB2YWxpZE9w
ZXJhdGlvbiA9IHRydWU7CitzdGF0aWMgaW50IGhhbmRsZVhQaXhtYXBDcmVhdGlvbkVycm9yKERp
c3BsYXkqLCBYRXJyb3JFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT5lcnJvcl9jb2Rl
ID09IEJhZE1hdGNoIHx8IGV2ZW50LT5lcnJvcl9jb2RlID09IEJhZFdpbmRvdyB8fCBldmVudC0+
ZXJyb3JfY29kZSA9PSBCYWRBbGxvYykgeworICAgICAgICB2YWxpZE9wZXJhdGlvbiA9IGZhbHNl
OworCisgICAgICAgIHN3aXRjaCAoZXZlbnQtPmVycm9yX2NvZGUpIHsKKyAgICAgICAgY2FzZSBC
YWRNYXRjaDoKKyAgICAgICAgICAgIExPR19FUlJPUigiQmFkTWF0Y2guIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBCYWRXaW5kb3c6CisgICAgICAgICAgICBMT0dfRVJST1Io
IkJhZFdpbmRvdy4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEJhZEFsbG9j
OgorICAgICAgICAgICAgTE9HX0VSUk9SKCJCYWRBbGxvYy4iKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBhdHRyaWJ1dGVzW10gPSB7CiAgICAg
R0xYX0xFVkVMLCAwLAogICAgIEdMWF9EUkFXQUJMRV9UWVBFLCBHTFhfV0lORE9XX0JJVCwKQEAg
LTY1LDYgKzkxLDM3IEBAIHN0YXRpYyBpbnQgYXR0cmlidXRlc1tdID0gewogICAgIE5vbmUKIH07
CiAKK2NsYXNzIFNjb3BlZFhQaXhtYXBDcmVhdGlvbkVycm9ySGFuZGxlciB7CisKK3B1YmxpYzoK
KyAgICBTY29wZWRYUGl4bWFwQ3JlYXRpb25FcnJvckhhbmRsZXIoRGlzcGxheSogZGlzcGxheSkK
KyAgICAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICB7CisgICAgICAgIC8vIFhTeW5jIG11
c3QgYmUgY2FsbGVkIHRvIGVuc3VyZSB0aGF0IGN1cnJlbnQgZXJyb3JzIGFyZSBoYW5kbGVkIGJ5
IHRoZSBvcmlnaW5hbCBoYW5kbGVyLgorICAgICAgICBYU3luYyhtX2Rpc3BsYXksIGZhbHNlKTsK
KyAgICAgICAgbV9wcmV2aW91c0Vycm9ySGFuZGxlciA9IFhTZXRFcnJvckhhbmRsZXIoaGFuZGxl
WFBpeG1hcENyZWF0aW9uRXJyb3IpOworICAgIH0KKworICAgIH5TY29wZWRYUGl4bWFwQ3JlYXRp
b25FcnJvckhhbmRsZXIoKQorICAgIHsKKyAgICAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwg
aGFuZGxlci4KKyAgICAgICAgWFNldEVycm9ySGFuZGxlcihtX3ByZXZpb3VzRXJyb3JIYW5kbGVy
KTsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWRPcGVyYXRpb24oKSBjb25zdAorICAgIHsKKyAg
ICAgICAgdmFsaWRPcGVyYXRpb24gPSB0cnVlOworICAgICAgICAvLyBYU3luYyBpcyBuZWVkZWQg
dG8gY2F0Y2ggcG9zc2libGUgZXJyb3JzIGFzIHRoZXkgYXJlIGdlbmVyYXRlZCBhc3luY2hyb25v
dXNseS4KKyAgICAgICAgWFN5bmMobV9kaXNwbGF5LCBmYWxzZSk7CisgICAgICAgIHJldHVybiB2
YWxpZE9wZXJhdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgWEVycm9ySGFuZGxlciBtX3By
ZXZpb3VzRXJyb3JIYW5kbGVyOworICAgIERpc3BsYXkqIG1fZGlzcGxheTsKK307CisKKy8vIEZJ
WE1FOiBUYWtlIFgxMVdpbmRvd1Jlc291cmNlcyBhbmQgR0xYQ29uZmlnU2VsZWN0b3IgaW50byB1
c2UuCiBjbGFzcyBPZmZTY3JlZW5Sb290V2luZG93IHsKIHB1YmxpYzoKICAgICBPZmZTY3JlZW5S
b290V2luZG93KCkKQEAgLTE5MywxNiArMjUwLDcgQEAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVBy
aXZhdGUgewogCiAgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQogICAgIHsKLSAgICAgICAg
aWYgKG1fZ2x4UGl4bWFwKQotICAgICAgICAgICAgZ2xYRGVzdHJveVBpeG1hcChtX2Rpc3BsYXks
IG1fZ2x4UGl4bWFwKTsKLSAgICAgICAgbV9nbHhQaXhtYXAgPSAwOwotCi0gICAgICAgIGlmICht
X3hQaXhtYXApCi0gICAgICAgICAgICBYRnJlZVBpeG1hcChtX2Rpc3BsYXksIG1feFBpeG1hcCk7
Ci0gICAgICAgIG1feFBpeG1hcCA9IDA7Ci0KLSAgICAgICAgaWYgKG1fZ2xDb250ZXh0KQotICAg
ICAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQobV9kaXNwbGF5LCBtX2dsQ29udGV4dCk7CisgICAg
ICAgIGNsZWFyKCk7CiAgICAgfQogCiAgICAgdWludDMyX3QgY3JlYXRlU3VyZmFjZShjb25zdCBJ
bnRTaXplJiBzaXplKQpAQCAtMjM5LDYgKzI4NywxMiBAQCBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZSB7CiAgICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7CiAgICAgICAgIGlmICgh
WEdldFdpbmRvd0F0dHJpYnV0ZXMobV9kaXNwbGF5LCB3aW5JZCwgJmF0dHIpKQogICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSB3aW5kb3cgaXMgbWFwcGVk
LgorICAgICAgICBpZiAoYXR0ci5tYXBfc3RhdGUgPT0gSXNVbm1hcHBlZCB8fCBhdHRyLm1hcF9z
dGF0ZSA9PSBJc1Vudmlld2FibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgU2Nv
cGVkWFBpeG1hcENyZWF0aW9uRXJyb3JIYW5kbGVyIGhhbmRsZXIobV9kaXNwbGF5KTsKICAgICAg
ICAgbV9zaXplID0gSW50U2l6ZShhdHRyLndpZHRoLCBhdHRyLmhlaWdodCk7CiAKICAgICAgICAg
WFJlbmRlclBpY3RGb3JtYXQqIGZvcm1hdCA9IFhSZW5kZXJGaW5kVmlzdWFsRm9ybWF0KG1fZGlz
cGxheSwgYXR0ci52aXN1YWwpOwpAQCAtMjUzLDkgKzMwNywxMyBAQCBzdHJ1Y3QgR3JhcGhpY3NT
dXJmYWNlUHJpdmF0ZSB7CiAgICAgICAgIG1feFBpeG1hcCA9IFhDb21wb3NpdGVOYW1lV2luZG93
UGl4bWFwKG1fZGlzcGxheSwgd2luSWQpOwogICAgICAgICBtX2dseFBpeG1hcCA9IGdsWENyZWF0
ZVBpeG1hcChtX2Rpc3BsYXksIGNvbmZpZywgbV94UGl4bWFwLCBnbHhBdHRyaWJ1dGVzKTsKIAot
ICAgICAgICB1aW50IGludmVydGVkID0gMDsKLSAgICAgICAgZ2xYUXVlcnlEcmF3YWJsZShtX2Rp
c3BsYXksIG1fZ2x4UGl4bWFwLCBHTFhfWV9JTlZFUlRFRF9FWFQsICZpbnZlcnRlZCk7Ci0gICAg
ICAgIG1fdGV4dHVyZUlzWUludmVydGVkID0gISFpbnZlcnRlZDsKKyAgICAgICAgaWYgKCFoYW5k
bGVyLmlzVmFsaWRPcGVyYXRpb24oKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgdWludCBpbnZlcnRlZCA9IDA7CisgICAgICAgICAgICBnbFhRdWVy
eURyYXdhYmxlKG1fZGlzcGxheSwgbV9nbHhQaXhtYXAsIEdMWF9ZX0lOVkVSVEVEX0VYVCwgJmlu
dmVydGVkKTsKKyAgICAgICAgICAgIG1fdGV4dHVyZUlzWUludmVydGVkID0gISFpbnZlcnRlZDsK
KyAgICAgICAgfQogCiAgICAgICAgIFhGcmVlKGNvbmZpZ3MpOwogICAgIH0KQEAgLTM2MCwxNiAr
NDE4LDMzIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIFhSZW5kZXJQaWN0Rm9ybWF0KiBmb3Jt
YXQgPSBYUmVuZGVyRmluZFZpc3VhbEZvcm1hdChtX2Rpc3BsYXksIHZpc3VhbEluZm8tPnZpc3Vh
bCk7CiAgICAgICAgICAgICBYRnJlZSh2aXN1YWxJbmZvKTsKLSAgICAgICAgICAgIGlmIChmb3Jt
YXQgJiYgZm9ybWF0LT5kaXJlY3QuYWxwaGFNYXNrID4gMCkgeworCisgICAgICAgICAgICBpZiAo
Zm9ybWF0ICYmIGZvcm1hdC0+ZGlyZWN0LmFscGhhTWFzayA+IDApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZiQ29uZmlnc1tpXTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybiAxc3QgY29uZmlnIGFzIGEgZmFsbGJh
Y2sgd2l0aCBubyBhbHBoYSBzdXBwb3J0LgogICAgICAgICByZXR1cm4gZmJDb25maWdzWzBdOwog
ICAgIH0KIAorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgaWYgKG1fZ2x4UGl4bWFw
KSB7CisgICAgICAgICAgICBnbFhEZXN0cm95UGl4bWFwKG1fZGlzcGxheSwgbV9nbHhQaXhtYXAp
OworICAgICAgICAgICAgbV9nbHhQaXhtYXAgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1feFBpeG1hcCkgeworICAgICAgICAgICAgWEZyZWVQaXhtYXAobV9kaXNwbGF5LCBtX3hQaXht
YXApOworICAgICAgICAgICAgbV94UGl4bWFwID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtX2dsQ29udGV4dCkgeworICAgICAgICAgICAgZ2xYRGVzdHJveUNvbnRleHQobV9kaXNwbGF5
LCBtX2dsQ29udGV4dCk7CisgICAgICAgICAgICBtX2dsQ29udGV4dCA9IDA7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBPZmZTY3JlZW5Sb290V2luZG93IG1fb2ZmU2NyZWVuV2luZG93OwogICAg
IEludFNpemUgbV9zaXplOwogICAgIERpc3BsYXkqIG1fZGlzcGxheTsKQEAgLTQzOCw3ICs1MTMs
NiBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodWludDMy
X3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgcwogICAgIG1fcHJpdmF0ZS0+Y29weUZyb21UZXh0
dXJlKHRleHR1cmUsIHNvdXJjZVJlY3QpOwogfQogCi0KIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpw
bGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgQml0bWFwVGV4dHVyZSogbWFzaykKIHsKICAgICBU
ZXh0dXJlTWFwcGVyR0wqIHRleE1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4o
dGV4dHVyZU1hcHBlcik7CkBAIC00NjIsMTEgKzUzNiwxMiBAQCB1aW50MzJfdCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdAogCiB1aW50MzJfdCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtU3dhcEJ1ZmZlcnMoKQogewotICAgIGlmIChtX3ByaXZhdGUtPmlzUmVj
ZWl2ZXIoKSkgeworICAgIGlmIChtX3ByaXZhdGUtPmlzUmVjZWl2ZXIoKSAmJiBwbGF0Zm9ybUdl
dFRleHR1cmVJRCgpKSB7CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgcGxh
dGZvcm1HZXRUZXh0dXJlSUQoKSk7CiAgICAgICAgIC8vIFJlbGVhc2UgcHJldmlvdXMgbG9jayBh
bmQgcmViaW5kIHRleHR1cmUgdG8gc3VyZmFjZSB0byBnZXQgZnJhbWUgdXBkYXRlLgogICAgICAg
ICBwR2xYUmVsZWFzZVRleEltYWdlRVhUKG1fcHJpdmF0ZS0+ZGlzcGxheSgpLCBtX3ByaXZhdGUt
PmdseFBpeG1hcCgpLCBHTFhfRlJPTlRfRVhUKTsKICAgICAgICAgcEdsWEJpbmRUZXhJbWFnZUVY
VChtX3ByaXZhdGUtPmRpc3BsYXkoKSwgbV9wcml2YXRlLT5nbHhQaXhtYXAoKSwgR0xYX0ZST05U
X0VYVCwgMCk7CisKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>