<?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>98501</bug_id>
          
          <creation_ts>2012-10-05 02:17:04 -0700</creation_ts>
          <short_desc>[Qt] Implement GraphicsSurfaceToken to replace uint64_t as token type.</short_desc>
          <delta_ts>2012-10-11 02:53:48 -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>WebKit2</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>
          
          <blocked>98147</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zeno Albisser">zeno</reporter>
          <assigned_to name="Zeno Albisser">zeno</assigned_to>
          <cc>dino</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>noam</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>735516</commentid>
    <comment_count>0</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 02:17:04 -0700</bug_when>
    <thetext>Up to now, we were using a uint64_t as a token to identify a GraphicsSurface.
For mac and linux this seemed to be straight forward and good enough, even though not perfectly well designed.
With the upcomping GraphicsSurface implementation for Windows, 64bit will not be sufficient for a token.
A token will have to contain two native HANDLES which are of type (void*). On a 64bit build we would then need 128bits.
We should therefore wrap any kind of native handles/windowid/IOSurfaceRef into a specific GraphicsSurfaceToken class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735531</commentid>
    <comment_count>1</comment_count>
      <attachid>167294</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 03:04:15 -0700</bug_when>
    <thetext>Created attachment 167294
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735571</commentid>
    <comment_count>2</comment_count>
      <attachid>167306</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 04:46:42 -0700</bug_when>
    <thetext>Created attachment 167306
patch for review. - rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735578</commentid>
    <comment_count>3</comment_count>
      <attachid>167306</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-10-05 04:59:17 -0700</bug_when>
    <thetext>Comment on attachment 167306
patch for review. - rebased.

Attachment 167306 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14178454</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735585</commentid>
    <comment_count>4</comment_count>
      <attachid>167306</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-05 05:20:40 -0700</bug_when>
    <thetext>Comment on attachment 167306
patch for review. - rebased.

Attachment 167306 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14169743</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735609</commentid>
    <comment_count>5</comment_count>
      <attachid>167320</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 06:53:02 -0700</bug_when>
    <thetext>Created attachment 167320
patch for review. - fixed compilation without use_graphics_surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735625</commentid>
    <comment_count>6</comment_count>
      <attachid>167320</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 07:22:27 -0700</bug_when>
    <thetext>Comment on attachment 167320
patch for review. - fixed compilation without use_graphics_surface.

This patch will need another iteration. - I&apos;ll post an update asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735649</commentid>
    <comment_count>7</comment_count>
      <attachid>167331</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 08:21:54 -0700</bug_when>
    <thetext>Created attachment 167331
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735668</commentid>
    <comment_count>8</comment_count>
      <attachid>167331</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-05 08:54:25 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt; Source/WebCore/ChangeLog:7
&gt; +        This is necessary in order to implement GraphicsSurface for Windows as well.

I would remove &quot;as well&quot;

&gt; Source/WebCore/ChangeLog:9
&gt; +        WindowID (Linux/GLX), two IOSurfaceIDs (Mac) or in future two HANDLEs (Windows).

in *the* future

&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt; +#if OS(LINUX)
&gt; +    GraphicsSurfaceToken(uint32_t windowID = 0)
&gt; +        : frontBufferHandle(windowID)
&gt; +    { }

So this covers linux without X11?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735684</commentid>
    <comment_count>9</comment_count>
      <attachid>167331</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-10-05 09:14:31 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        WindowID (Linux/GLX), two IOSurfaceIDs (Mac) or in future two HANDLEs (Windows).
&gt; 
&gt; in *the* future

I would tend to agree, but it seems it could actually be correct according to that: http://itre.cis.upenn.edu/~myl/languagelog/archives/004201.html
Well, I&apos;d be more comfortable with a comma before and after.
Maybe it&apos;s just us not being accustomed to british english that much...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735706</commentid>
    <comment_count>10</comment_count>
      <attachid>167331</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 09:30:02 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt; Source/WebCore/ChangeLog:7
&gt;&gt; +        This is necessary in order to implement GraphicsSurface for Windows as well.
&gt; 
&gt; I would remove &quot;as well&quot;

I can change that.

&gt;&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt;&gt; +        WindowID (Linux/GLX), two IOSurfaceIDs (Mac) or in future two HANDLEs (Windows).
&gt;&gt; 
&gt;&gt; in *the* future
&gt; 
&gt; I would tend to agree, but it seems it could actually be correct according to that: http://itre.cis.upenn.edu/~myl/languagelog/archives/004201.html
&gt; Well, I&apos;d be more comfortable with a comma before and after.
&gt; Maybe it&apos;s just us not being accustomed to british english that much...

And I can change that as well.

&gt;&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt;&gt; +    { }
&gt; 
&gt; So this covers linux without X11?

Linux without GLX/X11 will not use GRAPHICS_SURFACE in the first place. So it&apos;s not an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735711</commentid>
    <comment_count>11</comment_count>
      <attachid>167331</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-05 09:33:16 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt;&gt;&gt; +    { }
&gt;&gt; 
&gt;&gt; So this covers linux without X11?
&gt; 
&gt; Linux without GLX/X11 will not use GRAPHICS_SURFACE in the first place. So it&apos;s not an issue.

Well adding a has X11 to the ifdef would make that more clear. So how will this be done for EGL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735717</commentid>
    <comment_count>12</comment_count>
      <attachid>167331</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 09:40:49 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt;&gt;&gt;&gt; +    { }
&gt;&gt;&gt; 
&gt;&gt;&gt; So this covers linux without X11?
&gt;&gt; 
&gt;&gt; Linux without GLX/X11 will not use GRAPHICS_SURFACE in the first place. So it&apos;s not an issue.
&gt; 
&gt; Well adding a has X11 to the ifdef would make that more clear. So how will this be done for EGL?

Isn&apos;t that something we should worry about, once we are implementing a GraphicsSurface for EGL? I mean, it could be that a single uint32_t is perfectly viable for that case. Or it could be that we need two uint32_t to identify a front and a back buffer, as it is necessary for Mac. Or it could also be that we even need two uint64_t as we will need on Windows (ANGLE/EGL).
But I do not think it makes sense to try predicting all that before even prototyping such a solution for EGL. Let&apos;s take a step at the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735722</commentid>
    <comment_count>13</comment_count>
      <attachid>167331</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-05 09:46:00 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt;&gt;&gt;&gt;&gt; +    { }
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; So this covers linux without X11?
&gt;&gt;&gt; 
&gt;&gt;&gt; Linux without GLX/X11 will not use GRAPHICS_SURFACE in the first place. So it&apos;s not an issue.
&gt;&gt; 
&gt;&gt; Well adding a has X11 to the ifdef would make that more clear. So how will this be done for EGL?
&gt; 
&gt; Isn&apos;t that something we should worry about, once we are implementing a GraphicsSurface for EGL? I mean, it could be that a single uint32_t is perfectly viable for that case. Or it could be that we need two uint32_t to identify a front and a back buffer, as it is necessary for Mac. Or it could also be that we even need two uint64_t as we will need on Windows (ANGLE/EGL).
&gt; But I do not think it makes sense to try predicting all that before even prototyping such a solution for EGL. Let&apos;s take a step at the time.

Still, HAVE(GLX) instead of OS(LINUX) makes this more readable and I fail to see the argument against that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735727</commentid>
    <comment_count>14</comment_count>
      <attachid>167331</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 09:54:25 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurfaceToken.h:41
&gt;&gt;&gt;&gt;&gt;&gt; +    { }
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; So this covers linux without X11?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Linux without GLX/X11 will not use GRAPHICS_SURFACE in the first place. So it&apos;s not an issue.
&gt;&gt;&gt; 
&gt;&gt;&gt; Well adding a has X11 to the ifdef would make that more clear. So how will this be done for EGL?
&gt;&gt; 
&gt;&gt; Isn&apos;t that something we should worry about, once we are implementing a GraphicsSurface for EGL? I mean, it could be that a single uint32_t is perfectly viable for that case. Or it could be that we need two uint32_t to identify a front and a back buffer, as it is necessary for Mac. Or it could also be that we even need two uint64_t as we will need on Windows (ANGLE/EGL).
&gt;&gt; But I do not think it makes sense to try predicting all that before even prototyping such a solution for EGL. Let&apos;s take a step at the time.
&gt; 
&gt; Still, HAVE(GLX) instead of OS(LINUX) makes this more readable and I fail to see the argument against that.

How about context? - We distinguish between DARWIN and GLX? I think it is more readable to distinguish between DARWIN and LINUX.
Also i think it is not necessary to forcefully disable a code path that we do not even know yet, if it is going to be wrong for EGL.
But I am not going to argue too hard about it, it is just a single line after all. - So I will change it.

Anything else?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735730</commentid>
    <comment_count>15</comment_count>
      <attachid>167331</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-05 09:58:47 -0700</bug_when>
    <thetext>Comment on attachment 167331
patch for review.

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

Some nitpicks... otherwise all good :)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.cpp:37
&gt; +void TextureMapperSurfaceBackingStore::setGraphicsSurface(GraphicsSurfaceToken graphicsSurfaceToken, const IntSize&amp; surfaceSize, uint32_t frontBuffer)

const &amp;?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.h:53
&gt; +    void setGraphicsSurface(GraphicsSurfaceToken, const IntSize&amp; surfaceSize, uint32_t frontBuffer);

const &amp;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735740</commentid>
    <comment_count>16</comment_count>
      <attachid>167345</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-05 10:30:07 -0700</bug_when>
    <thetext>Created attachment 167345
patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739767</commentid>
    <comment_count>17</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-10-11 02:53:48 -0700</bug_when>
    <thetext>Committed r131036: &lt;http://trac.webkit.org/changeset/131036&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167294</attachid>
            <date>2012-10-05 03:04:15 -0700</date>
            <delta_ts>2012-10-05 04:46:42 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>98501_20121005-120227.patch</filename>
            <type>text/plain</type>
            <size>36986</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzN2Y2OTRlLi4xZDU3NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG8gcmVwbGFjZSB1aW50NjRf
dCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0b2tlbiB0eXBlIGZvciBHcmFw
aGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1cmZhY2VUb2tlbi4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZSBmb3IgV2luZG93cyBhcyB3ZWxsLgorICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3Jt
IGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBhCisgICAgICAgIFdpbmRvd0lE
IChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9yIGluIGZ1dHVyZSB0d28gSEFO
RExFcyAoV2luZG93cykuCisgICAgICAgIFRoZSBzaW1wbGUgdWludDY0X3QgaXMgbm90IHN1ZmZp
Y2llbnQgYW55bW9yZSwgc2luY2UgYSBzaW5nbGUgSEFORExFIGluIHdpbmRvd3MKKyAgICAgICAg
Y2FuIGJlIDY0Yml0IGFscmVhZHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2Vu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpHcmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6aXNWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnRva2VuKToKKyAgICAg
ICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OlRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisKIDIwMTIt
MTAtMDQgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtN
YWNdIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHVzaW5n
IEFOR0xFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZmEyNzI0ZC4uNThjOWUwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yMTM2LDYgKzIxMzYsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCA1NDhkMDE1Li41NTcyNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwotICAg
IHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CiAj
ZW5kaWYKIAogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKQEAgLTI5NSw3ICsyOTUs
NyBAQCB1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpCiAgICAgcmV0dXJuIGZyb250QnVmZmVyOwogfQogCi11aW50NjRfdCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKK0dyYXBoaWNzU3Vy
ZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSBjb25zdAogewogICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCmluZGV4IDlmZjM4ODEuLmMxNmEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25z
dCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtSW1w
b3J0KHNpemUsIGZsYWdzLCB0b2tlbik7CiB9CkBAIC0zNSw3ICszNSw3IEBAIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBHcmFwaGljCiAgICAgcmV0dXJuIHBsYXRmb3JtQ3JlYXRlKHNpemUsIGZsYWdzKTsKIH0K
IAotdWludDY0X3QgR3JhcGhpY3NTdXJmYWNlOjpleHBvcnRUb2tlbigpCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2VuKCkKIHsKICAgICByZXR1cm4gcGxh
dGZvcm1FeHBvcnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKaW5kZXggMGVlNjhjZi4uZTc4
ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg
R3JhcGhpY3NTdXJmYWNlX2gKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMzIsNyAr
MzMsOCBAQAogI2lmIE9TKERBUldJTikKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1
cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsK
LSNlbHNlCisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKIHR5cGVkZWYgdWludDMyX3QgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2U7CiAjZW5kaWYKIApAQCAtNjksMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50
U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCB0b2tlbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50
UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbUZyYW1lYnVmZmVyKHVpbnQz
Ml90IGZibywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spOwogICAgIHVpbnQzMl90IGZyb250QnVmZmVyKCk7CiAgICAgdWludDMyX3Qgc3dhcEJ1
ZmZlcnMoKTsKLSAgICB1aW50NjRfdCBleHBvcnRUb2tlbigpOworICAgIEdyYXBoaWNzU3VyZmFj
ZVRva2VuIGV4cG9ydFRva2VuKCk7CiAgICAgdWludDMyX3QgZ2V0VGV4dHVyZUlEKCk7CiAgICAg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYsIExv
Y2tPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPEltYWdlPiBjcmVhdGVSZWFkT25seUltYWdlKGNv
bnN0IEludFJlY3QmKTsKQEAgLTgzLDggKzg1LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBwbGF0Zm9ybUNyZWF0ZShjb25z
dCBJbnRTaXplJiwgRmxhZ3MpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gcGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCk7Ci0gICAg
dWludDY0X3QgcGxhdGZvcm1FeHBvcnQoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBwbGF0Zm9ybUV4
cG9ydCgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKICAgICB1aW50MzJfdCBwbGF0
Zm9ybUdldFRleHR1cmVJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmM2E1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZVRva2VuLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgR3JhcGhpY3NTdXJmYWNlVG9rZW5faAorI2RlZmluZSBHcmFwaGlj
c1N1cmZhY2VUb2tlbl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworI2lmIE9TKERBUldJTikgfHwg
T1MoTElOVVgpCit0eXBlZGVmIHVpbnQzMl90IEJ1ZmZlckhhbmRsZTsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbiB7CisKKyNpZiBP
UyhMSU5VWCkKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbih1aW50MzJfdCB3aW5kb3dJRCA9IDAp
CisgICAgICAgIDogZnJvbnRCdWZmZXJIYW5kbGUod2luZG93SUQpCisgICAgeyB9CisKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4gJnJocykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZSAhPSByaHMuZnJvbnRCdWZmZXJI
YW5kbGU7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICB9CisKKyNlbmRpZgorCisjaWYgT1MoREFS
V0lOKQorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKEJ1ZmZlckhhbmRsZSBmcm9udEJ1ZmZlciA9
IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0gMCkKKyAgICAgICAgOiBmcm9udEJ1ZmZlckhh
bmRsZShmcm9udEJ1ZmZlcikKKyAgICAgICAgLCBiYWNrQnVmZmVySGFuZGxlKGJhY2tCdWZmZXIp
CisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gJnJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoZnJvbnRCdWZmZXJIYW5kbGUg
IT0gcmhzLmZyb250QnVmZmVySGFuZGxlIHx8IGJhY2tCdWZmZXJIYW5kbGUgIT0gcmhzLmJhY2tC
dWZmZXJIYW5kbGUpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZnJvbnRCdWZmZXJIYW5kbGUgJiYgYmFja0J1ZmZlckhhbmRsZTsKKyAg
ICB9CisKKyAgICBCdWZmZXJIYW5kbGUgYmFja0J1ZmZlckhhbmRsZTsKKyNlbmRpZgorCisgICAg
QnVmZmVySGFuZGxlIGZyb250QnVmZmVySGFuZGxlOworfTsKKworfQorI2VuZGlmIC8vIFVTRShH
UkFQSElDU19TVVJGQUNFKQorCisjZW5kaWYgLy8gR3JhcGhpY3NTdXJmYWNlVG9rZW5faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dy
YXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCA4YTgzMjJkLi45NGMzMzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9t
YWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtNjQsMTggKzY0
LDEzIEBAIHN0YXRpYyB1aW50MzJfdCBjcmVhdGVUZXh0dXJlKElPU3VyZmFjZVJlZiBoYW5kbGUp
CiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c1N1cmZhY2VQcml2YXRlKHVpbnQ2NF90IHRva2VuKQorICAgIEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogICAgICAgICA6IG1fdG9rZW4o
dG9rZW4pCiAgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkKICAgICAgICAgLCBtX2Jh
Y2tCdWZmZXJUZXh0dXJlKDApCiAgICAgewotICAgICAgICAvLyBUaGUgdG9rZW4gY29udGFpbnMg
dGhlIElPU3VyZmFjZUlEIG9mIHRoZSBmaXN0IHN1cmZhY2UvYnVmZmVyIGluIHRoZSBmaXJzdCAz
MiBCaXQKLSAgICAgICAgLy8gYW5kIHRoZSBJT1N1cmZhY2VJRCBvZiB0aGUgc2Vjb25kIHN1cmZh
Y2UvYnVmZmVyIGluIHRoZSBzZWNvbmQgMzIgQml0LgotICAgICAgICB1aW50MzJfdCBmcm9udEJ1
ZmZlciA9IHRva2VuID4+IDMyOwotICAgICAgICB1aW50MzJfdCBiYWNrQnVmZmVyID0gdG9rZW4g
JiAweGZmZmY7Ci0KLSAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChmcm9u
dEJ1ZmZlcik7Ci0gICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChiYWNrQnVm
ZmVyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChtX3Rva2VuLmZy
b250QnVmZmVySGFuZGxlKTsKKyAgICAgICAgbV9iYWNrQnVmZmVyID0gSU9TdXJmYWNlTG9va3Vw
KG1fdG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CiAgICAgfQogCiAgICAgR3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdz
KQpAQCAtMTE5LDExICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZnJvbnRCdWZmZXIgPSBJ
T1N1cmZhY2VDcmVhdGUoZGljdCk7CiAgICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUNy
ZWF0ZShkaWN0KTsKIAotICAgICAgICB1aW50NjRfdCB0b2tlbiA9IElPU3VyZmFjZUdldElEKG1f
ZnJvbnRCdWZmZXIpOwotICAgICAgICB0b2tlbiA8PD0gMzI7Ci0gICAgICAgIHRva2VuIHw9IElP
U3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcik7Ci0KLSAgICAgICAgbV90b2tlbiA9IHRva2VuOwor
ICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oSU9TdXJmYWNlR2V0SUQobV9m
cm9udEJ1ZmZlciksIElPU3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcikpOwogICAgIH0KIAogICAg
IH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKQEAgLTE0OSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKTsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCB0b2tlbigpIGNvbnN0CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4o
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW47CiAgICAgfQpAQCAtMTg1LDEw
ICsxNzYsMTAgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBtX2JhY2tC
dWZmZXI7CiAgICAgdWludDMyX3QgbV9mcm9udEJ1ZmZlclRleHR1cmU7CiAgICAgdWludDMyX3Qg
bV9iYWNrQnVmZmVyVGV4dHVyZTsKLSAgICB1aW50NjRfdCBtX3Rva2VuOworICAgIEdyYXBoaWNz
U3VyZmFjZVRva2VuIG1fdG9rZW47CiB9OwogCi11aW50NjRfdCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtRXhwb3J0KCkKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1FeHBvcnQoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnRva2VuKCk7CiB9CkBAIC0y
NzYsNyArMjY3LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4gc3VyZmFj
ZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIHVpbnQ2NF90IHRv
a2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEdyYXBoaWNz
U3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBXZSBjdXJyZW50bHkgZGlzYWJsZSBzdXBw
b3J0IGZvciBDb3B5VG9UZXh0dXJlIG9uIE1hYywgYmVjYXVzZSB0aGlzIGlzIHVzZWQgZm9yIHNp
bmdsZSBidWZmZXJlZCBUaWxlcy4KICAgICAvLyBUaGUgc2luZ2xlIGJ1ZmZlcmVkIG5hdHVyZSBv
ZiB0aGlzIHJlcXVpcmVzIGEgY2FsbCB0byBnbEZsdXNoLCBhcyBkZXNjcmliZWQgaW4gcGxhdGZv
cm1Db3B5VG9UZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5k
ZXggMWJiZWI3My4uOTA1MThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0aG9kcyhHcmFw
aGljc1N1cmZhY2VQcml2YXRlKiBwKQogICAgIHJldHVybiByZXNvbHZlZDsKIH0KIAotdWludDY0
X3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCitHcmFwaGljc1N1cmZhY2VUb2tl
biBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKIHsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybVN1cmZhY2U7CisgICAgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKG1fcGxhdGZvcm1T
dXJmYWNlKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUdldFRleHR1
cmVJRCgpCkBAIC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNv
bnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBYMTEgZG9lcyBub3Qg
c3VwcG9ydCBDb3B5VG9UZXh0dXJlLCBzbyB3ZSBkbyBub3QgY3JlYXRlIGEgR3JhcGhpY3NTdXJm
YWNlIGlmIHRoaXMgaXMgcmVxdWVzdGVkLgogICAgIC8vIEdyYXBoaWNzU3VyZmFjZUdMWCB1c2Vz
IGFuIFhXaW5kb3cgYXMgbmF0aXZlIHN1cmZhY2UuIFRoaXMgb25lIGFsd2F5cyBoYXMgYSBmcm9u
dCBhbmQgYSBiYWNrIGJ1ZmZlci4KQEAgLTMzMCw3ICszMzAsNyBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXpl
JiBzaXplLAogICAgIGlmICghcmVzb2x2ZUdMTWV0aG9kcyhzdXJmYWNlLT5tX3ByaXZhdGUpKQog
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CiAKLSAgICBzdXJm
YWNlLT5tX3BsYXRmb3JtU3VyZmFjZSA9IHRva2VuOworICAgIHN1cmZhY2UtPm1fcGxhdGZvcm1T
dXJmYWNlID0gdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGU7CiAKICAgICBzdXJmYWNlLT5tX3ByaXZh
dGUtPmNyZWF0ZVBpeG1hcChzdXJmYWNlLT5tX3BsYXRmb3JtU3VyZmFjZSk7CiAgICAgc3VyZmFj
ZS0+bV9zaXplID0gc3VyZmFjZS0+bV9wcml2YXRlLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI1MzcyYy4uYjBhMjVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIFRleHR1
cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UodWludDY0X3Qg
Z3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcikKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNl
dEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tl
biwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKQogewog
ICAgIGlmIChncmFwaGljc1N1cmZhY2VUb2tlbiAhPSBtX2dyYXBoaWNzU3VyZmFjZVRva2VuKSB7
CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NT
dXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0U3VyZmFjZShQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gc3UKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhp
Y3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZ3JhcGhp
Y3NTdXJmYWNlID0gUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLSAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2VUb2tlbiA9IDA7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBHcmFw
aGljc1N1cmZhY2VUb2tlbigpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmgKaW5kZXggOWQwMDJiNC4uN2UzMmY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIGNs
YXNzIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9Ci0gICAgdm9pZCBzZXRHcmFwaGlj
c1N1cmZhY2UodWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1
cmZhY2VTaXplLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBzZXRHcmFwaGljc1N1
cmZhY2UoR3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1
aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U+IGdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNl
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqKTsKQEAgLTYyLDEwICs2Miw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKQogICAgICAgICA6IFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUoKQotICAgICAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkK
ICAgICAgICAgeyB9CiAKLSAgICB1aW50NjRfdCBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOworICAg
IEdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CiAgICAgSW50U2l6
ZSBtX2dyYXBoaWNzU3VyZmFjZVNpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaAppbmRleCAyMjkyZjRlLi45Yjk0ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllcl9oCiAjZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyX2gK
IAorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFw
aGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7
IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDllOWVkZGMuLjMxZDNjNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMi0xMC0wNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBHcmFwaGljc1N1cmZhY2VUb2tlbiB0
byByZXBsYWNlIHVpbnQ2NF90IGFzIHRva2VuIHR5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODUwMQorCisgICAgICAgIFJlcGxhY2UgdGhlIHRv
a2VuIHR5cGUgZm9yIEdyYXBoaWNzU3VyZmFjZSB3aXRoIGEgbmV3IGNsYXNzIEdyYXBoaWNzU3Vy
ZmFjZVRva2VuLgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBpbXBsZW1l
bnQgR3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzIGFzIHdlbGwuCisgICAgICAgIERlcGVuZGlu
ZyBvbiB0aGUgcGxhdGZvcm0gYSBHcmFwaGljc1N1cmZhY2VUb2tlbiBtaWdodCBjb250YWluIGEK
KyAgICAgICAgV2luZG93SUQgKExpbnV4L0dMWCksIHR3byBJT1N1cmZhY2VJRHMgKE1hYykgb3Ig
aW4gZnV0dXJlIHR3byBIQU5ETEVzIChXaW5kb3dzKS4KKyAgICAgICAgVGhlIHNpbXBsZSB1aW50
NjRfdCBpcyBub3Qgc3VmZmljaWVudCBhbnltb3JlLCBzaW5jZSBhIHNpbmdsZSBIQU5ETEUgaW4g
d2luZG93cworICAgICAgICBjYW4gYmUgNjRiaXQgYWxyZWFkeS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZVN1cmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFu
ZGxlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChIYW5kbGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQyk6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnN5bmNDYW52YXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQ2FudmFzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
cjo6c3luY0NhbnZhcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3Jk
aW5hdG9yKToKKwogMjAxMi0wOS0yOCAgQnl1bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF1bV0syXSBDbGVhciBwcm92aWRlciBvbiBkZXN0cnVjdG9yIG9m
IHtWaWJyYXRpb24sQmF0dGVyeSxOZXR3b3JrSW5mb31Qcm92aWRlci4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAppbmRleCA0M2JkNTI1Li5iZTA5M2UwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCkBAIC0yMiw2ICsyMiw3
IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+
CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgi
CkBAIC0zMiw5ICszMyw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKLSNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKLSAgICA6IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkKLSNlbmRpZgog
ewogfQogCkBAIC00NCw3ICs0Miw3IEBAIHZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXItPmVuY29kZShtX2ZsYWdzKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBlbmNv
ZGVyLT5lbmNvZGUobV9ncmFwaGljc1N1cmZhY2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NT
dXJmYWNlVG9rZW4pCisgICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBlbmNvZGVyLT5lbmNvZGUobV9iaXRtYXBIYW5k
bGUpOwpAQCAtNTksNyArNTcsNyBAQCBib29sIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJgogI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBo
aWNzU3VyZmFjZVRva2VuKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYW5kbGUu
bV9ncmFwaGljc1N1cmZhY2VUb2tlbikKKyAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNl
VG9rZW4uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCkBAIC0xNTEsNyArMTQ5LDcg
QEAgU2hhcmVhYmxlU3VyZmFjZTo6flNoYXJlYWJsZVN1cmZhY2UoKQogUGFzc1JlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5k
bGUpCiB7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhhbmRsZS5ncmFwaGlj
c1N1cmZhY2VUb2tlbigpKSB7CisgICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigp
LmlzVmFsaWQoKSkgewogICAgICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0g
R3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKTsKICAgICAgICAgaWYgKHN1cmZhY2UpCiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2UoaGFuZGxlLm1fc2l6
ZSwgaGFuZGxlLm1fZmxhZ3MsIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPihzdXJmYWNlKSkp
OwpAQCAtMTcxLDggKzE2OSw4IEBAIGJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxl
KEhhbmRsZSYgaGFuZGxlKQogICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFnczsKIAogI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQotICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0g
bV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IDA7
Ci0gICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKQorICAgIGhhbmRsZS5tX2dy
YXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNzU3VyZmFj
ZS0+ZXhwb3J0VG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgaWYgKGhhbmRs
ZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKICAgICBpZiAoIW1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1fYml0bWFw
SGFuZGxlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCmluZGV4IGI2
ODViMDcuLjU5OGRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFi
bGVTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2Uu
aApAQCAtNTUsMTQgKzU1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIEhhbmRsZSYpOwogCiAjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCi0gICAgICAgIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsgfQorICAgICAgICBXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW47IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNoYXJlYWJsZVN1cmZhY2U7CiAgICAgICAgIG11dGFibGUgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgbV9iaXRtYXBIYW5kbGU7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Ci0gICAgICAgIHVpbnQ2NF90IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CisgICAgICAgIFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAjZW5kaWYK
ICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3NpemU7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6RmxhZ3MgbV9mbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKaW5kZXggY2JmNjI0OS4uOWVkOWM4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU1LDYgKzU1LDkgQEAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRp
b25zLmg+CiAjZW5kaWYKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC03OTUsNiArNzk4LDM1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKIH0K
ICNlbmRpZgogCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7Cisj
aWYgT1MoREFSV0lOKQorICAgIGVuY29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZl
ckhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5k
bGUpOworI2VuZGlmCisjaWYgT1MoTElOVVgpCisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRv
a2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1Mo
REFSV0lOKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVy
SGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
VUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tl
bi5mcm9udEJ1ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
IHJldHVybiB0cnVlOworfQorCisjZW5kaWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENv
cmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApp
bmRleCBiMDhmMTE4Li44YmI2N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC03Miw2ICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgRmxvYXRQb2ludDNEOwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogICAgIHN0cnVjdCBMZW5ndGg7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBz
dHJ1Y3QgR3JhcGhpY3NTdXJmYWNlVG9rZW47CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykKQEAgLTI1MSw2ICsyNTUsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKIH07CiAjZW5k
aWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VU
b2tlbiYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOworfTsKKyNlbmRpZgogI2VuZGlmCiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBlNmY1ODJm
Li5hOWQ3NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5LmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6dXBkYXRlVGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zCiB7CiAg
ICAgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IHN1cmZhY2U7CiAjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCi0gICAgdWludDY0X3QgdG9rZW4gPSB1cGRhdGVJbmZvLnN1cmZhY2VIYW5kbGUuZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4oKTsKLSAgICBpZiAodG9rZW4pIHsKLSAgICAgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+ID46Oml0ZXJhdG9yIGl0ID0gbV9zdXJm
YWNlcy5maW5kKHRva2VuKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbiA9IHVwZGF0
ZUluZm8uc3VyZmFjZUhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpOworICAgIGlmICh0b2tl
bi5pc1ZhbGlkKCkpIHsKKyAgICAgICAgSGFzaE1hcDxCdWZmZXJIYW5kbGUsIFJlZlB0cjxTaGFy
ZWFibGVTdXJmYWNlPiA+OjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZCh0b2tlbi5mcm9u
dEJ1ZmZlckhhbmRsZSk7CiAgICAgICAgIGlmIChpdCA9PSBtX3N1cmZhY2VzLmVuZCgpKSB7CiAg
ICAgICAgICAgICBzdXJmYWNlID0gU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKHVwZGF0ZUluZm8u
c3VyZmFjZUhhbmRsZSk7Ci0gICAgICAgICAgICBtX3N1cmZhY2VzLmFkZCh0b2tlbiwgc3VyZmFj
ZSk7CisgICAgICAgICAgICBtX3N1cmZhY2VzLmFkZCh0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSwg
c3VyZmFjZSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3VyZmFjZSA9IGl0LT5zZWNv
bmQ7CiAgICAgfSBlbHNlCkBAIC0xNzQsOSArMTc0LDkgQEAgdm9pZCBMYXllclRyZWVDb29yZGlu
YXRvclByb3h5OjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRp
b24KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdl
U2Nyb2xsUG9zaXRpb24sIG1fcmVuZGVyZXIuZ2V0KCksIHBvc2l0aW9uKSk7CiB9CiAKLXZvaWQg
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29uc3Qg
SW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIHVpbnQz
Ml90IGZyb250QnVmZmVyKQordm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpzeW5jQ2Fu
dmFzKHVpbnQzMl90IGlkLCBjb25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiYgdG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQogewotICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzLCBtX3JlbmRlcmVy
LmdldCgpLCBpZCwgY2FudmFzU2l6ZSwgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVy
KSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52
YXMsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIp
KTsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpwdXJnZUJhY2tpbmdTdG9y
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4
IDY1YTlmNWU5Li43YzEzZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5m
by5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2VU
b2tlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAtNzMsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpOwogICAgIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9zaXRpb24pOwotICAgIHZvaWQgc3luY0NhbnZhcyh1aW50MzJfdCBpZCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJm
YWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2b2lkIHN5bmNDYW52YXModWlu
dDMyX3QgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZv
aWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVlUmVuZGVyZXIqIGxheWVyVHJl
ZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5nZXQoKTsgfQogICAgIHZvaWQg
c2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QsIGZsb2F0KTsKQEAgLTg4LDcgKzg5LDcg
QEAgcHJvdGVjdGVkOgogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2FsZTsKICAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiA+
IG1fc3VyZmFjZXM7CisgICAgSGFzaE1hcDxCdWZmZXJIYW5kbGUsIFJlZlB0cjxTaGFyZWFibGVT
dXJmYWNlPiA+IG1fc3VyZmFjZXM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIzODY5
MjMuLjZlZmEzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzMsNyArMzMsNyBAQCBtZXNzYWdlcyAtPiBM
YXllclRyZWVDb29yZGluYXRvclByb3h5IHsKICAgICBEZXN0cm95RGlyZWN0bHlDb21wb3NpdGVk
SW1hZ2UoaW50NjRfdCBrZXkpCiAgICAgRGlkUmVuZGVyRnJhbWUoKQogICAgIERpZENoYW5nZVNj
cm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKQotICAgIFN5bmNDYW52YXMo
dWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhp
Y3NTdXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQorICAgIFN5bmNDYW52YXModWlu
dDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlVG9rZW4gdG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQogICAgIFNldExheWVyQW5p
bWF0ZWRPcGFjaXR5KHVpbnQzMl90IGlkLCBmbG9hdCBvcGFjaXR5KQogICAgIFNldExheWVyQW5p
bWF0ZWRUcmFuc2Zvcm0odWludDMyX3QgaWQsIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCBi
OTRjNjZiLi40NjE4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogICAgIG1fcGVuZGluZ1JlbmRlcmVk
Q29udGVudHNTY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9uOwogfQogCi12b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9u
dEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJm
YWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKIHsKICAgICBpZiAoY2FudmFz
U2l6ZS5pc0VtcHR5KCkgfHwgIW1fdGV4dHVyZU1hcHBlcikKICAgICAgICAgcmV0dXJuOwpAQCAt
MjA4LDcgKzIwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5
ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzCiAgICAgfSBlbHNlCiAgICAg
ICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT5zZWNvbmQ7CiAKLSAgICBjYW52YXNCYWNraW5n
U3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShncmFwaGljc1N1cmZhY2VUb2tlbiwgY2FudmFzU2l6
ZSwgZnJvbnRCdWZmZXIpOworICAgIGNhbnZhc0JhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJm
YWNlKHRva2VuLCBjYW52YXNTaXplLCBmcm9udEJ1ZmZlcik7CiAgICAgbGF5ZXItPnNldENvbnRl
bnRzVG9NZWRpYShjYW52YXNCYWNraW5nU3RvcmUuZ2V0KCkpOwogI2VuZGlmCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA0ZTQ1Njc4Li4wYTBjOWMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIyLDEzICsyMiwxMyBAQAogCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW5Mb29wLmg+CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbnRlbnRz
U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIHNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOwotICAgIHZv
aWQgc3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFz
U2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVy
KTsKKyAgICB2b2lkIHN5bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGNhbnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWlu
dDMyX3QgZnJvbnRCdWZmZXIpOwogCiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVu
ZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCBmMmFmZGI1
Li5mYjY2YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IG1fY2FudmFzUGxhdGZvcm1MYXllci0+Y29w
eVRvR3JhcGhpY3NTdXJmYWNlKCk7Ci0gICAgdWludDY0X3QgdG9rZW4gPSBtX2NhbnZhc1BsYXRm
b3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7
CiAKICAgICBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+c3luY0NhbnZhcyhtX2lk
LCBJbnRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpLCB0b2tlbiwgZnJvbnRC
dWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGY0ZWEyZmIuLjgzZTY0NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3Jt
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNp
bmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC02Miw3
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyRmlsdGVycyhXZWJM
YXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJikgPSAwOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oUVQpCi0gICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJm
YWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN5
bmNDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZl
cikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJBbmltYXRlZE9wYWNp
dHkoV2ViTGF5ZXJJRCwgZmxvYXQpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCBiMGM4Y2UzLi41ZmM2YWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
CkBAIC0zMDIsMTAgKzMwMiwxMCBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jTGF5
ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5ZQogICAgIG1fd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U2V0Q29tcG9z
aXRpbmdMYXllckNoaWxkcmVuKGlkLCBjaGlsZHJlbikpOwogfQogCi12b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZl
cikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwg
Y29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRv
a2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRy
dWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpTeW5jQ2FudmFzKGlkLCBjYW52YXNTaXplLCBncmFwaGljc1N1cmZhY2VUb2tlbiwgZnJv
bnRCdWZmZXIpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHk6OlN5bmNDYW52YXMoaWQsIGNhbnZhc1NpemUsIHRva2VuLCBmcm9udEJ1ZmZl
cikpOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggNmM2MWJiNi4uNTQ0OTkxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVcGRhdGVB
dGxhcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckNsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyRmlsdGVycyhXZWJMYXll
cklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY0NhbnZhcyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
YW52YXNTaXplLCB1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJvbnRC
dWZmZXIpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3QgZnJvbnRCdWZmZXIpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVycygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167306</attachid>
            <date>2012-10-05 04:46:42 -0700</date>
            <delta_ts>2012-10-05 06:53:02 -0700</delta_ts>
            <desc>patch for review. - rebased.</desc>
            <filename>98501_20121005-134410.patch</filename>
            <type>text/plain</type>
            <size>37033</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YzlhZDA5Li4xM2Q1MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG8gcmVwbGFjZSB1aW50NjRf
dCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0b2tlbiB0eXBlIGZvciBHcmFw
aGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1cmZhY2VUb2tlbi4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZSBmb3IgV2luZG93cyBhcyB3ZWxsLgorICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3Jt
IGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBhCisgICAgICAgIFdpbmRvd0lE
IChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9yIGluIGZ1dHVyZSB0d28gSEFO
RExFcyAoV2luZG93cykuCisgICAgICAgIFRoZSBzaW1wbGUgdWludDY0X3QgaXMgbm90IHN1ZmZp
Y2llbnQgYW55bW9yZSwgc2luY2UgYSBzaW5nbGUgSEFORExFIGluIHdpbmRvd3MKKyAgICAgICAg
Y2FuIGJlIDY0Yml0IGFscmVhZHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2Vu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpHcmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6aXNWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnRva2VuKToKKyAgICAg
ICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OlRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisKIDIwMTIt
MTAtMDQgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtN
YWNdIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHVzaW5n
IEFOR0xFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YS4uNDEyMTc4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yMTQzLDYgKzIxNDMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCA1NDhkMDE1Li41NTcyNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwotICAg
IHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CiAj
ZW5kaWYKIAogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKQEAgLTI5NSw3ICsyOTUs
NyBAQCB1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpCiAgICAgcmV0dXJuIGZyb250QnVmZmVyOwogfQogCi11aW50NjRfdCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKK0dyYXBoaWNzU3Vy
ZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSBjb25zdAogewogICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCmluZGV4IDlmZjM4ODEuLmMxNmEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25z
dCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtSW1w
b3J0KHNpemUsIGZsYWdzLCB0b2tlbik7CiB9CkBAIC0zNSw3ICszNSw3IEBAIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBHcmFwaGljCiAgICAgcmV0dXJuIHBsYXRmb3JtQ3JlYXRlKHNpemUsIGZsYWdzKTsKIH0K
IAotdWludDY0X3QgR3JhcGhpY3NTdXJmYWNlOjpleHBvcnRUb2tlbigpCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2VuKCkKIHsKICAgICByZXR1cm4gcGxh
dGZvcm1FeHBvcnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKaW5kZXggMGVlNjhjZi4uZTc4
ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg
R3JhcGhpY3NTdXJmYWNlX2gKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMzIsNyAr
MzMsOCBAQAogI2lmIE9TKERBUldJTikKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1
cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsK
LSNlbHNlCisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKIHR5cGVkZWYgdWludDMyX3QgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2U7CiAjZW5kaWYKIApAQCAtNjksMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50
U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCB0b2tlbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50
UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbUZyYW1lYnVmZmVyKHVpbnQz
Ml90IGZibywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spOwogICAgIHVpbnQzMl90IGZyb250QnVmZmVyKCk7CiAgICAgdWludDMyX3Qgc3dhcEJ1
ZmZlcnMoKTsKLSAgICB1aW50NjRfdCBleHBvcnRUb2tlbigpOworICAgIEdyYXBoaWNzU3VyZmFj
ZVRva2VuIGV4cG9ydFRva2VuKCk7CiAgICAgdWludDMyX3QgZ2V0VGV4dHVyZUlEKCk7CiAgICAg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYsIExv
Y2tPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPEltYWdlPiBjcmVhdGVSZWFkT25seUltYWdlKGNv
bnN0IEludFJlY3QmKTsKQEAgLTgzLDggKzg1LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBwbGF0Zm9ybUNyZWF0ZShjb25z
dCBJbnRTaXplJiwgRmxhZ3MpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gcGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCk7Ci0gICAg
dWludDY0X3QgcGxhdGZvcm1FeHBvcnQoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBwbGF0Zm9ybUV4
cG9ydCgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKICAgICB1aW50MzJfdCBwbGF0
Zm9ybUdldFRleHR1cmVJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmM2E1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZVRva2VuLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgR3JhcGhpY3NTdXJmYWNlVG9rZW5faAorI2RlZmluZSBHcmFwaGlj
c1N1cmZhY2VUb2tlbl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworI2lmIE9TKERBUldJTikgfHwg
T1MoTElOVVgpCit0eXBlZGVmIHVpbnQzMl90IEJ1ZmZlckhhbmRsZTsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbiB7CisKKyNpZiBP
UyhMSU5VWCkKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbih1aW50MzJfdCB3aW5kb3dJRCA9IDAp
CisgICAgICAgIDogZnJvbnRCdWZmZXJIYW5kbGUod2luZG93SUQpCisgICAgeyB9CisKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4gJnJocykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZSAhPSByaHMuZnJvbnRCdWZmZXJI
YW5kbGU7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICB9CisKKyNlbmRpZgorCisjaWYgT1MoREFS
V0lOKQorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKEJ1ZmZlckhhbmRsZSBmcm9udEJ1ZmZlciA9
IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0gMCkKKyAgICAgICAgOiBmcm9udEJ1ZmZlckhh
bmRsZShmcm9udEJ1ZmZlcikKKyAgICAgICAgLCBiYWNrQnVmZmVySGFuZGxlKGJhY2tCdWZmZXIp
CisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gJnJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoZnJvbnRCdWZmZXJIYW5kbGUg
IT0gcmhzLmZyb250QnVmZmVySGFuZGxlIHx8IGJhY2tCdWZmZXJIYW5kbGUgIT0gcmhzLmJhY2tC
dWZmZXJIYW5kbGUpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZnJvbnRCdWZmZXJIYW5kbGUgJiYgYmFja0J1ZmZlckhhbmRsZTsKKyAg
ICB9CisKKyAgICBCdWZmZXJIYW5kbGUgYmFja0J1ZmZlckhhbmRsZTsKKyNlbmRpZgorCisgICAg
QnVmZmVySGFuZGxlIGZyb250QnVmZmVySGFuZGxlOworfTsKKworfQorI2VuZGlmIC8vIFVTRShH
UkFQSElDU19TVVJGQUNFKQorCisjZW5kaWYgLy8gR3JhcGhpY3NTdXJmYWNlVG9rZW5faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dy
YXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCA4YTgzMjJkLi45NGMzMzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9t
YWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtNjQsMTggKzY0
LDEzIEBAIHN0YXRpYyB1aW50MzJfdCBjcmVhdGVUZXh0dXJlKElPU3VyZmFjZVJlZiBoYW5kbGUp
CiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c1N1cmZhY2VQcml2YXRlKHVpbnQ2NF90IHRva2VuKQorICAgIEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogICAgICAgICA6IG1fdG9rZW4o
dG9rZW4pCiAgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkKICAgICAgICAgLCBtX2Jh
Y2tCdWZmZXJUZXh0dXJlKDApCiAgICAgewotICAgICAgICAvLyBUaGUgdG9rZW4gY29udGFpbnMg
dGhlIElPU3VyZmFjZUlEIG9mIHRoZSBmaXN0IHN1cmZhY2UvYnVmZmVyIGluIHRoZSBmaXJzdCAz
MiBCaXQKLSAgICAgICAgLy8gYW5kIHRoZSBJT1N1cmZhY2VJRCBvZiB0aGUgc2Vjb25kIHN1cmZh
Y2UvYnVmZmVyIGluIHRoZSBzZWNvbmQgMzIgQml0LgotICAgICAgICB1aW50MzJfdCBmcm9udEJ1
ZmZlciA9IHRva2VuID4+IDMyOwotICAgICAgICB1aW50MzJfdCBiYWNrQnVmZmVyID0gdG9rZW4g
JiAweGZmZmY7Ci0KLSAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChmcm9u
dEJ1ZmZlcik7Ci0gICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChiYWNrQnVm
ZmVyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChtX3Rva2VuLmZy
b250QnVmZmVySGFuZGxlKTsKKyAgICAgICAgbV9iYWNrQnVmZmVyID0gSU9TdXJmYWNlTG9va3Vw
KG1fdG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CiAgICAgfQogCiAgICAgR3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdz
KQpAQCAtMTE5LDExICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZnJvbnRCdWZmZXIgPSBJ
T1N1cmZhY2VDcmVhdGUoZGljdCk7CiAgICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUNy
ZWF0ZShkaWN0KTsKIAotICAgICAgICB1aW50NjRfdCB0b2tlbiA9IElPU3VyZmFjZUdldElEKG1f
ZnJvbnRCdWZmZXIpOwotICAgICAgICB0b2tlbiA8PD0gMzI7Ci0gICAgICAgIHRva2VuIHw9IElP
U3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcik7Ci0KLSAgICAgICAgbV90b2tlbiA9IHRva2VuOwor
ICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oSU9TdXJmYWNlR2V0SUQobV9m
cm9udEJ1ZmZlciksIElPU3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcikpOwogICAgIH0KIAogICAg
IH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKQEAgLTE0OSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKTsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCB0b2tlbigpIGNvbnN0CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4o
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW47CiAgICAgfQpAQCAtMTg1LDEw
ICsxNzYsMTAgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBtX2JhY2tC
dWZmZXI7CiAgICAgdWludDMyX3QgbV9mcm9udEJ1ZmZlclRleHR1cmU7CiAgICAgdWludDMyX3Qg
bV9iYWNrQnVmZmVyVGV4dHVyZTsKLSAgICB1aW50NjRfdCBtX3Rva2VuOworICAgIEdyYXBoaWNz
U3VyZmFjZVRva2VuIG1fdG9rZW47CiB9OwogCi11aW50NjRfdCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtRXhwb3J0KCkKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1FeHBvcnQoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnRva2VuKCk7CiB9CkBAIC0y
NzYsNyArMjY3LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4gc3VyZmFj
ZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIHVpbnQ2NF90IHRv
a2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEdyYXBoaWNz
U3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBXZSBjdXJyZW50bHkgZGlzYWJsZSBzdXBw
b3J0IGZvciBDb3B5VG9UZXh0dXJlIG9uIE1hYywgYmVjYXVzZSB0aGlzIGlzIHVzZWQgZm9yIHNp
bmdsZSBidWZmZXJlZCBUaWxlcy4KICAgICAvLyBUaGUgc2luZ2xlIGJ1ZmZlcmVkIG5hdHVyZSBv
ZiB0aGlzIHJlcXVpcmVzIGEgY2FsbCB0byBnbEZsdXNoLCBhcyBkZXNjcmliZWQgaW4gcGxhdGZv
cm1Db3B5VG9UZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5k
ZXggMWJiZWI3My4uOTA1MThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0aG9kcyhHcmFw
aGljc1N1cmZhY2VQcml2YXRlKiBwKQogICAgIHJldHVybiByZXNvbHZlZDsKIH0KIAotdWludDY0
X3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCitHcmFwaGljc1N1cmZhY2VUb2tl
biBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKIHsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybVN1cmZhY2U7CisgICAgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKG1fcGxhdGZvcm1T
dXJmYWNlKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUdldFRleHR1
cmVJRCgpCkBAIC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNv
bnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBYMTEgZG9lcyBub3Qg
c3VwcG9ydCBDb3B5VG9UZXh0dXJlLCBzbyB3ZSBkbyBub3QgY3JlYXRlIGEgR3JhcGhpY3NTdXJm
YWNlIGlmIHRoaXMgaXMgcmVxdWVzdGVkLgogICAgIC8vIEdyYXBoaWNzU3VyZmFjZUdMWCB1c2Vz
IGFuIFhXaW5kb3cgYXMgbmF0aXZlIHN1cmZhY2UuIFRoaXMgb25lIGFsd2F5cyBoYXMgYSBmcm9u
dCBhbmQgYSBiYWNrIGJ1ZmZlci4KQEAgLTMzMCw3ICszMzAsNyBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXpl
JiBzaXplLAogICAgIGlmICghcmVzb2x2ZUdMTWV0aG9kcyhzdXJmYWNlLT5tX3ByaXZhdGUpKQog
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CiAKLSAgICBzdXJm
YWNlLT5tX3BsYXRmb3JtU3VyZmFjZSA9IHRva2VuOworICAgIHN1cmZhY2UtPm1fcGxhdGZvcm1T
dXJmYWNlID0gdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGU7CiAKICAgICBzdXJmYWNlLT5tX3ByaXZh
dGUtPmNyZWF0ZVBpeG1hcChzdXJmYWNlLT5tX3BsYXRmb3JtU3VyZmFjZSk7CiAgICAgc3VyZmFj
ZS0+bV9zaXplID0gc3VyZmFjZS0+bV9wcml2YXRlLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI1MzcyYy4uYjBhMjVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIFRleHR1
cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UodWludDY0X3Qg
Z3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcikKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNl
dEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tl
biwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKQogewog
ICAgIGlmIChncmFwaGljc1N1cmZhY2VUb2tlbiAhPSBtX2dyYXBoaWNzU3VyZmFjZVRva2VuKSB7
CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NT
dXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0U3VyZmFjZShQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gc3UKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhp
Y3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZ3JhcGhp
Y3NTdXJmYWNlID0gUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLSAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2VUb2tlbiA9IDA7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBHcmFw
aGljc1N1cmZhY2VUb2tlbigpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmgKaW5kZXggOWQwMDJiNC4uN2UzMmY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIGNs
YXNzIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9Ci0gICAgdm9pZCBzZXRHcmFwaGlj
c1N1cmZhY2UodWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1
cmZhY2VTaXplLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBzZXRHcmFwaGljc1N1
cmZhY2UoR3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1
aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U+IGdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNl
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqKTsKQEAgLTYyLDEwICs2Miw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKQogICAgICAgICA6IFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUoKQotICAgICAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkK
ICAgICAgICAgeyB9CiAKLSAgICB1aW50NjRfdCBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOworICAg
IEdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CiAgICAgSW50U2l6
ZSBtX2dyYXBoaWNzU3VyZmFjZVNpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaAppbmRleCAyMjkyZjRlLi45Yjk0ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllcl9oCiAjZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyX2gK
IAorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFw
aGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7
IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc1MDM1MTEuLmMzOWE0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMi0xMC0wNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBHcmFwaGljc1N1cmZhY2VUb2tlbiB0
byByZXBsYWNlIHVpbnQ2NF90IGFzIHRva2VuIHR5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODUwMQorCisgICAgICAgIFJlcGxhY2UgdGhlIHRv
a2VuIHR5cGUgZm9yIEdyYXBoaWNzU3VyZmFjZSB3aXRoIGEgbmV3IGNsYXNzIEdyYXBoaWNzU3Vy
ZmFjZVRva2VuLgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBpbXBsZW1l
bnQgR3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzIGFzIHdlbGwuCisgICAgICAgIERlcGVuZGlu
ZyBvbiB0aGUgcGxhdGZvcm0gYSBHcmFwaGljc1N1cmZhY2VUb2tlbiBtaWdodCBjb250YWluIGEK
KyAgICAgICAgV2luZG93SUQgKExpbnV4L0dMWCksIHR3byBJT1N1cmZhY2VJRHMgKE1hYykgb3Ig
aW4gZnV0dXJlIHR3byBIQU5ETEVzIChXaW5kb3dzKS4KKyAgICAgICAgVGhlIHNpbXBsZSB1aW50
NjRfdCBpcyBub3Qgc3VmZmljaWVudCBhbnltb3JlLCBzaW5jZSBhIHNpbmdsZSBIQU5ETEUgaW4g
d2luZG93cworICAgICAgICBjYW4gYmUgNjRiaXQgYWxyZWFkeS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZVN1cmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFu
ZGxlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChIYW5kbGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQyk6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnN5bmNDYW52YXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQ2FudmFzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
cjo6c3luY0NhbnZhcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3Jk
aW5hdG9yKToKKwogMjAxMi0xMC0wNSAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgQVBJIHRvIGNvdW50IHRoZSBtYXRjaGlu
ZyB0ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKaW5kZXgg
NDNiZDUyNS4uYmUwOTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc1N1cmZhY2VUb2tlbi5oPgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXJHTC5oIgpAQCAtMzIsOSArMzMsNiBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6
OkhhbmRsZSgpCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgOiBtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuKDApCi0jZW5kaWYKIHsKIH0KIApAQCAtNDQsNyArNDIsNyBAQCB2b2lkIFNoYXJl
YWJsZVN1cmZhY2U6OkhhbmRsZTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNvZGUobV9mbGFncyk7CiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4p
OwotICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZVRva2VuKQorICAgIGlmIChtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgZW5jb2Rl
ci0+ZW5jb2RlKG1fYml0bWFwSGFuZGxlKTsKQEAgLTU5LDcgKzU3LDcgQEAgYm9vbCBTaGFyZWFi
bGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIEhhbmRsZSYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pCisgICAgaWYgKGhh
bmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAjZW5kaWYKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShoYW5kbGUubV9iaXRtYXBIYW5k
bGUpKQpAQCAtMTUxLDcgKzE0OSw3IEBAIFNoYXJlYWJsZVN1cmZhY2U6On5TaGFyZWFibGVTdXJm
YWNlKCkKIFBhc3NSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gU2hhcmVhYmxlU3VyZmFjZTo6Y3Jl
YXRlKGNvbnN0IEhhbmRsZSYgaGFuZGxlKQogewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQot
ICAgIGlmIChoYW5kbGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSkgeworICAgIGlmIChoYW5kbGUu
Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKS5pc1ZhbGlkKCkpIHsKICAgICAgICAgUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gc3VyZmFjZSA9IEdyYXBoaWNzU3VyZmFjZTo6Y3JlYXRlKGhhbmRsZS5tX3Np
emUsIGhhbmRsZS5tX2ZsYWdzLCBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbik7CiAgICAg
ICAgIGlmIChzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWFi
bGVTdXJmYWNlKGhhbmRsZS5tX3NpemUsIGhhbmRsZS5tX2ZsYWdzLCBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4oc3VyZmFjZSkpKTsKQEAgLTE3MSw4ICsxNjksOCBAQCBib29sIFNoYXJlYWJs
ZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSkKICAgICBoYW5kbGUubV9mbGFn
cyA9IG1fZmxhZ3M7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBoYW5kbGUubV9n
cmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhpY3NTdXJmYWNlID8gbV9ncmFwaGljc1N1cmZh
Y2UtPmV4cG9ydFRva2VuKCkgOiAwOwotICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VU
b2tlbikKKyAgICBoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhpY3NTdXJm
YWNlID8gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCkgOiBHcmFwaGljc1N1cmZhY2VU
b2tlbigpOworICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYgKCFtX2JpdG1hcC0+Y3JlYXRl
SGFuZGxlKGhhbmRsZS5tX2JpdG1hcEhhbmRsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuaAppbmRleCBiNjg1YjA3Li41OThkYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKQEAgLTU1LDE0ICs1NSwxNCBAQCBwdWJsaWM6CiAgICAg
ICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBIYW5kbGUm
KTsKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICB1aW50NjRfdCBncmFwaGlj
c1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47IH0K
KyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9r
ZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOyB9CiAjZW5kaWYKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVTdXJmYWNlOwogICAg
ICAgICBtdXRhYmxlIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIG1fYml0bWFwSGFuZGxlOwogI2lm
IFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICB1aW50NjRfdCBtX2dyYXBoaWNzU3VyZmFj
ZVRva2VuOworICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNz
U3VyZmFjZVRva2VuOwogI2VuZGlmCiAgICAgICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwog
ICAgICAgICBTaGFyZWFibGVCaXRtYXA6OkZsYWdzIG1fZmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGNiZjYyNDkuLjllZDlj
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC01NSw2ICs1NSw5IEBACiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgogI2VuZGlmCisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2UuaD4KKyNlbmRpZgogI2Vu
ZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzk1LDYgKzc5OCwzNSBAQCBib29s
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsCiB9CiAjZW5kaWYKIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQordm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlVG9rZW4mIHRva2VuKQoreworI2lmIE9TKERBUldJTikKKyAgICBlbmNvZGVyLT5lbmNvZGVV
SW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQz
Mih0b2tlbi5iYWNrQnVmZmVySGFuZGxlKTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGVu
Y29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CisjZW5kaWYKK30K
KworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4mIHRva2VuKQoreworI2lmIE9TKERBUldJTikKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5iYWNrQnVmZmVySGFuZGxlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisjaWYgT1MoTElOVVgpCisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCisKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYjA4ZjExOC4uOGJiNjdhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtNzIsNiArNzIsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZsb2F0UG9pbnQzRDsKICAgICBjbGFz
cyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKICAgICBzdHJ1Y3QgTGVuZ3RoOworCisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCisgICAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVRva2VuOworI2VuZGlm
CiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC0yNTEsNiArMjU1LDEzIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4gewog
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zJik7CiB9OwogI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5k
aWYKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eS5jcHAKaW5kZXggNjIzYjBhOS4uMjMxZjg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTY2LDEyICs2NiwxMiBAQCB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcihpbnQgbGF5ZXJJRCwg
aW50IHRpbGVJRCwgY29ucwogewogICAgIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBzdXJmYWNl
OwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHVpbnQ2NF90IHRva2VuID0gdXBkYXRl
SW5mby5zdXJmYWNlSGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7Ci0gICAgaWYgKHRva2Vu
KSB7Ci0gICAgICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiA+
OjppdGVyYXRvciBpdCA9IG1fc3VyZmFjZXMuZmluZCh0b2tlbik7CisgICAgR3JhcGhpY3NTdXJm
YWNlVG9rZW4gdG9rZW4gPSB1cGRhdGVJbmZvLnN1cmZhY2VIYW5kbGUuZ3JhcGhpY3NTdXJmYWNl
VG9rZW4oKTsKKyAgICBpZiAodG9rZW4uaXNWYWxpZCgpKSB7CisgICAgICAgIEhhc2hNYXA8QnVm
ZmVySGFuZGxlLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPjo6aXRlcmF0b3IgaXQgPSBtX3N1
cmZhY2VzLmZpbmQodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOwogICAgICAgICBpZiAoaXQgPT0g
bV9zdXJmYWNlcy5lbmQoKSkgewogICAgICAgICAgICAgc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZh
Y2U6OmNyZWF0ZSh1cGRhdGVJbmZvLnN1cmZhY2VIYW5kbGUpOwotICAgICAgICAgICAgbV9zdXJm
YWNlcy5hZGQodG9rZW4sIHN1cmZhY2UpOworICAgICAgICAgICAgbV9zdXJmYWNlcy5hZGQodG9r
ZW4uZnJvbnRCdWZmZXJIYW5kbGUsIHN1cmZhY2UpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHN1cmZhY2UgPSBpdC0+c2Vjb25kOwogICAgIH0gZWxzZQpAQCAtMTgwLDkgKzE4MCw5IEBA
IHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJU
cmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uLCBtX3JlbmRlcmVyLmdldCgpLCBw
b3NpdGlvbikpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnN5bmNDYW52
YXModWludDMyX3QgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBo
aWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29uc3QgSW50U2l6ZSYgY2Fu
dmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9u
dEJ1ZmZlcikKIHsKLSAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6
c3luY0NhbnZhcywgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGNhbnZhc1NpemUsIGdyYXBoaWNzU3Vy
ZmFjZVRva2VuLCBmcm9udEJ1ZmZlcikpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVy
VHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzLCBtX3JlbmRlcmVyLmdldCgpLCBpZCwgY2FudmFzU2l6
ZSwgdG9rZW4sIGZyb250QnVmZmVyKSk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eTo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkuaAppbmRleCA5NDMzMzBjLi45OGNhMzU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVmlld3BvcnQo
KTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xs
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKLSAgICB2b2lkIHN5
bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUs
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7Cisg
ICAgdm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
YW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYsIHVpbnQzMl90
IGZyb250QnVmZmVyKTsKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwogICAgIExheWVy
VHJlZVJlbmRlcmVyKiBsYXllclRyZWVSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
ZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExheWVyQW5pbWF0ZWRPcGFjaXR5KHVpbnQzMl90LCBm
bG9hdCk7CkBAIC04OCw3ICs4OSw3IEBAIHByb3RlY3RlZDoKICAgICBmbG9hdCBtX2xhc3RTZW50
U2NhbGU7CiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3Rv
cjsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBtX3N1cmZhY2VzOworICAgIEhhc2hNYXA8QnVmZmVySGFu
ZGxlLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBtX3N1cmZhY2VzOwogI2VuZGlmCiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCBlMDk1NzQ2Li5hYWQyN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDcg
KzMzLDcgQEAgbWVzc2FnZXMgLT4gTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSB7CiAgICAgRGVz
dHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5KQogICAgIERpZFJlbmRlckZy
YW1lKFdlYkNvcmU6OkludFNpemUgY29udGVudHNTaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVy
ZWRSZWN0KQogICAgIERpZENoYW5nZVNjcm9sbFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBv
c2l0aW9uKQotICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2Fu
dmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVm
ZmVyKQorICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFz
U2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4sIHVpbnQzMl90IGZyb250
QnVmZmVyKQogICAgIFNldExheWVyQW5pbWF0ZWRPcGFjaXR5KHVpbnQzMl90IGlkLCBmbG9hdCBv
cGFjaXR5KQogICAgIFNldExheWVyQW5pbWF0ZWRUcmFuc2Zvcm0odWludDMyX3QgaWQsIFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmNwcAppbmRleCA1Yjk2MmRiLi42YjJlZDk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
KQogICAgIG1fcGVuZGluZ1JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbiA9IHBvc2l0aW9u
OwogfQogCi12b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3Vy
ZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFz
U2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1
ZmZlcikKIHsKICAgICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5KCkgfHwgIW1fdGV4dHVyZU1hcHBl
cikKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
Y2FudmFzCiAgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT5zZWNv
bmQ7CiAKLSAgICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShncmFwaGlj
c1N1cmZhY2VUb2tlbiwgY2FudmFzU2l6ZSwgZnJvbnRCdWZmZXIpOworICAgIGNhbnZhc0JhY2tp
bmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKHRva2VuLCBjYW52YXNTaXplLCBmcm9udEJ1ZmZl
cik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShjYW52YXNCYWNraW5nU3RvcmUuZ2V0
KCkpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCA5ZTk5
ZWYwLi5hM2I3MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKQEAgLTIyLDEz
ICsyMiwxMyBAQAogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkJh
Y2tpbmdTdG9yZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZVN1cmZhY2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXpl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
ICAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9zaXRpb24pOwotICAgIHZvaWQgc3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9r
ZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2b2lkIHN5bmNDYW52YXModWludDMyX3Qg
aWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwogCiAgICAgdm9pZCBk
ZXRhY2goKTsKICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLmNwcAppbmRleCBjZTU0OGIwLi4wMTY4NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzMCw3
ICs1MzAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IG1f
Y2FudmFzUGxhdGZvcm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7Ci0gICAgdWludDY0
X3QgdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7
CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIt
PmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CiAKICAgICBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ckNsaWVudC0+c3luY0NhbnZhcyhtX2lkLCBJbnRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCku
aGVpZ2h0KCkpLCB0b2tlbiwgZnJvbnRCdWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDE3YTQz
YTUuLjU4NmM2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgi
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCkBAIC02Miw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3luY0xheWVyRmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJikgPSAwOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgdmlydHVhbCB2b2lk
IHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6
ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgPSAwOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkoV2ViTGF5ZXJJRCwgZmxvYXQpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRl
eCAyNzJkZjA5Li5lNGRjMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC0zMDUsMTAgKzMwNSwxMCBAQCB2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yOjpzeW5jTGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBW
ZWN0b3I8V2ViTGF5ZQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eTo6U2V0Q29tcG9zaXRpbmdMYXllckNoaWxkcmVuKGlkLCBjaGlsZHJlbikp
OwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQg
aWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRv
a2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnN5
bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3Qg
R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKIHsKICAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5jQ2FudmFzKGlkLCBjYW52YXNTaXplLCBn
cmFwaGljc1N1cmZhY2VUb2tlbiwgZnJvbnRCdWZmZXIpKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlN5bmNDYW52YXMoaWQsIGNhbnZh
c1NpemUsIHRva2VuLCBmcm9udEJ1ZmZlcikpOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgK
aW5kZXggNzRlMjBhZS4uYzk0ZmM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVXBk
YXRlQXRsYXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtODgsNyArODksNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBz
eW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUs
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNl
VG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hMYXllcihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY0ZpeGVkTGF5ZXJzKCk7Cg==
</data>
<flag name="commit-queue"
          id="179949"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167320</attachid>
            <date>2012-10-05 06:53:02 -0700</date>
            <delta_ts>2012-10-05 08:21:54 -0700</delta_ts>
            <desc>patch for review. - fixed compilation without use_graphics_surface.</desc>
            <filename>98398_20121005-154927.patch</filename>
            <type>text/plain</type>
            <size>37695</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YzlhZDA5Li4xM2Q1MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG8gcmVwbGFjZSB1aW50NjRf
dCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0b2tlbiB0eXBlIGZvciBHcmFw
aGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1cmZhY2VUb2tlbi4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZSBmb3IgV2luZG93cyBhcyB3ZWxsLgorICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3Jt
IGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBhCisgICAgICAgIFdpbmRvd0lE
IChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9yIGluIGZ1dHVyZSB0d28gSEFO
RExFcyAoV2luZG93cykuCisgICAgICAgIFRoZSBzaW1wbGUgdWludDY0X3QgaXMgbm90IHN1ZmZp
Y2llbnQgYW55bW9yZSwgc2luY2UgYSBzaW5nbGUgSEFORExFIGluIHdpbmRvd3MKKyAgICAgICAg
Y2FuIGJlIDY0Yml0IGFscmVhZHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2Vu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpHcmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6aXNWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnRva2VuKToKKyAgICAg
ICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OlRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisKIDIwMTIt
MTAtMDQgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtN
YWNdIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHVzaW5n
IEFOR0xFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YS4uNDEyMTc4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yMTQzLDYgKzIxNDMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCBkOGMxYTY5Li5mYmRjMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwotICAg
IHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CiAj
ZW5kaWYKIAogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKQEAgLTI5Niw3ICsyOTYs
NyBAQCB1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpCiAgICAgcmV0dXJuIGZyb250QnVmZmVyOwogfQogCi11aW50NjRfdCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKK0dyYXBoaWNzU3Vy
ZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSBjb25zdAogewogICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCmluZGV4IDlmZjM4ODEuLmMxNmEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25z
dCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtSW1w
b3J0KHNpemUsIGZsYWdzLCB0b2tlbik7CiB9CkBAIC0zNSw3ICszNSw3IEBAIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBHcmFwaGljCiAgICAgcmV0dXJuIHBsYXRmb3JtQ3JlYXRlKHNpemUsIGZsYWdzKTsKIH0K
IAotdWludDY0X3QgR3JhcGhpY3NTdXJmYWNlOjpleHBvcnRUb2tlbigpCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2VuKCkKIHsKICAgICByZXR1cm4gcGxh
dGZvcm1FeHBvcnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKaW5kZXggMGVlNjhjZi4uZTc4
ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg
R3JhcGhpY3NTdXJmYWNlX2gKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMzIsNyAr
MzMsOCBAQAogI2lmIE9TKERBUldJTikKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1
cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsK
LSNlbHNlCisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKIHR5cGVkZWYgdWludDMyX3QgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2U7CiAjZW5kaWYKIApAQCAtNjksMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50
U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCB0b2tlbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50
UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbUZyYW1lYnVmZmVyKHVpbnQz
Ml90IGZibywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spOwogICAgIHVpbnQzMl90IGZyb250QnVmZmVyKCk7CiAgICAgdWludDMyX3Qgc3dhcEJ1
ZmZlcnMoKTsKLSAgICB1aW50NjRfdCBleHBvcnRUb2tlbigpOworICAgIEdyYXBoaWNzU3VyZmFj
ZVRva2VuIGV4cG9ydFRva2VuKCk7CiAgICAgdWludDMyX3QgZ2V0VGV4dHVyZUlEKCk7CiAgICAg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYsIExv
Y2tPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPEltYWdlPiBjcmVhdGVSZWFkT25seUltYWdlKGNv
bnN0IEludFJlY3QmKTsKQEAgLTgzLDggKzg1LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBwbGF0Zm9ybUNyZWF0ZShjb25z
dCBJbnRTaXplJiwgRmxhZ3MpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gcGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCk7Ci0gICAg
dWludDY0X3QgcGxhdGZvcm1FeHBvcnQoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBwbGF0Zm9ybUV4
cG9ydCgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKICAgICB1aW50MzJfdCBwbGF0
Zm9ybUdldFRleHR1cmVJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlmM2E1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZVRva2VuLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgR3JhcGhpY3NTdXJmYWNlVG9rZW5faAorI2RlZmluZSBHcmFwaGlj
c1N1cmZhY2VUb2tlbl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworI2lmIE9TKERBUldJTikgfHwg
T1MoTElOVVgpCit0eXBlZGVmIHVpbnQzMl90IEJ1ZmZlckhhbmRsZTsKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbiB7CisKKyNpZiBP
UyhMSU5VWCkKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbih1aW50MzJfdCB3aW5kb3dJRCA9IDAp
CisgICAgICAgIDogZnJvbnRCdWZmZXJIYW5kbGUod2luZG93SUQpCisgICAgeyB9CisKKyAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4gJnJocykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZSAhPSByaHMuZnJvbnRCdWZmZXJI
YW5kbGU7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICB9CisKKyNlbmRpZgorCisjaWYgT1MoREFS
V0lOKQorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKEJ1ZmZlckhhbmRsZSBmcm9udEJ1ZmZlciA9
IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0gMCkKKyAgICAgICAgOiBmcm9udEJ1ZmZlckhh
bmRsZShmcm9udEJ1ZmZlcikKKyAgICAgICAgLCBiYWNrQnVmZmVySGFuZGxlKGJhY2tCdWZmZXIp
CisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gJnJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoZnJvbnRCdWZmZXJIYW5kbGUg
IT0gcmhzLmZyb250QnVmZmVySGFuZGxlIHx8IGJhY2tCdWZmZXJIYW5kbGUgIT0gcmhzLmJhY2tC
dWZmZXJIYW5kbGUpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZnJvbnRCdWZmZXJIYW5kbGUgJiYgYmFja0J1ZmZlckhhbmRsZTsKKyAg
ICB9CisKKyAgICBCdWZmZXJIYW5kbGUgYmFja0J1ZmZlckhhbmRsZTsKKyNlbmRpZgorCisgICAg
QnVmZmVySGFuZGxlIGZyb250QnVmZmVySGFuZGxlOworfTsKKworfQorI2VuZGlmIC8vIFVTRShH
UkFQSElDU19TVVJGQUNFKQorCisjZW5kaWYgLy8gR3JhcGhpY3NTdXJmYWNlVG9rZW5faApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dy
YXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCA4YTgzMjJkLi45NGMzMzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9t
YWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAtNjQsMTggKzY0
LDEzIEBAIHN0YXRpYyB1aW50MzJfdCBjcmVhdGVUZXh0dXJlKElPU3VyZmFjZVJlZiBoYW5kbGUp
CiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIHB1YmxpYzoKLSAgICBHcmFwaGlj
c1N1cmZhY2VQcml2YXRlKHVpbnQ2NF90IHRva2VuKQorICAgIEdyYXBoaWNzU3VyZmFjZVByaXZh
dGUoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogICAgICAgICA6IG1fdG9rZW4o
dG9rZW4pCiAgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkKICAgICAgICAgLCBtX2Jh
Y2tCdWZmZXJUZXh0dXJlKDApCiAgICAgewotICAgICAgICAvLyBUaGUgdG9rZW4gY29udGFpbnMg
dGhlIElPU3VyZmFjZUlEIG9mIHRoZSBmaXN0IHN1cmZhY2UvYnVmZmVyIGluIHRoZSBmaXJzdCAz
MiBCaXQKLSAgICAgICAgLy8gYW5kIHRoZSBJT1N1cmZhY2VJRCBvZiB0aGUgc2Vjb25kIHN1cmZh
Y2UvYnVmZmVyIGluIHRoZSBzZWNvbmQgMzIgQml0LgotICAgICAgICB1aW50MzJfdCBmcm9udEJ1
ZmZlciA9IHRva2VuID4+IDMyOwotICAgICAgICB1aW50MzJfdCBiYWNrQnVmZmVyID0gdG9rZW4g
JiAweGZmZmY7Ci0KLSAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChmcm9u
dEJ1ZmZlcik7Ci0gICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChiYWNrQnVm
ZmVyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cChtX3Rva2VuLmZy
b250QnVmZmVySGFuZGxlKTsKKyAgICAgICAgbV9iYWNrQnVmZmVyID0gSU9TdXJmYWNlTG9va3Vw
KG1fdG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CiAgICAgfQogCiAgICAgR3JhcGhpY3NTdXJmYWNl
UHJpdmF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGZsYWdz
KQpAQCAtMTE5LDExICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZnJvbnRCdWZmZXIgPSBJ
T1N1cmZhY2VDcmVhdGUoZGljdCk7CiAgICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUNy
ZWF0ZShkaWN0KTsKIAotICAgICAgICB1aW50NjRfdCB0b2tlbiA9IElPU3VyZmFjZUdldElEKG1f
ZnJvbnRCdWZmZXIpOwotICAgICAgICB0b2tlbiA8PD0gMzI7Ci0gICAgICAgIHRva2VuIHw9IElP
U3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcik7Ci0KLSAgICAgICAgbV90b2tlbiA9IHRva2VuOwor
ICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oSU9TdXJmYWNlR2V0SUQobV9m
cm9udEJ1ZmZlciksIElPU3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcikpOwogICAgIH0KIAogICAg
IH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKQEAgLTE0OSw3ICsxNDAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKTsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCB0b2tlbigpIGNvbnN0CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4o
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW47CiAgICAgfQpAQCAtMTg1LDEw
ICsxNzYsMTAgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZSBtX2JhY2tC
dWZmZXI7CiAgICAgdWludDMyX3QgbV9mcm9udEJ1ZmZlclRleHR1cmU7CiAgICAgdWludDMyX3Qg
bV9iYWNrQnVmZmVyVGV4dHVyZTsKLSAgICB1aW50NjRfdCBtX3Rva2VuOworICAgIEdyYXBoaWNz
U3VyZmFjZVRva2VuIG1fdG9rZW47CiB9OwogCi11aW50NjRfdCBHcmFwaGljc1N1cmZhY2U6OnBs
YXRmb3JtRXhwb3J0KCkKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1FeHBvcnQoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnRva2VuKCk7CiB9CkBAIC0y
NzYsNyArMjY3LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4gc3VyZmFj
ZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxh
dGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIHVpbnQ2NF90IHRv
a2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZv
cm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0IEdyYXBoaWNz
U3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBXZSBjdXJyZW50bHkgZGlzYWJsZSBzdXBw
b3J0IGZvciBDb3B5VG9UZXh0dXJlIG9uIE1hYywgYmVjYXVzZSB0aGlzIGlzIHVzZWQgZm9yIHNp
bmdsZSBidWZmZXJlZCBUaWxlcy4KICAgICAvLyBUaGUgc2luZ2xlIGJ1ZmZlcmVkIG5hdHVyZSBv
ZiB0aGlzIHJlcXVpcmVzIGEgY2FsbCB0byBnbEZsdXNoLCBhcyBkZXNjcmliZWQgaW4gcGxhdGZv
cm1Db3B5VG9UZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKaW5k
ZXggMWJiZWI3My4uOTA1MThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0aG9kcyhHcmFw
aGljc1N1cmZhY2VQcml2YXRlKiBwKQogICAgIHJldHVybiByZXNvbHZlZDsKIH0KIAotdWludDY0
X3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCitHcmFwaGljc1N1cmZhY2VUb2tl
biBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKIHsKLSAgICByZXR1cm4gbV9wbGF0
Zm9ybVN1cmZhY2U7CisgICAgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKG1fcGxhdGZvcm1T
dXJmYWNlKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUdldFRleHR1
cmVJRCgpCkBAIC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICBy
ZXR1cm4gc3VyZmFjZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNz
U3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3Ms
IHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNv
bnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBYMTEgZG9lcyBub3Qg
c3VwcG9ydCBDb3B5VG9UZXh0dXJlLCBzbyB3ZSBkbyBub3QgY3JlYXRlIGEgR3JhcGhpY3NTdXJm
YWNlIGlmIHRoaXMgaXMgcmVxdWVzdGVkLgogICAgIC8vIEdyYXBoaWNzU3VyZmFjZUdMWCB1c2Vz
IGFuIFhXaW5kb3cgYXMgbmF0aXZlIHN1cmZhY2UuIFRoaXMgb25lIGFsd2F5cyBoYXMgYSBmcm9u
dCBhbmQgYSBiYWNrIGJ1ZmZlci4KQEAgLTMzMCw3ICszMzAsNyBAQCBQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXpl
JiBzaXplLAogICAgIGlmICghcmVzb2x2ZUdMTWV0aG9kcyhzdXJmYWNlLT5tX3ByaXZhdGUpKQog
ICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CiAKLSAgICBzdXJm
YWNlLT5tX3BsYXRmb3JtU3VyZmFjZSA9IHRva2VuOworICAgIHN1cmZhY2UtPm1fcGxhdGZvcm1T
dXJmYWNlID0gdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGU7CiAKICAgICBzdXJmYWNlLT5tX3ByaXZh
dGUtPmNyZWF0ZVBpeG1hcChzdXJmYWNlLT5tX3BsYXRmb3JtU3VyZmFjZSk7CiAgICAgc3VyZmFj
ZS0+bV9zaXplID0gc3VyZmFjZS0+bV9wcml2YXRlLT5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI1MzcyYy4uYjBhMjVkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIFRleHR1
cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UodWludDY0X3Qg
Z3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcikKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNl
dEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tl
biwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKQogewog
ICAgIGlmIChncmFwaGljc1N1cmZhY2VUb2tlbiAhPSBtX2dyYXBoaWNzU3VyZmFjZVRva2VuKSB7
CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NT
dXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0U3VyZmFjZShQYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gc3UKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhp
Y3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZ3JhcGhp
Y3NTdXJmYWNlID0gUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLSAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2VUb2tlbiA9IDA7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBHcmFw
aGljc1N1cmZhY2VUb2tlbigpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmgKaW5kZXggOWQwMDJiNC4uN2UzMmY4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIGNs
YXNzIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9Ci0gICAgdm9pZCBzZXRHcmFwaGlj
c1N1cmZhY2UodWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1
cmZhY2VTaXplLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBzZXRHcmFwaGljc1N1
cmZhY2UoR3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXplLCB1
aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2U+IGdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNl
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcios
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJp
dG1hcFRleHR1cmUqKTsKQEAgLTYyLDEwICs2Miw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKQogICAgICAgICA6IFRleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUoKQotICAgICAgICAsIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkK
ICAgICAgICAgeyB9CiAKLSAgICB1aW50NjRfdCBtX2dyYXBoaWNzU3VyZmFjZVRva2VuOworICAg
IEdyYXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CiAgICAgSW50U2l6
ZSBtX2dyYXBoaWNzU3VyZmFjZVNpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXIuaAppbmRleCAyMjkyZjRlLi45Yjk0ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMjAsNiArMjAsNyBAQAogI2lmbmRlZiBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllcl9oCiAjZGVmaW5lIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyX2gK
IAorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyBy
ZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFw
aGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7
IH0KICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDk5MTYwOTguLmM5ZThkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSw1MiBAQAogMjAxMi0xMC0wNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Vi
a2l0Lm9yZz4KIAorICAgICAgICBbUXRdIEltcGxlbWVudCBHcmFwaGljc1N1cmZhY2VUb2tlbiB0
byByZXBsYWNlIHVpbnQ2NF90IGFzIHRva2VuIHR5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODUwMQorCisgICAgICAgIFJlcGxhY2UgdGhlIHRv
a2VuIHR5cGUgZm9yIEdyYXBoaWNzU3VyZmFjZSB3aXRoIGEgbmV3IGNsYXNzIEdyYXBoaWNzU3Vy
ZmFjZVRva2VuLgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBpbXBsZW1l
bnQgR3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzIGFzIHdlbGwuCisgICAgICAgIERlcGVuZGlu
ZyBvbiB0aGUgcGxhdGZvcm0gYSBHcmFwaGljc1N1cmZhY2VUb2tlbiBtaWdodCBjb250YWluIGEK
KyAgICAgICAgV2luZG93SUQgKExpbnV4L0dMWCksIHR3byBJT1N1cmZhY2VJRHMgKE1hYykgb3Ig
aW4gZnV0dXJlIHR3byBIQU5ETEVzIChXaW5kb3dzKS4KKyAgICAgICAgVGhlIHNpbXBsZSB1aW50
NjRfdCBpcyBub3Qgc3VmZmljaWVudCBhbnltb3JlLCBzaW5jZSBhIHNpbmdsZSBIQU5ETEUgaW4g
d2luZG93cworICAgICAgICBjYW4gYmUgNjRiaXQgYWxyZWFkeS4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVTdXJmYWNl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmRlY29kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZUhhbmRsZSk6CisgICAgICAgICogU2hhcmVkL1No
YXJlYWJsZVN1cmZhY2UuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFu
ZGxlOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChIYW5kbGUpOgorICAgICAgICAq
IFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQyk6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OnVwZGF0ZVRpbGVGb3JMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnN5bmNDYW52YXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaDoKKyAg
ICAgICAgKExheWVyVHJlZVJlbmRlcmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jQ2FudmFzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRv
cjo6c3luY0NhbnZhcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3Jk
aW5hdG9yKToKKworMjAxMi0xMC0wNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4K
KwogICAgICAgICBbUXRdIFByb2Nlc3NMYXVuY2hlclF0IHNob3VsZCB1c2UgUVN0cmluZ0xpdGVy
YWwgZm9yIHNlcnZpY2VOYW1lLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTgzOTgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1No
YXJlYWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZh
Y2UuY3BwCmluZGV4IDQzYmQ1MjUuLmJlMDkzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlU3VyZmFjZS5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KIAogI2lmIFVTRShURVhUVVJFX01B
UFBFUikKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKQEAgLTMyLDkgKzMzLDYgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU2hhcmVhYmxlU3Vy
ZmFjZTo6SGFuZGxlOjpIYW5kbGUoKQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIDog
bV9ncmFwaGljc1N1cmZhY2VUb2tlbigwKQotI2VuZGlmCiB7CiB9CiAKQEAgLTQ0LDcgKzQyLDcg
QEAgdm9pZCBTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1fZmxhZ3MpOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGVuY29kZXItPmVuY29kZShtX2dyYXBoaWNz
U3VyZmFjZVRva2VuKTsKLSAgICBpZiAobV9ncmFwaGljc1N1cmZhY2VUb2tlbikKKyAgICBpZiAo
bV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgogICAgIGVuY29kZXItPmVuY29kZShtX2JpdG1hcEhhbmRsZSk7CkBAIC01OSw3ICs1Nyw3IEBA
IGJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBIYW5kbGUmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2Vu
KQorICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tlbi5pc1ZhbGlkKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaGFuZGxl
Lm1fYml0bWFwSGFuZGxlKSkKQEAgLTE1MSw3ICsxNDksNyBAQCBTaGFyZWFibGVTdXJmYWNlOjp+
U2hhcmVhYmxlU3VyZmFjZSgpCiBQYXNzUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+IFNoYXJlYWJs
ZVN1cmZhY2U6OmNyZWF0ZShjb25zdCBIYW5kbGUmIGhhbmRsZSkKIHsKICNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKLSAgICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkpIHsKKyAg
ICBpZiAoaGFuZGxlLmdyYXBoaWNzU3VyZmFjZVRva2VuKCkuaXNWYWxpZCgpKSB7CiAgICAgICAg
IFJlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UgPSBHcmFwaGljc1N1cmZhY2U6OmNyZWF0
ZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNl
VG9rZW4pOwogICAgICAgICBpZiAoc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgU2hhcmVhYmxlU3VyZmFjZShoYW5kbGUubV9zaXplLCBoYW5kbGUubV9mbGFncywgUGFz
c1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KHN1cmZhY2UpKSk7CkBAIC0xNzEsOCArMTY5LDggQEAg
Ym9vbCBTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVIYW5kbGUoSGFuZGxlJiBoYW5kbGUpCiAgICAg
aGFuZGxlLm1fZmxhZ3MgPSBtX2ZsYWdzOwogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0g
ICAgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBtX2dyYXBoaWNzU3VyZmFjZSA/IG1f
Z3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpIDogMDsKLSAgICBpZiAoaGFuZGxlLm1fZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4pCisgICAgaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4gPSBt
X2dyYXBoaWNzU3VyZmFjZSA/IG1fZ3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpIDogR3Jh
cGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW4uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIGlmICghbV9i
aXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUubV9iaXRtYXBIYW5kbGUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKaW5kZXggYjY4NWIwNy4uNTk4ZGM1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCkBAIC01NSwxNCArNTUsMTQgQEAg
cHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiwgSGFuZGxlJik7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgdWlu
dDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuOyB9CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBo
aWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsg
fQogI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxl
U3VyZmFjZTsKICAgICAgICAgbXV0YWJsZSBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBtX2JpdG1h
cEhhbmRsZTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICAgICAgdWludDY0X3QgbV9n
cmFwaGljc1N1cmZhY2VUb2tlbjsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4gbV9ncmFwaGljc1N1cmZhY2VUb2tlbjsKICNlbmRpZgogICAgICAgICBXZWJDb3JlOjpJbnRT
aXplIG1fc2l6ZTsKICAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpGbGFncyBtX2ZsYWdzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBj
YmY2MjQ5Li45ZWQ5YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtNTUsNiArNTUsOSBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVS
UykKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KICNlbmRpZgorI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlLmg+
CisjZW5kaWYKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTc5NSw2ICs3
OTgsMzUgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogfQogI2VuZGlmCiAKKyNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VUb2tlbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYKKyNpZiBPUyhM
SU5VWCkKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUp
OworI2VuZGlmCit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VUb2tlbj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZl
ckhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNl
bmRpZgorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGIwOGYxMTguLjhiYjY3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTcyLDYgKzcyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGbG9hdFBvaW50
M0Q7CiAgICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAgICAgc3RydWN0IExlbmd0aDsK
KworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VU
b2tlbjsKKyNlbmRpZgogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpAQCAtMjUxLDYgKzI1
NSwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbnM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwogfTsKICNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBo
aWNzU3VyZmFjZVRva2VuPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2Vu
Jik7Cit9OworI2VuZGlmCiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IDYyM2IwYTkuLmE5ZjFjMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC02NiwxMiArNjYs
MTIgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIo
aW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnMKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlU3Vy
ZmFjZT4gc3VyZmFjZTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICB1aW50NjRfdCB0
b2tlbiA9IHVwZGF0ZUluZm8uc3VyZmFjZUhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpOwot
ICAgIGlmICh0b2tlbikgewotICAgICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2hhcmVh
YmxlU3VyZmFjZT4gPjo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodG9rZW4pOworICAg
IEdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuID0gdXBkYXRlSW5mby5zdXJmYWNlSGFuZGxlLmdy
YXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgaWYgKHRva2VuLmlzVmFsaWQoKSkgeworICAgICAg
ICBIYXNoTWFwPEJ1ZmZlckhhbmRsZSwgUmVmUHRyPFNoYXJlYWJsZVN1cmZhY2U+ID46Oml0ZXJh
dG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKICAgICAg
ICAgaWYgKGl0ID09IG1fc3VyZmFjZXMuZW5kKCkpIHsKICAgICAgICAgICAgIHN1cmZhY2UgPSBT
aGFyZWFibGVTdXJmYWNlOjpjcmVhdGUodXBkYXRlSW5mby5zdXJmYWNlSGFuZGxlKTsKLSAgICAg
ICAgICAgIG1fc3VyZmFjZXMuYWRkKHRva2VuLCBzdXJmYWNlKTsKKyAgICAgICAgICAgIG1fc3Vy
ZmFjZXMuYWRkKHRva2VuLmZyb250QnVmZmVySGFuZGxlLCBzdXJmYWNlKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBzdXJmYWNlID0gaXQtPnNlY29uZDsKICAgICB9IGVsc2UKQEAgLTE4
MCwxMCArMTgwLDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdl
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uCiAgICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uLCBtX3Jl
bmRlcmVyLmdldCgpLCBwb3NpdGlvbikpOwogfQogCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHk6OnN5bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUs
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6
c3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3Qg
R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKIHsKLSAg
ICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcywgbV9y
ZW5kZXJlci5nZXQoKSwgaWQsIGNhbnZhc1NpemUsIGdyYXBoaWNzU3VyZmFjZVRva2VuLCBmcm9u
dEJ1ZmZlcikpOworICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpz
eW5jQ2FudmFzLCBtX3JlbmRlcmVyLmdldCgpLCBpZCwgY2FudmFzU2l6ZSwgdG9rZW4sIGZyb250
QnVmZmVyKSk7CiB9CisjZW5kaWYKIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvclByb3h5Ojpw
dXJnZUJhY2tpbmdTdG9yZXMoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IDk0MzMzMGMuLmFkNzY4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJXZWJMYXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+
CkBAIC03Myw3ICs3NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCk7CiAg
ICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7Ci0gICAgdm9pZCBzeW5jQ2Fu
dmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCB1aW50
NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpOworI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQorICAgIHZvaWQgc3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisjZW5kaWYKICAgICB2b2lkIHB1
cmdlQmFja2luZ1N0b3JlcygpOwogICAgIExheWVyVHJlZVJlbmRlcmVyKiBsYXllclRyZWVSZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXIuZ2V0KCk7IH0KICAgICB2b2lkIHNldExh
eWVyQW5pbWF0ZWRPcGFjaXR5KHVpbnQzMl90LCBmbG9hdCk7CkBAIC04OCw3ICs5MSw3IEBAIHBy
b3RlY3RlZDoKICAgICBmbG9hdCBtX2xhc3RTZW50U2NhbGU7CiAgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvcjsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4gPiBtX3N1
cmZhY2VzOworICAgIEhhc2hNYXA8QnVmZmVySGFuZGxlLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gPiBtX3N1cmZhY2VzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMDk1NzQ2Li5i
NzM5NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDcgKzMzLDkgQEAgbWVzc2FnZXMgLT4gTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eSB7CiAgICAgRGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdl
KGludDY0X3Qga2V5KQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVu
dHNTaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQogICAgIERpZENoYW5nZVNjcm9s
bFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKQotICAgIFN5bmNDYW52YXModWlu
dDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NT
dXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQorI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQorICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFz
U2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4sIHVpbnQzMl90IGZyb250
QnVmZmVyKQorI2VuZGlmCiAgICAgU2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QgaWQs
IGZsb2F0IG9wYWNpdHkpCiAgICAgU2V0TGF5ZXJBbmltYXRlZFRyYW5zZm9ybSh1aW50MzJfdCBp
ZCwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDViOTYyZGIuLjVkOGQ2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTE5MSwxMiArMTkxLDEyIEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKICAgICBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb24g
PSBwb3NpdGlvbjsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyhXZWJM
YXllcklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCB1aW50NjRfdCBn
cmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKFdlYkxheWVy
SUQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IEdyYXBoaWNz
U3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCiB7CiAgICAgaWYgKGNh
bnZhc1NpemUuaXNFbXB0eSgpIHx8ICFtX3RleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsK
IAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKQEAgLTIwOCwxMCArMjA4LDEw
IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzCiAgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhc0Jh
Y2tpbmdTdG9yZSA9IGl0LT5zZWNvbmQ7CiAKLSAgICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdy
YXBoaWNzU3VyZmFjZShncmFwaGljc1N1cmZhY2VUb2tlbiwgY2FudmFzU2l6ZSwgZnJvbnRCdWZm
ZXIpOworICAgIGNhbnZhc0JhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKHRva2VuLCBj
YW52YXNTaXplLCBmcm9udEJ1ZmZlcik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShj
YW52YXNCYWNraW5nU3RvcmUuZ2V0KCkpOwotI2VuZGlmCiB9CisjZW5kaWYKIAogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0
b3I8V2ViTGF5ZXJJRD4mIGNoaWxkSURzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKaW5kZXggOWU5OWVmMC4uMGE2YWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oCkBAIC0yMiwxMyArMjIsMTMgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJXZWJM
YXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAtNjgsNyAr
NjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKLSAgICB2b2lkIHN5bmNDYW52YXModWludDMy
X3QgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBo
aWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCisgICAgdm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tl
biYsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkZXRhY2goKTsK
ICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCBjZTU0OGIwLi4wMTY4NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IG1fY2FudmFzUGxh
dGZvcm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7Ci0gICAgdWludDY0X3QgdG9rZW4g
PSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNz
U3VyZmFjZVRva2VuKCk7CiAKICAgICBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+
c3luY0NhbnZhcyhtX2lkLCBJbnRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkp
LCB0b2tlbiwgZnJvbnRCdWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDE3YTQzYTUuLjQxOWI1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpID0gMDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFFUKQot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcikgPSAwOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNh
bnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3Qg
ZnJvbnRCdWZmZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5p
bWF0ZWRPcGFjaXR5KFdlYkxheWVySUQsIGZsb2F0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjcyZGYwOS4uNjM3
MzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmNwcApAQCAtMzA1LDExICszMDUsMTMgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRv
cjo6c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWUK
ICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0KIAotdm9pZCBM
YXllclRyZWVDb29yZGluYXRvcjo6c3luY0NhbnZhcyhXZWJMYXllcklEIGlkLCBjb25zdCBJbnRT
aXplJiBjYW52YXNTaXplLCB1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3Qg
ZnJvbnRCdWZmZXIpCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRC
dWZmZXIpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U3luY0NhbnZhcyhpZCwg
Y2FudmFzU2l6ZSwgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVyKSk7CisgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5jQ2Fu
dmFzKGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKIH0KKyNlbmRpZgogCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0xh
eWVyRmlsdGVycyhXZWJMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgK
aW5kZXggNzRlMjBhZS4uZGJlYmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVXBk
YXRlQXRsYXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtODgsNyArODksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBz
eW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUs
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZF
UlJJREU7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHN5bmND
YW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikg
T1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVy
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jRml4ZWRMYXllcnMoKTsK
</data>
<flag name="review"
          id="179964"
          type_id="1"
          status="-"
          setter="zeno"
    />
    <flag name="commit-queue"
          id="179970"
          type_id="3"
          status="-"
          setter="zeno"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167331</attachid>
            <date>2012-10-05 08:21:54 -0700</date>
            <delta_ts>2012-10-05 10:30:07 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>98398_20121005-171858.patch</filename>
            <type>text/plain</type>
            <size>37749</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YzlhZDA5Li4xM2Q1MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG8gcmVwbGFjZSB1aW50NjRf
dCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0b2tlbiB0eXBlIGZvciBHcmFw
aGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1cmZhY2VUb2tlbi4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZSBmb3IgV2luZG93cyBhcyB3ZWxsLgorICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3Jt
IGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBhCisgICAgICAgIFdpbmRvd0lE
IChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9yIGluIGZ1dHVyZSB0d28gSEFO
RExFcyAoV2luZG93cykuCisgICAgICAgIFRoZSBzaW1wbGUgdWludDY0X3QgaXMgbm90IHN1ZmZp
Y2llbnQgYW55bW9yZSwgc2luY2UgYSBzaW5nbGUgSEFORExFIGluIHdpbmRvd3MKKyAgICAgICAg
Y2FuIGJlIDY0Yml0IGFscmVhZHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2Vu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2Uu
aDoKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpHcmFwaGljc1N1cmZhY2VUb2tlbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbjo6aXNWYWxpZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlOjpHcmFwaGljc1N1cmZhY2VQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OnRva2VuKToKKyAgICAg
ICAgKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9xdC9HcmFwaGljc1N1cmZhY2VHTFguY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtSW1wb3J0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJmYWNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OlRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpncmFwaGljc1N1cmZhY2VUb2tlbik6CisKIDIwMTIt
MTAtMDQgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtN
YWNdIEdMX0FSQl90ZXh0dXJlX3JlY3RhbmdsZSBtdXN0IGJlIGFjdGl2YXRlZCB3aGVuIHVzaW5n
IEFOR0xFLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YS4uNDEyMTc4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBA
IC0yMTQzLDYgKzIxNDMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIFwKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9TdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RR
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHQzRFF0LmNwcAppbmRleCBkOGMxYTY5Li5mYmRjMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNw
cApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOwotICAg
IHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CiAj
ZW5kaWYKIAogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKQEAgLTI5Niw3ICsyOTYs
NyBAQCB1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3Vy
ZmFjZSgpCiAgICAgcmV0dXJuIGZyb250QnVmZmVyOwogfQogCi11aW50NjRfdCBHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKK0dyYXBoaWNzU3Vy
ZmFjZVRva2VuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSBjb25zdAogewogICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCmluZGV4IDlmZjM4ODEuLmMxNmEzNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCBjb25z
dCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtSW1w
b3J0KHNpemUsIGZsYWdzLCB0b2tlbik7CiB9CkBAIC0zNSw3ICszNSw3IEBAIFBhc3NSZWZQdHI8
R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OmNyZWF0ZShjb25zdCBJbnRTaXplJiBz
aXplLCBHcmFwaGljCiAgICAgcmV0dXJuIHBsYXRmb3JtQ3JlYXRlKHNpemUsIGZsYWdzKTsKIH0K
IAotdWludDY0X3QgR3JhcGhpY3NTdXJmYWNlOjpleHBvcnRUb2tlbigpCitHcmFwaGljc1N1cmZh
Y2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OmV4cG9ydFRva2VuKCkKIHsKICAgICByZXR1cm4gcGxh
dGZvcm1FeHBvcnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKaW5kZXggMGVlNjhjZi4uZTc4
ZWJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg
R3JhcGhpY3NTdXJmYWNlX2gKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZVRva2VuLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMzIsNyAr
MzMsOCBAQAogI2lmIE9TKERBUldJTikKIHR5cGVkZWYgc3RydWN0IF9fSU9TdXJmYWNlKiBJT1N1
cmZhY2VSZWY7CiB0eXBlZGVmIElPU3VyZmFjZVJlZiBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFjZTsK
LSNlbHNlCisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKIHR5cGVkZWYgdWludDMyX3QgUGxhdGZvcm1H
cmFwaGljc1N1cmZhY2U7CiAjZW5kaWYKIApAQCAtNjksMTMgKzcxLDEzIEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncyk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50
U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCB0b2tlbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBjcmVhdGUoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCBjb25zdCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiYpOwogICAgIHZvaWQgY29weVRvR0xUZXh0dXJlKHVpbnQzMl90IHRhcmdl
dCwgdWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgSW50
UG9pbnQmIHNvdXJjZU9mZnNldCk7CiAgICAgdm9pZCBjb3B5RnJvbUZyYW1lYnVmZmVyKHVpbnQz
Ml90IGZibywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CiAgICAgdm9pZCBwYWludFRvVGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUq
IG1hc2spOwogICAgIHVpbnQzMl90IGZyb250QnVmZmVyKCk7CiAgICAgdWludDMyX3Qgc3dhcEJ1
ZmZlcnMoKTsKLSAgICB1aW50NjRfdCBleHBvcnRUb2tlbigpOworICAgIEdyYXBoaWNzU3VyZmFj
ZVRva2VuIGV4cG9ydFRva2VuKCk7CiAgICAgdWludDMyX3QgZ2V0VGV4dHVyZUlEKCk7CiAgICAg
UGFzc093blB0cjxHcmFwaGljc0NvbnRleHQ+IGJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYsIExv
Y2tPcHRpb25zKTsKICAgICBQYXNzUmVmUHRyPEltYWdlPiBjcmVhdGVSZWFkT25seUltYWdlKGNv
bnN0IEludFJlY3QmKTsKQEAgLTgzLDggKzg1LDggQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBwbGF0Zm9ybUNyZWF0ZShjb25z
dCBJbnRTaXplJiwgRmxhZ3MpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gcGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYsIEZsYWdzLCB1aW50NjRfdCk7Ci0gICAg
dWludDY0X3QgcGxhdGZvcm1FeHBvcnQoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGlj
c1N1cmZhY2U+IHBsYXRmb3JtSW1wb3J0KGNvbnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBwbGF0Zm9ybUV4
cG9ydCgpOwogICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CiAKICAgICB1aW50MzJfdCBwbGF0
Zm9ybUdldFRleHR1cmVJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4MWRhZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFj
ZVRva2VuLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTIgRGlnaWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpZm5kZWYgR3JhcGhpY3NTdXJmYWNlVG9rZW5faAorI2RlZmluZSBHcmFwaGlj
c1N1cmZhY2VUb2tlbl9oCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbnRSZWN0LmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4geworCit0eXBlZGVmIHVpbnQzMl90IEJ1
ZmZlckhhbmRsZTsKKworI2lmIE9TKExJTlVYKQorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKHVp
bnQzMl90IHdpbmRvd0lEID0gMCkKKyAgICAgICAgOiBmcm9udEJ1ZmZlckhhbmRsZSh3aW5kb3dJ
RCkKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHcmFwaGljc1N1cmZhY2VU
b2tlbiAmcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyb250QnVmZmVySGFuZGxl
ICE9IHJocy5mcm9udEJ1ZmZlckhhbmRsZTsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZyb250QnVmZmVySGFuZGxlOworICAgIH0KKwor
I2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4oQnVmZmVy
SGFuZGxlIGZyb250QnVmZmVyID0gMCwgQnVmZmVySGFuZGxlIGJhY2tCdWZmZXIgPSAwKQorICAg
ICAgICA6IGZyb250QnVmZmVySGFuZGxlKGZyb250QnVmZmVyKQorICAgICAgICAsIGJhY2tCdWZm
ZXJIYW5kbGUoYmFja0J1ZmZlcikKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBHcmFwaGljc1N1cmZhY2VUb2tlbiAmcmhzKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IChmcm9udEJ1ZmZlckhhbmRsZSAhPSByaHMuZnJvbnRCdWZmZXJIYW5kbGUgfHwgYmFja0J1ZmZl
ckhhbmRsZSAhPSByaHMuYmFja0J1ZmZlckhhbmRsZSk7CisgICAgfQorCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZSAmJiBi
YWNrQnVmZmVySGFuZGxlOworICAgIH0KKworICAgIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVySGFu
ZGxlOworI2VuZGlmCisKKyAgICBCdWZmZXJIYW5kbGUgZnJvbnRCdWZmZXJIYW5kbGU7Cit9Owor
Cit9CisjZW5kaWYgLy8gVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisKKyNlbmRpZiAvLyBHcmFwaGlj
c1N1cmZhY2VUb2tlbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCmlu
ZGV4IDhhODMyMmQuLjk0YzMzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL21hYy9HcmFwaGljc1N1cmZhY2VN
YWMuY3BwCkBAIC02NCwxOCArNjQsMTMgQEAgc3RhdGljIHVpbnQzMl90IGNyZWF0ZVRleHR1cmUo
SU9TdXJmYWNlUmVmIGhhbmRsZSkKIAogc3RydWN0IEdyYXBoaWNzU3VyZmFjZVByaXZhdGUgewog
cHVibGljOgotICAgIEdyYXBoaWNzU3VyZmFjZVByaXZhdGUodWludDY0X3QgdG9rZW4pCisgICAg
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZShjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4p
CiAgICAgICAgIDogbV90b2tlbih0b2tlbikKICAgICAgICAgLCBtX2Zyb250QnVmZmVyVGV4dHVy
ZSgwKQogICAgICAgICAsIG1fYmFja0J1ZmZlclRleHR1cmUoMCkKICAgICB7Ci0gICAgICAgIC8v
IFRoZSB0b2tlbiBjb250YWlucyB0aGUgSU9TdXJmYWNlSUQgb2YgdGhlIGZpc3Qgc3VyZmFjZS9i
dWZmZXIgaW4gdGhlIGZpcnN0IDMyIEJpdAotICAgICAgICAvLyBhbmQgdGhlIElPU3VyZmFjZUlE
IG9mIHRoZSBzZWNvbmQgc3VyZmFjZS9idWZmZXIgaW4gdGhlIHNlY29uZCAzMiBCaXQuCi0gICAg
ICAgIHVpbnQzMl90IGZyb250QnVmZmVyID0gdG9rZW4gPj4gMzI7Ci0gICAgICAgIHVpbnQzMl90
IGJhY2tCdWZmZXIgPSB0b2tlbiAmIDB4ZmZmZjsKLQotICAgICAgICBtX2Zyb250QnVmZmVyID0g
SU9TdXJmYWNlTG9va3VwKGZyb250QnVmZmVyKTsKLSAgICAgICAgbV9iYWNrQnVmZmVyID0gSU9T
dXJmYWNlTG9va3VwKGJhY2tCdWZmZXIpOworICAgICAgICBtX2Zyb250QnVmZmVyID0gSU9TdXJm
YWNlTG9va3VwKG1fdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworICAgICAgICBtX2JhY2tCdWZm
ZXIgPSBJT1N1cmZhY2VMb29rdXAobV90b2tlbi5iYWNrQnVmZmVySGFuZGxlKTsKICAgICB9CiAK
ICAgICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKGNvbnN0IEludFNpemUmIHNpemUsIEdyYXBoaWNz
U3VyZmFjZTo6RmxhZ3MgZmxhZ3MpCkBAIC0xMTksMTEgKzExNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUNyZWF0ZShkaWN0KTsKICAgICAgICAgbV9iYWNr
QnVmZmVyID0gSU9TdXJmYWNlQ3JlYXRlKGRpY3QpOwogCi0gICAgICAgIHVpbnQ2NF90IHRva2Vu
ID0gSU9TdXJmYWNlR2V0SUQobV9mcm9udEJ1ZmZlcik7Ci0gICAgICAgIHRva2VuIDw8PSAzMjsK
LSAgICAgICAgdG9rZW4gfD0gSU9TdXJmYWNlR2V0SUQobV9iYWNrQnVmZmVyKTsKLQotICAgICAg
ICBtX3Rva2VuID0gdG9rZW47CisgICAgICAgIG1fdG9rZW4gPSBHcmFwaGljc1N1cmZhY2VUb2tl
bihJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKSwgSU9TdXJmYWNlR2V0SUQobV9iYWNrQnVm
ZmVyKSk7CiAgICAgfQogCiAgICAgfkdyYXBoaWNzU3VyZmFjZVByaXZhdGUoKQpAQCAtMTQ5LDcg
KzE0MCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIElPU3VyZmFjZUdldElEKG1fZnJvbnRC
dWZmZXIpOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHRva2VuKCkgY29uc3QKKyAgICBHcmFwaGlj
c1N1cmZhY2VUb2tlbiB0b2tlbigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tl
bjsKICAgICB9CkBAIC0xODUsMTAgKzE3NiwxMCBAQCBwcml2YXRlOgogICAgIFBsYXRmb3JtR3Jh
cGhpY3NTdXJmYWNlIG1fYmFja0J1ZmZlcjsKICAgICB1aW50MzJfdCBtX2Zyb250QnVmZmVyVGV4
dHVyZTsKICAgICB1aW50MzJfdCBtX2JhY2tCdWZmZXJUZXh0dXJlOwotICAgIHVpbnQ2NF90IG1f
dG9rZW47CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbV90b2tlbjsKIH07CiAKLXVpbnQ2NF90
IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1FeHBvcnQoKQorR3JhcGhpY3NTdXJmYWNlVG9rZW4g
R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+dG9rZW4oKTsKIH0KQEAgLTI3Niw3ICsyNjcsNyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXpl
LAogICAgIHJldHVybiBzdXJmYWNlOwogfQogCi1QYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4g
R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFn
cyBmbGFncywgdWludDY0X3QgdG9rZW4pCitQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gR3Jh
cGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBm
bGFncywgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogewogICAgIC8vIFdlIGN1
cnJlbnRseSBkaXNhYmxlIHN1cHBvcnQgZm9yIENvcHlUb1RleHR1cmUgb24gTWFjLCBiZWNhdXNl
IHRoaXMgaXMgdXNlZCBmb3Igc2luZ2xlIGJ1ZmZlcmVkIFRpbGVzLgogICAgIC8vIFRoZSBzaW5n
bGUgYnVmZmVyZWQgbmF0dXJlIG9mIHRoaXMgcmVxdWlyZXMgYSBjYWxsIHRvIGdsRmx1c2gsIGFz
IGRlc2NyaWJlZCBpbiBwbGF0Zm9ybUNvcHlUb1RleHR1cmUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VHTFgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhp
Y3NTdXJmYWNlR0xYLmNwcAppbmRleCAxYmJlYjczLi45MDUxOGFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1cmZhY2VH
TFguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0
L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHAKQEAgLTIzNyw5ICsyMzcsOSBAQCBzdGF0aWMgYm9vbCBy
ZXNvbHZlR0xNZXRob2RzKEdyYXBoaWNzU3VyZmFjZVByaXZhdGUqIHApCiAgICAgcmV0dXJuIHJl
c29sdmVkOwogfQogCi11aW50NjRfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkK
K0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1FeHBvcnQoKQog
ewotICAgIHJldHVybiBtX3BsYXRmb3JtU3VyZmFjZTsKKyAgICByZXR1cm4gR3JhcGhpY3NTdXJm
YWNlVG9rZW4obV9wbGF0Zm9ybVN1cmZhY2UpOwogfQogCiB1aW50MzJfdCBHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtR2V0VGV4dHVyZUlEKCkKQEAgLTMxNiw3ICszMTYsNyBAQCBQYXNzUmVmUHRy
PEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUNyZWF0ZShjb25zdCBJ
bnRTaXplJiBzaXplLAogICAgIHJldHVybiBzdXJmYWNlOwogfQogCi1QYXNzUmVmUHRyPEdyYXBo
aWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXpl
JiBzaXplLCBGbGFncyBmbGFncywgdWludDY0X3QgdG9rZW4pCitQYXNzUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiBz
aXplLCBGbGFncyBmbGFncywgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogewog
ICAgIC8vIFgxMSBkb2VzIG5vdCBzdXBwb3J0IENvcHlUb1RleHR1cmUsIHNvIHdlIGRvIG5vdCBj
cmVhdGUgYSBHcmFwaGljc1N1cmZhY2UgaWYgdGhpcyBpcyByZXF1ZXN0ZWQuCiAgICAgLy8gR3Jh
cGhpY3NTdXJmYWNlR0xYIHVzZXMgYW4gWFdpbmRvdyBhcyBuYXRpdmUgc3VyZmFjZS4gVGhpcyBv
bmUgYWx3YXlzIGhhcyBhIGZyb250IGFuZCBhIGJhY2sgYnVmZmVyLgpAQCAtMzMwLDcgKzMzMCw3
IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3Jt
SW1wb3J0KGNvbnN0IEludFNpemUmIHNpemUsCiAgICAgaWYgKCFyZXNvbHZlR0xNZXRob2RzKHN1
cmZhY2UtPm1fcHJpdmF0ZSkpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4oKTsKIAotICAgIHN1cmZhY2UtPm1fcGxhdGZvcm1TdXJmYWNlID0gdG9rZW47CisgICAg
c3VyZmFjZS0+bV9wbGF0Zm9ybVN1cmZhY2UgPSB0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZTsKIAog
ICAgIHN1cmZhY2UtPm1fcHJpdmF0ZS0+Y3JlYXRlUGl4bWFwKHN1cmZhY2UtPm1fcGxhdGZvcm1T
dXJmYWNlKTsKICAgICBzdXJmYWNlLT5tX3NpemUgPSBzdXJmYWNlLT5tX3ByaXZhdGUtPnNpemUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAppbmRleCBiMjUzNzJj
Li5iMGEyNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCkBA
IC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLXZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNldEdyYXBo
aWNzU3VyZmFjZSh1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgY29uc3QgSW50U2l6ZSYg
c3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKQordm9pZCBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKEdyYXBoaWNzU3VyZmFjZVRva2Vu
IGdyYXBoaWNzU3VyZmFjZVRva2VuLCBjb25zdCBJbnRTaXplJiBzdXJmYWNlU2l6ZSwgdWludDMy
X3QgZnJvbnRCdWZmZXIpCiB7CiAgICAgaWYgKGdyYXBoaWNzU3VyZmFjZVRva2VuICE9IG1fZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4pIHsKICAgICAgICAgR3JhcGhpY3NTdXJmYWNlOjpGbGFncyBzdXJm
YWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzVGV4dHVyZVRhcmdldApAQCAtNjgs
NyArNjgsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJm
YWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdQogICAgICAgICBtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigp
OwotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gMDsKKyAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2VUb2tlbiA9IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CiAgICAgfQogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA5ZDAwMmI0Li43ZTMy
Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTUwLDcgKzUw
LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUg
OiBwdWJsaWMgVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0K
LSAgICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZSh1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tl
biwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAg
ICB2b2lkIHNldEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2VUb2tlbiwgY29uc3QgSW50
U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKICAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gZ3JhcGhpY3NTdXJmYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9ncmFwaGljc1N1cmZhY2U7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBmbG9hdCwgQml0bWFwVGV4dHVyZSopOwpAQCAtNjIsMTAgKzYyLDkgQEAgcHJv
dGVjdGVkOgogcHJpdmF0ZToKICAgICBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgp
CiAgICAgICAgIDogVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpCi0gICAgICAgICwgbV9ncmFw
aGljc1N1cmZhY2VUb2tlbigwKQogICAgICAgICB7IH0KIAotICAgIHVpbnQ2NF90IG1fZ3JhcGhp
Y3NTdXJmYWNlVG9rZW47CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbV9ncmFwaGljc1N1cmZh
Y2VUb2tlbjsKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBtX2dyYXBoaWNz
U3VyZmFjZTsKICAgICBJbnRTaXplIG1fZ3JhcGhpY3NTdXJmYWNlU2l6ZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IDIyOTJmNGUuLmRiM2YwYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0yMCw2ICsyMCwxMCBA
QAogI2lmbmRlZiBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcl9oCiAjZGVmaW5lIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyX2gKIAorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorI2luY2x1
ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgorI2VuZGlmCisKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCw3ICszOCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKSB7IH0KICNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpIHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc1N1cmZhY2VUb2tlbigp
OyB9CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5OTE2MDk4Li5jOWU4ZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDUgKzEsNTIgQEAKIDIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdl
YmtpdC5vcmc+CiAKKyAgICAgICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4g
dG8gcmVwbGFjZSB1aW50NjRfdCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0
b2tlbiB0eXBlIGZvciBHcmFwaGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1
cmZhY2VUb2tlbi4KKyAgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVt
ZW50IEdyYXBoaWNzU3VyZmFjZSBmb3IgV2luZG93cyBhcyB3ZWxsLgorICAgICAgICBEZXBlbmRp
bmcgb24gdGhlIHBsYXRmb3JtIGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBh
CisgICAgICAgIFdpbmRvd0lEIChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9y
IGluIGZ1dHVyZSB0d28gSEFORExFcyAoV2luZG93cykuCisgICAgICAgIFRoZSBzaW1wbGUgdWlu
dDY0X3QgaXMgbm90IHN1ZmZpY2llbnQgYW55bW9yZSwgc2luY2UgYSBzaW5nbGUgSEFORExFIGlu
IHdpbmRvd3MKKyAgICAgICAgY2FuIGJlIDY0Yml0IGFscmVhZHkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjpkZWNvZGUpOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpTaGFyZWFibGVTdXJmYWNlOjpjcmVhdGVIYW5kbGUpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWFibGVTdXJmYWNlLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6Okhh
bmRsZTo6Z3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAoSGFuZGxlKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEMpOgor
ICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUp
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGlu
YXRvclByb3h5Ojp1cGRhdGVUaWxlRm9yTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVDb29yZGluYXRvclByb3h5OjpzeW5jQ2FudmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgIChM
YXllclRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6Cisg
ICAgICAgIChMYXllclRyZWVSZW5kZXJlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OnN5bmNDYW52YXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChMYXllclRyZWVDb29y
ZGluYXRvcik6CisKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+
CisKICAgICAgICAgW1F0XSBQcm9jZXNzTGF1bmNoZXJRdCBzaG91bGQgdXNlIFFTdHJpbmdMaXRl
cmFsIGZvciBzZXJ2aWNlTmFtZS4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk4Mzk4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9T
aGFyZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJm
YWNlLmNwcAppbmRleCA0M2JkNTI1Li5iZTA5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1NoYXJlYWJsZVN1cmZhY2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CiAKICNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCkBAIC0zMiw5ICszMyw2IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFNoYXJlYWJsZVN1
cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICA6
IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkKLSNlbmRpZgogewogfQogCkBAIC00NCw3ICs0Miw3
IEBAIHZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29kZShtX2ZsYWdzKTsK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBlbmNvZGVyLT5lbmNvZGUobV9ncmFwaGlj
c1N1cmZhY2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pCisgICAgaWYg
KG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICBlbmNvZGVyLT5lbmNvZGUobV9iaXRtYXBIYW5kbGUpOwpAQCAtNTksNyArNTcsNyBA
QCBib29sIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VUb2tl
bikKKyAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRs
ZS5tX2JpdG1hcEhhbmRsZSkpCkBAIC0xNTEsNyArMTQ5LDcgQEAgU2hhcmVhYmxlU3VyZmFjZTo6
flNoYXJlYWJsZVN1cmZhY2UoKQogUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFyZWFi
bGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiB7CiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpKSB7Cisg
ICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQoKSkgewogICAgICAg
ICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpjcmVh
dGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFj
ZVRva2VuKTsKICAgICAgICAgaWYgKHN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFNoYXJlYWJsZVN1cmZhY2UoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIFBh
c3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPihzdXJmYWNlKSkpOwpAQCAtMTcxLDggKzE2OSw4IEBA
IGJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQogICAg
IGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFnczsKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQot
ICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2UgPyBt
X2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IDA7Ci0gICAgaWYgKGhhbmRsZS5tX2dy
YXBoaWNzU3VyZmFjZVRva2VuKQorICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0g
bV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IEdy
YXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRv
a2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICBpZiAoIW1f
Yml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCmluZGV4IGI2ODViMDcuLjU5OGRjNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaApAQCAtNTUsMTQgKzU1LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciosIEhhbmRsZSYpOwogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIHVp
bnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc1N1
cmZhY2VUb2tlbjsgfQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFw
aGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47
IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlYWJs
ZVN1cmZhY2U7CiAgICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9iaXRt
YXBIYW5kbGU7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIHVpbnQ2NF90IG1f
Z3JhcGhpY3NTdXJmYWNlVG9rZW47CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAjZW5kaWYKICAgICAgICAgV2ViQ29yZTo6SW50
U2l6ZSBtX3NpemU7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
Y2JmNjI0OS4uOWVkOWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKQEAgLTU1LDYgKzU1LDkgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CiAjZW5kaWYKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5o
PgorI2VuZGlmCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03OTUsNiAr
Nzk4LDM1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKIH0KICNlbmRpZgogCisjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlVG9rZW4+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAgIGVu
Y29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpOworI2VuZGlmCisjaWYgT1Mo
TElOVVgpCisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxl
KTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJm
YWNlVG9rZW4+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmJhY2tCdWZm
ZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkK
KyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorCisj
ZW5kaWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBiMDhmMTE4Li44YmI2N2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBA
IC03Miw2ICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmxvYXRQb2lu
dDNEOwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogICAgIHN0cnVjdCBMZW5ndGg7
CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNl
VG9rZW47CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTI1MSw2ICsy
NTUsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJP
cGVyYXRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKIH07CiAjZW5kaWYKKworI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2VUb2tlbj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOworICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tl
biYpOworfTsKKyNlbmRpZgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA2MjNiMGE5Li4zZjc0OWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjYsMTIgKzY2
LDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlVGlsZUZvckxheWVy
KGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZVN1
cmZhY2U+IHN1cmZhY2U7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgdWludDY0X3Qg
dG9rZW4gPSB1cGRhdGVJbmZvLnN1cmZhY2VIYW5kbGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsK
LSAgICBpZiAodG9rZW4pIHsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNoYXJl
YWJsZVN1cmZhY2U+ID46Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKHRva2VuKTsKKyAg
ICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbiA9IHVwZGF0ZUluZm8uc3VyZmFjZUhhbmRsZS5n
cmFwaGljc1N1cmZhY2VUb2tlbigpOworICAgIGlmICh0b2tlbi5pc1ZhbGlkKCkpIHsKKyAgICAg
ICAgSGFzaE1hcDxHcmFwaGljc1N1cmZhY2VUb2tlbjo6QnVmZmVySGFuZGxlLCBSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gPjo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodG9rZW4uZnJv
bnRCdWZmZXJIYW5kbGUpOwogICAgICAgICBpZiAoaXQgPT0gbV9zdXJmYWNlcy5lbmQoKSkgewog
ICAgICAgICAgICAgc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSh1cGRhdGVJbmZv
LnN1cmZhY2VIYW5kbGUpOwotICAgICAgICAgICAgbV9zdXJmYWNlcy5hZGQodG9rZW4sIHN1cmZh
Y2UpOworICAgICAgICAgICAgbV9zdXJmYWNlcy5hZGQodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUs
IHN1cmZhY2UpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN1cmZhY2UgPSBpdC0+c2Vj
b25kOwogICAgIH0gZWxzZQpAQCAtMTgwLDEwICsxODAsMTIgQEAgdm9pZCBMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9z
aXRpb24KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6ZGlkQ2hh
bmdlU2Nyb2xsUG9zaXRpb24sIG1fcmVuZGVyZXIuZ2V0KCksIHBvc2l0aW9uKSk7CiB9CiAKLXZv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyh1aW50MzJfdCBpZCwgY29u
c3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIHVp
bnQzMl90IGZyb250QnVmZmVyKQorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBJbnRT
aXplJiBjYW52YXNTaXplLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4sIHVpbnQz
Ml90IGZyb250QnVmZmVyKQogewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJl
bmRlcmVyOjpzeW5jQ2FudmFzLCBtX3JlbmRlcmVyLmdldCgpLCBpZCwgY2FudmFzU2l6ZSwgZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVyKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmlu
ZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBj
YW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKIH0KKyNlbmRpZgogCiB2b2lkIExheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggOTQzMzMwYy4uYjFlZjQw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTczLDcgKzc0LDkgQEAgcHVibGljOgogICAgIHZv
aWQgdXBkYXRlVmlld3BvcnQoKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAgIHZv
aWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0
aW9uKTsKLSAgICB2b2lkIHN5bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcik7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdm9pZCBzeW5j
Q2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYsIHVpbnQzMl90IGZyb250QnVmZmVy
KTsKKyNlbmRpZgogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJUcmVl
UmVuZGVyZXIqIGxheWVyVHJlZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QsIGZsb2F0
KTsKQEAgLTg4LDcgKzkxLDcgQEAgcHJvdGVjdGVkOgogICAgIGZsb2F0IG1fbGFzdFNlbnRTY2Fs
ZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9yOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxT
aGFyZWFibGVTdXJmYWNlPiA+IG1fc3VyZmFjZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2VUb2tlbjo6QnVmZmVySGFuZGxlLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFjZT4g
PiBtX3N1cmZhY2VzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMDk1NzQ2Li5iNzM5
NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDcgKzMzLDkgQEAgbWVzc2FnZXMgLT4gTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eSB7CiAgICAgRGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGlu
dDY0X3Qga2V5KQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVudHNT
aXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQogICAgIERpZENoYW5nZVNjcm9sbFBv
c2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKQotICAgIFN5bmNDYW52YXModWludDMy
X3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJm
YWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQorI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQorICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6
ZSwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4sIHVpbnQzMl90IGZyb250QnVm
ZmVyKQorI2VuZGlmCiAgICAgU2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QgaWQsIGZs
b2F0IG9wYWNpdHkpCiAgICAgU2V0TGF5ZXJBbmltYXRlZFRyYW5zZm9ybSh1aW50MzJfdCBpZCwg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDViOTYyZGIuLjVkOGQ2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTE5MSwxMiArMTkxLDEyIEBAIHZvaWQgTGF5
ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbikKICAgICBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb24gPSBw
b3NpdGlvbjsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyhXZWJMYXll
cklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCB1aW50NjRfdCBncmFw
aGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKFdlYkxheWVySUQg
aWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IEdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCiB7CiAgICAgaWYgKGNhbnZh
c1NpemUuaXNFbXB0eSgpIHx8ICFtX3RleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsKIAot
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBHcmFw
aGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKQEAgLTIwOCwxMCArMjA4LDEwIEBA
IHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzCiAgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhc0JhY2tp
bmdTdG9yZSA9IGl0LT5zZWNvbmQ7CiAKLSAgICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdyYXBo
aWNzU3VyZmFjZShncmFwaGljc1N1cmZhY2VUb2tlbiwgY2FudmFzU2l6ZSwgZnJvbnRCdWZmZXIp
OworICAgIGNhbnZhc0JhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKHRva2VuLCBjYW52
YXNTaXplLCBmcm9udEJ1ZmZlcik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShjYW52
YXNCYWNraW5nU3RvcmUuZ2V0KCkpOwotI2VuZGlmCiB9CisjZW5kaWYKIAogdm9pZCBMYXllclRy
ZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8
V2ViTGF5ZXJJRD4mIGNoaWxkSURzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgK
aW5kZXggOWU5OWVmMC4uMGE2YWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5o
CkBAIC0yMiwxMyArMjIsMTMgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNp
bmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIKICNp
bmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJXZWJMYXll
clRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNz
U3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAtNjgsNyArNjgs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKLSAgICB2b2lkIHN5bmNDYW52YXModWludDMyX3Qg
aWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNz
U3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisjaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCisgICAgdm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYs
IHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkZXRhY2goKTsKICAg
ICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApp
bmRleCBjZTU0OGIwLi4wMTY4NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAKICNpZiBVU0UoR1JB
UEhJQ1NfU1VSRkFDRSkKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IG1fY2FudmFzUGxhdGZv
cm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7Ci0gICAgdWludDY0X3QgdG9rZW4gPSBt
X2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgR3JhcGhp
Y3NTdXJmYWNlVG9rZW4gdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3Vy
ZmFjZVRva2VuKCk7CiAKICAgICBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+c3lu
Y0NhbnZhcyhtX2lkLCBJbnRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpLCB0
b2tlbiwgZnJvbnRCdWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDE3YTQzYTUuLjQxOWI1MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVkZSAi
SW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAg
ICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucyYpID0gMDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFFUKQotICAg
IHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBm
cm9udEJ1ZmZlcikgPSAwOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZh
c1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3QgZnJv
bnRCdWZmZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5pbWF0
ZWRPcGFjaXR5KFdlYkxheWVySUQsIGZsb2F0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjcyZGYwOS4uNjM3MzNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmNwcApAQCAtMzA1LDExICszMDUsMTMgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6
c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWUKICAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlNl
dENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0KIAotdm9pZCBMYXll
clRyZWVDb29yZGluYXRvcjo6c3luY0NhbnZhcyhXZWJMYXllcklEIGlkLCBjb25zdCBJbnRTaXpl
JiBjYW52YXNTaXplLCB1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJv
bnRCdWZmZXIpCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZUNvb3Jk
aW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1Np
emUsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZm
ZXIpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U3luY0NhbnZhcyhpZCwgY2Fu
dmFzU2l6ZSwgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVyKSk7CisgICAgbV93ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5jQ2FudmFz
KGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKIH0KKyNlbmRpZgogCiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0xheWVy
RmlsdGVycyhXZWJMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5k
ZXggNzRlMjBhZS4uZGJlYmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVXBkYXRl
QXRsYXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewpAQCAtODgsNyArODksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzeW5j
Q2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIHVp
bnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZFUlJJ
REU7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52
YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZF
UlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5j
Rml4ZWRMYXllcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167345</attachid>
            <date>2012-10-05 10:30:07 -0700</date>
            <delta_ts>2012-10-05 10:34:12 -0700</delta_ts>
            <desc>patch for review.</desc>
            <filename>98501_20121005-192833.patch</filename>
            <type>text/plain</type>
            <size>37695</size>
            <attacher name="Zeno Albisser">zeno</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZTI4ZTUzLi5lYmNkMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMTAtMDUgIFplbm8gQWxiaXNzZXIgIDx6ZW5vQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgW1F0XSBJbXBsZW1lbnQgR3JhcGhpY3NTdXJmYWNlVG9rZW4gdG8gcmVwbGFjZSB1aW50NjRf
