<?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>100745</bug_id>
          
          <creation_ts>2012-10-30 04:03:37 -0700</creation_ts>
          <short_desc>[EFL][WK2][AC] Use smart pointers for Evas_GL types</short_desc>
          <delta_ts>2012-10-31 18:39:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754187</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 04:03:37 -0700</bug_when>
    <thetext>We recently started using smart pointers in WK2 EFL port. However, the accelerated compositing code is still using raw pointers for Evas_GL* objects.
We should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754290</commentid>
    <comment_count>1</comment_count>
      <attachid>171433</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-30 06:22:12 -0700</bug_when>
    <thetext>Created attachment 171433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755190</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 05:38:49 -0700</bug_when>
    <thetext>Any feedback on this patch please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755203</commentid>
    <comment_count>3</comment_count>
      <attachid>171433</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-31 06:01:22 -0700</bug_when>
    <thetext>Comment on attachment 171433
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EvasGLSurface.cpp:33
&gt; +EvasGLSurface::EvasGLSurface(Evas_GL* evasGl, Evas_GL_Surface* surface)

Maybe call this passSurface as you pass ownership?

&gt; Source/WebKit2/UIProcess/API/efl/EvasGLSurface.h:46
&gt; +        return adoptPtr(new EvasGLSurface(evasGl, surface));

// Sets m_evasGL.

I suppose we should use GL and not Gl in accordance with style guide

&gt; Source/WebKit2/UIProcess/API/efl/EvasGLSurface.h:55
&gt; +    Evas_GL* m_evasGl;

What are you using this for? Ah it is being set by the ctor.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:254
&gt; +        evas_gl_make_current(m_evasGl.get(), m_evasGlSurface-&gt;surface(), m_evasGlContext-&gt;context());

wouldn&apos;t -&gt;get() not be more consistent? hmm I see that won&apos;t work as it already exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755219</commentid>
    <comment_count>4</comment_count>
      <attachid>171633</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 06:24:36 -0700</bug_when>
    <thetext>Created attachment 171633
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755244</commentid>
    <comment_count>5</comment_count>
      <attachid>171633</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-31 06:48:40 -0700</bug_when>
    <thetext>Comment on attachment 171633
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:471
&gt; +    evas_gl_native_surface_get(m_evasGL.get(), m_evasGLSurface-&gt;surface(), &amp;nativeSurface);
&gt;      evas_object_image_native_surface_set(sd-&gt;image, &amp;nativeSurface);
&gt;  
&gt; -    evas_gl_make_current(m_evasGl, m_evasGlSurface, m_evasGlContext);
&gt; +    evas_gl_make_current(m_evasGL.get(), m_evasGLSurface-&gt;surface(), m_evasGLContext-&gt;context());

why not call evasGL() instead of m_evasGL.get().

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:473
&gt; +    Evas_GL_API* gl = evas_gl_api_get(evasGL());

like here we  are doing so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755255</commentid>
    <comment_count>6</comment_count>
      <attachid>171645</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-31 06:59:45 -0700</bug_when>
    <thetext>Created attachment 171645
Patch

Take Kenneth&apos;s feedback into consideration.

Good point, it looks nicer and more consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755395</commentid>
    <comment_count>7</comment_count>
      <attachid>171645</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 09:48:54 -0700</bug_when>
    <thetext>Comment on attachment 171645
Patch

Clearing flags on attachment: 171645

Committed r133041: &lt;http://trac.webkit.org/changeset/133041&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755396</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 09:48:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755788</commentid>
    <comment_count>9</comment_count>
      <attachid>171645</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-31 18:39:25 -0700</bug_when>
    <thetext>Comment on attachment 171645
Patch

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

Sorry for late comments. But, it seems to me there are some nits.

&gt; Source/WebKit2/PlatformEfl.cmake:45
&gt; +    UIProcess/API/efl/EvasGLContext.cpp

Wrong alphabetical order.

&gt; Source/WebKit2/PlatformEfl.cmake:46
&gt; +    UIProcess/API/efl/EvasGLSurface.cpp

ditto.

&gt; Source/WebKit2/UIProcess/API/efl/EvasGLSurface.cpp:35
&gt; +    , m_surface(passSurface)

passSurface ? I think surface is just enough.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:493
&gt; +        EINA_LOG_DOM_WARN(_ewk_log_dom, &quot;Failed to create GLContext.&quot;);

We already define WARN macro for this.

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:499
&gt; +        EINA_LOG_DOM_WARN(_ewk_log_dom, &quot;Failed to create GLSurface.&quot;);

ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171433</attachid>
            <date>2012-10-30 06:22:12 -0700</date>
            <delta_ts>2012-10-31 06:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100745_ac_smartptrs.patch</filename>
            <type>text/plain</type>
            <size>21063</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYTgxMjdiOS4uMzYxNzQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0zMCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl1bQUNdIFVzZSBzbWFydCBwb2ludGVycyBmb3IgRXZhc19HTCB0eXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBPd25QdHIg
