<?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>110616</bug_id>
          
          <creation_ts>2013-02-22 09:18:24 -0800</creation_ts>
          <short_desc>[EFL][WebGL] Refactor platform surface.</short_desc>
          <delta_ts>2013-02-23 08:57:12 -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>106508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kalyan">kalyan.kondapally</reporter>
          <assigned_to name="Kalyan">kalyan.kondapally</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>839648</commentid>
    <comment_count>0</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-22 09:18:24 -0800</bug_when>
    <thetext>PlatformSurface has the logic to render content to shared surface. As we have a clear separation between the two, it would be better to separate them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839823</commentid>
    <comment_count>1</comment_count>
      <attachid>189807</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-22 12:37:55 -0800</bug_when>
    <thetext>Created attachment 189807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840135</commentid>
    <comment_count>2</comment_count>
      <attachid>189807</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-22 16:58:44 -0800</bug_when>
    <thetext>Comment on attachment 189807
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        PlatformSurface has the logic to render content to transport surface. 
&gt; +        This patch moves all the code related to transport surface in PlatformSurface
&gt; +        to GLTransportSurface class. EXT_framebuffer_blit usage is replaced with 
&gt; +        shaders to draw texture contents to the surface as we already have support 
&gt; +        for shared context.

You forgot to write what they change makes sense.

You should &quot;always&quot; detault the what, why and how

&gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:2
&gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.

Living in the past? :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840345</commentid>
    <comment_count>3</comment_count>
      <attachid>189918</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-23 03:04:37 -0800</bug_when>
    <thetext>Created attachment 189918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840346</commentid>
    <comment_count>4</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-23 03:05:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 189807 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189807&amp;action=review

&gt; You should &quot;always&quot; detault the what, why and how

done

&gt; &gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:2
&gt; &gt; + * Copyright (C) 2012 Intel Corporation. All rights reserved.
&gt; 
&gt; Living in the past? :-)

fixed :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840348</commentid>
    <comment_count>5</comment_count>
      <attachid>189918</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-23 03:16:38 -0800</bug_when>
    <thetext>Comment on attachment 189918
Patch

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

&gt; Source/WebCore/platform/graphics/opengl/GLPlatformSurface.h:34
&gt;  #include &quot;IntRect.h&quot;
&gt; +#include &lt;texmap/TextureMapperShaderProgram.h&gt;
&gt;  #include &lt;wtf/Noncopyable.h&gt;

Why is this needed in the header? I would understand if it was used by the cpp

&gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:32
&gt; +
&gt; +namespace WebCore {
&gt; +static const GLfloat vertices[] = { 0, 0, 1, 0, 1, 1, 0, 1 };

newline after namespace

&gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:68
&gt; +    m_rect = IntRect();
&gt; +    ::glBindFramebuffer(GL_FRAMEBUFFER, 0);

i would add a newline after m_rect =

&gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:145
&gt; +    TextureMapperShaderProgram::Options options = TextureMapperShaderProgram::Texture;
&gt; +    m_shaderProgram = TextureMapperShaderProgram::create(m_context3D, options);
&gt; +    ::glUseProgram(m_shaderProgram-&gt;programID());
&gt; +    ::glUniform1i(m_shaderProgram-&gt;samplerLocation(), 0);
&gt; +    ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
&gt; +    ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
&gt; +    ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
&gt; +    ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
&gt; +    TransformationMatrix flipTransform;
&gt; +    flipTransform.flipY();

I would add a newline before and after the :: group</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840359</commentid>
    <comment_count>6</comment_count>
      <attachid>189922</attachid>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-23 04:20:28 -0800</bug_when>
    <thetext>Created attachment 189922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840360</commentid>
    <comment_count>7</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-02-23 04:22:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 189918 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189918&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GLPlatformSurface.h:34
&gt; &gt;  #include &quot;IntRect.h&quot;
&gt; &gt; +#include &lt;texmap/TextureMapperShaderProgram.h&gt;
&gt; &gt;  #include &lt;wtf/Noncopyable.h&gt;
&gt; 
not needed, removed thanks.

&gt; &gt; Source/WebCore/platform/graphics/surfaces/GLTransportSurface.cpp:32
&gt; &gt; +
&gt; I would add a newline before and after the :: group

fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840379</commentid>
    <comment_count>8</comment_count>
      <attachid>189922</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 08:57:07 -0800</bug_when>
    <thetext>Comment on attachment 189922
Patch

Clearing flags on attachment: 189922

Committed r143842: &lt;http://trac.webkit.org/changeset/143842&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840380</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 08:57:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189807</attachid>
            <date>2013-02-22 12:37:55 -0800</date>
            <delta_ts>2013-02-23 03:04:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110616-20130222223414.patch</filename>
            <type>text/plain</type>
            <size>21027</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk3Y2FmYmFjNjVhYmVl
ZDUyNDY5ODJkOTIxNmQ1YjJlZjU4NWM0Yy4uZjFhNGE1ZDFhMWM2ZDQzOGM0NmYxZGM3N2MwZWQw
OTdlMTkxNTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEzLTAyLTIyICBLb25k
YXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKworICAgICAgICBb
RUZMXVtXZWJHTF0gUmVmYWN0b3IgR0xQbGF0Zm9ybVN1cmZhY2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdM
IHRlc3RzLgorICAgICAgICAKKyAgICAgICAgUGxhdGZvcm1TdXJmYWNlIGhhcyB0aGUgbG9naWMg
dG8gcmVuZGVyIGNvbnRlbnQgdG8gdHJhbnNwb3J0IHN1cmZhY2UuIAorICAgICAgICBUaGlzIHBh
dGNoIG1vdmVzIGFsbCB0aGUgY29kZSByZWxhdGVkIHRvIHRyYW5zcG9ydCBzdXJmYWNlIGluIFBs
YXRmb3JtU3VyZmFjZQorICAgICAgICB0byBHTFRyYW5zcG9ydFN1cmZhY2UgY2xhc3MuIEVYVF9m
cmFtZWJ1ZmZlcl9ibGl0IHVzYWdlIGlzIHJlcGxhY2VkIHdpdGggCisgICAgICAgIHNoYWRlcnMg
dG8gZHJhdyB0ZXh0dXJlIGNvbnRlbnRzIHRvIHRoZSBzdXJmYWNlIGFzIHdlIGFscmVhZHkgaGF2
ZSBzdXBwb3J0IAorICAgICAgICBmb3Igc2hhcmVkIGNvbnRleHQuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6ZGlkUmVzaXplQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpHTFRyYW5zcG9ydFN1cmZh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjp+R0xUcmFuc3BvcnRT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6dXBkYXRlQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRy
eSk6CisgICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpkcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6YmluZEFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6dXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorICAg
ICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjppbml0aWFsaXplU2hhZGVyUHJvZ3Jh
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJm
YWNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdMVHJhbnNwb3J0U3VyZmFjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93
VHJhbnNwb3J0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xXaW5kb3dUcmFuc3BvcnRT
dXJmYWNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1
cmZhY2U6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HTFhTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMWFRyYW5zcG9ydFN1cmZh
Y2U6OkdMWFRyYW5zcG9ydFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0
U3VyZmFjZTo6c2V0R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6R0xYVHJhbnNwb3J0U3Vy
ZmFjZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpHTFhPZmZTY3JlZW5TdXJmYWNlOjpm
cmVlUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgv
R0xYU3VyZmFjZS5oOgorCiAyMDEzLTAyLTIyICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxh
bi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQg
aW4gaGl0LXRlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmZWFiYzIxZWJmMzBi
NDExMmUzOWFjM2U0YzlmZTNhMjQxMmE4OGM2Li5kMWQ0NjNmMWE1YTkzOWIxOGFiMGVkYTc2NTUy
NWJmNmQ2YzZkZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzEzLDYgKzMxMyw3
IEBAIGlmIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L1gxMUhlbHBlci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAKaW5kZXggOTM0Mjc3YjM0MTdkNWFhNmM4MTM5OGZiODg0ZDRlZjM2ZWIxNWUyYi4u
YzE5MzVjYWE0NDgxMGIyNTk0Mzc4ZmI3MmZiMWUxMGExMDVkNmFkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTIyMiw3ICsyMjIsOSBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6bWFrZVNoYXJlZENvbnRleHRDdXJyZW50KCkgY29uc3QKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpkaWRSZXNpemVDYW52YXMoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBtX3NpemUgPSBzaXplOwotICAgIG1fc2hhcmVkU3VyZmFjZS0+c2V0R2VvbWV0
cnkoSW50UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CisKKyAg
ICBpZiAobWFrZVNoYXJlZENvbnRleHRDdXJyZW50KCkpCisgICAgICAgIG1fc2hhcmVkU3VyZmFj
ZS0+c2V0R2VvbWV0cnkoSW50UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpKSk7CiB9CiAKIHVpbnQzMl90IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRvR3Jh
cGhpY3NTdXJmYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCmluZGV4IDU1ZGRiZmY4Nzcw
NWZkMjhlYzljMjZhMDZjNTFhNjBhMTIzNDczMTIuLjg0YjRmZTg2ZGZkOGZiY2I2NDQ2NGM0NjY1
YjE4MzQxYjEzZDdiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcApAQCAtNjksOCArNjks
NyBAQCBQYXNzT3duUHRyPEdMUGxhdGZvcm1TdXJmYWNlPiBHTFBsYXRmb3JtU3VyZmFjZTo6Y3Jl
YXRlVHJhbnNwb3J0U3VyZmFjZShTdXJmYWNlQQogfQogCiBHTFBsYXRmb3JtU3VyZmFjZTo6R0xQ
bGF0Zm9ybVN1cmZhY2UoU3VyZmFjZUF0dHJpYnV0ZXMpCi0gICAgOiBtX2Zib0lkKDApCi0gICAg
LCBtX3NoYXJlZERpc3BsYXkoMCkKKyAgICA6IG1fc2hhcmVkRGlzcGxheSgwKQogICAgICwgbV9k
cmF3YWJsZSgwKQogICAgICwgbV9idWZmZXJIYW5kbGUoMCkKIHsKQEAgLTExMCw0MCArMTA5LDE2
IEBAIHZvaWQgR0xQbGF0Zm9ybVN1cmZhY2U6OnN3YXBCdWZmZXJzKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjp1cGRhdGVDb250ZW50cyhjb25z
dCB1aW50MzJfdCB0ZXh0dXJlKQordm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6dXBkYXRlQ29udGVu
dHMoY29uc3QgdWludDMyX3QpCiB7Ci0gICAgaWYgKCFtX2Zib0lkKQotICAgICAgICBnbEdlbkZy
YW1lYnVmZmVycygxLCAmbV9mYm9JZCk7Ci0KLSAgICBpbnQgeCA9IDA7Ci0gICAgaW50IHkgPSAw
OwotICAgIGludCB3aWR0aCA9IG1fcmVjdC53aWR0aCgpOwotICAgIGludCBoZWlnaHQgPSBtX3Jl
Y3QuaGVpZ2h0KCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
LCBtX2Zib0lkKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwot
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfUkVBRF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIDApOwotICAgIC8vIFVzZSBORUFSRVNUIGFzIG5v
IHNjYWxlIGlzIHBlcmZvcm1lZCBkdXJpbmcgdGhlIGJsaXQuCi0gICAgZ2xCbGl0RnJhbWVidWZm
ZXIoeCwgeSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfQ09MT1JfQlVG
RkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgc3dhcEJ1ZmZlcnMoKTsKIH0KIAotdm9pZCBHTFBs
YXRmb3JtU3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKK3ZvaWQg
R0xQbGF0Zm9ybVN1cmZhY2U6OnNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmKQogewotICAgIG1f
cmVjdCA9IG5ld1JlY3Q7CiB9CiAKIHZvaWQgR0xQbGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKQog
ewotICAgIG1fcmVjdCA9IEludFJlY3QoKTsKLQotICAgIGlmIChtX2Zib0lkKSB7Ci0gICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwg
Jm1fZmJvSWQpOwotICAgICAgICBtX2Zib0lkID0gMDsKLSAgICB9CiB9CiAKIEdMUGxhdGZvcm1T
dXJmYWNlOjpTdXJmYWNlQXR0cmlidXRlcyBHTFBsYXRmb3JtU3VyZmFjZTo6YXR0cmlidXRlcygp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR0xQbGF0Zm9ybVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oCmluZGV4IGI1OTg4ZmMxMTM0YjRlYzkwOTZlMTE2
NThkMDNmNDUzMzMxMGVhMmUuLmUwNTVlMmFlNjk3MjVlMjUwZjIzNjBkNzI0ZjJlOTE4MzZmNjJh
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
TFBsYXRmb3JtU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oCkBAIC0zMCw4ICszMCw4IEBACiAKICNpbmNsdWRl
ICJHTERlZnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8dGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogLy8gRW5jYXBzdWxhdGVzIGEgc3VyZmFjZSB0
aGF0IGNhbiBiZSByZW5kZXJlZCB0byB3aXRoIEdMLCBoaWRpbmcgcGxhdGZvcm0KIC8vIHNwZWNp
ZmljIG1hbmFnZW1lbnQuCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICAvLyBGdW5jdGlv
biBkb2VzIHRoZSBmb2xsb3dpbmcoaW4gb3JkZXIpOgogICAgIC8vIGEpIEJsaXRzIHRleHR1cmUg
Y29udGVudHMgdG8gYmFjayBidWZmZXIuCiAgICAgLy8gYikgQ2FsbHMgU3dhcCBCdWZmZXJzLgot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCB0ZXh0dXJlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3QgdWludDMyX3QpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIFBs
YXRmb3JtU3VyZmFjZUNvbmZpZyBjb25maWd1cmF0aW9uKCk7CiAKQEAgLTg3LDExICs4NywxMSBA
QCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHTFBsYXRmb3JtU3VyZmFjZShTdXJmYWNlQXR0
cmlidXRlcyk7Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0gICAgR0x1aW50IG1fZmJvSWQ7CisKICAg
ICBQbGF0Zm9ybURpc3BsYXkgbV9zaGFyZWREaXNwbGF5OwogICAgIFBsYXRmb3JtRHJhd2FibGUg
bV9kcmF3YWJsZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBtX2J1ZmZlckhhbmRsZTsKKyAg
ICBJbnRSZWN0IG1fcmVjdDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmUwMjdkNzY0Nzk3YzViOTljYmU5YzQwNGQzMjgyODQ4NjVhNTUzNjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR0xUcmFuc3BvcnRTdXJmYWNl
LmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7IDAsIDAsIDEsIDAsIDEs
IDEsIDAsIDEgfTsKK3N0YXRpYyBib29sIHZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkID0gZmFs
c2U7CisKK0dMVHJhbnNwb3J0U3VyZmFjZTo6R0xUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRy
aWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgOiBHTFBsYXRmb3JtU3VyZmFjZShhdHRyaWJ1dGVzKQor
ICAgICwgbV92Ym8oMCkKKyAgICAsIG1fdmVydGV4SGFuZGxlKDApCit7Cit9CisKK0dMVHJhbnNw
b3J0U3VyZmFjZTo6fkdMVHJhbnNwb3J0U3VyZmFjZSgpCit7Cit9CisKK3ZvaWQgR0xUcmFuc3Bv
cnRTdXJmYWNlOjp1cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCB0ZXh0dXJlKQoreworICAg
IGlmICghbV9zaGFkZXJQcm9ncmFtKQorICAgICAgICBpbml0aWFsaXplU2hhZGVyUHJvZ3JhbSgp
OworCisgICAgZHJhdyh0ZXh0dXJlKTsKKyAgICBzd2FwQnVmZmVycygpOworfQorCit2b2lkIEdM
VHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKK3sK
KyAgICBtX3JlY3QgPSBuZXdSZWN0OworCisgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pCisgICAg
ICAgIHJldHVybjsKKworICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Cit9CisKK3Zv
aWQgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCkKK3sKKyAgICBtX3JlY3QgPSBJbnRSZWN0
KCk7CisgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7CisgICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOworCisgICAgaWYgKCFtX3NoYWRlclByb2dy
YW0gfHwgIW1fY29udGV4dDNEKQorICAgICAgICByZXR1cm47CisKKyAgICA6OmdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIDApOworCisgICAgaWYgKG1fdmJvKQorICAgICAgICA6OmdsRGVs
ZXRlQnVmZmVycygxLCAmbV92Ym8pOworCisgICAgaWYgKG1fdmVydGV4SGFuZGxlKSB7CisgICAg
ICAgIG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCktPmJpbmRWZXJ0ZXhBcnJheU9FUygwKTsK
KyAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+ZGVsZXRlVmVydGV4QXJyYXlP
RVMobV92ZXJ0ZXhIYW5kbGUpOworICAgIH0gZWxzZSBpZiAobV9zaGFkZXJQcm9ncmFtKQorICAg
ICAgICA6OmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4
TG9jYXRpb24oKSk7CisKKyAgICA6OmdsVXNlUHJvZ3JhbSgwKTsKKyAgICBtX3NoYWRlclByb2dy
YW0gPSBudWxscHRyOworICAgIG1fY29udGV4dDNEID0gbnVsbHB0cjsKK30KKwordm9pZCBHTFRy
YW5zcG9ydFN1cmZhY2U6OmRyYXcoY29uc3QgdWludDMyX3QgdGV4dHVyZSkKK3sKKyAgICBpZiAo
IW1fdmVydGV4SGFuZGxlKQorICAgICAgICBiaW5kQXJyYXlCdWZmZXIoKTsKKworICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKKyAgICA6OmdsRHJhd0FycmF5cyhH
TF9UUklBTkdMRV9GQU4sIDAsIDQpOworfQorCit2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6Ymlu
ZEFycmF5QnVmZmVyKCkgY29uc3QKK3sKKyAgICA6OmdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV9zaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKKyAgICA6OmdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1fdmJvKTsKKyAgICA6OmdsVmVydGV4QXR0cmliUG9pbnRlcihtX3No
YWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCksIDIsIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9B
VCwgZmFsc2UsIDAsIDApOworfQorCit2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6dXBkYXRlVHJh
bnNmb3JtYXRpb25NYXRyaXgoKQoreworICAgIGlmICghbV9zaGFkZXJQcm9ncmFtKQorICAgICAg
ICByZXR1cm47CisKKyAgICA6OmdsVmlld3BvcnQobV9yZWN0LngoKSwgbV9yZWN0LnkoKSwgbV9y
ZWN0LndpZHRoKCksIG1fcmVjdC5oZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Qg
PSBGbG9hdFJlY3QobV9yZWN0KTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeChpZGVudGl0eU1hdHJpeCkubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RU
b1JlY3QoRmxvYXRSZWN0KDAsIDAsIDEsIDEpLCB0YXJnZXRSZWN0KSk7CisgICAgbV9zaGFkZXJQ
cm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5tb2RlbFZpZXdNYXRyaXhMb2NhdGlv
bigpLCBtYXRyaXgpOworCisgICAgLy8gVGFrZW4gZnJvbSBUZXh0dXJlTWFwcGVyR0wuCisgICAg
Y29uc3QgZmxvYXQgbmVhclZhbHVlID0gOTk5OTk5OTsKKyAgICBjb25zdCBmbG9hdCBmYXJWYWx1
ZSA9IC05OTk5OTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHByb2plY3Rpb25NYXRyaXgg
PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgyLjAgLyBmbG9hdChtX3JlY3Qud2lkdGgoKSksIDAsIDAs
IDAsCisgICAgICAgIDAsICgtMi4wKSAvIGZsb2F0KG1fcmVjdC5oZWlnaHQoKSksIDAsIDAsCisg
ICAgICAgIDAsIDAsIC0yLmYgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpLCAwLAorICAgICAgICAt
MSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFsdWUgLSBuZWFyVmFsdWUpLCAx
KTsKKworICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hhZGVyUHJvZ3JhbS0+cHJv
amVjdGlvbk1hdHJpeExvY2F0aW9uKCksIHByb2plY3Rpb25NYXRyaXgpOworfQorCit2b2lkIEdM
VHJhbnNwb3J0U3VyZmFjZTo6aW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKQoreworICAgIGlmICgh
bV9jb250ZXh0M0QpCisgICAgICAgIG1fY29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKTsKKworICAgIHZlcnRleEFycmF5T2JqZWN0U3VwcG9y
dGVkID0gbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0
ZXhfYXJyYXlfb2JqZWN0Iik7CisKKyAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6T3B0
aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1cmU7CisgICAg
bV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OmNyZWF0ZShtX2Nv
bnRleHQzRCwgb3B0aW9ucyk7CisgICAgOjpnbFVzZVByb2dyYW0obV9zaGFkZXJQcm9ncmFtLT5w
cm9ncmFtSUQoKSk7CisgICAgOjpnbFVuaWZvcm0xaShtX3NoYWRlclByb2dyYW0tPnNhbXBsZXJM
b2NhdGlvbigpLCAwKTsKKyAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOworICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgOjpn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1Q
X1RPX0VER0UpOworICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBm
bGlwVHJhbnNmb3JtOworICAgIGZsaXBUcmFuc2Zvcm0uZmxpcFkoKTsKKyAgICBmbGlwVHJhbnNm
b3JtLnRyYW5zbGF0ZSgwLCAtMSk7CisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9z
aGFkZXJQcm9ncmFtLT50ZXh0dXJlU3BhY2VNYXRyaXhMb2NhdGlvbigpLCBmbGlwVHJhbnNmb3Jt
KTsKKyAgICA6OmdsVW5pZm9ybTFmKG1fc2hhZGVyUHJvZ3JhbS0+b3BhY2l0eUxvY2F0aW9uKCks
IDEuMCk7CisKKyAgICBpZiAoIW1fdmJvKSB7CisgICAgICAgIDo6Z2xHZW5CdWZmZXJzKDEsICZt
X3Zibyk7CisgICAgICAgIDo6Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbV92Ym8pOwor
ICAgICAgICA6OmdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihHQzNEZmxvYXQp
ICogOCwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUg
YW5kIHNldC11cCB2ZXJ0ZXggYXJyYXkgb2JqZWN0LgorICAgIGlmICh2ZXJ0ZXhBcnJheU9iamVj
dFN1cHBvcnRlZCkgeworICAgICAgICBtX3ZlcnRleEhhbmRsZSA9IG1fY29udGV4dDNELT5nZXRF
eHRlbnNpb25zKCktPmNyZWF0ZVZlcnRleEFycmF5T0VTKCk7CisKKyAgICAgICAgaWYgKG1fdmVy
dGV4SGFuZGxlKSB7CisgICAgICAgICAgICBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5i
aW5kVmVydGV4QXJyYXlPRVMobV92ZXJ0ZXhIYW5kbGUpOworICAgICAgICAgICAgYmluZEFycmF5
QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1cGRhdGVUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpOworICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOworfQor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NTZk
ZDg1NGJkMWQ2NTZkZjg5NzYxNTY1MTZjOTI0ZWFkYjMxYjI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJm
YWNlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHTFRy
YW5zcG9ydFN1cmZhY2VfaAorI2RlZmluZSBHTFRyYW5zcG9ydFN1cmZhY2VfaAorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR0xEZWZzLmgiCisjaW5jbHVk
ZSAiR0xQbGF0Zm9ybVN1cmZhY2UuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBHTFRyYW5zcG9ydFN1cmZhY2UgOiBwdWJsaWMgR0xQbGF0Zm9ybVN1cmZh
Y2UgeworCitwdWJsaWM6CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVz
KTsKKyAgICB2aXJ0dWFsIH5HTFRyYW5zcG9ydFN1cmZhY2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlQ29udGVudHMoY29uc3QgdWludDMyX3QgdGV4dHVyZSkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgT1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICB2
b2lkIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CisgICAgdm9pZCBiaW5kQXJyYXlCdWZm
ZXIoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVTaGFkZXJQcm9ncmFtKCk7CisgICAgdm9p
ZCBkcmF3KGNvbnN0IHVpbnQzMl90IHRleHR1cmUpOworCisgICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBtX2NvbnRleHQzRDsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0+IG1fc2hhZGVyUHJvZ3JhbTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmJvOworICAgIFBs
YXRmb3JtM0RPYmplY3QgbV92ZXJ0ZXhIYW5kbGU7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5k
aWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWdsL0VHTFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCmluZGV4IGVhZjEzMDAyMmI3Yjk0NTAwY2YxMWRm
Y2QwZWExZTIwNTRlMDYwNTAuLjg5YmY1MTY1NmQ0YTZlYTFhMzNkYTk2YWZiNGNlZjIwMzIzYjY1
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2VnbC9FR0xTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQotICAgIDogR0xQbGF0Zm9y
bVN1cmZhY2UoYXR0cmlidXRlcykKKyAgICA6IEdMVHJhbnNwb3J0U3VyZmFjZShhdHRyaWJ1dGVz
KQogewogICAgIG1fY29uZmlnU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgRUdMQ29uZmlnU2VsZWN0
b3IoYXR0cmlidXRlcywgTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpKSk7CiAgICAgbV9z
aGFyZWREaXNwbGF5ID0gbV9jb25maWdTZWxlY3Rvci0+ZGlzcGxheSgpOwpAQCAtMTA2LDcgKzEw
Niw3IEBAIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogCiB2
b2lkIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3koKQogewotICAgIEdMUGxhdGZv
cm1TdXJmYWNlOjpkZXN0cm95KCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCk7
CiAgICAgTmF0aXZlV3JhcHBlcjo6ZGVzdHJveVdpbmRvdyhtX2J1ZmZlckhhbmRsZSk7CiAgICAg
ZnJlZUVHTFJlc291cmNlcygpOwogICAgIG1fYnVmZmVySGFuZGxlID0gMDsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OmZyZWVFR0xSZXNvdXJjZXMo
KQogCiB2b2lkIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OnNldEdlb21ldHJ5KGNvbnN0IElu
dFJlY3QmIG5ld1JlY3QpCiB7Ci0gICAgR0xQbGF0Zm9ybVN1cmZhY2U6OnNldEdlb21ldHJ5KG5l
d1JlY3QpOworICAgIEdMVHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0cnkobmV3UmVjdCk7CiAg
ICAgTmF0aXZlV3JhcHBlcjo6cmVzaXplV2luZG93KG5ld1JlY3QsIG1fYnVmZmVySGFuZGxlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZWdsL0VHTFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmgKaW5kZXggZGIxYTIxZTg4OGIyYzVmNmI0NmZjOTllMzcx
MjU3NmQ4ZTYyZTVmZC4uNTRiZDI0YzdmYzI4N2IxYzczZGQzOWE1OGQzZTRhYmRhNDQwMjRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWds
L0VHTFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9lZ2wvRUdMU3VyZmFjZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgVVNFKEVHTCkgJiYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAKICNpbmNsdWRlICJFR0xDb25maWdTZWxlY3Rvci5oIgot
I2luY2x1ZGUgIkdMUGxhdGZvcm1TdXJmYWNlLmgiCisjaW5jbHVkZSAiR0xUcmFuc3BvcnRTdXJm
YWNlLmgiCiAKICNpbmNsdWRlIDxnbHgvWDExSGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYg
WDExSGVscGVyIE5hdGl2ZVdyYXBwZXI7CiAKIC8vIENvbnRlbnRzIG9mIHRoZSBzdXJmYWNlIGFy
ZSBiYWNrZWQgYnkgbmF0aXZlIHdpbmRvdy4KLWNsYXNzIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2UgOiBwdWJsaWMgR0xQbGF0Zm9ybVN1cmZhY2UgeworY2xhc3MgRUdMV2luZG93VHJhbnNwb3J0
U3VyZmFjZSA6IHB1YmxpYyBHTFRyYW5zcG9ydFN1cmZhY2UgewogCiBwdWJsaWM6CiAgICAgRUdM
V2luZG93VHJhbnNwb3J0U3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3Vy
ZmFjZS5jcHAKaW5kZXggOGFiN2FhNjdhMjczNDM1ZGVmYmExOTYxMjM2ZDg1MzYwOTdhZWIzMy4u
YzBlNTYzNjUxMjk0ODkzMzIzZDMzYWVhNmNhMzYzMWFlY2M5NmQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhT
dXJmYWNlLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMg
Y29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVzW10gPSB7IEdMWF9QQlVGRkVSX1dJRFRILCAxLCBH
TFhfUEJVRkZFUl9IRUlHSFQsIDEsIDAgfTsKIAogR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJh
bnNwb3J0U3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQotICAgIDogR0xQbGF0
Zm9ybVN1cmZhY2UoYXR0cmlidXRlcykKKyAgICA6IEdMVHJhbnNwb3J0U3VyZmFjZShhdHRyaWJ1
dGVzKQogewogICAgIG1fc2hhcmVkRGlzcGxheSA9IFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgp
OwogICAgIGF0dHJpYnV0ZXMgfD0gR0xQbGF0Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwpA
QCAtNjYsNyArNjYsNyBAQCBQbGF0Zm9ybVN1cmZhY2VDb25maWcgR0xYVHJhbnNwb3J0U3VyZmFj
ZTo6Y29uZmlndXJhdGlvbigpCiAKIHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0
cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKIHsKLSAgICBHTFBsYXRmb3JtU3VyZmFjZTo6c2V0
R2VvbWV0cnkobmV3UmVjdCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeShu
ZXdSZWN0KTsKICAgICBYMTFIZWxwZXI6OnJlc2l6ZVdpbmRvdyhuZXdSZWN0LCBtX2RyYXdhYmxl
KTsKICAgICAvLyBGb3JjZSByZXNpemUgb2YgR0wgc3VyZmFjZSBhZnRlciB3aW5kb3cgcmVzaXpl
LgogICAgIGdsWFN3YXBCdWZmZXJzKHNoYXJlZERpc3BsYXkoKSwgbV9kcmF3YWJsZSk7CkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogCiB2
b2lkIEdMWFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3koKQogewotICAgIEdMUGxhdGZvcm1TdXJm
YWNlOjpkZXN0cm95KCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCk7CiAKICAg
ICBpZiAobV9idWZmZXJIYW5kbGUpIHsKICAgICAgICAgWDExSGVscGVyOjpkZXN0cm95V2luZG93
KG1fYnVmZmVySGFuZGxlKTsKQEAgLTE0Niw3ICsxNDYsNiBAQCB2b2lkIEdMWE9mZlNjcmVlblN1
cmZhY2U6OmRlc3Ryb3koKQogCiB2b2lkIEdMWE9mZlNjcmVlblN1cmZhY2U6OmZyZWVSZXNvdXJj
ZXMoKQogewotICAgIEdMUGxhdGZvcm1TdXJmYWNlOjpkZXN0cm95KCk7CiAgICAgRGlzcGxheSog
ZGlzcGxheSA9IHNoYXJlZERpc3BsYXkoKTsKIAogICAgIGlmICghZGlzcGxheSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xY
U3VyZmFjZS5oCmluZGV4IGQ3ZWFjOTE4MDFlMDhiNGE5YmI2ODMxNzZkMTU2MWI3YTEyODliMDgu
LmU4NjE4OTEwN2M5YTMyYjhjMDU0MDc4NWZiNTg4NTdhNzA5OWIxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1
cmZhY2UuaApAQCAtMjgsMTMgKzI4LDEzIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpICYmIFVTRShHTFgpCiAKLSNpbmNsdWRlICJHTFBsYXRmb3JtU3VyZmFjZS5oIgorI2lu
Y2x1ZGUgIkdMVHJhbnNwb3J0U3VyZmFjZS5oIgogI2luY2x1ZGUgIkdMWENvbmZpZ1NlbGVjdG9y
LmgiCiAjaW5jbHVkZSAiWDExSGVscGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgR0xYVHJhbnNwb3J0U3VyZmFjZSA6IHB1YmxpYyBHTFBsYXRmb3JtU3VyZmFjZSB7CitjbGFz
cyBHTFhUcmFuc3BvcnRTdXJmYWNlIDogcHVibGljIEdMVHJhbnNwb3J0U3VyZmFjZSB7CiAKIHB1
YmxpYzoKICAgICBHTFhUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189918</attachid>
            <date>2013-02-23 03:04:37 -0800</date>
            <delta_ts>2013-02-23 04:20:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110616-20130223130056.patch</filename>
            <type>text/plain</type>
            <size>21323</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdhYjJhMjQ3MDg1YWY4
YzAxYzdmYjhlYWNlY2IzM2MzNGRiN2MzZS4uNjkxNjU3NzcwMzAwMjNhZGZlMzEzYWFiMzZkZDZi
MTVhOTllNmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTIzICBLb25k
YXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKworICAgICAgICBb
RUZMXVtXZWJHTF0gUmVmYWN0b3IgR0xQbGF0Zm9ybVN1cmZhY2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdM
IHRlc3RzLgorIAorICAgICAgICBXaXRoIHJlY2VudCBjaGFuZ2VzLCB0aGVyZSBpcyBhIGNsZWFy
IHNlcGFyYXRpb24gYmV0d2VlbiAKKyAgICAgICAgdHJhbnNwb3J0IHN1cmZhY2UgYW5kIG9mZi1z
Y3JlZW4gc3VyZmFjZS4gUGxhdGZvcm1TdXJmYWNlIAorICAgICAgICBoYXMgdGhlIGxvZ2ljIHRv
IHJlbmRlciBjb250ZW50IHRvIHRyYW5zcG9ydCBzdXJmYWNlLiAKKyAgICAgICAgV2UgY3VycmVu
dGx5IHJlbHkgb24gRVhUX2ZyYW1lYnVmZmVyX2JsaXQgZm9yIHRoaXMuIFRoaXMgCisgICAgICAg
IGV4dGVuc2lvbiBpcyBub3QgZXhwb3NlZCBvbiBHTEVTMi4wLiBQbGF0Zm9ybVN1cmZhY2Ugd2Fz
IAorICAgICAgICBzdXBwb3NlZCB0byBiZSBhbiBhYnN0cmFjdGlvbiBsYXllciB3aXRob3V0IGFu
eSBrbm93bGVkZ2UgCisgICAgICAgIG9mIHRoZSB0eXBlIG9mIHN1cmZhY2UuIFRoaXMgcGF0Y2gg
YWRkcmVzc2VzIHRoZSBpc3N1ZXMgCisgICAgICAgIGluIFBsYXRmb3JtU3VyZmFjZSBjbGFzcy4g
V2UgdXNlIHNoYWRlcnMgdG8gZHJhdyB0ZXh0dXJlIAorICAgICAgICBjb250ZW50IHRvIHRoZSBz
dXJmYWNlLiBBbnkgdHJhbnNwb3J0IHN1cmZhY2UgcmVsYXRlZCAKKyAgICAgICAgY29kZSBpbiBQ
bGF0Zm9ybVN1cmZhY2UgaXMgbW92ZWQgdG8gR0xUcmFuc3BvcnRTdXJmYWNlIGNsYXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRpZFJlc2l6ZUNhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6R0xU
cmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6
fkdMVHJhbnNwb3J0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZh
Y2U6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFj
ZTo6c2V0R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpk
ZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZhY2U6OmJpbmRBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZhY2U6OnVwZGF0ZVRyYW5zZm9ybWF0aW9u
TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6aW5pdGlhbGl6
ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dM
VHJhbnNwb3J0U3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTFRyYW5z
cG9ydFN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RUdMV2lu
ZG93VHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTFhU
cmFuc3BvcnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdMWFRyYW5zcG9ydFN1cmZhY2U6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdM
WFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2Ny
ZWVuU3VyZmFjZTo6ZnJlZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuaDoKKwogMjAxMy0wMi0yMyAgSmFzb24gQW5kZXJzc2Vu
ICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CiAKICAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZy
b20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGZl
YWJjMjFlYmYzMGI0MTEyZTM5YWMzZTRjOWZlM2EyNDEyYTg4YzYuLmQxZDQ2M2YxYTVhOTM5YjE4
YWIwZWRhNzY1NTI1YmY2ZDZjNmRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0z
MTMsNiArMzEzLDcgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5jcHAKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcAppbmRleCA5MzQyNzdiMzQxN2Q1YWE2YzgxMzk4ZmI4ODRkNGVm
MzZlYjE1ZTJiLi5jMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2YWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjIyLDcgKzIyMiw5IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlU2hhcmVkQ29udGV4dEN1cnJlbnQoKSBjb25z
dAogdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRpZFJlc2l6ZUNhbnZhcyhjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgbV9zaGFyZWRTdXJmYWNl
LT5zZXRHZW9tZXRyeShJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0
KCkpKTsKKworICAgIGlmIChtYWtlU2hhcmVkQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgbV9z
aGFyZWRTdXJmYWNlLT5zZXRHZW9tZXRyeShJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAKaW5kZXgg
NTVkZGJmZjg3NzA1ZmQyOGVjOWMyNmEwNmM1MWE2MGExMjM0NzMxMi4uODRiNGZlODZkZmQ4ZmJj
YjY0NDY0YzQ2NjViMTgzNDFiMTNkN2IxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCkBA
IC02OSw4ICs2OSw3IEBAIFBhc3NPd25QdHI8R0xQbGF0Zm9ybVN1cmZhY2U+IEdMUGxhdGZvcm1T
dXJmYWNlOjpjcmVhdGVUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBCiB9CiAKIEdMUGxhdGZvcm1T
dXJmYWNlOjpHTFBsYXRmb3JtU3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcykKLSAgICA6IG1fZmJv
SWQoMCkKLSAgICAsIG1fc2hhcmVkRGlzcGxheSgwKQorICAgIDogbV9zaGFyZWREaXNwbGF5KDAp
CiAgICAgLCBtX2RyYXdhYmxlKDApCiAgICAgLCBtX2J1ZmZlckhhbmRsZSgwKQogewpAQCAtMTEw
LDQwICsxMDksMTYgQEAgdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR0xQbGF0Zm9ybVN1cmZhY2U6OnVwZGF0ZUNv
bnRlbnRzKGNvbnN0IHVpbnQzMl90IHRleHR1cmUpCit2b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjp1
cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCkKIHsKLSAgICBpZiAoIW1fZmJvSWQpCi0gICAg
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zib0lkKTsKLQotICAgIGludCB4ID0gMDsKLSAg
ICBpbnQgeSA9IDA7Ci0gICAgaW50IHdpZHRoID0gbV9yZWN0LndpZHRoKCk7Ci0gICAgaW50IGhl
aWdodCA9IG1fcmVjdC5oZWlnaHQoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURf
RlJBTUVCVUZGRVIsIG1fZmJvSWQpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Ci0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7Ci0gICAgLy8gVXNlIE5F
QVJFU1QgYXMgbm8gc2NhbGUgaXMgcGVyZm9ybWVkIGR1cmluZyB0aGUgYmxpdC4KLSAgICBnbEJs
aXRGcmFtZWJ1ZmZlcih4LCB5LCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBH
TF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICBzd2FwQnVmZmVycygpOwogfQog
Ci12b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjpzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBuZXdS
ZWN0KQordm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYp
CiB7Ci0gICAgbV9yZWN0ID0gbmV3UmVjdDsKIH0KIAogdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6
ZGVzdHJveSgpCiB7Ci0gICAgbV9yZWN0ID0gSW50UmVjdCgpOwotCi0gICAgaWYgKG1fZmJvSWQp
IHsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmbV9mYm9JZCk7Ci0gICAgICAgIG1fZmJvSWQgPSAwOwotICAgIH0KIH0KIAog
R0xQbGF0Zm9ybVN1cmZhY2U6OlN1cmZhY2VBdHRyaWJ1dGVzIEdMUGxhdGZvcm1TdXJmYWNlOjph
dHRyaWJ1dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKaW5kZXggYjU5ODhmYzExMzRi
NGVjOTA5NmUxMTY1OGQwM2Y0NTMzMzEwZWEyZS4uZTA1NWUyYWU2OTcyNWUyNTBmMjM2MGQ3MjRm
MmU5MTgzNmY2MmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKQEAgLTMwLDggKzMwLDggQEAK
IAogI2luY2x1ZGUgIkdMRGVmcy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx0
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAvLyBFbmNhcHN1bGF0ZXMg
YSBzdXJmYWNlIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHRvIHdpdGggR0wsIGhpZGluZyBwbGF0Zm9y
bQogLy8gc3BlY2lmaWMgbWFuYWdlbWVudC4KQEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAg
IC8vIEZ1bmN0aW9uIGRvZXMgdGhlIGZvbGxvd2luZyhpbiBvcmRlcik6CiAgICAgLy8gYSkgQmxp
dHMgdGV4dHVyZSBjb250ZW50cyB0byBiYWNrIGJ1ZmZlci4KICAgICAvLyBiKSBDYWxscyBTd2Fw
IEJ1ZmZlcnMuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHVpbnQzMl90
IHRleHR1cmUpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJf
dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVj
dCk7CisgICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmKTsKIAogICAg
IHZpcnR1YWwgUGxhdGZvcm1TdXJmYWNlQ29uZmlnIGNvbmZpZ3VyYXRpb24oKTsKIApAQCAtODcs
MTEgKzg3LDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEdMUGxhdGZvcm1TdXJmYWNl
KFN1cmZhY2VBdHRyaWJ1dGVzKTsKLSAgICBJbnRSZWN0IG1fcmVjdDsKLSAgICBHTHVpbnQgbV9m
Ym9JZDsKKwogICAgIFBsYXRmb3JtRGlzcGxheSBtX3NoYXJlZERpc3BsYXk7CiAgICAgUGxhdGZv
cm1EcmF3YWJsZSBtX2RyYXdhYmxlOwogICAgIFBsYXRmb3JtQnVmZmVySGFuZGxlIG1fYnVmZmVy
SGFuZGxlOworICAgIEludFJlY3QgbV9yZWN0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0
U3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmJjZDEwZTJjNjRiOTNlZTQ5OWYzNWU4MThiMjZiZmQ5
OTYyYTcxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5jcHAKQEAgLTAsMCArMSwxNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHTFRyYW5z
cG9ydFN1cmZhY2UuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RhdGljIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9IHsgMCwg
MCwgMSwgMCwgMSwgMSwgMCwgMSB9Oworc3RhdGljIGJvb2wgdmVydGV4QXJyYXlPYmplY3RTdXBw
b3J0ZWQgPSBmYWxzZTsKKworR0xUcmFuc3BvcnRTdXJmYWNlOjpHTFRyYW5zcG9ydFN1cmZhY2Uo
U3VyZmFjZUF0dHJpYnV0ZXMgYXR0cmlidXRlcykKKyAgICA6IEdMUGxhdGZvcm1TdXJmYWNlKGF0
dHJpYnV0ZXMpCisgICAgLCBtX3ZibygwKQorICAgICwgbV92ZXJ0ZXhIYW5kbGUoMCkKK3sKK30K
KworR0xUcmFuc3BvcnRTdXJmYWNlOjp+R0xUcmFuc3BvcnRTdXJmYWNlKCkKK3sKK30KKwordm9p
ZCBHTFRyYW5zcG9ydFN1cmZhY2U6OnVwZGF0ZUNvbnRlbnRzKGNvbnN0IHVpbnQzMl90IHRleHR1
cmUpCit7CisgICAgaWYgKCFtX3NoYWRlclByb2dyYW0pCisgICAgICAgIGluaXRpYWxpemVTaGFk
ZXJQcm9ncmFtKCk7CisKKyAgICBkcmF3KHRleHR1cmUpOworICAgIHN3YXBCdWZmZXJzKCk7Cit9
CisKK3ZvaWQgR0xUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBu
ZXdSZWN0KQoreworICAgIG1fcmVjdCA9IG5ld1JlY3Q7CisKKyAgICBpZiAoIW1fc2hhZGVyUHJv
Z3JhbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgo
KTsKK30KKwordm9pZCBHTFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3koKQoreworICAgIG1fcmVj
dCA9IEludFJlY3QoKTsKKyAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAw
KTsKKyAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAoIW1f
c2hhZGVyUHJvZ3JhbSB8fCAhbV9jb250ZXh0M0QpCisgICAgICAgIHJldHVybjsKKworICAgIDo6
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisKKyAgICBpZiAobV92Ym8pCisgICAg
ICAgIDo6Z2xEZWxldGVCdWZmZXJzKDEsICZtX3Zibyk7CisKKyAgICBpZiAobV92ZXJ0ZXhIYW5k
bGUpIHsKKyAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+YmluZFZlcnRleEFy
cmF5T0VTKDApOworICAgICAgICBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhtX3ZlcnRleEhhbmRsZSk7CisgICAgfSBlbHNlIGlmIChtX3NoYWRlclBy
b2dyYW0pCisgICAgICAgIDo6Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXJQcm9n
cmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKKworICAgIDo6Z2xVc2VQcm9ncmFtKDApOworICAgIG1f
c2hhZGVyUHJvZ3JhbSA9IG51bGxwdHI7CisgICAgbV9jb250ZXh0M0QgPSBudWxscHRyOworfQor
Cit2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6ZHJhdyhjb25zdCB1aW50MzJfdCB0ZXh0dXJlKQor
eworICAgIGlmICghbV92ZXJ0ZXhIYW5kbGUpCisgICAgICAgIGJpbmRBcnJheUJ1ZmZlcigpOwor
CisgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOworICAgIDo6Z2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7Cit9CisKK3ZvaWQgR0xUcmFuc3BvcnRT
dXJmYWNlOjpiaW5kQXJyYXlCdWZmZXIoKSBjb25zdAoreworICAgIDo6Z2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShtX3NoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOworICAgIDo6Z2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbV92Ym8pOworICAgIDo6Z2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSwgMiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkZMT0FULCBmYWxzZSwgMCwgMCk7Cit9CisKK3ZvaWQgR0xUcmFuc3BvcnRTdXJmYWNl
Ojp1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpCit7CisgICAgaWYgKCFtX3NoYWRlclByb2dy
YW0pCisgICAgICAgIHJldHVybjsKKworICAgIDo6Z2xWaWV3cG9ydChtX3JlY3QueCgpLCBtX3Jl
Y3QueSgpLCBtX3JlY3Qud2lkdGgoKSwgbV9yZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJlY3Qg
dGFyZ2V0UmVjdCA9IEZsb2F0UmVjdChtX3JlY3QpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IFRyYW5z
Zm9ybWF0aW9uTWF0cml4KGlkZW50aXR5TWF0cml4KS5tdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6cmVjdFRvUmVjdChGbG9hdFJlY3QoMCwgMCwgMSwgMSksIHRhcmdldFJlY3QpKTsKKyAg
ICBtX3NoYWRlclByb2dyYW0tPnNldE1hdHJpeChtX3NoYWRlclByb2dyYW0tPm1vZGVsVmlld01h
dHJpeExvY2F0aW9uKCksIG1hdHJpeCk7CisKKyAgICAvLyBUYWtlbiBmcm9tIFRleHR1cmVNYXBw
ZXJHTC4KKyAgICBjb25zdCBmbG9hdCBuZWFyVmFsdWUgPSA5OTk5OTk5OworICAgIGNvbnN0IGZs
b2F0IGZhclZhbHVlID0gLTk5OTk5OworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcHJvamVj
dGlvbk1hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KDIuMCAvIGZsb2F0KG1fcmVjdC53aWR0
aCgpKSwgMCwgMCwgMCwKKyAgICAgICAgMCwgKC0yLjApIC8gZmxvYXQobV9yZWN0LmhlaWdodCgp
KSwgMCwgMCwKKyAgICAgICAgMCwgMCwgLTIuZiAvIChmYXJWYWx1ZSAtIG5lYXJWYWx1ZSksIDAs
CisgICAgICAgIC0xLCAxLCAtKGZhclZhbHVlICsgbmVhclZhbHVlKSAvIChmYXJWYWx1ZSAtIG5l
YXJWYWx1ZSksIDEpOworCisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQ
cm9ncmFtLT5wcm9qZWN0aW9uTWF0cml4TG9jYXRpb24oKSwgcHJvamVjdGlvbk1hdHJpeCk7Cit9
CisKK3ZvaWQgR0xUcmFuc3BvcnRTdXJmYWNlOjppbml0aWFsaXplU2hhZGVyUHJvZ3JhbSgpCit7
CisgICAgaWYgKCFtX2NvbnRleHQzRCkKKyAgICAgICAgbV9jb250ZXh0M0QgPSBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpOworCisgICAgdmVydGV4QXJyYXlP
YmplY3RTdXBwb3J0ZWQgPSBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKworICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtOjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4
dHVyZTsKKyAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
Y3JlYXRlKG1fY29udGV4dDNELCBvcHRpb25zKTsKKyAgICA6OmdsVXNlUHJvZ3JhbShtX3NoYWRl
clByb2dyYW0tPnByb2dyYW1JRCgpKTsKKyAgICA6OmdsVW5pZm9ybTFpKG1fc2hhZGVyUHJvZ3Jh
bS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgIDo6Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgOjpnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKKyAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgOjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGZsaXBUcmFuc2Zvcm07CisgICAgZmxpcFRyYW5zZm9ybS5mbGlwWSgpOworICAg
IGZsaXBUcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC0xKTsKKyAgICBtX3NoYWRlclByb2dyYW0tPnNl
dE1hdHJpeChtX3NoYWRlclByb2dyYW0tPnRleHR1cmVTcGFjZU1hdHJpeExvY2F0aW9uKCksIGZs
aXBUcmFuc2Zvcm0pOworICAgIDo6Z2xVbmlmb3JtMWYobV9zaGFkZXJQcm9ncmFtLT5vcGFjaXR5
TG9jYXRpb24oKSwgMS4wKTsKKworICAgIGlmICghbV92Ym8pIHsKKyAgICAgICAgOjpnbEdlbkJ1
ZmZlcnMoMSwgJm1fdmJvKTsKKyAgICAgICAgOjpnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtX3Zibyk7CisgICAgICAgIDo6Z2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9m
KEdDM0RmbG9hdCkgKiA4LCB2ZXJ0aWNlcywgR0xfU1RBVElDX0RSQVcpOworICAgIH0KKworICAg
IC8vIENyZWF0ZSBhbmQgc2V0LXVwIHZlcnRleCBhcnJheSBvYmplY3QuCisgICAgaWYgKHZlcnRl
eEFycmF5T2JqZWN0U3VwcG9ydGVkKSB7CisgICAgICAgIG1fdmVydGV4SGFuZGxlID0gbV9jb250
ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+Y3JlYXRlVmVydGV4QXJyYXlPRVMoKTsKKworICAgICAg
ICBpZiAobV92ZXJ0ZXhIYW5kbGUpIHsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5nZXRFeHRl
bnNpb25zKCktPmJpbmRWZXJ0ZXhBcnJheU9FUyhtX3ZlcnRleEhhbmRsZSk7CisgICAgICAgICAg
ICBiaW5kQXJyYXlCdWZmZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVwZGF0ZVRyYW5z
Zm9ybWF0aW9uTWF0cml4KCk7CisgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgMCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA0NDQwZjFjMzgyOGJjYTVmN2Q0NWM4OTI5NWFkZGFkOWM4ODY5ZDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRy
YW5zcG9ydFN1cmZhY2UuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEdMVHJhbnNwb3J0U3VyZmFjZV9oCisjZGVmaW5lIEdMVHJhbnNwb3J0U3VyZmFjZV9o
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHTERlZnMu
aCIKKyNpbmNsdWRlICJHTFBsYXRmb3JtU3VyZmFjZS5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIK
KyNpbmNsdWRlIDx0ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uaD4KKyNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdMVHJhbnNwb3J0U3VyZmFjZSA6IHB1YmxpYyBHTFBs
YXRmb3JtU3VyZmFjZSB7CisKK3B1YmxpYzoKKyAgICBHTFRyYW5zcG9ydFN1cmZhY2UoU3VyZmFj
ZUF0dHJpYnV0ZXMpOworICAgIHZpcnR1YWwgfkdMVHJhbnNwb3J0U3VyZmFjZSgpOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCB0ZXh0dXJlKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBPVkVSUklERTsKKworcHJvdGVj
dGVkOgorICAgIHZvaWQgdXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKKyAgICB2b2lkIGJp
bmRBcnJheUJ1ZmZlcigpIGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0o
KTsKKyAgICB2b2lkIGRyYXcoY29uc3QgdWludDMyX3QgdGV4dHVyZSk7CisKKyAgICBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbT4gbV9zaGFkZXJQcm9ncmFtOworICAgIFBsYXRmb3JtM0RPYmplY3QgbV92
Ym87CisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZlcnRleEhhbmRsZTsKK307CisKK30KKworI2Vu
ZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5jcHAKaW5kZXggZWFmMTMwMDIyYjdi
OTQ1MDBjZjExZGZjZDBlYTFlMjA1NGUwNjA1MC4uODliZjUxNjU2ZDRhNmVhMWEzM2RhOTZhZmI0
Y2VmMjAzMjNiNjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmNwcApAQCAtMzEsNyArMzEsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpFR0xX
aW5kb3dUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCi0gICAg
OiBHTFBsYXRmb3JtU3VyZmFjZShhdHRyaWJ1dGVzKQorICAgIDogR0xUcmFuc3BvcnRTdXJmYWNl
KGF0dHJpYnV0ZXMpCiB7CiAgICAgbV9jb25maWdTZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBFR0xD
b25maWdTZWxlY3RvcihhdHRyaWJ1dGVzLCBOYXRpdmVXcmFwcGVyOjpuYXRpdmVEaXNwbGF5KCkp
KTsKICAgICBtX3NoYXJlZERpc3BsYXkgPSBtX2NvbmZpZ1NlbGVjdG9yLT5kaXNwbGF5KCk7CkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlOjpzd2FwQnVm
ZmVycygpCiAKIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSgpCiB7Ci0g
ICAgR0xQbGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsKKyAgICBHTFRyYW5zcG9ydFN1cmZhY2U6
OmRlc3Ryb3koKTsKICAgICBOYXRpdmVXcmFwcGVyOjpkZXN0cm95V2luZG93KG1fYnVmZmVySGFu
ZGxlKTsKICAgICBmcmVlRUdMUmVzb3VyY2VzKCk7CiAgICAgbV9idWZmZXJIYW5kbGUgPSAwOwpA
QCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6ZnJlZUVH
TFJlc291cmNlcygpCiAKIHZvaWQgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0
cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKIHsKLSAgICBHTFBsYXRmb3JtU3VyZmFjZTo6c2V0
R2VvbWV0cnkobmV3UmVjdCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeShu
ZXdSZWN0KTsKICAgICBOYXRpdmVXcmFwcGVyOjpyZXNpemVXaW5kb3cobmV3UmVjdCwgbV9idWZm
ZXJIYW5kbGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuaAppbmRleCBkYjFhMjFlODg4YjJjNWY2
YjQ2ZmM5OWUzNzEyNTc2ZDhlNjJlNWZkLi41NGJkMjRjN2ZjMjg3YjFjNzNkZDM5YTU4ZDNlNGFi
ZGE0NDAyNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9lZ2wvRUdMU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJmYWNlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBV
U0UoRUdMKSAmJiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKIAogI2luY2x1ZGUgIkVHTENvbmZpZ1Nl
bGVjdG9yLmgiCi0jaW5jbHVkZSAiR0xQbGF0Zm9ybVN1cmZhY2UuaCIKKyNpbmNsdWRlICJHTFRy
YW5zcG9ydFN1cmZhY2UuaCIKIAogI2luY2x1ZGUgPGdseC9YMTFIZWxwZXIuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdHlwZWRlZiBYMTFIZWxwZXIgTmF0aXZlV3JhcHBlcjsKIAogLy8gQ29udGVudHMgb2YgdGhl
IHN1cmZhY2UgYXJlIGJhY2tlZCBieSBuYXRpdmUgd2luZG93LgotY2xhc3MgRUdMV2luZG93VHJh
bnNwb3J0U3VyZmFjZSA6IHB1YmxpYyBHTFBsYXRmb3JtU3VyZmFjZSB7CitjbGFzcyBFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlIDogcHVibGljIEdMVHJhbnNwb3J0U3VyZmFjZSB7CiAKIHB1Ymxp
YzoKICAgICBFR0xXaW5kb3dUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9H
TFhTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L2dseC9HTFhTdXJmYWNlLmNwcAppbmRleCA4YWI3YWE2N2EyNzM0MzVkZWZiYTE5NjEyMzZkODUz
NjA5N2FlYjMzLi5jMGU1NjM2NTEyOTQ4OTMzMjNkMzNhZWE2Y2EzNjMxYWVjYzk2ZDFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xY
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0YXRpYyBjb25zdCBpbnQgcGJ1ZmZlckF0dHJpYnV0ZXNbXSA9IHsgR0xYX1BCVUZGRVJf
V0lEVEgsIDEsIEdMWF9QQlVGRkVSX0hFSUdIVCwgMSwgMCB9OwogCiBHTFhUcmFuc3BvcnRTdXJm
YWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCi0g
ICAgOiBHTFBsYXRmb3JtU3VyZmFjZShhdHRyaWJ1dGVzKQorICAgIDogR0xUcmFuc3BvcnRTdXJm
YWNlKGF0dHJpYnV0ZXMpCiB7CiAgICAgbV9zaGFyZWREaXNwbGF5ID0gWDExSGVscGVyOjpuYXRp
dmVEaXNwbGF5KCk7CiAgICAgYXR0cmlidXRlcyB8PSBHTFBsYXRmb3JtU3VyZmFjZTo6RG91Ymxl
QnVmZmVyZWQ7CkBAIC02Niw3ICs2Niw3IEBAIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBHTFhUcmFu
c3BvcnRTdXJmYWNlOjpjb25maWd1cmF0aW9uKCkKIAogdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNl
OjpzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQogewotICAgIEdMUGxhdGZvcm1T
dXJmYWNlOjpzZXRHZW9tZXRyeShuZXdSZWN0KTsKKyAgICBHTFRyYW5zcG9ydFN1cmZhY2U6OnNl
dEdlb21ldHJ5KG5ld1JlY3QpOwogICAgIFgxMUhlbHBlcjo6cmVzaXplV2luZG93KG5ld1JlY3Qs
IG1fZHJhd2FibGUpOwogICAgIC8vIEZvcmNlIHJlc2l6ZSBvZiBHTCBzdXJmYWNlIGFmdGVyIHdp
bmRvdyByZXNpemUuCiAgICAgZ2xYU3dhcEJ1ZmZlcnMoc2hhcmVkRGlzcGxheSgpLCBtX2RyYXdh
YmxlKTsKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNlOjpzd2FwQnVm
ZmVycygpCiAKIHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSgpCiB7Ci0gICAgR0xQ
bGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsKKyAgICBHTFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ry
b3koKTsKIAogICAgIGlmIChtX2J1ZmZlckhhbmRsZSkgewogICAgICAgICBYMTFIZWxwZXI6OmRl
c3Ryb3lXaW5kb3cobV9idWZmZXJIYW5kbGUpOwpAQCAtMTQ2LDcgKzE0Niw2IEBAIHZvaWQgR0xY
T2ZmU2NyZWVuU3VyZmFjZTo6ZGVzdHJveSgpCiAKIHZvaWQgR0xYT2ZmU2NyZWVuU3VyZmFjZTo6
ZnJlZVJlc291cmNlcygpCiB7Ci0gICAgR0xQbGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsKICAg
ICBEaXNwbGF5KiBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOwogCiAgICAgaWYgKCFkaXNwbGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
Z2x4L0dMWFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL2dseC9HTFhTdXJmYWNlLmgKaW5kZXggZDdlYWM5MTgwMWUwOGI0YTliYjY4MzE3NmQxNTYx
YjdhMTI4OWIwOC4uZTg2MTg5MTA3YzlhMzJiOGMwNTQwNzg1ZmI1ODg1N2E3MDk5YjEzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dM
WFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5oCkBAIC0yOCwxMyArMjgsMTMgQEAKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykgJiYgVVNFKEdMWCkKIAotI2luY2x1ZGUgIkdMUGxhdGZvcm1TdXJm
YWNlLmgiCisjaW5jbHVkZSAiR0xUcmFuc3BvcnRTdXJmYWNlLmgiCiAjaW5jbHVkZSAiR0xYQ29u
ZmlnU2VsZWN0b3IuaCIKICNpbmNsdWRlICJYMTFIZWxwZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBHTFhUcmFuc3BvcnRTdXJmYWNlIDogcHVibGljIEdMUGxhdGZvcm1TdXJm
YWNlIHsKK2NsYXNzIEdMWFRyYW5zcG9ydFN1cmZhY2UgOiBwdWJsaWMgR0xUcmFuc3BvcnRTdXJm
YWNlIHsKIAogcHVibGljOgogICAgIEdMWFRyYW5zcG9ydFN1cmZhY2UoU3VyZmFjZUF0dHJpYnV0
ZXMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189922</attachid>
            <date>2013-02-23 04:20:28 -0800</date>
            <delta_ts>2013-02-23 08:57:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110616-20130223141648.patch</filename>
            <type>text/plain</type>
            <size>21243</size>
            <attacher name="Kalyan">kalyan.kondapally</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdhYjJhMjQ3MDg1YWY4
YzAxYzdmYjhlYWNlY2IzM2MzNGRiN2MzZS4uNjkxNjU3NzcwMzAwMjNhZGZlMzEzYWFiMzZkZDZi
MTVhOTllNmIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTIzICBLb25k
YXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KKworICAgICAgICBb
RUZMXVtXZWJHTF0gUmVmYWN0b3IgR0xQbGF0Zm9ybVN1cmZhY2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2MTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIFdlYkdM
IHRlc3RzLgorIAorICAgICAgICBXaXRoIHJlY2VudCBjaGFuZ2VzLCB0aGVyZSBpcyBhIGNsZWFy
IHNlcGFyYXRpb24gYmV0d2VlbiAKKyAgICAgICAgdHJhbnNwb3J0IHN1cmZhY2UgYW5kIG9mZi1z
Y3JlZW4gc3VyZmFjZS4gUGxhdGZvcm1TdXJmYWNlIAorICAgICAgICBoYXMgdGhlIGxvZ2ljIHRv
IHJlbmRlciBjb250ZW50IHRvIHRyYW5zcG9ydCBzdXJmYWNlLiAKKyAgICAgICAgV2UgY3VycmVu
dGx5IHJlbHkgb24gRVhUX2ZyYW1lYnVmZmVyX2JsaXQgZm9yIHRoaXMuIFRoaXMgCisgICAgICAg
IGV4dGVuc2lvbiBpcyBub3QgZXhwb3NlZCBvbiBHTEVTMi4wLiBQbGF0Zm9ybVN1cmZhY2Ugd2Fz
IAorICAgICAgICBzdXBwb3NlZCB0byBiZSBhbiBhYnN0cmFjdGlvbiBsYXllciB3aXRob3V0IGFu
eSBrbm93bGVkZ2UgCisgICAgICAgIG9mIHRoZSB0eXBlIG9mIHN1cmZhY2UuIFRoaXMgcGF0Y2gg
YWRkcmVzc2VzIHRoZSBpc3N1ZXMgCisgICAgICAgIGluIFBsYXRmb3JtU3VyZmFjZSBjbGFzcy4g
V2UgdXNlIHNoYWRlcnMgdG8gZHJhdyB0ZXh0dXJlIAorICAgICAgICBjb250ZW50IHRvIHRoZSBz
dXJmYWNlLiBBbnkgdHJhbnNwb3J0IHN1cmZhY2UgcmVsYXRlZCAKKyAgICAgICAgY29kZSBpbiBQ
bGF0Zm9ybVN1cmZhY2UgaXMgbW92ZWQgdG8gR0xUcmFuc3BvcnRTdXJmYWNlIGNsYXNzLgorCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OmRpZFJlc2l6ZUNhbnZhcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6R0xU
cmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6
fkdMVHJhbnNwb3J0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZh
Y2U6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFj
ZTo6c2V0R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpk
ZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZhY2U6OmJpbmRBcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHTFRyYW5zcG9ydFN1cmZhY2U6OnVwZGF0ZVRyYW5zZm9ybWF0aW9u
TWF0cml4KToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZTo6aW5pdGlhbGl6
ZVNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dM
VHJhbnNwb3J0U3VyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHTFRyYW5z
cG9ydFN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZh
Y2U6OkVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RUdMV2lu
ZG93VHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpFR0xXaW5k
b3dUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTFhU
cmFuc3BvcnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdMWFRyYW5zcG9ydFN1cmZhY2U6OnNldEdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdM
WFRyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6R0xYT2ZmU2Ny
ZWVuU3VyZmFjZTo6ZnJlZVJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuaDoKKwogMjAxMy0wMi0yMyAgSmFzb24gQW5kZXJzc2Vu
ICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CiAKICAgICAgICAgTW92ZSBzZXRBdXRvZmlsbGVkIGZy
b20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGZl
YWJjMjFlYmYzMGI0MTEyZTM5YWMzZTRjOWZlM2EyNDEyYTg4YzYuLmQxZDQ2M2YxYTVhOTM5YjE4
YWIwZWRhNzY1NTI1YmY2ZDZjNmRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0z
MTMsNiArMzEzLDcgQEAgaWYgKFdURl9VU0VfM0RfR1JBUEhJQ1MpCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5jcHAKICAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvWDExSGVscGVyLmNwcAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcAppbmRleCA5MzQyNzdiMzQxN2Q1YWE2YzgxMzk4ZmI4ODRkNGVm
MzZlYjE1ZTJiLi5jMTkzNWNhYTQ0ODEwYjI1OTQzNzhmYjcyZmIxZTEwYTEwNWQ2YWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjIyLDcgKzIyMiw5IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlU2hhcmVkQ29udGV4dEN1cnJlbnQoKSBjb25z
dAogdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmRpZFJlc2l6ZUNhbnZhcyhjb25zdCBJ
bnRTaXplJiBzaXplKQogewogICAgIG1fc2l6ZSA9IHNpemU7Ci0gICAgbV9zaGFyZWRTdXJmYWNl
LT5zZXRHZW9tZXRyeShJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0
KCkpKTsKKworICAgIGlmIChtYWtlU2hhcmVkQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgbV9z
aGFyZWRTdXJmYWNlLT5zZXRHZW9tZXRyeShJbnRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
Ojpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAKaW5kZXgg
NTVkZGJmZjg3NzA1ZmQyOGVjOWMyNmEwNmM1MWE2MGExMjM0NzMxMi4uODRiNGZlODZkZmQ4ZmJj
YjY0NDY0YzQ2NjViMTgzNDFiMTNkN2IxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCkBA
IC02OSw4ICs2OSw3IEBAIFBhc3NPd25QdHI8R0xQbGF0Zm9ybVN1cmZhY2U+IEdMUGxhdGZvcm1T
dXJmYWNlOjpjcmVhdGVUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBCiB9CiAKIEdMUGxhdGZvcm1T
dXJmYWNlOjpHTFBsYXRmb3JtU3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcykKLSAgICA6IG1fZmJv
SWQoMCkKLSAgICAsIG1fc2hhcmVkRGlzcGxheSgwKQorICAgIDogbV9zaGFyZWREaXNwbGF5KDAp
CiAgICAgLCBtX2RyYXdhYmxlKDApCiAgICAgLCBtX2J1ZmZlckhhbmRsZSgwKQogewpAQCAtMTEw
LDQwICsxMDksMTYgQEAgdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR0xQbGF0Zm9ybVN1cmZhY2U6OnVwZGF0ZUNv
bnRlbnRzKGNvbnN0IHVpbnQzMl90IHRleHR1cmUpCit2b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjp1
cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCkKIHsKLSAgICBpZiAoIW1fZmJvSWQpCi0gICAg
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2Zib0lkKTsKLQotICAgIGludCB4ID0gMDsKLSAg
ICBpbnQgeSA9IDA7Ci0gICAgaW50IHdpZHRoID0gbV9yZWN0LndpZHRoKCk7Ci0gICAgaW50IGhl
aWdodCA9IG1fcmVjdC5oZWlnaHQoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURf
RlJBTUVCVUZGRVIsIG1fZmJvSWQpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Ci0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7Ci0gICAgLy8gVXNlIE5F
QVJFU1QgYXMgbm8gc2NhbGUgaXMgcGVyZm9ybWVkIGR1cmluZyB0aGUgYmxpdC4KLSAgICBnbEJs
aXRGcmFtZWJ1ZmZlcih4LCB5LCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBH
TF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICBzd2FwQnVmZmVycygpOwogfQog
Ci12b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjpzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBuZXdS
ZWN0KQordm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYp
CiB7Ci0gICAgbV9yZWN0ID0gbmV3UmVjdDsKIH0KIAogdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6
ZGVzdHJveSgpCiB7Ci0gICAgbV9yZWN0ID0gSW50UmVjdCgpOwotCi0gICAgaWYgKG1fZmJvSWQp
IHsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmbV9mYm9JZCk7Ci0gICAgICAgIG1fZmJvSWQgPSAwOwotICAgIH0KIH0KIAog
R0xQbGF0Zm9ybVN1cmZhY2U6OlN1cmZhY2VBdHRyaWJ1dGVzIEdMUGxhdGZvcm1TdXJmYWNlOjph
dHRyaWJ1dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKaW5kZXggYjU5ODhmYzExMzRi
NGVjOTA5NmUxMTY1OGQwM2Y0NTMzMzEwZWEyZS4uNWQ0MGM1MjBlNjZlZDE4YTIzNDJlN2UzYmJm
Y2NjOWEwY2RhODdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZvcm1TdXJmYWNlLmgKQEAgLTMxLDcgKzMxLDYgQEAK
ICNpbmNsdWRlICJHTERlZnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogLy8gRW5jYXBz
dWxhdGVzIGEgc3VyZmFjZSB0aGF0IGNhbiBiZSByZW5kZXJlZCB0byB3aXRoIEdMLCBoaWRpbmcg
cGxhdGZvcm0KIC8vIHNwZWNpZmljIG1hbmFnZW1lbnQuCkBAIC03Nyw5ICs3Niw5IEBAIHB1Ymxp
YzoKICAgICAvLyBGdW5jdGlvbiBkb2VzIHRoZSBmb2xsb3dpbmcoaW4gb3JkZXIpOgogICAgIC8v
IGEpIEJsaXRzIHRleHR1cmUgY29udGVudHMgdG8gYmFjayBidWZmZXIuCiAgICAgLy8gYikgQ2Fs
bHMgU3dhcCBCdWZmZXJzLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB1
aW50MzJfdCB0ZXh0dXJlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3Qg
dWludDMyX3QpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IEludFJlY3Qm
IG5ld1JlY3QpOworICAgIHZpcnR1YWwgdm9pZCBzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0Jik7
CiAKICAgICB2aXJ0dWFsIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBjb25maWd1cmF0aW9uKCk7CiAK
QEAgLTg3LDExICs4NiwxMSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBHTFBsYXRmb3Jt
U3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcyk7Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0gICAgR0x1
aW50IG1fZmJvSWQ7CisKICAgICBQbGF0Zm9ybURpc3BsYXkgbV9zaGFyZWREaXNwbGF5OwogICAg
IFBsYXRmb3JtRHJhd2FibGUgbV9kcmF3YWJsZTsKICAgICBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSBt
X2J1ZmZlckhhbmRsZTsKKyAgICBJbnRSZWN0IG1fcmVjdDsKIH07CiAKIH0KQEAgLTk5LDMgKzk4
LDQgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRT
dXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjM4YTliYzY5ODcyMWRlZmI3MjU4Yjk1MWUyY2RhMTQ3
OTgyZGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdMVHJhbnNw
b3J0U3VyZmFjZS5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7IDAs
IDAsIDEsIDAsIDEsIDEsIDAsIDEgfTsKK3N0YXRpYyBib29sIHZlcnRleEFycmF5T2JqZWN0U3Vw
cG9ydGVkID0gZmFsc2U7CisKK0dMVHJhbnNwb3J0U3VyZmFjZTo6R0xUcmFuc3BvcnRTdXJmYWNl
KFN1cmZhY2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpCisgICAgOiBHTFBsYXRmb3JtU3VyZmFjZShh
dHRyaWJ1dGVzKQorICAgICwgbV92Ym8oMCkKKyAgICAsIG1fdmVydGV4SGFuZGxlKDApCit7Cit9
CisKK0dMVHJhbnNwb3J0U3VyZmFjZTo6fkdMVHJhbnNwb3J0U3VyZmFjZSgpCit7Cit9CisKK3Zv
aWQgR0xUcmFuc3BvcnRTdXJmYWNlOjp1cGRhdGVDb250ZW50cyhjb25zdCB1aW50MzJfdCB0ZXh0
dXJlKQoreworICAgIGlmICghbV9zaGFkZXJQcm9ncmFtKQorICAgICAgICBpbml0aWFsaXplU2hh
ZGVyUHJvZ3JhbSgpOworCisgICAgZHJhdyh0ZXh0dXJlKTsKKyAgICBzd2FwQnVmZmVycygpOwor
fQorCit2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYg
bmV3UmVjdCkKK3sKKyAgICBtX3JlY3QgPSBuZXdSZWN0OworCisgICAgaWYgKCFtX3NoYWRlclBy
b2dyYW0pCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4
KCk7Cit9CisKK3ZvaWQgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCkKK3sKKyAgICBtX3Jl
Y3QgPSBJbnRSZWN0KCk7CisKKyAgICA6OmdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCAwKTsKKyAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CisKKyAgICBpZiAo
IW1fc2hhZGVyUHJvZ3JhbSB8fCAhbV9jb250ZXh0M0QpCisgICAgICAgIHJldHVybjsKKworICAg
IDo6Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisKKyAgICBpZiAobV92Ym8pCisg
ICAgICAgIDo6Z2xEZWxldGVCdWZmZXJzKDEsICZtX3Zibyk7CisKKyAgICBpZiAobV92ZXJ0ZXhI
YW5kbGUpIHsKKyAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+YmluZFZlcnRl
eEFycmF5T0VTKDApOworICAgICAgICBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5kZWxl
dGVWZXJ0ZXhBcnJheU9FUyhtX3ZlcnRleEhhbmRsZSk7CisgICAgfSBlbHNlIGlmIChtX3NoYWRl
clByb2dyYW0pCisgICAgICAgIDo6Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobV9zaGFkZXJQ
cm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpKTsKKworICAgIDo6Z2xVc2VQcm9ncmFtKDApOworCisg
ICAgbV9zaGFkZXJQcm9ncmFtID0gbnVsbHB0cjsKKyAgICBtX2NvbnRleHQzRCA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgR0xUcmFuc3BvcnRTdXJmYWNlOjpkcmF3KGNvbnN0IHVpbnQzMl90IHRleHR1
cmUpCit7CisgICAgaWYgKCFtX3ZlcnRleEhhbmRsZSkKKyAgICAgICAgYmluZEFycmF5QnVmZmVy
KCk7CisKKyAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAg
OjpnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKK30KKwordm9pZCBHTFRyYW5z
cG9ydFN1cmZhY2U6OmJpbmRBcnJheUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgOjpnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVydGV4TG9jYXRpb24oKSk7CisgICAg
OjpnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtX3Zibyk7CisgICAgOjpnbFZlcnRleEF0
dHJpYlBvaW50ZXIobV9zaGFkZXJQcm9ncmFtLT52ZXJ0ZXhMb2NhdGlvbigpLCAyLCBHcmFwaGlj
c0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKK30KKwordm9pZCBHTFRyYW5zcG9ydFN1
cmZhY2U6OnVwZGF0ZVRyYW5zZm9ybWF0aW9uTWF0cml4KCkKK3sKKyAgICBpZiAoIW1fc2hhZGVy
UHJvZ3JhbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgOjpnbFZpZXdwb3J0KG1fcmVjdC54KCks
IG1fcmVjdC55KCksIG1fcmVjdC53aWR0aCgpLCBtX3JlY3QuaGVpZ2h0KCkpOworCisgICAgRmxv
YXRSZWN0IHRhcmdldFJlY3QgPSBGbG9hdFJlY3QobV9yZWN0KTsKKyAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgg
PSBUcmFuc2Zvcm1hdGlvbk1hdHJpeChpZGVudGl0eU1hdHJpeCkubXVsdGlwbHkoVHJhbnNmb3Jt
YXRpb25NYXRyaXg6OnJlY3RUb1JlY3QoRmxvYXRSZWN0KDAsIDAsIDEsIDEpLCB0YXJnZXRSZWN0
KSk7CisgICAgbV9zaGFkZXJQcm9ncmFtLT5zZXRNYXRyaXgobV9zaGFkZXJQcm9ncmFtLT5tb2Rl
bFZpZXdNYXRyaXhMb2NhdGlvbigpLCBtYXRyaXgpOworCisgICAgLy8gVGFrZW4gZnJvbSBUZXh0
dXJlTWFwcGVyR0wuCisgICAgY29uc3QgZmxvYXQgbmVhclZhbHVlID0gOTk5OTk5OTsKKyAgICBj
b25zdCBmbG9hdCBmYXJWYWx1ZSA9IC05OTk5OTsKKworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHByb2plY3Rpb25NYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgyLjAgLyBmbG9hdChtX3Jl
Y3Qud2lkdGgoKSksIDAsIDAsIDAsCisgICAgICAgIDAsICgtMi4wKSAvIGZsb2F0KG1fcmVjdC5o
ZWlnaHQoKSksIDAsIDAsCisgICAgICAgIDAsIDAsIC0yLmYgLyAoZmFyVmFsdWUgLSBuZWFyVmFs
dWUpLCAwLAorICAgICAgICAtMSwgMSwgLShmYXJWYWx1ZSArIG5lYXJWYWx1ZSkgLyAoZmFyVmFs
dWUgLSBuZWFyVmFsdWUpLCAxKTsKKworICAgIG1fc2hhZGVyUHJvZ3JhbS0+c2V0TWF0cml4KG1f
c2hhZGVyUHJvZ3JhbS0+cHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKCksIHByb2plY3Rpb25NYXRy
aXgpOworfQorCit2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6aW5pdGlhbGl6ZVNoYWRlclByb2dy
YW0oKQoreworICAgIGlmICghbV9jb250ZXh0M0QpCisgICAgICAgIG1fY29udGV4dDNEID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKTsKKworICAgIHZlcnRl
eEFycmF5T2JqZWN0U3VwcG9ydGVkID0gbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisKKyAgICBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6T3B0aW9ucyBvcHRpb25zID0gVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW06OlRleHR1cmU7CisgICAgbV9zaGFkZXJQcm9ncmFtID0gVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW06OmNyZWF0ZShtX2NvbnRleHQzRCwgb3B0aW9ucyk7CisKKyAgICA6OmdsVXNlUHJvZ3Jh
bShtX3NoYWRlclByb2dyYW0tPnByb2dyYW1JRCgpKTsKKyAgICA6OmdsVW5pZm9ybTFpKG1fc2hh
ZGVyUHJvZ3JhbS0+c2FtcGxlckxvY2F0aW9uKCksIDApOworICAgIDo6Z2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAg
OjpnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKKyAgICA6OmdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgOjpnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZmxpcFRyYW5zZm9ybTsKKyAgICBmbGlwVHJhbnNmb3JtLmZs
aXBZKCk7CisgICAgZmxpcFRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLTEpOworICAgIG1fc2hhZGVy
UHJvZ3JhbS0+c2V0TWF0cml4KG1fc2hhZGVyUHJvZ3JhbS0+dGV4dHVyZVNwYWNlTWF0cml4TG9j
YXRpb24oKSwgZmxpcFRyYW5zZm9ybSk7CisKKyAgICA6OmdsVW5pZm9ybTFmKG1fc2hhZGVyUHJv
Z3JhbS0+b3BhY2l0eUxvY2F0aW9uKCksIDEuMCk7CisKKyAgICBpZiAoIW1fdmJvKSB7CisgICAg
ICAgIDo6Z2xHZW5CdWZmZXJzKDEsICZtX3Zibyk7CisgICAgICAgIDo6Z2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgbV92Ym8pOworICAgICAgICA6OmdsQnVmZmVyRGF0YShHTF9BUlJBWV9C
VUZGRVIsIHNpemVvZihHQzNEZmxvYXQpICogOCwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsK
KyAgICB9CisKKyAgICAvLyBDcmVhdGUgYW5kIHNldC11cCB2ZXJ0ZXggYXJyYXkgb2JqZWN0Lgor
ICAgIGlmICh2ZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCkgeworICAgICAgICBtX3ZlcnRleEhh
bmRsZSA9IG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCktPmNyZWF0ZVZlcnRleEFycmF5T0VT
KCk7CisKKyAgICAgICAgaWYgKG1fdmVydGV4SGFuZGxlKSB7CisgICAgICAgICAgICBtX2NvbnRl
eHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5iaW5kVmVydGV4QXJyYXlPRVMobV92ZXJ0ZXhIYW5kbGUp
OworICAgICAgICAgICAgYmluZEFycmF5QnVmZmVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB1cGRhdGVUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworCisgICAgOjpnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgMCk7Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3Bv
cnRTdXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNiOWQxMGY1MGU2NThjOWFiYTFjYmViODJkM2YyYmYw
YzEyZjU3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgR0xUcmFuc3BvcnRTdXJmYWNlX2gKKyNkZWZpbmUgR0xU
cmFuc3BvcnRTdXJmYWNlX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwor
I2luY2x1ZGUgIkdMUGxhdGZvcm1TdXJmYWNlLmgiCisjaW5jbHVkZSA8dGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHTFRyYW5zcG9ydFN1cmZhY2UgOiBwdWJsaWMgR0xQ
bGF0Zm9ybVN1cmZhY2UgeworCitwdWJsaWM6CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlKFN1cmZh
Y2VBdHRyaWJ1dGVzKTsKKyAgICB2aXJ0dWFsIH5HTFRyYW5zcG9ydFN1cmZhY2UoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29udGVudHMoY29uc3QgdWludDMyX3QpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRlc3Ryb3koKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQg
dXBkYXRlVHJhbnNmb3JtYXRpb25NYXRyaXgoKTsKKyAgICB2b2lkIGJpbmRBcnJheUJ1ZmZlcigp
IGNvbnN0OworICAgIHZvaWQgaW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKTsKKyAgICB2b2lkIGRy
YXcoY29uc3QgdWludDMyX3QpOworCisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2Nv
bnRleHQzRDsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0+IG1fc2hhZGVy
UHJvZ3JhbTsKKyAgICBQbGF0Zm9ybTNET2JqZWN0IG1fdmJvOworICAgIFBsYXRmb3JtM0RPYmpl
Y3QgbV92ZXJ0ZXhIYW5kbGU7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWds
L0VHTFN1cmZhY2UuY3BwCmluZGV4IGVhZjEzMDAyMmI3Yjk0NTAwY2YxMWRmY2QwZWExZTIwNTRl
MDYwNTAuLjg5YmY1MTY1NmQ0YTZlYTFhMzNkYTk2YWZiNGNlZjIwMzIzYjY1ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9l
Z2wvRUdMU3VyZmFjZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZShT
dXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQotICAgIDogR0xQbGF0Zm9ybVN1cmZhY2UoYXR0
cmlidXRlcykKKyAgICA6IEdMVHJhbnNwb3J0U3VyZmFjZShhdHRyaWJ1dGVzKQogewogICAgIG1f
Y29uZmlnU2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgRUdMQ29uZmlnU2VsZWN0b3IoYXR0cmlidXRl
cywgTmF0aXZlV3JhcHBlcjo6bmF0aXZlRGlzcGxheSgpKSk7CiAgICAgbV9zaGFyZWREaXNwbGF5
ID0gbV9jb25maWdTZWxlY3Rvci0+ZGlzcGxheSgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQg
RUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogCiB2b2lkIEVHTFdpbmRv
d1RyYW5zcG9ydFN1cmZhY2U6OmRlc3Ryb3koKQogewotICAgIEdMUGxhdGZvcm1TdXJmYWNlOjpk
ZXN0cm95KCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCk7CiAgICAgTmF0aXZl
V3JhcHBlcjo6ZGVzdHJveVdpbmRvdyhtX2J1ZmZlckhhbmRsZSk7CiAgICAgZnJlZUVHTFJlc291
cmNlcygpOwogICAgIG1fYnVmZmVySGFuZGxlID0gMDsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lk
IEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OmZyZWVFR0xSZXNvdXJjZXMoKQogCiB2b2lkIEVH
TFdpbmRvd1RyYW5zcG9ydFN1cmZhY2U6OnNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmIG5ld1Jl
Y3QpCiB7Ci0gICAgR0xQbGF0Zm9ybVN1cmZhY2U6OnNldEdlb21ldHJ5KG5ld1JlY3QpOworICAg
IEdMVHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0cnkobmV3UmVjdCk7CiAgICAgTmF0aXZlV3Jh
cHBlcjo6cmVzaXplV2luZG93KG5ld1JlY3QsIG1fYnVmZmVySGFuZGxlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmgKaW5kZXggZGIxYTIxZTg4OGIyYzVmNmI0NmZjOTllMzcxMjU3NmQ4ZTYyZTVm
ZC4uNTRiZDI0YzdmYzI4N2IxYzczZGQzOWE1OGQzZTRhYmRhNDQwMjRlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdM
U3VyZmFjZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgVVNFKEVHTCkgJiYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCiAKICNpbmNsdWRlICJFR0xDb25maWdTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkdM
UGxhdGZvcm1TdXJmYWNlLmgiCisjaW5jbHVkZSAiR0xUcmFuc3BvcnRTdXJmYWNlLmgiCiAKICNp
bmNsdWRlIDxnbHgvWDExSGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBA
IC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHR5cGVkZWYgWDExSGVscGVyIE5h
dGl2ZVdyYXBwZXI7CiAKIC8vIENvbnRlbnRzIG9mIHRoZSBzdXJmYWNlIGFyZSBiYWNrZWQgYnkg
bmF0aXZlIHdpbmRvdy4KLWNsYXNzIEVHTFdpbmRvd1RyYW5zcG9ydFN1cmZhY2UgOiBwdWJsaWMg
R0xQbGF0Zm9ybVN1cmZhY2UgeworY2xhc3MgRUdMV2luZG93VHJhbnNwb3J0U3VyZmFjZSA6IHB1
YmxpYyBHTFRyYW5zcG9ydFN1cmZhY2UgewogCiBwdWJsaWM6CiAgICAgRUdMV2luZG93VHJhbnNw
b3J0U3VyZmFjZShTdXJmYWNlQXR0cmlidXRlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5jcHAKaW5k
ZXggOGFiN2FhNjdhMjczNDM1ZGVmYmExOTYxMjM2ZDg1MzYwOTdhZWIzMy4uYzBlNTYzNjUxMjk0
ODkzMzIzZDMzYWVhNmNhMzYzMWFlY2M5NmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgaW50IHBi
dWZmZXJBdHRyaWJ1dGVzW10gPSB7IEdMWF9QQlVGRkVSX1dJRFRILCAxLCBHTFhfUEJVRkZFUl9I
RUlHSFQsIDEsIDAgfTsKIAogR0xYVHJhbnNwb3J0U3VyZmFjZTo6R0xYVHJhbnNwb3J0U3VyZmFj
ZShTdXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1dGVzKQotICAgIDogR0xQbGF0Zm9ybVN1cmZhY2Uo
YXR0cmlidXRlcykKKyAgICA6IEdMVHJhbnNwb3J0U3VyZmFjZShhdHRyaWJ1dGVzKQogewogICAg
IG1fc2hhcmVkRGlzcGxheSA9IFgxMUhlbHBlcjo6bmF0aXZlRGlzcGxheSgpOwogICAgIGF0dHJp
YnV0ZXMgfD0gR0xQbGF0Zm9ybVN1cmZhY2U6OkRvdWJsZUJ1ZmZlcmVkOwpAQCAtNjYsNyArNjYs
NyBAQCBQbGF0Zm9ybVN1cmZhY2VDb25maWcgR0xYVHJhbnNwb3J0U3VyZmFjZTo6Y29uZmlndXJh
dGlvbigpCiAKIHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50
UmVjdCYgbmV3UmVjdCkKIHsKLSAgICBHTFBsYXRmb3JtU3VyZmFjZTo6c2V0R2VvbWV0cnkobmV3
UmVjdCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpzZXRHZW9tZXRyeShuZXdSZWN0KTsKICAg
ICBYMTFIZWxwZXI6OnJlc2l6ZVdpbmRvdyhuZXdSZWN0LCBtX2RyYXdhYmxlKTsKICAgICAvLyBG
b3JjZSByZXNpemUgb2YgR0wgc3VyZmFjZSBhZnRlciB3aW5kb3cgcmVzaXplLgogICAgIGdsWFN3
YXBCdWZmZXJzKHNoYXJlZERpc3BsYXkoKSwgbV9kcmF3YWJsZSk7CkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQogCiB2b2lkIEdMWFRyYW5z
cG9ydFN1cmZhY2U6OmRlc3Ryb3koKQogewotICAgIEdMUGxhdGZvcm1TdXJmYWNlOjpkZXN0cm95
KCk7CisgICAgR0xUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCk7CiAKICAgICBpZiAobV9idWZm
ZXJIYW5kbGUpIHsKICAgICAgICAgWDExSGVscGVyOjpkZXN0cm95V2luZG93KG1fYnVmZmVySGFu
ZGxlKTsKQEAgLTE0Niw3ICsxNDYsNiBAQCB2b2lkIEdMWE9mZlNjcmVlblN1cmZhY2U6OmRlc3Ry
b3koKQogCiB2b2lkIEdMWE9mZlNjcmVlblN1cmZhY2U6OmZyZWVSZXNvdXJjZXMoKQogewotICAg
IEdMUGxhdGZvcm1TdXJmYWNlOjpkZXN0cm95KCk7CiAgICAgRGlzcGxheSogZGlzcGxheSA9IHNo
YXJlZERpc3BsYXkoKTsKIAogICAgIGlmICghZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5oCmlu
ZGV4IGQ3ZWFjOTE4MDFlMDhiNGE5YmI2ODMxNzZkMTU2MWI3YTEyODliMDguLmU4NjE4OTEwN2M5
YTMyYjhjMDU0MDc4NWZiNTg4NTdhNzA5OWIxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuaApAQCAt
MjgsMTMgKzI4LDEzIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVT
RShHTFgpCiAKLSNpbmNsdWRlICJHTFBsYXRmb3JtU3VyZmFjZS5oIgorI2luY2x1ZGUgIkdMVHJh
bnNwb3J0U3VyZmFjZS5oIgogI2luY2x1ZGUgIkdMWENvbmZpZ1NlbGVjdG9yLmgiCiAjaW5jbHVk
ZSAiWDExSGVscGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR0xYVHJhbnNw
b3J0U3VyZmFjZSA6IHB1YmxpYyBHTFBsYXRmb3JtU3VyZmFjZSB7CitjbGFzcyBHTFhUcmFuc3Bv
cnRTdXJmYWNlIDogcHVibGljIEdMVHJhbnNwb3J0U3VyZmFjZSB7CiAKIHB1YmxpYzoKICAgICBH
TFhUcmFuc3BvcnRTdXJmYWNlKFN1cmZhY2VBdHRyaWJ1dGVzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>