dCBhcyB0b2tlbiB0eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTg1MDEKKworICAgICAgICBSZXBsYWNlIHRoZSB0b2tlbiB0eXBlIGZvciBHcmFw
aGljc1N1cmZhY2Ugd2l0aCBhIG5ldyBjbGFzcyBHcmFwaGljc1N1cmZhY2VUb2tlbi4KKyAgICAg
ICAgVGhpcyBpcyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gaW1wbGVtZW50IEdyYXBoaWNzU3VyZmFj
ZSBmb3IgV2luZG93cy4KKyAgICAgICAgRGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSBhIEdyYXBo
aWNzU3VyZmFjZVRva2VuIG1pZ2h0IGNvbnRhaW4gYQorICAgICAgICBXaW5kb3dJRCAoTGludXgv
R0xYKSwgdHdvIElPU3VyZmFjZUlEcyAoTWFjKSBvciBpbiB0aGUgZnV0dXJlIHR3byBIQU5ETEVz
IChXaW5kb3dzKS4KKyAgICAgICAgVGhlIHNpbXBsZSB1aW50NjRfdCBpcyBub3Qgc3VmZmljaWVu
dCBhbnltb3JlLCBzaW5jZSBhIHNpbmdsZSBIQU5ETEUgaW4gd2luZG93cworICAgICAgICBjYW4g
YmUgNjRiaXQgYWxyZWFkeS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpncmFwaGlj
c1N1cmZhY2VUb2tlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3Jh
cGhpY3NTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6ZXhwb3J0VG9rZW4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oOgor
ICAgICAgICAoR3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoR3JhcGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlVG9rZW46OkdyYXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuOjppc1ZhbGlkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGU6OkdyYXBoaWNzU3VyZmFjZVByaXZhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZTo6dG9rZW4pOgorICAgICAgICAo
R3JhcGhpY3NTdXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtRXhwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1JbXBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0
L0dyYXBoaWNzU3VyZmFjZUdMWC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2U6OnBsYXRmb3JtRXhwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6
cGxhdGZvcm1JbXBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNldFN1cmZhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6VGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmdyYXBoaWNzU3VyZmFjZVRva2VuKToKKwogMjAxMi0xMC0w
NSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkIGluc3BlY3RvciBmcm9udC1lbmQgY2xvc3VyZSBjb21waWxhaXRvbiBmaXhlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCmluZGV4IDA3OGI2OWEuLjQxMjE3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjE0Myw2ICsy
MTQzLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5o
IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5oIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
aW5kZXggMTY3OGM0OS4uMDAxNGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAg
dmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKLSAgICB2aXJ0dWFsIHVp
bnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3Q7CisgICAgdmlydHVhbCBHcmFwaGlj
c1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0OwogI2VuZGlmCiAKICAg
ICBRUmVjdEYgYm91bmRpbmdSZWN0KCkgY29uc3Q7CkBAIC0yOTEsNyArMjkxLDcgQEAgdWludDMy
X3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQogICAg
IHJldHVybiBmcm9udEJ1ZmZlcjsKIH0KIAotdWludDY0X3QgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0CitHcmFwaGljc1N1cmZhY2VUb2tlbiBH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1
cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3Jh
cGhpY3NTdXJmYWNlLmNwcAppbmRleCA5ZmYzODgxLi5jMTZhMzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5jcHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIEZsYWdzIGZsYWdzLCB1aW50
NjRfdCB0b2tlbikKK1Bhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBHcmFwaGljc1N1cmZhY2U6
OmNyZWF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBGbGFncyBmbGFncywgY29uc3QgR3JhcGhpY3NT
dXJmYWNlVG9rZW4mIHRva2VuKQogewogICAgIHJldHVybiBwbGF0Zm9ybUltcG9ydChzaXplLCBm
bGFncywgdG9rZW4pOwogfQpAQCAtMzUsNyArMzUsNyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzU3Vy
ZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgR3JhcGhp
YwogICAgIHJldHVybiBwbGF0Zm9ybUNyZWF0ZShzaXplLCBmbGFncyk7CiB9CiAKLXVpbnQ2NF90
IEdyYXBoaWNzU3VyZmFjZTo6ZXhwb3J0VG9rZW4oKQorR3JhcGhpY3NTdXJmYWNlVG9rZW4gR3Jh
cGhpY3NTdXJmYWNlOjpleHBvcnRUb2tlbigpCiB7CiAgICAgcmV0dXJuIHBsYXRmb3JtRXhwb3J0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJm
YWNlcy9HcmFwaGljc1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCmluZGV4IDBlZTY4Y2YuLmU3OGViYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNz
U3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2Vz
L0dyYXBoaWNzU3VyZmFjZS5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIEdyYXBoaWNzU3Vy
ZmFjZV9oCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1N1cmZhY2VUb2tlbi5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTMyLDcgKzMzLDggQEAKICNp
ZiBPUyhEQVJXSU4pCiB0eXBlZGVmIHN0cnVjdCBfX0lPU3VyZmFjZSogSU9TdXJmYWNlUmVmOwog
dHlwZWRlZiBJT1N1cmZhY2VSZWYgUGxhdGZvcm1HcmFwaGljc1N1cmZhY2U7Ci0jZWxzZQorI2Vu
ZGlmCisjaWYgT1MoTElOVVgpCiB0eXBlZGVmIHVpbnQzMl90IFBsYXRmb3JtR3JhcGhpY3NTdXJm
YWNlOwogI2VuZGlmCiAKQEAgLTY5LDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
cmFwaGljc1N1cmZhY2U+IGNyZWF0ZShjb25zdCBJbnRTaXplJiwgRmxhZ3MpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFn
cywgdWludDY0X3QgdG9rZW4pOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFj
ZT4gY3JlYXRlKGNvbnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4mKTsKICAgICB2b2lkIGNvcHlUb0dMVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3Vy
Y2VPZmZzZXQpOwogICAgIHZvaWQgY29weUZyb21GcmFtZWJ1ZmZlcih1aW50MzJfdCBmYm8sIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwogICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKICAg
ICB1aW50MzJfdCBmcm9udEJ1ZmZlcigpOwogICAgIHVpbnQzMl90IHN3YXBCdWZmZXJzKCk7Ci0g
ICAgdWludDY0X3QgZXhwb3J0VG9rZW4oKTsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBleHBv
cnRUb2tlbigpOwogICAgIHVpbnQzMl90IGdldFRleHR1cmVJRCgpOwogICAgIFBhc3NPd25QdHI8
R3JhcGhpY3NDb250ZXh0PiBiZWdpblBhaW50KGNvbnN0IEludFJlY3QmLCBMb2NrT3B0aW9ucyk7
CiAgICAgUGFzc1JlZlB0cjxJbWFnZT4gY3JlYXRlUmVhZE9ubHlJbWFnZShjb25zdCBJbnRSZWN0
Jik7CkBAIC04Myw4ICs4NSw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gcGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYs
IEZsYWdzKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IHBsYXRmb3Jt
SW1wb3J0KGNvbnN0IEludFNpemUmLCBGbGFncywgdWludDY0X3QpOwotICAgIHVpbnQ2NF90IHBs
YXRmb3JtRXhwb3J0KCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBw
bGF0Zm9ybUltcG9ydChjb25zdCBJbnRTaXplJiwgRmxhZ3MsIGNvbnN0IEdyYXBoaWNzU3VyZmFj
ZVRva2VuJik7CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gcGxhdGZvcm1FeHBvcnQoKTsKICAg
ICB2b2lkIHBsYXRmb3JtRGVzdHJveSgpOwogCiAgICAgdWludDMyX3QgcGxhdGZvcm1HZXRUZXh0
dXJlSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL0dyYXBoaWNzU3VyZmFjZVRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjQ1MzQyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2VUb2tlbi5oCkBA
IC0wLDAgKzEsODAgQEAKKy8qCisgQ29weXJpZ2h0IChDKSAyMDEyIERpZ2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aWZuZGVmIEdyYXBoaWNzU3VyZmFjZVRva2VuX2gKKyNkZWZpbmUgR3JhcGhpY3NTdXJmYWNlVG9r
ZW5faAorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IEdyYXBoaWNzU3VyZmFjZVRva2VuIHsKKwordHlwZWRlZiB1aW50MzJfdCBCdWZmZXJIYW5kbGU7
CisKKyNpZiBIQVZFKEdMWCkKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbih1aW50MzJfdCB3aW5k
b3dJRCA9IDApCisgICAgICAgIDogZnJvbnRCdWZmZXJIYW5kbGUod2luZG93SUQpCisgICAgeyB9
CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4gJnJocykg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZSAhPSByaHMuZnJv
bnRCdWZmZXJIYW5kbGU7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICB9CisKKyNlbmRpZgorCisj
aWYgT1MoREFSV0lOKQorICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuKEJ1ZmZlckhhbmRsZSBmcm9u
dEJ1ZmZlciA9IDAsIEJ1ZmZlckhhbmRsZSBiYWNrQnVmZmVyID0gMCkKKyAgICAgICAgOiBmcm9u
dEJ1ZmZlckhhbmRsZShmcm9udEJ1ZmZlcikKKyAgICAgICAgLCBiYWNrQnVmZmVySGFuZGxlKGJh
Y2tCdWZmZXIpCisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JhcGhpY3NT
dXJmYWNlVG9rZW4gJnJocykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoZnJvbnRCdWZm
ZXJIYW5kbGUgIT0gcmhzLmZyb250QnVmZmVySGFuZGxlIHx8IGJhY2tCdWZmZXJIYW5kbGUgIT0g
cmhzLmJhY2tCdWZmZXJIYW5kbGUpOworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gZnJvbnRCdWZmZXJIYW5kbGUgJiYgYmFja0J1ZmZlckhh
bmRsZTsKKyAgICB9CisKKyAgICBCdWZmZXJIYW5kbGUgYmFja0J1ZmZlckhhbmRsZTsKKyNlbmRp
ZgorCisgICAgQnVmZmVySGFuZGxlIGZyb250QnVmZmVySGFuZGxlOworfTsKKworfQorI2VuZGlm
IC8vIFVTRShHUkFQSElDU19TVVJGQUNFKQorCisjZW5kaWYgLy8gR3JhcGhpY3NTdXJmYWNlVG9r
ZW5faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFj
ZXMvbWFjL0dyYXBoaWNzU3VyZmFjZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAppbmRleCA4YTgzMjJk
Li45NGMzMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
dXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9tYWMvR3JhcGhpY3NTdXJmYWNlTWFjLmNwcApAQCAt
NjQsMTggKzY0LDEzIEBAIHN0YXRpYyB1aW50MzJfdCBjcmVhdGVUZXh0dXJlKElPU3VyZmFjZVJl
ZiBoYW5kbGUpCiAKIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VQcml2YXRlIHsKIHB1YmxpYzoKLSAg
ICBHcmFwaGljc1N1cmZhY2VQcml2YXRlKHVpbnQ2NF90IHRva2VuKQorICAgIEdyYXBoaWNzU3Vy
ZmFjZVByaXZhdGUoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQogICAgICAgICA6
IG1fdG9rZW4odG9rZW4pCiAgICAgICAgICwgbV9mcm9udEJ1ZmZlclRleHR1cmUoMCkKICAgICAg
ICAgLCBtX2JhY2tCdWZmZXJUZXh0dXJlKDApCiAgICAgewotICAgICAgICAvLyBUaGUgdG9rZW4g
Y29udGFpbnMgdGhlIElPU3VyZmFjZUlEIG9mIHRoZSBmaXN0IHN1cmZhY2UvYnVmZmVyIGluIHRo
ZSBmaXJzdCAzMiBCaXQKLSAgICAgICAgLy8gYW5kIHRoZSBJT1N1cmZhY2VJRCBvZiB0aGUgc2Vj
b25kIHN1cmZhY2UvYnVmZmVyIGluIHRoZSBzZWNvbmQgMzIgQml0LgotICAgICAgICB1aW50MzJf
dCBmcm9udEJ1ZmZlciA9IHRva2VuID4+IDMyOwotICAgICAgICB1aW50MzJfdCBiYWNrQnVmZmVy
ID0gdG9rZW4gJiAweGZmZmY7Ci0KLSAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxv
b2t1cChmcm9udEJ1ZmZlcik7Ci0gICAgICAgIG1fYmFja0J1ZmZlciA9IElPU3VyZmFjZUxvb2t1
cChiYWNrQnVmZmVyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IElPU3VyZmFjZUxvb2t1cCht
X3Rva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICAgICAgbV9iYWNrQnVmZmVyID0gSU9TdXJm
YWNlTG9va3VwKG1fdG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CiAgICAgfQogCiAgICAgR3JhcGhp
Y3NTdXJmYWNlUHJpdmF0ZShjb25zdCBJbnRTaXplJiBzaXplLCBHcmFwaGljc1N1cmZhY2U6OkZs
YWdzIGZsYWdzKQpAQCAtMTE5LDExICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZnJvbnRC
dWZmZXIgPSBJT1N1cmZhY2VDcmVhdGUoZGljdCk7CiAgICAgICAgIG1fYmFja0J1ZmZlciA9IElP
U3VyZmFjZUNyZWF0ZShkaWN0KTsKIAotICAgICAgICB1aW50NjRfdCB0b2tlbiA9IElPU3VyZmFj
ZUdldElEKG1fZnJvbnRCdWZmZXIpOwotICAgICAgICB0b2tlbiA8PD0gMzI7Ci0gICAgICAgIHRv
a2VuIHw9IElPU3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcik7Ci0KLSAgICAgICAgbV90b2tlbiA9
IHRva2VuOworICAgICAgICBtX3Rva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oSU9TdXJmYWNl
R2V0SUQobV9mcm9udEJ1ZmZlciksIElPU3VyZmFjZUdldElEKG1fYmFja0J1ZmZlcikpOwogICAg
IH0KIAogICAgIH5HcmFwaGljc1N1cmZhY2VQcml2YXRlKCkKQEAgLTE0OSw3ICsxNDAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBJT1N1cmZhY2VHZXRJRChtX2Zyb250QnVmZmVyKTsKICAg
ICB9CiAKLSAgICB1aW50NjRfdCB0b2tlbigpIGNvbnN0CisgICAgR3JhcGhpY3NTdXJmYWNlVG9r
ZW4gdG9rZW4oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW47CiAgICAgfQpA
QCAtMTg1LDEwICsxNzYsMTAgQEAgcHJpdmF0ZToKICAgICBQbGF0Zm9ybUdyYXBoaWNzU3VyZmFj
ZSBtX2JhY2tCdWZmZXI7CiAgICAgdWludDMyX3QgbV9mcm9udEJ1ZmZlclRleHR1cmU7CiAgICAg
dWludDMyX3QgbV9iYWNrQnVmZmVyVGV4dHVyZTsKLSAgICB1aW50NjRfdCBtX3Rva2VuOworICAg
IEdyYXBoaWNzU3VyZmFjZVRva2VuIG1fdG9rZW47CiB9OwogCi11aW50NjRfdCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKK0dyYXBoaWNzU3VyZmFjZVRva2VuIEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1FeHBvcnQoKQogewogICAgIHJldHVybiBtX3ByaXZhdGUtPnRva2VuKCk7
CiB9CkBAIC0yNzYsNyArMjY3LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBo
aWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICByZXR1
cm4gc3VyZmFjZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3Vy
ZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIHVp
bnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdyYXBoaWNzU3VyZmFj
ZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3MgZmxhZ3MsIGNvbnN0
IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBXZSBjdXJyZW50bHkgZGlz
YWJsZSBzdXBwb3J0IGZvciBDb3B5VG9UZXh0dXJlIG9uIE1hYywgYmVjYXVzZSB0aGlzIGlzIHVz
ZWQgZm9yIHNpbmdsZSBidWZmZXJlZCBUaWxlcy4KICAgICAvLyBUaGUgc2luZ2xlIGJ1ZmZlcmVk
IG5hdHVyZSBvZiB0aGlzIHJlcXVpcmVzIGEgY2FsbCB0byBnbEZsdXNoLCBhcyBkZXNjcmliZWQg
aW4gcGxhdGZvcm1Db3B5VG9UZXh0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL3F0L0dyYXBoaWNzU3VyZmFjZUdM
WC5jcHAKaW5kZXggMWJiZWI3My4uOTA1MThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9xdC9HcmFwaGljc1N1
cmZhY2VHTFguY3BwCkBAIC0yMzcsOSArMjM3LDkgQEAgc3RhdGljIGJvb2wgcmVzb2x2ZUdMTWV0
aG9kcyhHcmFwaGljc1N1cmZhY2VQcml2YXRlKiBwKQogICAgIHJldHVybiByZXNvbHZlZDsKIH0K
IAotdWludDY0X3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUV4cG9ydCgpCitHcmFwaGljc1N1
cmZhY2VUb2tlbiBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRXhwb3J0KCkKIHsKLSAgICByZXR1
cm4gbV9wbGF0Zm9ybVN1cmZhY2U7CisgICAgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKG1f
cGxhdGZvcm1TdXJmYWNlKTsKIH0KIAogdWludDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9y
bUdldFRleHR1cmVJRCgpCkBAIC0zMTYsNyArMzE2LDcgQEAgUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1DcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+
IEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxh
Z3MgZmxhZ3MsIHVpbnQ2NF90IHRva2VuKQorUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IEdy
YXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1JbXBvcnQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgRmxhZ3Mg
ZmxhZ3MsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKICAgICAvLyBYMTEg
ZG9lcyBub3Qgc3VwcG9ydCBDb3B5VG9UZXh0dXJlLCBzbyB3ZSBkbyBub3QgY3JlYXRlIGEgR3Jh
cGhpY3NTdXJmYWNlIGlmIHRoaXMgaXMgcmVxdWVzdGVkLgogICAgIC8vIEdyYXBoaWNzU3VyZmFj
ZUdMWCB1c2VzIGFuIFhXaW5kb3cgYXMgbmF0aXZlIHN1cmZhY2UuIFRoaXMgb25lIGFsd2F5cyBo
YXMgYSBmcm9udCBhbmQgYSBiYWNrIGJ1ZmZlci4KQEAgLTMzMCw3ICszMzAsNyBAQCBQYXNzUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4gR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUltcG9ydChjb25z
dCBJbnRTaXplJiBzaXplLAogICAgIGlmICghcmVzb2x2ZUdMTWV0aG9kcyhzdXJmYWNlLT5tX3By
aXZhdGUpKQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KCk7CiAK
LSAgICBzdXJmYWNlLT5tX3BsYXRmb3JtU3VyZmFjZSA9IHRva2VuOworICAgIHN1cmZhY2UtPm1f
cGxhdGZvcm1TdXJmYWNlID0gdG9rZW4uZnJvbnRCdWZmZXJIYW5kbGU7CiAKICAgICBzdXJmYWNl
LT5tX3ByaXZhdGUtPmNyZWF0ZVBpeG1hcChzdXJmYWNlLT5tX3BsYXRmb3JtU3VyZmFjZSk7CiAg
ICAgc3VyZmFjZS0+bV9zaXplID0gc3VyZmFjZS0+bV9wcml2YXRlLT5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI1MzcyYy4uYjBhMjVkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12
b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2Uo
dWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IEludFNpemUmIHN1cmZhY2VTaXpl
LCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5n
U3RvcmU6OnNldEdyYXBoaWNzU3VyZmFjZShHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1
cmZhY2VUb2tlbiwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVm
ZmVyKQogewogICAgIGlmIChncmFwaGljc1N1cmZhY2VUb2tlbiAhPSBtX2dyYXBoaWNzU3VyZmFj
ZVRva2VuKSB7CiAgICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0g
R3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0U3VyZmFjZShQYXNzUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4gc3UKICAgICAgICAgbV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9
IG1fZ3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1fZ3JhcGhpY3NTdXJmYWNlID0gUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4oKTsKLSAgICAgICAg
bV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IDA7CisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW4gPSBHcmFwaGljc1N1cmZhY2VUb2tlbigpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggOWQwMDJiNC4uOTNkZTNkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3Rl
Y3RlZDoKIGNsYXNzIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlIDogcHVibGljIFRl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUpOyB9Ci0gICAgdm9pZCBz
ZXRHcmFwaGljc1N1cmZhY2UodWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGNvbnN0IElu
dFNpemUmIHN1cmZhY2VTaXplLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBzZXRH
cmFwaGljc1N1cmZhY2UoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mLCBjb25zdCBJbnRTaXpl
JiBzdXJmYWNlU2l6ZSwgdWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlPiBncmFwaGljc1N1cmZhY2UoKSBjb25zdCB7IHJldHVybiBt
X2dyYXBoaWNzU3VyZmFjZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0LCBCaXRtYXBUZXh0dXJlKik7CkBAIC02MiwxMCArNjIsOSBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlKCkKICAg
ICAgICAgOiBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlKCkKLSAgICAgICAgLCBtX2dyYXBoaWNz
U3VyZmFjZVRva2VuKDApCiAgICAgICAgIHsgfQogCi0gICAgdWludDY0X3QgbV9ncmFwaGljc1N1
cmZhY2VUb2tlbjsKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3VyZmFjZVRv
a2VuOwogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJm
YWNlOwogICAgIEludFNpemUgbV9ncmFwaGljc1N1cmZhY2VTaXplOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKaW5kZXggMjI5MmY0ZS4uZGIzZjBiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTIwLDYgKzIwLDEwIEBACiAj
aWZuZGVmIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyX2gKICNkZWZpbmUgVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJfaAogCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSAi
R3JhcGhpY3NTdXJmYWNlLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDcgKzM4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyByZXR1
cm4gMDsgfQotICAgIHZpcnR1YWwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25z
dCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGlj
c1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7IH0K
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDdiMjBkZjkuLjg5ZjRlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MCBAQAorMjAxMi0xMC0wNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0
Lm9yZz4KKworICAgICAgICBbUXRdIEltcGxlbWVudCBHcmFwaGljc1N1cmZhY2VUb2tlbiB0byBy
ZXBsYWNlIHVpbnQ2NF90IGFzIHRva2VuIHR5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODUwMQorCisgICAgICAgIFJlcGxhY2UgdGhlIHRva2Vu
IHR5cGUgZm9yIEdyYXBoaWNzU3VyZmFjZSB3aXRoIGEgbmV3IGNsYXNzIEdyYXBoaWNzU3VyZmFj
ZVRva2VuLgorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBpbXBsZW1lbnQg
R3JhcGhpY3NTdXJmYWNlIGZvciBXaW5kb3dzLgorICAgICAgICBEZXBlbmRpbmcgb24gdGhlIHBs
YXRmb3JtIGEgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbWlnaHQgY29udGFpbiBhCisgICAgICAgIFdp
bmRvd0lEIChMaW51eC9HTFgpLCB0d28gSU9TdXJmYWNlSURzIChNYWMpIG9yIGluIHRoZSBmdXR1
cmUgdHdvIEhBTkRMRXMgKFdpbmRvd3MpLgorICAgICAgICBUaGUgc2ltcGxlIHVpbnQ2NF90IGlz
IG5vdCBzdWZmaWNpZW50IGFueW1vcmUsIHNpbmNlIGEgc2luZ2xlIEhBTkRMRSBpbiB3aW5kb3dz
CisgICAgICAgIGNhbiBiZSA2NGJpdCBhbHJlYWR5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxl
U3VyZmFjZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVTdXJmYWNlOjpIYW5kbGU6Omdy
YXBoaWNzU3VyZmFjZVRva2VuKToKKyAgICAgICAgKEhhbmRsZSk6CisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAg
KENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6dXBkYXRlVGlsZUZvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eTo6c3luY0NhbnZhcyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAoTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorICAgICAgICAo
TGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNDYW52YXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5j
Q2FudmFzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3Ip
OgorCiAyMDEyLTEwLTA1ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBbUXRdW1dLMl0gUGx1Z2lucyBhcmUgY29tcGxldGVseSBicm9rZW4gd2l0aCBhIGN1
c3RvbSBkZXZpY2UgcGl4ZWwgcmF0aW8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TaGFyZWFibGVTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVT
dXJmYWNlLmNwcAppbmRleCA0M2JkNTI1Li5iZTA5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CiAKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVIpCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCkBAIC0zMiw5ICszMyw2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFNoYXJlYWJs
ZVN1cmZhY2U6OkhhbmRsZTo6SGFuZGxlKCkKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAg
ICA6IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4oMCkKLSNlbmRpZgogewogfQogCkBAIC00NCw3ICs0
Miw3IEBAIHZvaWQgU2hhcmVhYmxlU3VyZmFjZTo6SGFuZGxlOjplbmNvZGUoQ29yZUlQQzo6QXJn
dW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29kZShtX2ZsYWdz
KTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICBlbmNvZGVyLT5lbmNvZGUobV9ncmFw
aGljc1N1cmZhY2VUb2tlbik7Ci0gICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pCisgICAg
aWYgKG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAj
ZW5kaWYKICAgICBlbmNvZGVyLT5lbmNvZGUobV9iaXRtYXBIYW5kbGUpOwpAQCAtNTksNyArNTcs
NyBAQCBib29sIFNoYXJlYWJsZVN1cmZhY2U6OkhhbmRsZTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgSGFuZGxlJgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQog
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChoYW5kbGUubV9ncmFwaGljc1N1cmZhY2VU
b2tlbikKKyAgICBpZiAoaGFuZGxlLm1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4uaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGhh
bmRsZS5tX2JpdG1hcEhhbmRsZSkpCkBAIC0xNTEsNyArMTQ5LDcgQEAgU2hhcmVhYmxlU3VyZmFj
ZTo6flNoYXJlYWJsZVN1cmZhY2UoKQogUGFzc1JlZlB0cjxTaGFyZWFibGVTdXJmYWNlPiBTaGFy
ZWFibGVTdXJmYWNlOjpjcmVhdGUoY29uc3QgSGFuZGxlJiBoYW5kbGUpCiB7CiAjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCi0gICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpKSB7
CisgICAgaWYgKGhhbmRsZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpLmlzVmFsaWQoKSkgewogICAg
ICAgICBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gR3JhcGhpY3NTdXJmYWNlOjpj
cmVhdGUoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3MsIGhhbmRsZS5tX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuKTsKICAgICAgICAgaWYgKHN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNoYXJlYWJsZVN1cmZhY2UoaGFuZGxlLm1fc2l6ZSwgaGFuZGxlLm1fZmxhZ3Ms
IFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPihzdXJmYWNlKSkpOwpAQCAtMTcxLDggKzE2OSw4
IEBAIGJvb2wgU2hhcmVhYmxlU3VyZmFjZTo6Y3JlYXRlSGFuZGxlKEhhbmRsZSYgaGFuZGxlKQog
ICAgIGhhbmRsZS5tX2ZsYWdzID0gbV9mbGFnczsKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQotICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9ncmFwaGljc1N1cmZhY2Ug
PyBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6IDA7Ci0gICAgaWYgKGhhbmRsZS5t
X2dyYXBoaWNzU3VyZmFjZVRva2VuKQorICAgIGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFjZVRva2Vu
ID0gbV9ncmFwaGljc1N1cmZhY2UgPyBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKSA6
IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgaWYgKGhhbmRsZS5tX2dyYXBoaWNzU3VyZmFj
ZVRva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAgICBpZiAo
IW1fYml0bWFwLT5jcmVhdGVIYW5kbGUoaGFuZGxlLm1fYml0bWFwSGFuZGxlKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5oCmluZGV4IGI2ODViMDcuLjU5OGRjNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuaApAQCAtNTUsMTQgKzU1LDE0
IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIEhhbmRsZSYpOwogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAg
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGlj
c1N1cmZhY2VUb2tlbjsgfQorICAgICAgICBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiBn
cmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlVG9r
ZW47IH0KICNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJl
YWJsZVN1cmZhY2U7CiAgICAgICAgIG11dGFibGUgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgbV9i
aXRtYXBIYW5kbGU7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIHVpbnQ2NF90
IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47CiAjZW5kaWYKICAgICAgICAgV2ViQ29yZTo6
SW50U2l6ZSBtX3NpemU7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6RmxhZ3MgbV9mbGFnczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggY2JmNjI0OS4uOWVkOWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTU1LDYgKzU1LDkgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJ
TFRFUlMpCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CiAjZW5kaWYKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFj
ZS5oPgorI2VuZGlmCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03OTUs
NiArNzk4LDM1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25z
Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKIH0KICNlbmRpZgogCisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlVG9rZW4+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAg
IGVuY29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CisgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpOworI2VuZGlmCisjaWYg
T1MoTElOVVgpCisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFu
ZGxlKTsKKyNlbmRpZgorfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NT
dXJmYWNlVG9rZW4+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmJhY2tC
dWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBPUyhMSU5V
WCkKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRs
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQor
CisjZW5kaWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBiMDhmMTE4Li44YmI2
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC03Miw2ICs3MiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmxvYXRQ
b2ludDNEOwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogICAgIHN0cnVjdCBMZW5n
dGg7CisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBzdHJ1Y3QgR3JhcGhpY3NTdXJm
YWNlVG9rZW47CisjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTI1MSw2
ICsyNTUsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlcios
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKIH07CiAjZW5kaWYKKworI2lmIFVTRShHUkFQ
SElDU19TVVJGQUNFKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VUb2tlbj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXIqLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOworICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VU
b2tlbiYpOworfTsKKyNlbmRpZgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA2MjNiMGE5Li4zZjc0OWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjYsMTIg
KzY2LDEyIEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6dXBkYXRlVGlsZUZvckxh
eWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJs
ZVN1cmZhY2U+IHN1cmZhY2U7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgdWludDY0
X3QgdG9rZW4gPSB1cGRhdGVJbmZvLnN1cmZhY2VIYW5kbGUuZ3JhcGhpY3NTdXJmYWNlVG9rZW4o
KTsKLSAgICBpZiAodG9rZW4pIHsKLSAgICAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFNo
YXJlYWJsZVN1cmZhY2U+ID46Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlcy5maW5kKHRva2VuKTsK
KyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbiA9IHVwZGF0ZUluZm8uc3VyZmFjZUhhbmRs
ZS5ncmFwaGljc1N1cmZhY2VUb2tlbigpOworICAgIGlmICh0b2tlbi5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgSGFzaE1hcDxHcmFwaGljc1N1cmZhY2VUb2tlbjo6QnVmZmVySGFuZGxlLCBSZWZQdHI8
U2hhcmVhYmxlU3VyZmFjZT4gPjo6aXRlcmF0b3IgaXQgPSBtX3N1cmZhY2VzLmZpbmQodG9rZW4u
ZnJvbnRCdWZmZXJIYW5kbGUpOwogICAgICAgICBpZiAoaXQgPT0gbV9zdXJmYWNlcy5lbmQoKSkg
ewogICAgICAgICAgICAgc3VyZmFjZSA9IFNoYXJlYWJsZVN1cmZhY2U6OmNyZWF0ZSh1cGRhdGVJ
bmZvLnN1cmZhY2VIYW5kbGUpOwotICAgICAgICAgICAgbV9zdXJmYWNlcy5hZGQodG9rZW4sIHN1
cmZhY2UpOworICAgICAgICAgICAgbV9zdXJmYWNlcy5hZGQodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUsIHN1cmZhY2UpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN1cmZhY2UgPSBpdC0+
c2Vjb25kOwogICAgIH0gZWxzZQpAQCAtMTgwLDEwICsxODAsMTIgQEAgdm9pZCBMYXllclRyZWVD
b29yZGluYXRvclByb3h5OjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYg
cG9zaXRpb24KICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6ZGlk
Q2hhbmdlU2Nyb2xsUG9zaXRpb24sIG1fcmVuZGVyZXIuZ2V0KCksIHBvc2l0aW9uKSk7CiB9CiAK
LXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyh1aW50MzJfdCBpZCwg
Y29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NTdXJmYWNlVG9rZW4s
IHVpbnQzMl90IGZyb250QnVmZmVyKQorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBM
YXllclRyZWVDb29yZGluYXRvclByb3h5OjpzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBJ
bnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9rZW4sIHVp
bnQzMl90IGZyb250QnVmZmVyKQogewotICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJl
ZVJlbmRlcmVyOjpzeW5jQ2FudmFzLCBtX3JlbmRlcmVyLmdldCgpLCBpZCwgY2FudmFzU2l6ZSwg
Z3JhcGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVyKSk7CisgICAgZGlzcGF0Y2hVcGRhdGUo
YmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMsIG1fcmVuZGVyZXIuZ2V0KCksIGlk
LCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKIH0KKyNlbmRpZgogCiB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggOTQzMzMwYy4uYjFl
ZjQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NM
YXllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTczLDcgKzc0LDkgQEAgcHVibGljOgogICAg
IHZvaWQgdXBkYXRlVmlld3BvcnQoKTsKICAgICB2b2lkIHJlbmRlck5leHRGcmFtZSgpOwogICAg
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
c2l0aW9uKTsKLSAgICB2b2lkIHN5bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50
MzJfdCBmcm9udEJ1ZmZlcik7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdm9pZCBz
eW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXpl
LCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYsIHVpbnQzMl90IGZyb250QnVm
ZmVyKTsKKyNlbmRpZgogICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAgICAgTGF5ZXJU
cmVlUmVuZGVyZXIqIGxheWVyVHJlZVJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJl
ci5nZXQoKTsgfQogICAgIHZvaWQgc2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QsIGZs
b2F0KTsKQEAgLTg4LDcgKzkxLDcgQEAgcHJvdGVjdGVkOgogICAgIGZsb2F0IG1fbGFzdFNlbnRT
Y2FsZTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fbGFzdFNlbnRUcmFqZWN0b3J5VmVjdG9y
OwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxTaGFyZWFibGVTdXJmYWNlPiA+IG1fc3VyZmFjZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2VUb2tlbjo6QnVmZmVySGFuZGxlLCBSZWZQdHI8U2hhcmVhYmxlU3VyZmFj
ZT4gPiBtX3N1cmZhY2VzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBlMDk1NzQ2Li5i
NzM5NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMzLDcgKzMzLDkgQEAgbWVzc2FnZXMgLT4gTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eSB7CiAgICAgRGVzdHJveURpcmVjdGx5Q29tcG9zaXRlZEltYWdl
KGludDY0X3Qga2V5KQogICAgIERpZFJlbmRlckZyYW1lKFdlYkNvcmU6OkludFNpemUgY29udGVu
dHNTaXplLCBXZWJDb3JlOjpJbnRSZWN0IGNvdmVyZWRSZWN0KQogICAgIERpZENoYW5nZVNjcm9s
bFBvc2l0aW9uKFdlYkNvcmU6OkludFBvaW50IHBvc2l0aW9uKQotICAgIFN5bmNDYW52YXModWlu
dDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFzU2l6ZSwgdWludDY0X3QgZ3JhcGhpY3NT
dXJmYWNlVG9rZW4sIHVpbnQzMl90IGZyb250QnVmZmVyKQorI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQorICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6OkludFNpemUgY2FudmFz
U2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4sIHVpbnQzMl90IGZyb250
QnVmZmVyKQorI2VuZGlmCiAgICAgU2V0TGF5ZXJBbmltYXRlZE9wYWNpdHkodWludDMyX3QgaWQs
IGZsb2F0IG9wYWNpdHkpCiAgICAgU2V0TGF5ZXJBbmltYXRlZFRyYW5zZm9ybSh1aW50MzJfdCBp
ZCwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCmluZGV4IDViOTYyZGIuLjVkOGQ2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZVJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKQEAgLTE5MSwxMiArMTkxLDEyIEBAIHZvaWQg
TGF5ZXJUcmVlUmVuZGVyZXI6OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbikKICAgICBtX3BlbmRpbmdSZW5kZXJlZENvbnRlbnRzU2Nyb2xsUG9zaXRpb24g
PSBwb3NpdGlvbjsKIH0KIAotdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcyhXZWJM
YXllcklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCB1aW50NjRfdCBn
cmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzKFdlYkxheWVy
SUQgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IEdyYXBoaWNz
U3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCiB7CiAgICAgaWYgKGNh
bnZhc1NpemUuaXNFbXB0eSgpIHx8ICFtX3RleHR1cmVNYXBwZXIpCiAgICAgICAgIHJldHVybjsK
IAotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQogICAgIGVuc3VyZUxheWVyKGlkKTsKICAgICBH
cmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChpZCk7CiAKQEAgLTIwOCwxMCArMjA4LDEw
IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzCiAgICAgfSBlbHNlCiAgICAgICAgIGNhbnZhc0Jh
Y2tpbmdTdG9yZSA9IGl0LT5zZWNvbmQ7CiAKLSAgICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdy
YXBoaWNzU3VyZmFjZShncmFwaGljc1N1cmZhY2VUb2tlbiwgY2FudmFzU2l6ZSwgZnJvbnRCdWZm
ZXIpOworICAgIGNhbnZhc0JhY2tpbmdTdG9yZS0+c2V0R3JhcGhpY3NTdXJmYWNlKHRva2VuLCBj
YW52YXNTaXplLCBmcm9udEJ1ZmZlcik7CiAgICAgbGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShj
YW52YXNCYWNraW5nU3RvcmUuZ2V0KCkpOwotI2VuZGlmCiB9CisjZW5kaWYKIAogdm9pZCBMYXll
clRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0
b3I8V2ViTGF5ZXJJRD4mIGNoaWxkSURzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKaW5kZXggOWU5OWVmMC4uMGE2YWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJl
ci5oCkBAIC0yMiwxMyArMjIsMTMgQEAKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
ICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKLSNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5o
IgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJXZWJM
YXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgpAQCAtNjgsNyAr
NjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7CiAgICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24oY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKLSAgICB2b2lkIHN5bmNDYW52YXModWludDMy
X3QgaWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBo
aWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCisgICAgdm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tl
biYsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkZXRhY2goKTsK
ICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cAppbmRleCBjZTU0OGIwLi4wMTY4NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTUzMCw3ICs1MzAsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiAKICNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKICAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IG1fY2FudmFzUGxh
dGZvcm1MYXllci0+Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7Ci0gICAgdWludDY0X3QgdG9rZW4g
PSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgR3Jh
cGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4gPSBtX2NhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNz
U3VyZmFjZVRva2VuKCk7CiAKICAgICBtX0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudC0+
c3luY0NhbnZhcyhtX2lkLCBJbnRTaXplKHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkp
LCB0b2tlbiwgZnJvbnRCdWZmZXIpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IDE3YTQzYTUuLjQxOWI1
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRpb24uaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0
bWFwLmgiCkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckZpbHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpID0gMDsKICNlbmRpZgotI2lmIFBMQVRGT1JNKFFUKQot
ICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIGNhbnZhc1NpemUsIHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJf
dCBmcm9udEJ1ZmZlcikgPSAwOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHZpcnR1
YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNh
bnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3Qg
ZnJvbnRCdWZmZXIpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5p
bWF0ZWRPcGFjaXR5KFdlYkxheWVySUQsIGZsb2F0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMjcyZGYwOS4uNjM3
MzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yLmNwcApAQCAtMzA1LDExICszMDUsMTMgQEAgdm9pZCBMYXllclRyZWVDb29yZGluYXRv
cjo6c3luY0xheWVyQ2hpbGRyZW4oV2ViTGF5ZXJJRCBpZCwgY29uc3QgVmVjdG9yPFdlYkxheWUK
ICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OlNldENvbXBvc2l0aW5nTGF5ZXJDaGlsZHJlbihpZCwgY2hpbGRyZW4pKTsKIH0KIAotdm9pZCBM
YXllclRyZWVDb29yZGluYXRvcjo6c3luY0NhbnZhcyhXZWJMYXllcklEIGlkLCBjb25zdCBJbnRT
aXplJiBjYW52YXNTaXplLCB1aW50NjRfdCBncmFwaGljc1N1cmZhY2VUb2tlbiwgdWludDMyX3Qg
ZnJvbnRCdWZmZXIpCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZh
c1NpemUsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRC
dWZmZXIpCiB7CiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U3luY0NhbnZhcyhpZCwg
Y2FudmFzU2l6ZSwgZ3JhcGhpY3NTdXJmYWNlVG9rZW4sIGZyb250QnVmZmVyKSk7CisgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5jQ2Fu
dmFzKGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKIH0KKyNlbmRpZgogCiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0xh
eWVyRmlsdGVycyhXZWJMYXllcklEIGlkLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgK
aW5kZXggNzRlMjBhZS4uZGJlYmQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVXBk
YXRlQXRsYXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtODgsNyArODksOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBz
eW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUs
IHVpbnQ2NF90IGdyYXBoaWNzU3VyZmFjZVRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgT1ZF
UlJJREU7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCB2b2lkIHN5bmND
YW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29u
c3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikg
T1ZFUlJJREU7CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoTGF5ZXIoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVy
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jRml4ZWRMYXllcnMoKTsK
</data>
<flag name="review"
          id="179999"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
      

    </bug>

</bugzilla>