dXNhYmxlIHdpdGggRXZhc19HTCB0eXBlIHRvIGF2b2lkIGhhbmRsaW5nCisgICAgICAgIHJhdyBw
b2ludGVycyBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIHd0Zi9Pd25QdHJDb21tb24uaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL2VmbC9Pd25QdHJFZmwuY3BwOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdURjo6ZGVsZXRlT3duZWRQdHIpOgorCiAyMDEyLTEwLTI4ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgWGNvZGUgY29uZmln
dXJhdGlvbiBzZXR0aW5ncyB0aGF0IHVzZWQgdG8gdmFyeSBiZXR3ZWVuIE9TIHZlcnNpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi9Pd25QdHJDb21tb24uaAppbmRleCBmZTI1MDBlLi5jNTY0MDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21t
b24uaApAQCAtNDYsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBfRWNvcmVfVGltZXIgRWNvcmVf
VGltZXI7CiB0eXBlZGVmIHN0cnVjdCBfRWluYV9IYXNoIEVpbmFfSGFzaDsKIHR5cGVkZWYgc3Ry
dWN0IF9FaW5hX01vZHVsZSBFaW5hX01vZHVsZTsKIHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVj
dCBFdmFzX09iamVjdDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit0eXBlZGVm
IHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOworI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC03NSw2ICs3OCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfSGFzaCopOwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfTW9kdWxlKik7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoRXZhc19PYmplY3QqKTsKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3du
ZWRQdHIoRXZhc19HTCopOworI2VuZGlmCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZsLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2VmbC9Pd25QdHJFZmwuY3BwCmluZGV4IGI3NjQyMzkuLjU5YzhhZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2Vm
bC9Pd25QdHJFZmwuY3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPEVpbmEuaD4KICNp
bmNsdWRlIDxFdmFzLmg+CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5j
bHVkZSA8RXZhc19HTC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiB2b2lkIGRlbGV0
ZU93bmVkUHRyKEVjb3JlX0V2YXMqIHB0cikKQEAgLTcxLDQgKzc1LDEyIEBAIHZvaWQgZGVsZXRl
T3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqIHB0cikKICAgICAgICAgZWNvcmVfaW1mX2NvbnRl
eHRfZGVsKHB0cik7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lk
IGRlbGV0ZU93bmVkUHRyKEV2YXNfR0wqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBl
dmFzX2dsX2ZyZWUocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzg0NWExMy4u
NmI3YjhjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTMwICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW0VGTF1b
V0syXVtBQ10gVXNlIHNtYXJ0IHBvaW50ZXJzIGZvciBFdmFzX0dMIHR5cGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3NDUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHJhdyBwb2ludGVy
cyB0byBFdmFzX0dMLCBFdmFzX0dMX0NvbnRleHQgYW5kCisgICAgICAgIEV2YXNfR0xfU3VyZmFj
ZSBieSBzbWFydCBwb2ludGVycyBpbiBFd2tWaWV3SW1wbC4KKworICAgICAgICBDKysgd3JhcHBl
cnMgd2VyZSBhZGRlZCBmb3IgRXZhc19HTF9Db250ZXh0IGFuZAorICAgICAgICBFdmFzX0dMX1N1
cmZhY2UgaW4gb3JkZXIgdG8gdXNlIE93blB0ci4gVGhpcyBpcyBuZWVkZWQKKyAgICAgICAgYmVj
YXVzZSB0aGVpciBkZXN0cm95IGZ1bmN0aW9ucyBuZWVkIHRoZSBFdmFzX0dMLgorCisgICAgICAg
ICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dM
Q29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
RXZhc0dMQ29udGV4dDo6RXZhc0dMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkV2YXNHTENv
bnRleHQ6On5FdmFzR0xDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FdmFz
R0xDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV2YXNHTENv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0Ojpjb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpFdmFzR0xTdXJmYWNlOjpFdmFzR0xTdXJmYWNlKToKKyAgICAgICAgKFdl
YktpdDo6RXZhc0dMU3VyZmFjZTo6fkV2YXNHTFN1cmZhY2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoRXZhc0dMU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OkV2YXNHTFN1cmZhY2U6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV2YXNHTFN1cmZhY2U6OnN1cmZhY2UpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAgKEV3a1ZpZXdJ
bXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZGlzcGxheVRpbWVyRmly
ZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFjZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoRXdrVmlld0ltcGw6OmV2
YXNHbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXZhc0dsQ29udGV4dCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6ZXZhc0dsU3VyZmFjZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVzZXRF
dmFzR2xTdXJmYWNlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfY2FsY3Vs
YXRlKToKKwogMjAxMi0xMC0zMCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlh
a292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFNpbXBsaWZ5IHNpZ25hbCBlbWl0
dGluZyBBUEkgaW4gRXdrVmlld0ltcGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNl
ZGVkNy4uNzNmYTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQyLDYgKzQyLDgg
QEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAv
V0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2JhY2tfZm9yd2FyZF9saXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNr
X2ZvcndhcmRfbGlzdF9pdGVtLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9w
aWNrZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
dmFzR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNH
TENvbnRleHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzM5MzcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFz
R0xDb250ZXh0LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZhc0dMQ29udGV4dC5oIgorCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRXZhc0dMQ29u
dGV4dDo6RXZhc0dMQ29udGV4dChFdmFzX0dMKiBldmFzR2wsIEV2YXNfR0xfQ29udGV4dCogY29u
dGV4dCkKKyAgICA6IG1fZXZhc0dsKGV2YXNHbCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQor
eworICAgIEFTU0VSVChldmFzR2wpOworICAgIEFTU0VSVChjb250ZXh0KTsKK30KKworRXZhc0dM
Q29udGV4dDo6fkV2YXNHTENvbnRleHQoKQoreworICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95
KG1fZXZhc0dsLCBtX2NvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41Yjk3OTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRXZhc0dMQ29udGV4dF9oCisjZGVmaW5lIEV2YXNHTENv
bnRleHRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgPEV2
YXNfR0wuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgRXZhc0dMQ29udGV4dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8RXZhc0dMQ29udGV4dD4gY3JlYXRlKEV2YXNfR0wqIGV2YXNHbCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChldmFzR2wpOworICAgICAgICBFdmFzX0dMX0NvbnRleHQqIGNvbnRleHQgPSBldmFz
X2dsX2NvbnRleHRfY3JlYXRlKGV2YXNHbCwgMCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
RXZhc0dMQ29udGV4dChldmFzR2wsIGNvbnRleHQpKTsKKyAgICB9CisgICAgfkV2YXNHTENvbnRl
eHQoKTsKKworICAgIGlubGluZSBFdmFzX0dMX0NvbnRleHQqIGNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRleHQ7IH0KKworcHJpdmF0ZToKKyAgICBFdmFzR0xDb250ZXh0KEV2YXNfR0wq
IGV2YXNHbCwgRXZhc19HTF9Db250ZXh0KiBjb250ZXh0KTsKKworICAgIEV2YXNfR0wqIG1fZXZh
c0dsOworICAgIEV2YXNfR0xfQ29udGV4dCogbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNl
bmRpZiAvLyBFdmFzR0xDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTA2YjgwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmFzR0xTdXJmYWNlLmgi
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitFdmFzR0xTdXJmYWNlOjpFdmFzR0xTdXJmYWNlKEV2YXNfR0wqIGV2YXNHbCwgRXZhc19H
TF9TdXJmYWNlKiBzdXJmYWNlKQorICAgIDogbV9ldmFzR2woZXZhc0dsKQorICAgICwgbV9zdXJm
YWNlKHN1cmZhY2UpCit7CisgICAgQVNTRVJUKGV2YXNHbCk7CisgICAgQVNTRVJUKHN1cmZhY2Up
OworfQorCitFdmFzR0xTdXJmYWNlOjp+RXZhc0dMU3VyZmFjZSgpCit7CisgICAgZXZhc19nbF9z
dXJmYWNlX2Rlc3Ryb3kobV9ldmFzR2wsIG1fc3VyZmFjZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOGIwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmgKQEAgLTAsMCAr
MSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFdmFzR0xTdXJmYWNlX2gKKyNk
ZWZpbmUgRXZhc0dMU3VyZmFjZV9oCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisjaW5jbHVkZSA8RXZhc19HTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBF
dmFzR0xTdXJmYWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxFdmFzR0xTdXJm
YWNlPiBjcmVhdGUoRXZhc19HTCogZXZhc0dsLCBFdmFzX0dMX0NvbmZpZyogY2ZnLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGV2YXNHbCk7Cisg
ICAgICAgIEFTU0VSVChjZmcpOworICAgICAgICBFdmFzX0dMX1N1cmZhY2UqIHN1cmZhY2UgPSBl
dmFzX2dsX3N1cmZhY2VfY3JlYXRlKGV2YXNHbCwgY2ZnLCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2YXNHTFN1cmZhY2UoZXZhc0dsLCBz
dXJmYWNlKSk7CisgICAgfQorICAgIH5FdmFzR0xTdXJmYWNlKCk7CisKKyAgICBpbmxpbmUgRXZh
c19HTF9TdXJmYWNlKiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdXJmYWNlOyB9CisKK3By
aXZhdGU6CisgICAgRXZhc0dMU3VyZmFjZShFdmFzX0dMKiBldmFzR2wsIEV2YXNfR0xfU3VyZmFj
ZSogc3VyZmFjZSk7CisKKyAgICBFdmFzX0dMKiBtX2V2YXNHbDsKKyAgICBFdmFzX0dMX1N1cmZh
Y2UqIG1fc3VyZmFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gRXZhc0dMU3VyZmFjZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAK
aW5kZXggNTVhOGYzOC4uNTcyZjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcApAQCAtNTcsNiArNTcsMTAgQEAKICNpbmNsdWRlICJX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyNpbmNsdWRlIDxFdmFzX0dMLmg+CisjZW5kaWYKKwogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMDUsMTEgKzEw
OSw2IEBAIEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1Jl
ZlB0cjxFd2tfQ29udGV4dD4gY29udGV4dCwgUGFzCiAgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6Y3JlYXRlKHRoaXMp
KQogICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBQYWdlVmlld3Bv
cnRDb250cm9sbGVyKG1fcGFnZVByb3h5LmdldCgpLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnQuZ2V0KCkpKSkKICNlbmRpZgotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
LSAgICAsIG1fZXZhc0dsKDApCi0gICAgLCBtX2V2YXNHbENvbnRleHQoMCkKLSAgICAsIG1fZXZh
c0dsU3VyZmFjZSgwKQotI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKEV3a19TZXR0aW5nczo6Y3Jl
YXRlKHRoaXMpKQogICAgICwgbV9jdXJzb3JHcm91cCgwKQogICAgICwgbV9tb3VzZUV2ZW50c0Vu
YWJsZWQoZmFsc2UpCkBAIC0yNTIsNyArMjUxLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6ZGlzcGxh
eVRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8RXdrVmlld0ltcGw+KikKICAgICBmb3IgKFZlY3Rv
cjxJbnRSZWN0Pjo6aXRlcmF0b3IgaXQgPSByZWN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKICAgICAgICAgSW50UmVjdCByZWN0ID0gKml0OwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKLSAgICAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9ldmFzR2wsIG1fZXZhc0dsU3Vy
ZmFjZSwgbV9ldmFzR2xDb250ZXh0KTsKKyAgICAgICAgZXZhc19nbF9tYWtlX2N1cnJlbnQobV9l
dmFzR2wuZ2V0KCksIG1fZXZhc0dsU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNHbENvbnRleHQt
PmNvbnRleHQoKSk7CiAgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+ZGlz
cGxheShyZWN0LCBJbnRQb2ludChzZC0+dmlldy54LCBzZC0+dmlldy55KSk7CiAjZW5kaWYKIApA
QCAtNDU4LDE1ICs0NTcsMTUgQEAgYm9vbCBFd2tWaWV3SW1wbDo6Y3JlYXRlR0xTdXJmYWNlKGNv
bnN0IEludFNpemUmIHZpZXdTaXplKQogICAgIH07CiAKICAgICBBU1NFUlQoIW1fZXZhc0dsU3Vy
ZmFjZSk7Ci0gICAgbV9ldmFzR2xTdXJmYWNlID0gZXZhc19nbF9zdXJmYWNlX2NyZWF0ZShtX2V2
YXNHbCwgJmV2YXNHbENvbmZpZywgdmlld1NpemUud2lkdGgoKSwgdmlld1NpemUuaGVpZ2h0KCkp
OworICAgIG1fZXZhc0dsU3VyZmFjZSA9IEV2YXNHTFN1cmZhY2U6OmNyZWF0ZShtX2V2YXNHbC5n
ZXQoKSwgJmV2YXNHbENvbmZpZywgdmlld1NpemUpOwogICAgIGlmICghbV9ldmFzR2xTdXJmYWNl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2
ZVN1cmZhY2U7Ci0gICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9nZXQobV9ldmFzR2wsIG1fZXZh
c0dsU3VyZmFjZSwgJm5hdGl2ZVN1cmZhY2UpOworICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2Vf
Z2V0KG1fZXZhc0dsLmdldCgpLCBtX2V2YXNHbFN1cmZhY2UtPnN1cmZhY2UoKSwgJm5hdGl2ZVN1
cmZhY2UpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX3NldChzZC0+aW1h
Z2UsICZuYXRpdmVTdXJmYWNlKTsKIAotICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0ds
LCBtX2V2YXNHbFN1cmZhY2UsIG1fZXZhc0dsQ29udGV4dCk7CisgICAgZXZhc19nbF9tYWtlX2N1
cnJlbnQobV9ldmFzR2wuZ2V0KCksIG1fZXZhc0dsU3VyZmFjZS0+c3VyZmFjZSgpLCBtX2V2YXNH
bENvbnRleHQtPmNvbnRleHQoKSk7CiAKICAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2Fw
aV9nZXQoZXZhc0dsKCkpOwogICAgIGdsLT5nbFZpZXdwb3J0KDAsIDAsIHZpZXdTaXplLndpZHRo
KCkgKyBzZC0+dmlldy54LCB2aWV3U2l6ZS5oZWlnaHQoKSArIHNkLT52aWV3LnkpOwpAQCAtNDgy
LDIzICs0ODEsMjEgQEAgYm9vbCBFd2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpCiAgICAgfQogCiAgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0
KG1fdmlldyk7Ci0gICAgbV9ldmFzR2wgPSBldmFzX2dsX25ldyhldmFzKTsKKyAgICBtX2V2YXNH
bCA9IGFkb3B0UHRyKGV2YXNfZ2xfbmV3KGV2YXMpKTsKICAgICBpZiAoIW1fZXZhc0dsKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2V2YXNHbENvbnRleHQgPSBldmFzX2dsX2NvbnRl
eHRfY3JlYXRlKG1fZXZhc0dsLCAwKTsKKyAgICBtX2V2YXNHbENvbnRleHQgPSBFdmFzR0xDb250
ZXh0OjpjcmVhdGUobV9ldmFzR2wuZ2V0KCkpOwogICAgIGlmICghbV9ldmFzR2xDb250ZXh0KSB7
Ci0gICAgICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHbCk7Ci0gICAgICAgIG1fZXZhc0dsID0gMDsK
KyAgICAgICAgRUlOQV9MT0dfRE9NX1dBUk4oX2V3a19sb2dfZG9tLCAiRmFpbGVkIHRvIGNyZWF0
ZSBHbENvbnRleHQuIik7CisgICAgICAgIG1fZXZhc0dsLmNsZWFyKCk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoIWNyZWF0ZUdMU3VyZmFjZShzaXplKCkpKSB7Ci0g
ICAgICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95KG1fZXZhc0dsLCBtX2V2YXNHbENvbnRleHQp
OwotICAgICAgICBtX2V2YXNHbENvbnRleHQgPSAwOwotCi0gICAgICAgIGV2YXNfZ2xfZnJlZSht
X2V2YXNHbCk7Ci0gICAgICAgIG1fZXZhc0dsID0gMDsKKyAgICAgICAgRUlOQV9MT0dfRE9NX1dB
Uk4oX2V3a19sb2dfZG9tLCAiRmFpbGVkIHRvIGNyZWF0ZSBHbFN1cmZhY2UuIik7CisgICAgICAg
IG1fZXZhc0dsQ29udGV4dC5jbGVhcigpOworICAgICAgICBtX2V2YXNHbC5jbGVhcigpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC01MTAsMTggKzUwNyw5IEBAIGJvb2wgRXdr
Vmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1fZXZhc0dsLCBmYWxzZSk7CiAKLSAgICBpZiAobV9l
dmFzR2xTdXJmYWNlKSB7Ci0gICAgICAgIGV2YXNfZ2xfc3VyZmFjZV9kZXN0cm95KG1fZXZhc0ds
LCBtX2V2YXNHbFN1cmZhY2UpOwotICAgICAgICBtX2V2YXNHbFN1cmZhY2UgPSAwOwotICAgIH0K
LQotICAgIGlmIChtX2V2YXNHbENvbnRleHQpIHsKLSAgICAgICAgZXZhc19nbF9jb250ZXh0X2Rl
c3Ryb3kobV9ldmFzR2wsIG1fZXZhc0dsQ29udGV4dCk7Ci0gICAgICAgIG1fZXZhc0dsQ29udGV4
dCA9IDA7Ci0gICAgfQotCi0gICAgZXZhc19nbF9mcmVlKG1fZXZhc0dsKTsKLSAgICBtX2V2YXNH
bCA9IDA7CisgICAgbV9ldmFzR2xTdXJmYWNlLmNsZWFyKCk7CisgICAgbV9ldmFzR2xDb250ZXh0
LmNsZWFyKCk7CisgICAgbV9ldmFzR2wuY2xlYXIoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXgg
YTc1MDZiZS4uM2YzN2Y0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5oCkBAIC0zOSw3ICszOSw4IEBACiAjZW5kaWYKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlIDxFdmFzX0dMLmg+CisjaW5jbHVkZSAiRXZh
c0dMQ29udGV4dC5oIgorI2luY2x1ZGUgIkV2YXNHTFN1cmZhY2UuaCIKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgxLDYgKzgyLDExIEBAIGNsYXNzIEV3a19TZXR0aW5nczsKIGNs
YXNzIEV3a19VcmxfUmVxdWVzdDsKIGNsYXNzIEV3a19VcmxfUmVzcG9uc2U7CiAKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0
IEV2YXNfR0xfQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IF9FdmFzX0dMX1N1cmZhY2UgRXZhc19H
TF9TdXJmYWNlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0RhdGEg
RXdrX1ZpZXdfU21hcnRfRGF0YTsKIAogY2xhc3MgRXdrVmlld0ltcGwgewpAQCAtMTcxLDEwICsx
NzcsMTAgQEAgcHVibGljOgogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5n
ZXQoKTsgfQogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEV2
YXNfR0wqIGV2YXNHbCgpIHsgcmV0dXJuIG1fZXZhc0dsOyB9Ci0gICAgRXZhc19HTF9Db250ZXh0
KiBldmFzR2xDb250ZXh0KCkgeyByZXR1cm4gbV9ldmFzR2xDb250ZXh0OyB9Ci0gICAgRXZhc19H
TF9TdXJmYWNlKiBldmFzR2xTdXJmYWNlKCkgeyByZXR1cm4gbV9ldmFzR2xTdXJmYWNlOyB9Ci0g
ICAgdm9pZCByZXNldEV2YXNHbFN1cmZhY2UoKSB7IG1fZXZhc0dsU3VyZmFjZSA9IDA7IH0KKyAg
ICBFdmFzX0dMKiBldmFzR2woKSB7IHJldHVybiBtX2V2YXNHbC5nZXQoKTsgfQorICAgIEV2YXNf
R0xfQ29udGV4dCogZXZhc0dsQ29udGV4dCgpIHsgcmV0dXJuIG1fZXZhc0dsQ29udGV4dCA/IG1f
ZXZhc0dsQ29udGV4dC0+Y29udGV4dCgpIDogMDsgfQorICAgIEV2YXNfR0xfU3VyZmFjZSogZXZh
c0dsU3VyZmFjZSgpIHsgcmV0dXJuIG1fZXZhc0dsU3VyZmFjZSA/IG1fZXZhc0dsU3VyZmFjZS0+
c3VyZmFjZSgpIDogMDsgfQorICAgIHZvaWQgcmVzZXRFdmFzR2xTdXJmYWNlKCkgeyBtX2V2YXNH
bFN1cmZhY2UuY2xlYXIoKTsgfQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0
b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGludm9rZSkKQEAgLTIwMCw2ICsyMDYsMTEgQEAgcHJpdmF0
ZToKICAgICAvLyBOb3RlLCBpbml0aWFsaXphdGlvbiBtYXR0ZXJzLgogICAgIEV2YXNfT2JqZWN0
KiBtX3ZpZXc7CiAgICAgUmVmUHRyPEV3a19Db250ZXh0PiBtX2NvbnRleHQ7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNHbDsKKyAg
ICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2YXNHbENvbnRleHQ7CisgICAgT3du
UHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR2xTdXJmYWNlOworI2VuZGlmCiAgICAg
T3duUHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8
V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OwogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsPiBtX3BhZ2VMb2FkQ2xpZW50OwpAQCAtMjEzLDExICsyMjQsNiBAQCBw
cml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiAjZW5kaWYK
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgRXZhc19HTCogbV9ldmFzR2w7
Ci0gICAgRXZhc19HTF9Db250ZXh0KiBtX2V2YXNHbENvbnRleHQ7Ci0gICAgRXZhc19HTF9TdXJm
YWNlKiBtX2V2YXNHbFN1cmZhY2U7Ci0jZW5kaWYKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBt
X3NldHRpbmdzOwogICAgIGNvbnN0IGNoYXIqIG1fY3Vyc29yR3JvdXA7IC8vIFRoaXMgaXMgYW4g
YWRkcmVzcywgZG8gbm90IGZyZWUgaXQgb3IgdXNlIFdLRWluYVNoYXJlZFN0cmluZy4KICAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV9mYXZpY29uVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDdhNzQyMjMuLjk5N2U3YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTQzOSw3ICs0
MzksNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChu
ZWVkc05ld1N1cmZhY2UpIHsKLSAgICAgICAgZXZhc19nbF9zdXJmYWNlX2Rlc3Ryb3koaW1wbC0+
ZXZhc0dsKCksIGltcGwtPmV2YXNHbFN1cmZhY2UoKSk7CiAgICAgICAgIGltcGwtPnJlc2V0RXZh
c0dsU3VyZmFjZSgpOwogICAgICAgICBpbXBsLT5jcmVhdGVHTFN1cmZhY2UoSW50U2l6ZSh3aWR0
aCwgaGVpZ2h0KSk7CiAgICAgICAgIGltcGwtPnJlZHJhd1JlZ2lvbihJbnRSZWN0KEludFBvaW50
KCksIEludFNpemUod2lkdGgsIGhlaWdodCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171633</attachid>
            <date>2012-10-31 06:24:36 -0700</date>
            <delta_ts>2012-10-31 06:59:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100745_ac_smartptrs.patch</filename>
            <type>text/plain</type>
            <size>22441</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmE1ODA0Zi4uYjQ1ZDE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0zMCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl1bQUNdIFVzZSBzbWFydCBwb2ludGVycyBmb3IgRXZhc19HTCB0eXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBPd25QdHIg
dXNhYmxlIHdpdGggRXZhc19HTCB0eXBlIHRvIGF2b2lkIGhhbmRsaW5nCisgICAgICAgIHJhdyBw
b2ludGVycyBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIHd0Zi9Pd25QdHJDb21tb24uaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL2VmbC9Pd25QdHJFZmwuY3BwOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdURjo6ZGVsZXRlT3duZWRQdHIpOgorCiAyMDEyLTEwLTI5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgV2ViS2l0
IGFzIEMrKzExIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29tbW9u
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAppbmRleCBmZTI1MDBlLi5jNTY0MDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Pd25QdHJDb21tb24uaApAQCAtNDYsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBf
RWNvcmVfVGltZXIgRWNvcmVfVGltZXI7CiB0eXBlZGVmIHN0cnVjdCBfRWluYV9IYXNoIEVpbmFf
SGFzaDsKIHR5cGVkZWYgc3RydWN0IF9FaW5hX01vZHVsZSBFaW5hX01vZHVsZTsKIHR5cGVkZWYg
c3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOworI2VuZGlmCiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdURiB7CkBAIC03NSw2ICs3OCw5IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfSGFzaCopOwog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfTW9kdWxlKik7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoRXZhc19PYmplY3Qq
KTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoRXZhc19HTCopOworI2VuZGlmCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZs
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCmluZGV4IGI3NjQyMzkuLjU5
YzhhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2lu
Y2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaW5jbHVkZSA8RXZhc19HTC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
VEYgewogCiB2b2lkIGRlbGV0ZU93bmVkUHRyKEVjb3JlX0V2YXMqIHB0cikKQEAgLTcxLDQgKzc1
LDEyIEBAIHZvaWQgZGVsZXRlT3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqIHB0cikKICAgICAg
ICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKHB0cik7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCit2b2lkIGRlbGV0ZU93bmVkUHRyKEV2YXNfR0wqIHB0cikKK3sKKyAgICBp
ZiAocHRyKQorICAgICAgICBldmFzX2dsX2ZyZWUocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNTI1N2MwNC4uNzJkOTMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisy
MDEyLTEwLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXVtBQ10gVXNlIHNtYXJ0IHBvaW50ZXJzIGZvciBFdmFzX0dM
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDA3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIHJhdyBwb2ludGVycyB0byBFdmFzX0dMLCBFdmFzX0dMX0NvbnRleHQgYW5kCisgICAg
ICAgIEV2YXNfR0xfU3VyZmFjZSBieSBzbWFydCBwb2ludGVycyBpbiBFd2tWaWV3SW1wbC4KKwor
ICAgICAgICBDKysgd3JhcHBlcnMgd2VyZSBhZGRlZCBmb3IgRXZhc19HTF9Db250ZXh0IGFuZAor
ICAgICAgICBFdmFzX0dMX1N1cmZhY2UgaW4gb3JkZXIgdG8gdXNlIE93blB0ci4gVGhpcyBpcyBu
ZWVkZWQKKyAgICAgICAgYmVjYXVzZSB0aGVpciBkZXN0cm95IGZ1bmN0aW9ucyBuZWVkIHRoZSBF
dmFzX0dMLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6RXZhc0dMQ29udGV4dDo6RXZhc0dMQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OkV2YXNHTENvbnRleHQ6On5FdmFzR0xDb250ZXh0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEV2YXNHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0Ojpjb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xTdXJmYWNlOjpFdmFzR0xTdXJm
YWNlKToKKyAgICAgICAgKFdlYktpdDo6RXZhc0dMU3VyZmFjZTo6fkV2YXNHTFN1cmZhY2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoRXZhc0dMU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6
OkV2YXNHTFN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV2YXNHTFN1cmZhY2U6
OnN1cmZhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6ZGlzcGxheVRpbWVyRmlyZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3Vy
ZmFjZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OmV2YXNHTCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXZhc0dMQ29u
dGV4dCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXZhc0dMU3VyZmFjZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6cmVzZXRFdmFzR0xTdXJmYWNlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKwogMjAxMi0xMC0zMSAgS3l1bmdUYWUgS2ltICA8a3Rm
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXVtFRkxdIEFzc2VydCBjaGVjayBuZWVk
IHRvIGJlIGNoYW5nZWQgaW4gSW5wdXRNZXRob2RDb250ZXh0RWZsOjpJbnB1dE1ldGhvZENvbnRl
eHRFZmwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNlZGVkNy4uNzNmYTkwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTQyLDYgKzQyLDggQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFn
ZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKyAgICBVSVBy
b2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvZWZsL0V2
YXNHTFN1cmZhY2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2JhY2tfZm9yd2FyZF9s
aXN0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2ZvcndhcmRfbGlzdF9pdGVt
LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb2xvcl9waWNrZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YTdlNmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcApAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRXZhc0dMQ29udGV4dC5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRXZhc0dMQ29udGV4dDo6RXZhc0dMQ29udGV4
dChFdmFzX0dMKiBldmFzR0wsIEV2YXNfR0xfQ29udGV4dCogcGFzc0NvbnRleHQpCisgICAgOiBt
X2V2YXNHTChldmFzR0wpCisgICAgLCBtX2NvbnRleHQocGFzc0NvbnRleHQpCit7CisgICAgQVNT
RVJUKGV2YXNHTCk7CisgICAgQVNTRVJUKHBhc3NDb250ZXh0KTsKK30KKworRXZhc0dMQ29udGV4
dDo6fkV2YXNHTENvbnRleHQoKQoreworICAgIGV2YXNfZ2xfY29udGV4dF9kZXN0cm95KG1fZXZh
c0dMLCBtX2NvbnRleHQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45ODk5YTgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRXZhc0dMQ29udGV4dF9oCisjZGVmaW5lIEV2YXNHTENvbnRleHRf
aAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgPEV2YXNfR0wu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgRXZhc0dMQ29udGV4dCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXZh
c0dMQ29udGV4dD4gY3JlYXRlKEV2YXNfR0wqIGV2YXNHTCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChldmFzR0wpOworICAgICAgICBFdmFzX0dMX0NvbnRleHQqIGNvbnRleHQgPSBldmFzX2dsX2Nv
bnRleHRfY3JlYXRlKGV2YXNHTCwgMCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIE93bmVyc2hpcCBvZiBjb250ZXh0IGlz
IHBhc3NlZCB0byBFdmFzR0xDb250ZXh0LgorICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2
YXNHTENvbnRleHQoZXZhc0dMLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5FdmFzR0xDb250ZXh0
KCk7CisKKyAgICBpbmxpbmUgRXZhc19HTF9Db250ZXh0KiBjb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0OyB9CisKK3ByaXZhdGU6CisgICAgRXZhc0dMQ29udGV4dChFdmFzX0dMKiBl
dmFzR0wsIEV2YXNfR0xfQ29udGV4dCogcGFzc0NvbnRleHQpOworCisgICAgRXZhc19HTCogbV9l
dmFzR0w7CisgICAgRXZhc19HTF9Db250ZXh0KiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKwor
I2VuZGlmIC8vIEV2YXNHTENvbnRleHRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kNWQxMzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2YXNHTFN1cmZhY2Uu
aCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK0V2YXNHTFN1cmZhY2U6OkV2YXNHTFN1cmZhY2UoRXZhc19HTCogZXZhc0dMLCBFdmFz
X0dMX1N1cmZhY2UqIHBhc3NTdXJmYWNlKQorICAgIDogbV9ldmFzR0woZXZhc0dMKQorICAgICwg
bV9zdXJmYWNlKHBhc3NTdXJmYWNlKQoreworICAgIEFTU0VSVChldmFzR0wpOworICAgIEFTU0VS
VChwYXNzU3VyZmFjZSk7Cit9CisKK0V2YXNHTFN1cmZhY2U6On5FdmFzR0xTdXJmYWNlKCkKK3sK
KyAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShtX2V2YXNHTCwgbV9zdXJmYWNlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFz
R0xTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJm
YWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiMzA2MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZh
Y2UuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEV2YXNH
TFN1cmZhY2VfaAorI2RlZmluZSBFdmFzR0xTdXJmYWNlX2gKKworI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKyNpbmNsdWRlIDxFdmFzX0dMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEV2YXNHTFN1cmZhY2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPEV2YXNHTFN1cmZhY2U+IGNyZWF0ZShFdmFzX0dMKiBldmFzR0wsIEV2YXNfR0xfQ29uZmln
KiBjZmcsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCisgICAgeworICAgICAgICBBU1NF
UlQoZXZhc0dMKTsKKyAgICAgICAgQVNTRVJUKGNmZyk7CisgICAgICAgIEV2YXNfR0xfU3VyZmFj
ZSogc3VyZmFjZSA9IGV2YXNfZ2xfc3VyZmFjZV9jcmVhdGUoZXZhc0dMLCBjZmcsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgICAgIC8vIE93bmVyc2hpcCBvZiBzdXJmYWNlIGlzIHBh
c3NlZCB0byBFdmFzR0xTdXJmYWNlLgorICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV2YXNH
TFN1cmZhY2UoZXZhc0dMLCBzdXJmYWNlKSk7CisgICAgfQorICAgIH5FdmFzR0xTdXJmYWNlKCk7
CisKKyAgICBpbmxpbmUgRXZhc19HTF9TdXJmYWNlKiBzdXJmYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9zdXJmYWNlOyB9CisKK3ByaXZhdGU6CisgICAgRXZhc0dMU3VyZmFjZShFdmFzX0dMKiBldmFz
R0wsIEV2YXNfR0xfU3VyZmFjZSogcGFzc1N1cmZhY2UpOworCisgICAgRXZhc19HTCogbV9ldmFz
R0w7CisgICAgRXZhc19HTF9TdXJmYWNlKiBtX3N1cmZhY2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2Vu
ZGlmIC8vIEV2YXNHTFN1cmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDI3NzI0YTAuLmI2YTgwYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTU3LDYg
KzU3LDEwIEBACiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2VuZGlm
CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSA8RXZhc19HTC5o
PgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApAQCAtMTA1LDExICsxMDksNiBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZh
c19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhcwogICAg
ICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcihh
ZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihtX3BhZ2VQcm94eS5nZXQoKSwgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSkpCiAjZW5kaWYKLSNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgLCBtX2V2YXNHbCgwKQotICAgICwgbV9ldmFzR2xD
b250ZXh0KDApCi0gICAgLCBtX2V2YXNHbFN1cmZhY2UoMCkKLSNlbmRpZgogICAgICwgbV9zZXR0
aW5ncyhFd2tfU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fY3Vyc29yR3JvdXAoMCkK
ICAgICAsIG1fbW91c2VFdmVudHNFbmFibGVkKGZhbHNlKQpAQCAtMjU1LDcgKzI1NCw3IEBAIHZv
aWQgRXdrVmlld0ltcGw6OmRpc3BsYXlUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJ
bXBsPiopCiAgICAgZm9yIChWZWN0b3I8SW50UmVjdD46Oml0ZXJhdG9yIGl0ID0gcmVjdHMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEludFJlY3QgcmVjdCA9ICppdDsKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50
KG1fZXZhc0dsLCBtX2V2YXNHbFN1cmZhY2UsIG1fZXZhc0dsQ29udGV4dCk7CisgICAgICAgIGV2
YXNfZ2xfbWFrZV9jdXJyZW50KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZh
Y2UoKSwgbV9ldmFzR0xDb250ZXh0LT5jb250ZXh0KCkpOwogICAgICAgICBtX3BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQtPmRpc3BsYXkocmVjdCwgSW50UG9pbnQoc2QtPnZpZXcueCwgc2Qt
PnZpZXcueSkpOwogI2VuZGlmCiAKQEAgLTQ1Miw3ICs0NTEsNyBAQCBib29sIEV3a1ZpZXdJbXBs
OjpjcmVhdGVHTFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CiAgICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKIAotICAgIEV2YXNfR0xfQ29uZmlnIGV2
YXNHbENvbmZpZyA9IHsKKyAgICBFdmFzX0dMX0NvbmZpZyBldmFzR0xDb25maWcgPSB7CiAgICAg
ICAgIEVWQVNfR0xfUkdCQV84ODg4LAogICAgICAgICBFVkFTX0dMX0RFUFRIX0JJVF84LAogICAg
ICAgICBFVkFTX0dMX1NURU5DSUxfTk9ORSwKQEAgLTQ2MCwxOCArNDU5LDE4IEBAIGJvb2wgRXdr
Vmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFjZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKICAgICAg
ICAgRVZBU19HTF9NVUxUSVNBTVBMRV9OT05FCiAgICAgfTsKIAotICAgIEFTU0VSVCghbV9ldmFz
R2xTdXJmYWNlKTsKLSAgICBtX2V2YXNHbFN1cmZhY2UgPSBldmFzX2dsX3N1cmZhY2VfY3JlYXRl
KG1fZXZhc0dsLCAmZXZhc0dsQ29uZmlnLCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWln
aHQoKSk7Ci0gICAgaWYgKCFtX2V2YXNHbFN1cmZhY2UpCisgICAgQVNTRVJUKCFtX2V2YXNHTFN1
cmZhY2UpOworICAgIG1fZXZhc0dMU3VyZmFjZSA9IEV2YXNHTFN1cmZhY2U6OmNyZWF0ZShtX2V2
YXNHTC5nZXQoKSwgJmV2YXNHTENvbmZpZywgdmlld1NpemUpOworICAgIGlmICghbV9ldmFzR0xT
dXJmYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFdmFzX05hdGl2ZV9TdXJmYWNl
IG5hdGl2ZVN1cmZhY2U7Ci0gICAgZXZhc19nbF9uYXRpdmVfc3VyZmFjZV9nZXQobV9ldmFzR2ws
IG1fZXZhc0dsU3VyZmFjZSwgJm5hdGl2ZVN1cmZhY2UpOworICAgIGV2YXNfZ2xfbmF0aXZlX3N1
cmZhY2VfZ2V0KG1fZXZhc0dMLmdldCgpLCBtX2V2YXNHTFN1cmZhY2UtPnN1cmZhY2UoKSwgJm5h
dGl2ZVN1cmZhY2UpOwogICAgIGV2YXNfb2JqZWN0X2ltYWdlX25hdGl2ZV9zdXJmYWNlX3NldChz
ZC0+aW1hZ2UsICZuYXRpdmVTdXJmYWNlKTsKIAotICAgIGV2YXNfZ2xfbWFrZV9jdXJyZW50KG1f
ZXZhc0dsLCBtX2V2YXNHbFN1cmZhY2UsIG1fZXZhc0dsQ29udGV4dCk7CisgICAgZXZhc19nbF9t
YWtlX2N1cnJlbnQobV9ldmFzR0wuZ2V0KCksIG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpLCBt
X2V2YXNHTENvbnRleHQtPmNvbnRleHQoKSk7CiAKLSAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFz
X2dsX2FwaV9nZXQoZXZhc0dsKCkpOworICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBp
X2dldChldmFzR0woKSk7CiAgICAgZ2wtPmdsVmlld3BvcnQoMCwgMCwgdmlld1NpemUud2lkdGgo
KSArIHNkLT52aWV3LngsIHZpZXdTaXplLmhlaWdodCgpICsgc2QtPnZpZXcueSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQ3OSwyOSArNDc4LDI3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmNyZWF0
ZUdMU3VyZmFjZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKIAogYm9vbCBFd2tWaWV3SW1wbDo6
ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgaWYgKG1fZXZhc0dsKSB7
CisgICAgaWYgKG1fZXZhc0dMKSB7CiAgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9n
X2RvbSwgIkFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIG1vZGUgYWxyZWFkeSBlbnRlcmVkLiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgRXZhcyogZXZhcyA9IGV2YXNfb2Jq
ZWN0X2V2YXNfZ2V0KG1fdmlldyk7Ci0gICAgbV9ldmFzR2wgPSBldmFzX2dsX25ldyhldmFzKTsK
LSAgICBpZiAoIW1fZXZhc0dsKQorICAgIG1fZXZhc0dMID0gYWRvcHRQdHIoZXZhc19nbF9uZXco
ZXZhcykpOworICAgIGlmICghbV9ldmFzR0wpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG1fZXZhc0dsQ29udGV4dCA9IGV2YXNfZ2xfY29udGV4dF9jcmVhdGUobV9ldmFzR2wsIDApOwot
ICAgIGlmICghbV9ldmFzR2xDb250ZXh0KSB7Ci0gICAgICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNH
bCk7Ci0gICAgICAgIG1fZXZhc0dsID0gMDsKKyAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xD
b250ZXh0OjpjcmVhdGUobV9ldmFzR0wuZ2V0KCkpOworICAgIGlmICghbV9ldmFzR0xDb250ZXh0
KSB7CisgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgIkZhaWxlZCB0byBj
cmVhdGUgR0xDb250ZXh0LiIpOworICAgICAgICBtX2V2YXNHTC5jbGVhcigpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFjcmVhdGVHTFN1cmZhY2Uoc2l6ZSgpKSkg
ewotICAgICAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveShtX2V2YXNHbCwgbV9ldmFzR2xDb250
ZXh0KTsKLSAgICAgICAgbV9ldmFzR2xDb250ZXh0ID0gMDsKLQotICAgICAgICBldmFzX2dsX2Zy
ZWUobV9ldmFzR2wpOwotICAgICAgICBtX2V2YXNHbCA9IDA7CisgICAgICAgIEVJTkFfTE9HX0RP
TV9XQVJOKF9ld2tfbG9nX2RvbSwgIkZhaWxlZCB0byBjcmVhdGUgR0xTdXJmYWNlLiIpOworICAg
ICAgICBtX2V2YXNHTENvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgbV9ldmFzR0wuY2xlYXIoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTExLDIwICs1MDgsMTEgQEAgYm9v
bCBFd2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAKIGJvb2wg
RXdrVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKG1fZXZhc0dsLCBmYWxzZSk7Ci0KLSAgICBpZiAo
bV9ldmFzR2xTdXJmYWNlKSB7Ci0gICAgICAgIGV2YXNfZ2xfc3VyZmFjZV9kZXN0cm95KG1fZXZh
c0dsLCBtX2V2YXNHbFN1cmZhY2UpOwotICAgICAgICBtX2V2YXNHbFN1cmZhY2UgPSAwOwotICAg
IH0KLQotICAgIGlmIChtX2V2YXNHbENvbnRleHQpIHsKLSAgICAgICAgZXZhc19nbF9jb250ZXh0
X2Rlc3Ryb3kobV9ldmFzR2wsIG1fZXZhc0dsQ29udGV4dCk7Ci0gICAgICAgIG1fZXZhc0dsQ29u
dGV4dCA9IDA7Ci0gICAgfQorICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtX2V2
YXNHTCwgZmFsc2UpOwogCi0gICAgZXZhc19nbF9mcmVlKG1fZXZhc0dsKTsKLSAgICBtX2V2YXNH
bCA9IDA7CisgICAgbV9ldmFzR0xTdXJmYWNlLmNsZWFyKCk7CisgICAgbV9ldmFzR0xDb250ZXh0
LmNsZWFyKCk7CisgICAgbV9ldmFzR0wuY2xlYXIoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXgg
YTc1MDZiZS4uOTdlMmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5oCkBAIC0zOSw3ICszOSw4IEBACiAjZW5kaWYKIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKLSNpbmNsdWRlIDxFdmFzX0dMLmg+CisjaW5jbHVkZSAiRXZh
c0dMQ29udGV4dC5oIgorI2luY2x1ZGUgIkV2YXNHTFN1cmZhY2UuaCIKICNlbmRpZgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTgxLDYgKzgyLDExIEBAIGNsYXNzIEV3a19TZXR0aW5nczsKIGNs
YXNzIEV3a19VcmxfUmVxdWVzdDsKIGNsYXNzIEV3a19VcmxfUmVzcG9uc2U7CiAKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0
IEV2YXNfR0xfQ29udGV4dDsKK3R5cGVkZWYgc3RydWN0IF9FdmFzX0dMX1N1cmZhY2UgRXZhc19H
TF9TdXJmYWNlOworI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0RhdGEg
RXdrX1ZpZXdfU21hcnRfRGF0YTsKIAogY2xhc3MgRXdrVmlld0ltcGwgewpAQCAtMTcxLDEwICsx
NzcsMTAgQEAgcHVibGljOgogICAgIFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFn
ZVZpZXdwb3J0Q29udHJvbGxlcigpIHsgcmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5n
ZXQoKTsgfQogI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEV2
YXNfR0wqIGV2YXNHbCgpIHsgcmV0dXJuIG1fZXZhc0dsOyB9Ci0gICAgRXZhc19HTF9Db250ZXh0
KiBldmFzR2xDb250ZXh0KCkgeyByZXR1cm4gbV9ldmFzR2xDb250ZXh0OyB9Ci0gICAgRXZhc19H
TF9TdXJmYWNlKiBldmFzR2xTdXJmYWNlKCkgeyByZXR1cm4gbV9ldmFzR2xTdXJmYWNlOyB9Ci0g
ICAgdm9pZCByZXNldEV2YXNHbFN1cmZhY2UoKSB7IG1fZXZhc0dsU3VyZmFjZSA9IDA7IH0KKyAg
ICBFdmFzX0dMKiBldmFzR0woKSB7IHJldHVybiBtX2V2YXNHTC5nZXQoKTsgfQorICAgIEV2YXNf
R0xfQ29udGV4dCogZXZhc0dMQ29udGV4dCgpIHsgcmV0dXJuIG1fZXZhc0dMQ29udGV4dCA/IG1f
ZXZhc0dMQ29udGV4dC0+Y29udGV4dCgpIDogMDsgfQorICAgIEV2YXNfR0xfU3VyZmFjZSogZXZh
c0dMU3VyZmFjZSgpIHsgcmV0dXJuIG1fZXZhc0dMU3VyZmFjZSA/IG1fZXZhc0dMU3VyZmFjZS0+
c3VyZmFjZSgpIDogMDsgfQorICAgIHZvaWQgcmVzZXRFdmFzR0xTdXJmYWNlKCkgeyBtX2V2YXNH
TFN1cmZhY2UuY2xlYXIoKTsgfQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0
b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGludm9rZSkKQEAgLTIwMCw2ICsyMDYsMTEgQEAgcHJpdmF0
ZToKICAgICAvLyBOb3RlLCBpbml0aWFsaXphdGlvbiBtYXR0ZXJzLgogICAgIEV2YXNfT2JqZWN0
KiBtX3ZpZXc7CiAgICAgUmVmUHRyPEV3a19Db250ZXh0PiBtX2NvbnRleHQ7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNHTDsKKyAg
ICBPd25QdHI8V2ViS2l0OjpFdmFzR0xDb250ZXh0PiBtX2V2YXNHTENvbnRleHQ7CisgICAgT3du
UHRyPFdlYktpdDo6RXZhc0dMU3VyZmFjZT4gbV9ldmFzR0xTdXJmYWNlOworI2VuZGlmCiAgICAg
T3duUHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8
V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fcGFnZVByb3h5OwogICAgIE93blB0cjxXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsPiBtX3BhZ2VMb2FkQ2xpZW50OwpAQCAtMjEzLDExICsyMjQsNiBAQCBw
cml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw+IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiAjZW5kaWYK
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgRXZhc19HTCogbV9ldmFzR2w7
Ci0gICAgRXZhc19HTF9Db250ZXh0KiBtX2V2YXNHbENvbnRleHQ7Ci0gICAgRXZhc19HTF9TdXJm
YWNlKiBtX2V2YXNHbFN1cmZhY2U7Ci0jZW5kaWYKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBt
X3NldHRpbmdzOwogICAgIGNvbnN0IGNoYXIqIG1fY3Vyc29yR3JvdXA7IC8vIFRoaXMgaXMgYW4g
YWRkcmVzcywgZG8gbm90IGZyZWUgaXQgb3IgdXNlIFdLRWluYVNoYXJlZFN0cmluZy4KICAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV9mYXZpY29uVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGQ3NTQ1MmUuLjViOGUwMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTQyMyw3ICs0
MjMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogICAgICAgICBpbXBsLT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCkt
PnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRpZgogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICAgICAgbmVlZHNOZXdTdXJmYWNlID0g
aW1wbC0+ZXZhc0dsU3VyZmFjZSgpOworICAgICAgICBuZWVkc05ld1N1cmZhY2UgPSBpbXBsLT5l
dmFzR0xTdXJmYWNlKCk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoaW1wbC0+cGFnZSgpLT5kcmF3
aW5nQXJlYSgpKQpAQCAtNDQzLDggKzQ0Myw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9jYWxjdWxhdGUoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgaWYgKG5lZWRzTmV3U3VyZmFjZSkgewotICAgICAgICBldmFzX2ds
X3N1cmZhY2VfZGVzdHJveShpbXBsLT5ldmFzR2woKSwgaW1wbC0+ZXZhc0dsU3VyZmFjZSgpKTsK
LSAgICAgICAgaW1wbC0+cmVzZXRFdmFzR2xTdXJmYWNlKCk7CisgICAgICAgIGltcGwtPnJlc2V0
RXZhc0dMU3VyZmFjZSgpOwogICAgICAgICBpbXBsLT5jcmVhdGVHTFN1cmZhY2UoSW50U2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAgIGltcGwtPnJlZHJhd1JlZ2lvbihJbnRSZWN0KEludFBv
aW50KCksIEludFNpemUod2lkdGgsIGhlaWdodCkpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171645</attachid>
            <date>2012-10-31 06:59:45 -0700</date>
            <delta_ts>2012-10-31 18:39:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100745_ac_smartptrs.patch</filename>
            <type>text/plain</type>
            <size>22360</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYmE1ODA0Zi4uYjQ1ZDE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMC0zMCAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl1bQUNdIFVzZSBzbWFydCBwb2ludGVycyBmb3IgRXZhc19HTCB0eXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzQ1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBPd25QdHIg
dXNhYmxlIHdpdGggRXZhc19HTCB0eXBlIHRvIGF2b2lkIGhhbmRsaW5nCisgICAgICAgIHJhdyBw
b2ludGVycyBpbiBFRkwgcG9ydC4KKworICAgICAgICAqIHd0Zi9Pd25QdHJDb21tb24uaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgICogd3RmL2VmbC9Pd25QdHJFZmwuY3BwOgorICAgICAgICAo
V1RGKToKKyAgICAgICAgKFdURjo6ZGVsZXRlT3duZWRQdHIpOgorCiAyMDEyLTEwLTI5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgV2ViS2l0
IGFzIEMrKzExIG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29tbW9u
LmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAppbmRleCBmZTI1MDBlLi5jNTY0MDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Pd25QdHJDb21tb24uaApAQCAtNDYsNiArNDYsOSBAQCB0eXBlZGVmIHN0cnVjdCBf
RWNvcmVfVGltZXIgRWNvcmVfVGltZXI7CiB0eXBlZGVmIHN0cnVjdCBfRWluYV9IYXNoIEVpbmFf
SGFzaDsKIHR5cGVkZWYgc3RydWN0IF9FaW5hX01vZHVsZSBFaW5hX01vZHVsZTsKIHR5cGVkZWYg
c3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCBFdmFzX0dMOworI2VuZGlmCiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdURiB7CkBAIC03NSw2ICs3OCw5IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfSGFzaCopOwog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZU93bmVkUHRyKEVpbmFfTW9kdWxlKik7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoRXZhc19PYmplY3Qq
KTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZGVsZXRlT3duZWRQdHIoRXZhc19HTCopOworI2VuZGlmCiAjZW5kaWYKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZs
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCmluZGV4IGI3NjQyMzkuLjU5
YzhhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwuY3BwCkBAIC0zMyw2ICszMywxMCBAQAogI2lu
Y2x1ZGUgPEVpbmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjaW5jbHVkZSA8RXZhc19HTC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
VEYgewogCiB2b2lkIGRlbGV0ZU93bmVkUHRyKEVjb3JlX0V2YXMqIHB0cikKQEAgLTcxLDQgKzc1
LDEyIEBAIHZvaWQgZGVsZXRlT3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqIHB0cikKICAgICAg
ICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKHB0cik7CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCit2b2lkIGRlbGV0ZU93bmVkUHRyKEV2YXNfR0wqIHB0cikKK3sKKyAgICBp
ZiAocHRyKQorICAgICAgICBldmFzX2dsX2ZyZWUocHRyKTsKK30KKyNlbmRpZgorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNmFkMGMzYi4uNGVhNjRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisy
MDEyLTEwLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKKyAgICAgICAgW0VGTF1bV0syXVtBQ10gVXNlIHNtYXJ0IHBvaW50ZXJzIGZvciBFdmFzX0dM
IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDA3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXBsYWNlIHJhdyBwb2ludGVycyB0byBFdmFzX0dMLCBFdmFzX0dMX0NvbnRleHQgYW5kCisgICAg
ICAgIEV2YXNfR0xfU3VyZmFjZSBieSBzbWFydCBwb2ludGVycyBpbiBFd2tWaWV3SW1wbC4KKwor
ICAgICAgICBDKysgd3JhcHBlcnMgd2VyZSBhZGRlZCBmb3IgRXZhc19HTF9Db250ZXh0IGFuZAor
ICAgICAgICBFdmFzX0dMX1N1cmZhY2UgaW4gb3JkZXIgdG8gdXNlIE93blB0ci4gVGhpcyBpcyBu
ZWVkZWQKKyAgICAgICAgYmVjYXVzZSB0aGVpciBkZXN0cm95IGZ1bmN0aW9ucyBuZWVkIHRoZSBF
dmFzX0dMLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6RXZhc0dMQ29udGV4dDo6RXZhc0dMQ29udGV4dCk6CisgICAgICAg
IChXZWJLaXQ6OkV2YXNHTENvbnRleHQ6On5FdmFzR0xDb250ZXh0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEV2YXNHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xDb250ZXh0Ojpjb250ZXh0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xTdXJmYWNlLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpFdmFzR0xTdXJmYWNlOjpFdmFzR0xTdXJm
YWNlKToKKyAgICAgICAgKFdlYktpdDo6RXZhc0dMU3VyZmFjZTo6fkV2YXNHTFN1cmZhY2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoRXZhc0dMU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6
OkV2YXNHTFN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkV2YXNHTFN1cmZhY2U6
OnN1cmZhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6ZGlzcGxheVRpbWVyRmlyZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3Vy
ZmFjZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAg
ICAoRXdrVmlld0ltcGw6OmV2YXNHTCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXZhc0dMQ29u
dGV4dCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXZhc0dMU3VyZmFjZSk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6cmVzZXRFdmFzR0xTdXJmYWNlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdr
X3ZpZXdfc21hcnRfY2FsY3VsYXRlKToKKwogMjAxMi0xMC0zMSAgU3VkYXJzYW5hIE5hZ2luZW5p
ICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBTa2lwIEVX
SzJVbml0VGVzdEJhc2UuZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0
IEFQSSB0ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZjZWRlZDcuLjczZmE5MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC00Miw2ICs0Miw4IEBAIExJU1QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RN
YW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCisgICAg
VUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9FdmFzR0xTdXJmYWNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19iYWNrX2Zvcndh
cmRfbGlzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfYmFja19mb3J3YXJkX2xpc3Rf
aXRlbS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29sb3JfcGlja2VyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGE3ZTZhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dMQ29udGV4dC5jcHAK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkV2YXNHTENvbnRleHQuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0V2YXNHTENvbnRleHQ6OkV2YXNHTENv
bnRleHQoRXZhc19HTCogZXZhc0dMLCBFdmFzX0dMX0NvbnRleHQqIHBhc3NDb250ZXh0KQorICAg
IDogbV9ldmFzR0woZXZhc0dMKQorICAgICwgbV9jb250ZXh0KHBhc3NDb250ZXh0KQoreworICAg
IEFTU0VSVChldmFzR0wpOworICAgIEFTU0VSVChwYXNzQ29udGV4dCk7Cit9CisKK0V2YXNHTENv
bnRleHQ6On5FdmFzR0xDb250ZXh0KCkKK3sKKyAgICBldmFzX2dsX2NvbnRleHRfZGVzdHJveSht
X2V2YXNHTCwgbV9jb250ZXh0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xDb250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOTg5OWE4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V2YXNHTENvbnRleHQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEV2YXNHTENvbnRleHRfaAorI2RlZmluZSBFdmFzR0xDb250
ZXh0X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlIDxFdmFz
X0dMLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEV2YXNHTENvbnRleHQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEV2YXNHTENvbnRleHQ+IGNyZWF0ZShFdmFzX0dMKiBldmFzR0wpCisgICAgeworICAgICAgICBB
U1NFUlQoZXZhc0dMKTsKKyAgICAgICAgRXZhc19HTF9Db250ZXh0KiBjb250ZXh0ID0gZXZhc19n
bF9jb250ZXh0X2NyZWF0ZShldmFzR0wsIDApOworICAgICAgICBpZiAoIWNvbnRleHQpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgb2YgY29udGV4
dCBpcyBwYXNzZWQgdG8gRXZhc0dMQ29udGV4dC4KKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBFdmFzR0xDb250ZXh0KGV2YXNHTCwgY29udGV4dCkpOworICAgIH0KKyAgICB+RXZhc0dMQ29u
dGV4dCgpOworCisgICAgaW5saW5lIEV2YXNfR0xfQ29udGV4dCogY29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAgIEV2YXNHTENvbnRleHQoRXZhc19H
TCogZXZhc0dMLCBFdmFzX0dMX0NvbnRleHQqIHBhc3NDb250ZXh0KTsKKworICAgIEV2YXNfR0wq
IG1fZXZhc0dMOworICAgIEV2YXNfR0xfQ29udGV4dCogbV9jb250ZXh0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CisKKyNlbmRpZiAvLyBFdmFzR0xDb250ZXh0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXZhc0dMU3VyZmFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDVkMTM4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V2YXNHTFN1cmZhY2UuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJFdmFzR0xTdXJm
YWNlLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitFdmFzR0xTdXJmYWNlOjpFdmFzR0xTdXJmYWNlKEV2YXNfR0wqIGV2YXNHTCwg
RXZhc19HTF9TdXJmYWNlKiBwYXNzU3VyZmFjZSkKKyAgICA6IG1fZXZhc0dMKGV2YXNHTCkKKyAg
ICAsIG1fc3VyZmFjZShwYXNzU3VyZmFjZSkKK3sKKyAgICBBU1NFUlQoZXZhc0dMKTsKKyAgICBB
U1NFUlQocGFzc1N1cmZhY2UpOworfQorCitFdmFzR0xTdXJmYWNlOjp+RXZhc0dMU3VyZmFjZSgp
Cit7CisgICAgZXZhc19nbF9zdXJmYWNlX2Rlc3Ryb3kobV9ldmFzR0wsIG1fc3VyZmFjZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXZhc0dMU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXZhc0dM
U3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYjMwNjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FdmFzR0xT
dXJmYWNlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBF
dmFzR0xTdXJmYWNlX2gKKyNkZWZpbmUgRXZhc0dMU3VyZmFjZV9oCisKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSA8RXZhc19HTC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBFdmFzR0xTdXJmYWNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxFdmFzR0xTdXJmYWNlPiBjcmVhdGUoRXZhc19HTCogZXZhc0dMLCBFdmFzX0dMX0Nv
bmZpZyogY2ZnLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGV2YXNHTCk7CisgICAgICAgIEFTU0VSVChjZmcpOworICAgICAgICBFdmFzX0dMX1N1
cmZhY2UqIHN1cmZhY2UgPSBldmFzX2dsX3N1cmZhY2VfY3JlYXRlKGV2YXNHTCwgY2ZnLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBpZiAoIXN1cmZhY2UpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAvLyBPd25lcnNoaXAgb2Ygc3VyZmFjZSBp
cyBwYXNzZWQgdG8gRXZhc0dMU3VyZmFjZS4KKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBF
dmFzR0xTdXJmYWNlKGV2YXNHTCwgc3VyZmFjZSkpOworICAgIH0KKyAgICB+RXZhc0dMU3VyZmFj
ZSgpOworCisgICAgaW5saW5lIEV2YXNfR0xfU3VyZmFjZSogc3VyZmFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3VyZmFjZTsgfQorCitwcml2YXRlOgorICAgIEV2YXNHTFN1cmZhY2UoRXZhc19HTCog
ZXZhc0dMLCBFdmFzX0dMX1N1cmZhY2UqIHBhc3NTdXJmYWNlKTsKKworICAgIEV2YXNfR0wqIG1f
ZXZhc0dMOworICAgIEV2YXNfR0xfU3VyZmFjZSogbV9zdXJmYWNlOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBFdmFzR0xTdXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCAyNzcyNGEwLi4xOTYxMDg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC01
Nyw2ICs1NywxMCBAQAogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNl
bmRpZgogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgPEV2YXNf
R0wuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTEwNSwxMSArMTA5LDYgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBs
KEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXMK
ICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudChQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIoYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV9wYWdlUHJveHkuZ2V0KCks
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5nZXQoKSkpKQogI2VuZGlmCi0jaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICwgbV9ldmFzR2woMCkKLSAgICAsIG1fZXZh
c0dsQ29udGV4dCgwKQotICAgICwgbV9ldmFzR2xTdXJmYWNlKDApCi0jZW5kaWYKICAgICAsIG1f
c2V0dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2N1cnNvckdyb3Vw
KDApCiAgICAgLCBtX21vdXNlRXZlbnRzRW5hYmxlZChmYWxzZSkKQEAgLTI1NSw3ICsyNTQsNyBA
QCB2b2lkIEV3a1ZpZXdJbXBsOjpkaXNwbGF5VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxFd2tW
aWV3SW1wbD4qKQogICAgIGZvciAoVmVjdG9yPEludFJlY3Q+OjppdGVyYXRvciBpdCA9IHJlY3Rz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBJbnRSZWN0IHJlY3QgPSAqaXQ7
CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgICAgICBldmFzX2dsX21ha2VfY3Vy
cmVudChtX2V2YXNHbCwgbV9ldmFzR2xTdXJmYWNlLCBtX2V2YXNHbENvbnRleHQpOworICAgICAg
ICBldmFzX2dsX21ha2VfY3VycmVudChldmFzR0woKSwgZXZhc0dMU3VyZmFjZSgpLCBldmFzR0xD
b250ZXh0KCkpOwogICAgICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPmRpc3Bs
YXkocmVjdCwgSW50UG9pbnQoc2QtPnZpZXcueCwgc2QtPnZpZXcueSkpOwogI2VuZGlmCiAKQEAg
LTQ1Miw3ICs0NTEsNyBAQCBib29sIEV3a1ZpZXdJbXBsOjpjcmVhdGVHTFN1cmZhY2UoY29uc3Qg
SW50U2l6ZSYgdmlld1NpemUpCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFy
dERhdGEoKTsKIAotICAgIEV2YXNfR0xfQ29uZmlnIGV2YXNHbENvbmZpZyA9IHsKKyAgICBFdmFz
X0dMX0NvbmZpZyBldmFzR0xDb25maWcgPSB7CiAgICAgICAgIEVWQVNfR0xfUkdCQV84ODg4LAog
ICAgICAgICBFVkFTX0dMX0RFUFRIX0JJVF84LAogICAgICAgICBFVkFTX0dMX1NURU5DSUxfTk9O
RSwKQEAgLTQ2MCwxOCArNDU5LDE4IEBAIGJvb2wgRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFj
ZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKICAgICAgICAgRVZBU19HTF9NVUxUSVNBTVBMRV9O
T05FCiAgICAgfTsKIAotICAgIEFTU0VSVCghbV9ldmFzR2xTdXJmYWNlKTsKLSAgICBtX2V2YXNH
bFN1cmZhY2UgPSBldmFzX2dsX3N1cmZhY2VfY3JlYXRlKG1fZXZhc0dsLCAmZXZhc0dsQ29uZmln
LCB2aWV3U2l6ZS53aWR0aCgpLCB2aWV3U2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFtX2V2YXNH
bFN1cmZhY2UpCisgICAgQVNTRVJUKCFtX2V2YXNHTFN1cmZhY2UpOworICAgIG1fZXZhc0dMU3Vy
ZmFjZSA9IEV2YXNHTFN1cmZhY2U6OmNyZWF0ZShldmFzR0woKSwgJmV2YXNHTENvbmZpZywgdmll
d1NpemUpOworICAgIGlmICghbV9ldmFzR0xTdXJmYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBFdmFzX05hdGl2ZV9TdXJmYWNlIG5hdGl2ZVN1cmZhY2U7Ci0gICAgZXZhc19nbF9u
YXRpdmVfc3VyZmFjZV9nZXQobV9ldmFzR2wsIG1fZXZhc0dsU3VyZmFjZSwgJm5hdGl2ZVN1cmZh
Y2UpOworICAgIGV2YXNfZ2xfbmF0aXZlX3N1cmZhY2VfZ2V0KGV2YXNHTCgpLCBldmFzR0xTdXJm
YWNlKCksICZuYXRpdmVTdXJmYWNlKTsKICAgICBldmFzX29iamVjdF9pbWFnZV9uYXRpdmVfc3Vy
ZmFjZV9zZXQoc2QtPmltYWdlLCAmbmF0aXZlU3VyZmFjZSk7CiAKLSAgICBldmFzX2dsX21ha2Vf
Y3VycmVudChtX2V2YXNHbCwgbV9ldmFzR2xTdXJmYWNlLCBtX2V2YXNHbENvbnRleHQpOworICAg
IGV2YXNfZ2xfbWFrZV9jdXJyZW50KGV2YXNHTCgpLCBldmFzR0xTdXJmYWNlKCksIGV2YXNHTENv
bnRleHQoKSk7CiAKLSAgICBFdmFzX0dMX0FQSSogZ2wgPSBldmFzX2dsX2FwaV9nZXQoZXZhc0ds
KCkpOworICAgIEV2YXNfR0xfQVBJKiBnbCA9IGV2YXNfZ2xfYXBpX2dldChldmFzR0woKSk7CiAg
ICAgZ2wtPmdsVmlld3BvcnQoMCwgMCwgdmlld1NpemUud2lkdGgoKSArIHNkLT52aWV3LngsIHZp
ZXdTaXplLmhlaWdodCgpICsgc2QtPnZpZXcueSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ3
OSwyOSArNDc4LDI3IEBAIGJvb2wgRXdrVmlld0ltcGw6OmNyZWF0ZUdMU3VyZmFjZShjb25zdCBJ
bnRTaXplJiB2aWV3U2l6ZSkKIAogYm9vbCBFd2tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgaWYgKG1fZXZhc0dsKSB7CisgICAgaWYgKG1fZXZhc0dM
KSB7CiAgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgIkFjY2VsZXJhdGVk
IGNvbXBvc2l0aW5nIG1vZGUgYWxyZWFkeSBlbnRlcmVkLiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgRXZhcyogZXZhcyA9IGV2YXNfb2JqZWN0X2V2YXNfZ2V0KG1fdmll
dyk7Ci0gICAgbV9ldmFzR2wgPSBldmFzX2dsX25ldyhldmFzKTsKLSAgICBpZiAoIW1fZXZhc0ds
KQorICAgIG1fZXZhc0dMID0gYWRvcHRQdHIoZXZhc19nbF9uZXcoZXZhcykpOworICAgIGlmICgh
bV9ldmFzR0wpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fZXZhc0dsQ29udGV4dCA9
IGV2YXNfZ2xfY29udGV4dF9jcmVhdGUobV9ldmFzR2wsIDApOwotICAgIGlmICghbV9ldmFzR2xD
b250ZXh0KSB7Ci0gICAgICAgIGV2YXNfZ2xfZnJlZShtX2V2YXNHbCk7Ci0gICAgICAgIG1fZXZh
c0dsID0gMDsKKyAgICBtX2V2YXNHTENvbnRleHQgPSBFdmFzR0xDb250ZXh0OjpjcmVhdGUoZXZh
c0dMKCkpOworICAgIGlmICghbV9ldmFzR0xDb250ZXh0KSB7CisgICAgICAgIEVJTkFfTE9HX0RP
TV9XQVJOKF9ld2tfbG9nX2RvbSwgIkZhaWxlZCB0byBjcmVhdGUgR0xDb250ZXh0LiIpOworICAg
ICAgICBtX2V2YXNHTC5jbGVhcigpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKCFjcmVhdGVHTFN1cmZhY2Uoc2l6ZSgpKSkgewotICAgICAgICBldmFzX2dsX2NvbnRl
eHRfZGVzdHJveShtX2V2YXNHbCwgbV9ldmFzR2xDb250ZXh0KTsKLSAgICAgICAgbV9ldmFzR2xD
b250ZXh0ID0gMDsKLQotICAgICAgICBldmFzX2dsX2ZyZWUobV9ldmFzR2wpOwotICAgICAgICBt
X2V2YXNHbCA9IDA7CisgICAgICAgIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfbG9nX2RvbSwgIkZh
aWxlZCB0byBjcmVhdGUgR0xTdXJmYWNlLiIpOworICAgICAgICBtX2V2YXNHTENvbnRleHQuY2xl
YXIoKTsKKyAgICAgICAgbV9ldmFzR0wuY2xlYXIoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtNTExLDIwICs1MDgsMTEgQEAgYm9vbCBFd2tWaWV3SW1wbDo6ZW50ZXJBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCiAKIGJvb2wgRXdrVmlld0ltcGw6OmV4aXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSgpCiB7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKG1fZXZhc0dsLCBmYWxzZSk7Ci0KLSAgICBpZiAobV9ldmFzR2xTdXJmYWNlKSB7Ci0gICAg
ICAgIGV2YXNfZ2xfc3VyZmFjZV9kZXN0cm95KG1fZXZhc0dsLCBtX2V2YXNHbFN1cmZhY2UpOwot
ICAgICAgICBtX2V2YXNHbFN1cmZhY2UgPSAwOwotICAgIH0KLQotICAgIGlmIChtX2V2YXNHbENv
bnRleHQpIHsKLSAgICAgICAgZXZhc19nbF9jb250ZXh0X2Rlc3Ryb3kobV9ldmFzR2wsIG1fZXZh
c0dsQ29udGV4dCk7Ci0gICAgICAgIG1fZXZhc0dsQ29udGV4dCA9IDA7Ci0gICAgfQorICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChtX2V2YXNHTCwgZmFsc2UpOwogCi0gICAgZXZh
c19nbF9mcmVlKG1fZXZhc0dsKTsKLSAgICBtX2V2YXNHbCA9IDA7CisgICAgbV9ldmFzR0xTdXJm
YWNlLmNsZWFyKCk7CisgICAgbV9ldmFzR0xDb250ZXh0LmNsZWFyKCk7CisgICAgbV9ldmFzR0wu
Y2xlYXIoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggYTc1MDZiZS4uOTdlMmI4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0zOSw3
ICszOSw4IEBACiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNp
bmNsdWRlIDxFdmFzX0dMLmg+CisjaW5jbHVkZSAiRXZhc0dMQ29udGV4dC5oIgorI2luY2x1ZGUg
IkV2YXNHTFN1cmZhY2UuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTgxLDYg
KzgyLDExIEBAIGNsYXNzIEV3a19TZXR0aW5nczsKIGNsYXNzIEV3a19VcmxfUmVxdWVzdDsKIGNs
YXNzIEV3a19VcmxfUmVzcG9uc2U7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Cit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTF9Db250ZXh0IEV2YXNfR0xfQ29udGV4dDsKK3R5cGVk
ZWYgc3RydWN0IF9FdmFzX0dMX1N1cmZhY2UgRXZhc19HTF9TdXJmYWNlOworI2VuZGlmCisKIHR5
cGVkZWYgc3RydWN0IEV3a19WaWV3X1NtYXJ0X0RhdGEgRXdrX1ZpZXdfU21hcnRfRGF0YTsKIAog
Y2xhc3MgRXdrVmlld0ltcGwgewpAQCAtMTcxLDEwICsxNzcsMTAgQEAgcHVibGljOgogICAgIFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcigpIHsg
cmV0dXJuIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKTsgfQogI2VuZGlmCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIEV2YXNfR0wqIGV2YXNHbCgpIHsgcmV0dXJu
IG1fZXZhc0dsOyB9Ci0gICAgRXZhc19HTF9Db250ZXh0KiBldmFzR2xDb250ZXh0KCkgeyByZXR1
cm4gbV9ldmFzR2xDb250ZXh0OyB9Ci0gICAgRXZhc19HTF9TdXJmYWNlKiBldmFzR2xTdXJmYWNl
KCkgeyByZXR1cm4gbV9ldmFzR2xTdXJmYWNlOyB9Ci0gICAgdm9pZCByZXNldEV2YXNHbFN1cmZh
Y2UoKSB7IG1fZXZhc0dsU3VyZmFjZSA9IDA7IH0KKyAgICBFdmFzX0dMKiBldmFzR0woKSB7IHJl
dHVybiBtX2V2YXNHTC5nZXQoKTsgfQorICAgIEV2YXNfR0xfQ29udGV4dCogZXZhc0dMQ29udGV4
dCgpIHsgcmV0dXJuIG1fZXZhc0dMQ29udGV4dCA/IG1fZXZhc0dMQ29udGV4dC0+Y29udGV4dCgp
IDogMDsgfQorICAgIEV2YXNfR0xfU3VyZmFjZSogZXZhc0dMU3VyZmFjZSgpIHsgcmV0dXJuIG1f
ZXZhc0dMU3VyZmFjZSA/IG1fZXZhc0dMU3VyZmFjZS0+c3VyZmFjZSgpIDogMDsgfQorICAgIHZv
aWQgcmVzZXRFdmFzR0xTdXJmYWNlKCkgeyBtX2V2YXNHTFN1cmZhY2UuY2xlYXIoKTsgfQogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogbmVlZHMgcmVmYWN0b3JpbmcgKHNwbGl0IGNhbGxiYWNrIGlu
dm9rZSkKQEAgLTIwMCw2ICsyMDYsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBOb3RlLCBpbml0aWFs
aXphdGlvbiBtYXR0ZXJzLgogICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7CiAgICAgUmVmUHRyPEV3
a19Db250ZXh0PiBtX2NvbnRleHQ7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIE93blB0cjxFdmFzX0dMPiBtX2V2YXNHTDsKKyAgICBPd25QdHI8V2ViS2l0OjpFdmFzR0xD
b250ZXh0PiBtX2V2YXNHTENvbnRleHQ7CisgICAgT3duUHRyPFdlYktpdDo6RXZhc0dMU3VyZmFj
ZT4gbV9ldmFzR0xTdXJmYWNlOworI2VuZGlmCiAgICAgT3duUHRyPFdlYktpdDo6UGFnZUNsaWVu
dEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1f
cGFnZVByb3h5OwogICAgIE93blB0cjxXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsPiBtX3BhZ2VM
b2FkQ2xpZW50OwpAQCAtMjEzLDExICsyMjQsNiBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudDsKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyPiBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiAjZW5kaWYKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCi0gICAgRXZhc19HTCogbV9ldmFzR2w7Ci0gICAgRXZhc19HTF9Db250ZXh0KiBt
X2V2YXNHbENvbnRleHQ7Ci0gICAgRXZhc19HTF9TdXJmYWNlKiBtX2V2YXNHbFN1cmZhY2U7Ci0j
ZW5kaWYKICAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBtX3NldHRpbmdzOwogICAgIGNvbnN0IGNo
YXIqIG1fY3Vyc29yR3JvdXA7IC8vIFRoaXMgaXMgYW4gYWRkcmVzcywgZG8gbm90IGZyZWUgaXQg
b3IgdXNlIFdLRWluYVNoYXJlZFN0cmluZy4KICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9mYXZp
Y29uVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CmluZGV4IGQ3NTQ1MmUuLjViOGUwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc21hcnRfY2FsY3VsYXRlKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgICAgICBpbXBs
LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KCktPnVwZGF0ZVZpZXdwb3J0U2l6ZShJbnRT
aXplKHdpZHRoLCBoZWlnaHQpKTsKICNlbmRpZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICAgICAgbmVlZHNOZXdTdXJmYWNlID0gaW1wbC0+ZXZhc0dsU3VyZmFjZSgpOwor
ICAgICAgICBuZWVkc05ld1N1cmZhY2UgPSBpbXBsLT5ldmFzR0xTdXJmYWNlKCk7CiAjZW5kaWYK
IAogICAgICAgICBpZiAoaW1wbC0+cGFnZSgpLT5kcmF3aW5nQXJlYSgpKQpAQCAtNDQzLDggKzQ0
Myw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9jYWxjdWxhdGUoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG5l
ZWRzTmV3U3VyZmFjZSkgewotICAgICAgICBldmFzX2dsX3N1cmZhY2VfZGVzdHJveShpbXBsLT5l
dmFzR2woKSwgaW1wbC0+ZXZhc0dsU3VyZmFjZSgpKTsKLSAgICAgICAgaW1wbC0+cmVzZXRFdmFz
R2xTdXJmYWNlKCk7CisgICAgICAgIGltcGwtPnJlc2V0RXZhc0dMU3VyZmFjZSgpOwogICAgICAg
ICBpbXBsLT5jcmVhdGVHTFN1cmZhY2UoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAgICAgICAg
IGltcGwtPnJlZHJhd1JlZ2lvbihJbnRSZWN0KEludFBvaW50KCksIEludFNpemUod2lkdGgsIGhl
aWdodCkpKTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>