<?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>167096</bug_id>
          
          <creation_ts>2017-01-16 10:40:10 -0800</creation_ts>
          <short_desc>Move TextureMapper-specific logic out of GraphicsContext3DPrivate</short_desc>
          <delta_ts>2017-02-06 00:53:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>pvollan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1267173</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-16 10:40:10 -0800</bug_when>
    <thetext>Move TextureMapper-specific logic out of GraphicsContext3DPrivate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267175</commentid>
    <comment_count>1</comment_count>
      <attachid>298971</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-16 10:42:33 -0800</bug_when>
    <thetext>Created attachment 298971
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267178</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-16 10:46:04 -0800</bug_when>
    <thetext>Attachment 298971 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267179</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-16 10:46:24 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 298971 [details]
&gt; WIP

Based on proposal from https://bugs.webkit.org/show_bug.cgi?id=166968#c4.

Alex, I need some input -- this basically moves the GraphicsContext3DPrivate logic into a TextureMapper-specific class, leaving the former to only work with a GLContext object on non-TextureMapper ports that use GraphicsContext3DCairo.

Is this the desirable way of getting PlatformLayer interface out of the GraphicsContext3DPrivate class? Can the GraphicsContext3DPrivate class be potentially removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1267395</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-17 10:22:11 -0800</bug_when>
    <thetext>I think this is a step in the right direction.  I think GraphicsContext3DPrivate is an unnecessary and excessive layer of abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268446</commentid>
    <comment_count>5</comment_count>
      <attachid>299350</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-20 09:54:23 -0800</bug_when>
    <thetext>Created attachment 299350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268447</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-20 09:55:02 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created attachment 299350 [details]
&gt; Patch

I&apos;m uploading this up for review, but it might still need some additional tweaking for the EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271044</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-28 12:44:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I think this is a step in the right direction.  I think
&gt; GraphicsContext3DPrivate is an unnecessary and excessive layer of
&gt; abstraction.

Do you want to do the formal review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271521</commentid>
    <comment_count>8</comment_count>
      <attachid>299350</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-30 17:51:34 -0800</bug_when>
    <thetext>Comment on attachment 299350
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:103
&gt; +#if USE(TEXTURE_MAPPER)
&gt; +    m_texmapLayer = std::make_unique&lt;TextureMapperGC3DPlatformLayer&gt;(*this, renderStyle);
&gt; +#else
&gt; +    m_private = std::make_unique&lt;GraphicsContext3DPrivate&gt;(this, renderStyle);
&gt; +#endif

Are there platforms that use Cairo but not TEXTURE_MAPPER?  Maybe we could remove even more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271674</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-01-31 04:59:36 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 299350 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299350&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cairo/GraphicsContext3DCairo.cpp:103
&gt; &gt; +#if USE(TEXTURE_MAPPER)
&gt; &gt; +    m_texmapLayer = std::make_unique&lt;TextureMapperGC3DPlatformLayer&gt;(*this, renderStyle);
&gt; &gt; +#else
&gt; &gt; +    m_private = std::make_unique&lt;GraphicsContext3DPrivate&gt;(this, renderStyle);
&gt; &gt; +#endif
&gt; 
&gt; Are there platforms that use Cairo but not TEXTURE_MAPPER?  Maybe we could
&gt; remove even more code.

I would gladly remove it, but the EFL port still uses m_private and even implements a separate GraphicsContext3DPrivate class.

I can polish this patch enough that it builds for the EFL port, and land it, but I won&apos;t have time to modify anything further on the EFL side of things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272239</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-01 12:51:19 -0800</bug_when>
    <thetext>Ok, but I think it&apos;s probably a bad idea to wait for people to move EFL code to where it ought to be.  Nobody is working on architecture improvements on EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273198</commentid>
    <comment_count>11</comment_count>
      <attachid>300605</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-03 23:03:38 -0800</bug_when>
    <thetext>Created attachment 300605
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273201</commentid>
    <comment_count>12</comment_count>
      <attachid>300606</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-03 23:55:53 -0800</bug_when>
    <thetext>Created attachment 300606
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273279</commentid>
    <comment_count>13</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-04 13:03:39 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created attachment 300606 [details]
&gt; Patch for landing

I&apos;ll be landing this patch tomorrow, now that it builds on all platforms.

I didn&apos;t go and rip out GraphicsContext3DPrivate completely since it&apos;s still used by PLATFORM(WIN) &amp;&amp; !USE(CAIRO) code here:
https://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp#L376

Mac&apos;s GraphicsContext3DPrivate is no-op and could be removed easily. The PLATFORM(WIN) &amp;&amp; !USE(CAIRO) configuration will need a replacement. I&apos;m CC-ing EFL people if they want to take a look, but at minimum the m_private member could be made EFL-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273384</commentid>
    <comment_count>14</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-05 09:22:34 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I&apos;m CC-ing EFL people if they want to take a look, but at minimum the
&gt; m_private member could be made EFL-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273385</commentid>
    <comment_count>15</comment_count>
      <attachid>300606</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-05 09:24:16 -0800</bug_when>
    <thetext>Comment on attachment 300606
Patch for landing

Clearing flags on attachment: 300606

Committed r211681: &lt;http://trac.webkit.org/changeset/211681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273386</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-02-05 09:24:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273497</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-02-06 00:42:16 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 300606 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 300606
&gt; 
&gt; Committed r211681: &lt;http://trac.webkit.org/changeset/211681&gt;

FYI, it broke the WinCairo build:

..\..\Source\WebCore\platform\graphics\texmap\TextureMapperGC3DPlatformLayer.cpp(110): error C2039: &apos;glBindFramebuffer&apos;: is not a member of &apos;`global namespace&apos;&apos;
..\..\Source\WebCore\platform\graphics\texmap\TextureMapperGC3DPlatformLayer.cpp(110): error C3861: &apos;glBindFramebuffer&apos;: identifier not found
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1273498</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-02-06 00:53:30 -0800</bug_when>
    <thetext>r211718</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298971</attachid>
            <date>2017-01-16 10:42:33 -0800</date>
            <delta_ts>2017-01-20 09:54:16 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-167096-20170116104045.patch</filename>
            <type>text/plain</type>
            <size>21778</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDdkOGI4YTA0ODk0OTM3
ODA1NWNjN2RjNGExOWY3Y2QxMDdhYTJlNi4uMTI1OWFlZTIyNTg2ZjEyYTM0NDI0MzFjY2FhNDNk
NDA5ZGY2Y2U3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE3LTAxLTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgbG9naWMgb3V0IG9mIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MDk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnByb3h5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6fkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6On5U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpwbGF0Zm9ybUNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpwcm94
eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnN3
YXBCdWZmZXJzSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cjo6cmVuZGVyU3R5bGUpOgorCiAyMDE3LTAxLTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU09VUF0gQWNjZXB0LWxhbmd1YWdlIGNvdWxk
IGJlIHNldCB0d2ljZSBpbiBhIHJvdyBmb3IgdGhlIGRlZmF1bHQgY29udGV4dApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXggZWI0M2E4OTM4ODRjNzhm
M2IyNGRlNzQ0Mjg3NGRmMWY1NDQwN2FmZS4uZDY1NmI5NTkyYzEzN2E4N2U5YTg3MTRhYzVlMTU0
YjE5Y2FhZmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1h
cHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNt
YWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCAxY2QxMjkzNWU1MDExNTIyMTk5ZGVkNmY1MWRiMGQzNGMyOGQyYzA3
Li45OTQ2OTc3MTcxMTk2YTJhZjIzOGFjYmExNTdmZDQ4OGJlYjUzNmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAg
LTEwMSw2ICsxMDEsOSBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVT
RShDQUlSTykKIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOworI2Vu
ZGlmCiAKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1l
SGFzaDsKIApAQCAtMTQxMyw4ICsxNDE2LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gRXJyb3JzIHJh
aXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBt
X3N5bnRoZXRpY0Vycm9yczsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBmcmllbmQg
Y2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+IG1fdGV4bWFwTGF5ZXI7CisjZWxzZQog
ICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gbV9wcml2YXRlOworI2VuZGlmCiAgICAg
CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV93ZWJnbENvbnRleHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDZhNzMwMjIxNjJmMmI0MjI2MTIwY2U2ZDNmOTU1N2Q1
ZTEwZGY5YmYuLjM2ZTFkODcwYzE4NzEwMGMyYjY3NzY5YTAxOWM5MGRjZWJmNjJiMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjYsOSArMjYsNiBAQAogI2luY2x1ZGUgIk5vdElt
cGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0jaWYgVVNFKENB
SVJPKQotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCi0jZW5kaWYKIAogI2lmIFVT
RShPUEVOR0xfRVNfMikKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KQEAgLTM3LDIxICszNCwxMiBA
QAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5kaWYKIAotI2lmIFVTRShURVhUVVJFX01B
UFBFUl9HTCkKLSNpbmNsdWRlIDx0ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmg+Ci0jZW5kaWYKLQot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpH
cmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKLSAgICA6IG1fY29udGV4dChj
b250ZXh0KQotICAgICwgbV9yZW5kZXJTdHlsZShyZW5kZXJTdHlsZSkKK0dyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiwg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQorICAgIDogbV9yZW5k
ZXJTdHlsZShyZW5kZXJTdHlsZSkKIHsKICAgICBzd2l0Y2ggKHJlbmRlclN0eWxlKSB7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgpAQCAtNjMsMjAgKzUxLDkg
QEAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEcKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKLSAgICBpZiAobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyT2Zmc2NyZWVuKQotICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eSA9IGFkb3B0UmVmKG5l
dyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5KCkpOwotI2VuZGlmCiB9CiAKLUdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSgpCi17Ci0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQotICAgIGlmIChjbGllbnQoKSkKLSAgICAgICAgY2xpZW50KCktPnBsYXRmb3JtTGF5ZXJXaWxs
QmVEZXN0cm95ZWQoKTsKLSNlbmRpZgotfQorR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlKCkgPSBkZWZhdWx0OwogCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKQEAgLTg4LDYwICs2NSw2IEBAIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9y
bUNvbnRleHQoKQogICAgIHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSA6IEdMQ29udGV4dDo6Y3VycmVudCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0K
IAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLVJlZlB0cjxUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnByb3h5
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybUxheWVyUHJveHkuY29weVJlZigpOwot
fQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgp
Ci17Ci0gICAgQVNTRVJUKG1fcmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
ck9mZnNjcmVlbik7Ci0gICAgaWYgKG1fY29udGV4dC0+bGF5ZXJDb21wb3NpdGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKLSAgICBJbnRT
aXplIHRleHR1cmVTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9j
dXJyZW50SGVpZ2h0KTsKLSAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVy
ZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEg
PyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7Ci0KLSAgICB7Ci0gICAgICAgIExv
Y2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOwotICAgICAgICBt
X3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0LT5tX2NvbXBvc2l0b3JUZXh0
dXJlLCB0ZXh0dXJlU2l6ZSwgZmxhZ3MpKTsKLSAgICB9Ci0KLSAgICBtX2NvbnRleHQtPm1hcmtM
YXllckNvbXBvc2l0ZWQoKTsKLX0KLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgaWYgKCFtX2ds
Q29udGV4dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fcmVuZGVyU3R5bGUgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbik7Ci0KLSAgICBtX2NvbnRleHQtPm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLSAgICBp
ZiAobV9jb250ZXh0LT5tX2F0dHJzLmFudGlhbGlhcyAmJiBtX2NvbnRleHQtPm1fc3RhdGUuYm91
bmRGQk8gPT0gbV9jb250ZXh0LT5tX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIEdMQ29udGV4
dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7Ci0gICAgICAg
IGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCi0gICAgICAg
ICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotCi0gICAgICAgIG1fY29udGV4
dC0+cmVzb2x2ZU11bHRpc2FtcGxpbmdJZk5lY2Vzc2FyeSgpOwotICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX3N0
YXRlLmJvdW5kRkJPKTsKLQotICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICYmIHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKLSAgICAgICAgICAgIHBy
ZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgfQotCi0gICAg
VGV4dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+
KHRleHR1cmVNYXBwZXIpOwotICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0
dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+bV9hdHRycy5hbHBo
YSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKLSAgICBJbnRTaXplIHRleHR1
cmVTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVp
Z2h0KTsKLSAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgZmxh
Z3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwotI2VuZGlmIC8v
IFVTRShURVhUVVJFX01BUFBFUl9HTCkKLX0KLSNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIp
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19D
T05URVhUXzNEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCBkNzQ2MTFhZTc1YjY2NjA2ZGUw
NzljMTQ2YzJiYjAwYmQ0YmIwNzc0Li41MDc1NTgyOTc0ZjhkNGE0ZmFhZjM5ZDUyMzRjM2VmYmVm
MDQyZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjQsMjAgKzI0LDExIEBACiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAK
LSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgiCi0j
ZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CiAK
LWNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQotI2lmIFVTRShURVhUVVJFX01BUFBFUikK
LSAgICA6IHB1YmxpYyBQbGF0Zm9ybUxheWVyCi0jZW5kaWYKLXsKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdy
YXBoaWNzQ29udGV4dDNEKiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKICAgICB+
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKCk7CkBAIC00NiwyMiArMzcsOSBAQCBwdWJsaWM6CiAK
ICAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVy
biBtX3JlbmRlclN0eWxlOyB9CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7
Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKLSNlbmRpZgotCiBwcml2YXRl
OgotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEdMQ29udGV4dD4gbV9nbENvbnRleHQ7CiAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlIG1fcmVuZGVyU3R5bGU7Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1fcGxhdGZv
cm1MYXllclByb3h5OwotICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlR0w+IG1fY29tcG9zaXRvclRl
eHR1cmU7Ci0jZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAK
aW5kZXggYjlmOTNhZjcwZDljNWI4OTI4NzEwNzk4M2IwNjg3MmM0NmQ3ZTE3Ni4uNzg1ZDlkNTNi
MWQ1NDk5MzM2NWE2YWFjNTBhNDZjYTRkZjNkY2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
M0RDYWlyby5jcHAKQEAgLTU0LDYgKzU0LDEwIEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIK
ICNlbmRpZgogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJHQzNEUGxhdGZvcm1MYXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBo
aWNzQ29udGV4dDNEQXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3N0V2luZG93KiBob3N0V2luZG93
LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCkBAIC05MSw4ICs5
NSwxMyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvcwogICAgICwgbV9tdWx0aXNhbXBsZUZCTygw
KQogICAgICwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9tdWx0
aXNhbXBsZUNvbG9yQnVmZmVyKDApCi0gICAgLCBtX3ByaXZhdGUoc3RkOjptYWtlX3VuaXF1ZTxH
cmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRoaXMsIHJlbmRlclN0eWxlKSkKIHsKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVIpCisgICAgbV90ZXhtYXBMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8VGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyPigqdGhpcywgcmVuZGVyU3R5bGUpOworI2Vsc2UK
KyAgICBtX3ByaXZhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZT4odGhpcywgcmVuZGVyU3R5bGUpOworI2VuZGlmCisKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKIAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpAQCAtMTk4LDggKzIwNywxMyBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1
dGVzIGF0dHJpYnV0ZXMsIEhvcwogCiBHcmFwaGljc0NvbnRleHQzRDo6fkdyYXBoaWNzQ29udGV4
dDNEKCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5yZW5kZXJTdHlsZSgpID09IFJlbmRlclRvQ3Vy
cmVudEdMQ29udGV4dCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgaWYgKG1fdGV4bWFw
TGF5ZXItPnJlbmRlclN0eWxlKCkgPT0gUmVuZGVyVG9DdXJyZW50R0xDb250ZXh0KQorICAgICAg
ICByZXR1cm47CisjZWxzZQorICAgIGlmIChtX3RleG1hcExheWVyLT5yZW5kZXJTdHlsZSgpID09
IFJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkKICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAobV90ZXh0dXJlKQpAQCAtMzM2LDkgKzM1
MCwxNCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhz
dGQ6OnVuaXF1ZV9wdHI8RXJyb3JNZXNzYWdlQ2FsbAogCiBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIGlmICghbV9wcml2YXRlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGlmIChtX3RleG1hcExheWVyKQorICAgICAg
ICByZXR1cm4gbV90ZXhtYXBMYXllci0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjZWxzZQorICAg
IGlmIChtX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjaGVja0dQVVN0YXR1c0lmTmVjZXNzYXJ5KCkKQEAgLTM0Nyw3ICszNjYsMTEgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXNJZk5lY2Vzc2FyeSgpCiAKIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0M0QoKQogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICByZXR1cm4gbV90
ZXhtYXBMYXllci0+cGxhdGZvcm1Db250ZXh0KCk7CisjZWxzZQogICAgIHJldHVybiBtX3ByaXZh
dGUtPnBsYXRmb3JtQ29udGV4dCgpOworI2VuZGlmCiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3Jh
cGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CkBAIC0zNjYsNyArMzg5LDEx
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogCiBQ
bGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7
CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgp
OworI2Vsc2UKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOworI2VuZGlmCiB9CiAKICNpZiBQ
TEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAppbmRleCAwZTRkMmZjYjdmNTgzNWI3NmFkNTEwYzM5YmI0MDIyM2VmYmExYjY2Li5hNGNi
OGIxNjZiNmVlZjJiMGQ5YmY5YmY1MWM5MzNjOWUzODdjZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTEzMyw4ICsxMzMsMTMgQEAgc3Rh
dGljIHVpbnQ2NF90IG5hbWVIYXNoRm9yU2hhZGVyKGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCBs
ZW5ndGgpCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGb3JDdXJyZW50R0xDb250ZXh0KCkKIHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigq
bmV3IEdyYXBoaWNzQ29udGV4dDNEKHsgfSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRv
Q3VycmVudEdMQ29udGV4dCkpOworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAoIWNv
bnRleHQtPm1fdGV4bWFwTGF5ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2Vsc2UKICAg
ICBpZiAoIWNvbnRleHQtPm1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5k
aWYKICAgICByZXR1cm4gV1RGTW92ZShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjc0YWEyOTUyODhm
NjI0ZTRiYmQyODdkNDBhMDU3MTgwNjljNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1M
YXllci5jcHAKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIsIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXIuaCIKKworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUgIkJpdG1hcFRl
eHR1cmVHTC5oIgorI2luY2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIo
R3JhcGhpY3NDb250ZXh0M0QmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSByZW5kZXJTdHlsZSkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9yZW5kZXJT
dHlsZShyZW5kZXJTdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHJlbmRlclN0eWxlKSB7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgorICAgICAgICBtX2dsQ29udGV4
dCA9IEdMQ29udGV4dDo6Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5Ojpz
aGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dDoKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5k
b3c6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9
CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKG1fcmVu
ZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbikKKyAgICAgICAg
bV9wbGF0Zm9ybUxheWVyUHJveHkgPSBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eSgpKTsKKyNlbmRpZgorfQorCitUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXI6On5UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoKQoreworI2lmICFVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGll
bnQoKS0+cGxhdGZvcm1MYXllcldpbGxCZURlc3Ryb3llZCgpOworI2VuZGlmCit9CisKK2Jvb2wg
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjptYWtlQ29udGV4dEN1cnJlbnQoKQorewor
ICAgIHJldHVybiBtX2dsQ29udGV4dCA/IG1fZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQo
KSA6IGZhbHNlOworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIFRleHR1cmVNYXBwZXJH
QzNEUGxhdGZvcm1MYXllcjo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9nbENv
bnRleHQgPyBtX2dsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmN1cnJl
bnQoKS0+cGxhdGZvcm1Db250ZXh0KCk7Cit9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1NfVEhSRUFERUQpCitSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpwcm94eSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVy
R0MzRFBsYXRmb3JtTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQoreworICAgIEFTU0VSVCht
X3JlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAg
IGlmIChtX2NvbnRleHQubGF5ZXJDb21wb3NpdGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY29udGV4dC5wcmVwYXJlVGV4dHVyZSgpOworICAgIEludFNpemUgdGV4dHVyZVNpemUobV9j
b250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQubV9jdXJyZW50SGVpZ2h0KTsKKyAgICBU
ZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlw
VGV4dHVyZSB8IChtX2NvbnRleHQubV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkQmxlbmQgOiAwKTsKKworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0
Zm9ybUxheWVyUHJveHktPmxvY2soKSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5w
dXNoTmV4dEJ1ZmZlcihzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyPihtX2NvbnRleHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdz
KSk7CisgICAgfQorCisgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKyNl
bHNlCit2b2lkIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5
KQoreworICAgIGlmICghbV9nbENvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChtX3JlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOwor
CisgICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworI2lmIFVTRShURVhUVVJF
X01BUFBFUl9HTCkKKyAgICBpZiAobV9jb250ZXh0Lm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29u
dGV4dC5tX3N0YXRlLmJvdW5kRkJPID09IG1fY29udGV4dC5tX211bHRpc2FtcGxlRkJPKSB7Cisg
ICAgICAgIEdMQ29udGV4dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJy
ZW50KCk7CisgICAgICAgIGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQu
Z2V0KCkpCisgICAgICAgICAgICBtX2NvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAg
ICAgICAgbV9jb250ZXh0LnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgOjpnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y29udGV4dC5tX3N0YXRlLmJvdW5kRkJPKTsKKworICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVD
b250ZXh0ICYmIHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKKyAg
ICAgICAgICAgIHByZXZpb3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgfQorCisgICAgVGV4dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1
cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpOworICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
ZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC5t
X2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOworICAgIElu
dFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQubV9j
dXJyZW50SGVpZ2h0KTsKKyAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX2NvbnRleHQubV90ZXh0
dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7Cisj
ZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorfQorI2VuZGlmIC8vIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViMWUwMzU0MTQ5NGZjYWYwMzUxN2VlNzVhMmE2
OGQzMWU4ZDJlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNyBJZ2FsaWEgUy5M
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CitjbGFzcyBH
TENvbnRleHQ7CitjbGFzcyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworCitjbGFz
cyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7
CitwdWJsaWM6CisgICAgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29u
dGV4dDNEJiwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKKyAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoKTsKKworICAgIGJvb2wgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJl
dHVybiBtX3JlbmRlclN0eWxlOyB9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJp
ZGU7CisjZWxzZQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQgb3BhY2l0eSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0Nv
bnRleHQzRCYgbV9jb250ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IG1fZ2xD
b250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBtX3JlbmRlclN0eWxl
OworCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKKyAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiBtX2NvbXBvc2l0b3JUZXh0dXJlOworI2VuZGlmCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQ
RVIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299350</attachid>
            <date>2017-01-20 09:54:23 -0800</date>
            <delta_ts>2017-02-03 23:03:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167096-20170120095229.patch</filename>
            <type>text/plain</type>
            <size>22390</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y2ZWI1ZTU3ODk3M2Uy
MGQ0NTcxNzA5N2M5ZmY1MDlmZTA2NmVlMS4uZDI2YWM3MzJkZGJjOTRlYzg3YmM0NTJlNGY2NTRl
YjE4NmVkZWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTAxLTIwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgbG9naWMgb3V0IG9mIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MDk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgVGV4
dHVyZU1hcHBlci1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGluIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZSBpbnRvIGEKKyAgICAgICAgc2VwYXJhdGUgY2xhc3MuIFRoZSBuZXcgVGV4dHVyZU1hcHBl
ckdDM0RQbGF0Zm9ybUxheWVyIGNsYXNzIGluaGVyaXRzIGZyb20gdGhlCisgICAgICAgIGNsYXNz
IHRoYXQncyBhbGlhc2VkIHRvIHRoZSBQbGF0Zm9ybUxheWVyIHR5cGUsIGxpa2UgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlIGRpZAorICAgICAgICBiZWZvcmUuCisKKyAgICAgICAgSW4gR3JhcGhp
Y3NDb250ZXh0M0QsIHRoZSBuZXcgbV90ZXhtYXBMYXllciBtZW1iZXIgdmFyaWFibGUgb2YgdGhl
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+
IHR5cGUgaXMgdXNlZCBmb3IgY29uZmlndXJhdGlvbnMKKyAgICAgICAgdGhhdCBlbmFibGUgVGV4
dHVyZU1hcHBlciwgbGFyZ2VseSB0aGUgc2FtZSB3YXkgdGhlIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZQorICAgICAgICBvYmplY3Qgd2FzIHVzZWQgYmVmb3JlLiBUaGUgcmVtYWluaW5nIGNvZGUg
aW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIGlzIGxlZnQKKyAgICAgICAgdW5jaGFuZ2VkIHRv
IGtlZXAgaXQgd29ya2luZyBmb3Igb3RoZXIgcG9ydHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IC0tIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFw
aGljc0NvbnRleHQzRFByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cHJveHkpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JD
dXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6VGV4dHVyZU1hcHBl
ckdDM0RQbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllcjo6flRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6Om1ha2VDb250ZXh0Q3Vy
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6
OnBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0MzRFBs
YXRmb3JtTGF5ZXI6OnByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9y
bUxheWVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oLgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdDM0RQbGF0Zm9ybUxheWVyOjpyZW5kZXJTdHlsZSk6CisKIDIwMTctMDEtMjAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRy
b2xzXSBUdXJuIG1vZGVybiBtZWRpYSBjb250cm9scyBvbiBieSBkZWZhdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQppbmRleCBlYjQzYTg5Mzg4NGM3OGYz
YjI0ZGU3NDQyODc0ZGYxZjU0NDA3YWZlLi5kNjU2Yjk1OTJjMTM3YTg3ZTlhODcxNGFjNWUxNTRi
MTljYWFmYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFw
cGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21h
a2UKQEAgLTksNiArOSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKyAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0
b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCmluZGV4IDBjNzllOTNmZWQwNmQzMDUyMThjZTBhMTkxZjRjZDI2MTMwZTEzNTku
LjJiZmNmZjA2NmFiMWVlMWQ5MWY2NDk1OTgyYjVmYmMwNTdhZjBiMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAt
MTAxLDYgKzEwMSw5IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAjaWYgVVNF
KENBSVJPKQogY2xhc3MgUGxhdGZvcm1Db250ZXh0Q2Fpcm87CiAjZW5kaWYKKyNpZiBVU0UoVEVY
VFVSRV9NQVBQRVIpCitjbGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI7CisjZW5k
aWYKIAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8Q1N0cmluZywgdWludDY0X3Q+IFNoYWRlck5hbWVI
YXNoOwogCkBAIC0xNDEzLDggKzE0MTYsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBFcnJvcnMgcmFp
c2VkIGJ5IHN5bnRoZXNpemVHTEVycm9yKCkuCiAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+IG1f
c3ludGhldGljRXJyb3JzOwogCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGZyaWVuZCBj
bGFzcyBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcj4gbV90ZXhtYXBMYXllcjsKKyNlbHNlCiAg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlPiBtX3ByaXZhdGU7CisjZW5kaWYKICAgICAK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggODBjZWYzNzliYjE0NWU1YzI0NmE5MjA4MGQ5NzM3NTAy
NDQ4YWFiZC4uZmM3NjQ2NTRmYzRhNTMzNDY4MWZhZTQxOGM3M2RiMDNlNDk3MDNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0yNSw5ICsyNSw2IEBACiAjaW5jbHVkZSAiSG9zdFdp
bmRvdy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmIFVTRShDQUlSTykK
LSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgotI2VuZGlmCiAKICNpZiBVU0UoT1BF
TkdMX0VTXzIpCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+CkBAIC0zNiwyMSArMzMsMTIgQEAKICNp
bmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCi0jaW5jbHVkZSA8dGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oPgotI2VuZGlmCi0KLSNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaCIKLSNlbmRpZgotCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCi0gICAgOiBtX2NvbnRleHQoY29udGV4
dCkKLSAgICAsIG1fcmVuZGVyU3R5bGUocmVuZGVyU3R5bGUpCitHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKKyAgICA6IG1fcmVuZGVyU3R5
bGUocmVuZGVyU3R5bGUpCiB7CiAgICAgc3dpdGNoIChyZW5kZXJTdHlsZSkgewogICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbjoKQEAgLTYyLDIwICs1MCw5IEBAIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBHCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0KLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFE
RUQpCi0gICAgaWYgKG1fcmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9m
ZnNjcmVlbikKLSAgICAgICAgbV9wbGF0Zm9ybUxheWVyUHJveHkgPSBhZG9wdFJlZihuZXcgVGV4
dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpKTsKLSNlbmRpZgogfQogCi1HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKQotewotI2lmIFVTRShU
RVhUVVJFX01BUFBFUikgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAg
ICBpZiAoY2xpZW50KCkpCi0gICAgICAgIGNsaWVudCgpLT5wbGF0Zm9ybUxheWVyV2lsbEJlRGVz
dHJveWVkKCk7Ci0jZW5kaWYKLX0KK0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6fkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZSgpID0gZGVmYXVsdDsKIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7CkBAIC04Nyw2MCArNjQsNiBAQCBQbGF0Zm9y
bUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1Db250
ZXh0KCkKICAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2dsQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCkgOiBHTENvbnRleHQ6OmN1cnJlbnQoKS0+cGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi1SZWZQdHI8VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eT4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcm94eSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsKLX0KLQot
dm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQotewot
ICAgIEFTU0VSVChtX3JlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZz
Y3JlZW4pOwotICAgIGlmIChtX2NvbnRleHQtPmxheWVyQ29tcG9zaXRlZCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBtX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7Ci0gICAgSW50U2l6ZSB0
ZXh0dXJlU2l6ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVu
dEhlaWdodCk7Ci0gICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0LT5tX2F0dHJzLmFscGhhID8gVGV4
dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOwotCi0gICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGhvbGRlcihtX3BsYXRmb3JtTGF5ZXJQcm94eS0+bG9jaygpKTsKLSAgICAgICAgbV9wbGF0
Zm9ybUxheWVyUHJveHktPnB1c2hOZXh0QnVmZmVyKHN0ZDo6bWFrZV91bmlxdWU8VGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJCdWZmZXI+KG1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSwg
dGV4dHVyZVNpemUsIGZsYWdzKSk7Ci0gICAgfQotCi0gICAgbV9jb250ZXh0LT5tYXJrTGF5ZXJD
b21wb3NpdGVkKCk7Ci19Ci0jZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi12b2lkIEdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4
dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQotewotICAgIGlmICghbV9nbENvbnRl
eHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3JlbmRlclN0eWxlID09IEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOwotCi0gICAgbV9jb250ZXh0LT5tYXJrTGF5
ZXJDb21wb3NpdGVkKCk7Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgaWYgKG1f
Y29udGV4dC0+bV9hdHRycy5hbnRpYWxpYXMgJiYgbV9jb250ZXh0LT5tX3N0YXRlLmJvdW5kRkJP
ID09IG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICBHTENvbnRleHQqIHBy
ZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOwotICAgICAgICBpZiAo
cHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQotICAgICAgICAgICAg
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgICAgICBtX2NvbnRleHQtPnJl
c29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9zdGF0ZS5i
b3VuZEZCTyk7Ci0KLSAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAmJiBwcmV2aW91
c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCi0gICAgICAgICAgICBwcmV2aW91
c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIH0KLQotICAgIFRleHR1
cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0
dXJlTWFwcGVyKTsKLSAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEgPyBU
ZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7Ci0gICAgSW50U2l6ZSB0ZXh0dXJlU2l6
ZShtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCk7
Ci0gICAgdGV4bWFwR0wuZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0
ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKLSNlbmRpZiAvLyBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCi19Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQotCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoR1JBUEhJQ1NfQ09OVEVY
VF8zRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZDc0NjExYWU3NWI2NjYwNmRlMDc5YzE0
NmMyYmIwMGJkNGJiMDc3NC4uNTA3NTU4Mjk3NGY4ZDRhNGZhYWYzOWQ1MjM0YzNlZmJlZjA0MmYw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTI0LDIwICsyNCwxMSBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
LmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQml0bWFwVGV4dHVyZUdMOwogCi1jbGFz
cyBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAg
OiBwdWJsaWMgUGxhdGZvcm1MYXllcgotI2VuZGlmCi17CitjbGFzcyBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGUgewogcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSk7CiAgICAgfkdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZSgpOwpAQCAtNDYsMjIgKzM3LDkgQEAgcHVibGljOgogCiAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKCkgeyByZXR1cm4gbV9y
ZW5kZXJTdHlsZTsgfQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
ICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwotI2Vs
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7Ci0jZW5kaWYKLQogcHJpdmF0ZToKLSAg
ICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHQ+IG1fZ2xDb250ZXh0OwogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBt
X3JlbmRlclN0eWxlOwotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
ICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5
ZXJQcm94eTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZUdMPiBtX2NvbXBvc2l0b3JUZXh0dXJl
OwotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4
IDZiYzhiMmVjZjc2ZGY4NTU1ZjU5NDgyNjg4MDlhMDQyZTJhOGQyNDEuLmY0ODY0MGEyM2E4OGI2
Zjc0N2ZmMDQ1NmZhNmQ1NWJlYmM4MDQwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCkBAIC01NCw2ICs1NCwxMCBAQAogI2luY2x1ZGUgIk9wZW5HTFNoaW1zLmgiCiAjZW5k
aWYKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQpAQCAtOTEsOCArOTUsMTMg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNE
QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBIb3MKICAgICAsIG1fbXVsdGlzYW1wbGVGQk8oMCkKICAg
ICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKICAgICAsIG1fbXVsdGlzYW1w
bGVDb2xvckJ1ZmZlcigwKQotICAgICwgbV9wcml2YXRlKHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSkpCiB7CisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQorICAgIG1fdGV4bWFwTGF5ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVN
YXBwZXJHQzNEUGxhdGZvcm1MYXllcj4oKnRoaXMsIHJlbmRlclN0eWxlKTsKKyNlbHNlCisgICAg
bV9wcml2YXRlID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRleHQzRFByaXZhdGU+KHRo
aXMsIHJlbmRlclN0eWxlKTsKKyNlbmRpZgorCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAK
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKQEAgLTIwMCw4ICsyMDksMTMgQEAgR3JhcGhpY3ND
b250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEQXR0cmlidXRlcyBh
dHRyaWJ1dGVzLCBIb3MKIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgp
CiB7CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorICAgIGlmIChtX3RleG1hcExheWVyLT5yZW5k
ZXJTdHlsZSgpID09IFJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOwor
I2Vsc2UKICAgICBpZiAobV9wcml2YXRlLT5yZW5kZXJTdHlsZSgpID09IFJlbmRlclRvQ3VycmVu
dEdMQ29udGV4dCkKICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICBpZiAobV90ZXh0dXJlKQpAQCAtMzM4LDkgKzM1MiwxNCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8
RXJyb3JNZXNzYWdlQ2FsbAogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1
cnJlbnQoKQogewotICAgIGlmICghbV9wcml2YXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQorICAgIGlmIChtX3RleG1hcExheWVyKQorICAgICAgICByZXR1cm4gbV90ZXht
YXBMYXllci0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisjZWxzZQorICAgIGlmIChtX3ByaXZhdGUp
CisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVudCgpOworI2VuZGlm
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0dQ
VVN0YXR1c0lmTmVjZXNzYXJ5KCkKQEAgLTM0OSw3ICszNjgsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y2hlY2tHUFVTdGF0dXNJZk5lY2Vzc2FyeSgpCiAKIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQog
eworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci0+cGxh
dGZvcm1Db250ZXh0KCk7CisjZWxzZQogICAgIHJldHVybiBtX3ByaXZhdGUtPnBsYXRmb3JtQ29u
dGV4dCgpOworI2VuZGlmCiB9CiAKIFBsYXRmb3JtM0RPYmplY3QgR3JhcGhpY3NDb250ZXh0M0Q6
OnBsYXRmb3JtVGV4dHVyZSgpIGNvbnN0CkBAIC0zNjgsNyArMzkxLDExIEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzR0xFUzJDb21wbGlhbnQoKSBjb25zdAogCiBQbGF0Zm9ybUxheWVyKiBH
cmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CisjaWYgVVNFKFRFWFRV
UkVfTUFQUEVSKQorICAgIHJldHVybiBtX3RleG1hcExheWVyLmdldCgpOworI2Vsc2UKICAgICBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOworI2VuZGlmCiB9CiAKICNpZiBQTEFURk9STShHVEspCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA5NWUx
ZDQ5YTU0MDcwZDUxMTUyMjExMTQ0MWI0N2M0NmEzYWJkOWRhLi5kMzM2YTQwNTY3MDVjODNmYTIw
NjM2OWRhZjU1MTc5ZGFiOWU4MGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKQEAgLTEzMyw4ICsxMzMsMTMgQEAgc3RhdGljIHVpbnQ2NF90IG5h
bWVIYXNoRm9yU2hhZGVyKGNvbnN0IGNoYXIqIG5hbWUsIHNpemVfdCBsZW5ndGgpCiBSZWZQdHI8
R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGb3JDdXJyZW50R0xD
b250ZXh0KCkKIHsKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFJlZigqbmV3IEdyYXBoaWNzQ29u
dGV4dDNEKHsgfSwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4
dCkpOworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAoIWNvbnRleHQtPm1fdGV4bWFw
TGF5ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworI2Vsc2UKICAgICBpZiAoIWNvbnRleHQt
Pm1fcHJpdmF0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKICAgICByZXR1cm4g
V1RGTW92ZShjb250ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjc0YWEyOTUyODhmNjI0ZTRiYmQyODdkNDBh
MDU3MTgwNjljNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKQEAgLTAs
MCArMSwxMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTcgSWdhbGlh
IFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICog
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCIKKworI2lm
IFVTRShURVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUgIkJpdG1hcFRleHR1cmVHTC5oIgorI2lu
Y2x1ZGUgIkdMQ29udGV4dC5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dHVyZU1hcHBlckdDM0RQbGF0
Zm9ybUxheWVyOjpUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIoR3JhcGhpY3NDb250ZXh0
M0QmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkK
KyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9yZW5kZXJTdHlsZShyZW5kZXJTdHls
ZSkKK3sKKyAgICBzd2l0Y2ggKHJlbmRlclN0eWxlKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyT2Zmc2NyZWVuOgorICAgICAgICBtX2dsQ29udGV4dCA9IEdMQ29udGV4dDo6
Y3JlYXRlT2Zmc2NyZWVuQ29udGV4dCgmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9y
Q29tcG9zaXRpbmcoKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlclRvQ3VycmVudEdMQ29udGV4dDoKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3c6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgaWYgKG1fcmVuZGVyU3R5bGUgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVlbikKKyAgICAgICAgbV9wbGF0Zm9ybUxheWVy
UHJveHkgPSBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSgpKTsK
KyNlbmRpZgorfQorCitUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6On5UZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIoKQoreworI2lmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Nf
VEhSRUFERUQpCisgICAgaWYgKGNsaWVudCgpKQorICAgICAgICBjbGllbnQoKS0+cGxhdGZvcm1M
YXllcldpbGxCZURlc3Ryb3llZCgpOworI2VuZGlmCit9CisKK2Jvb2wgVGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjptYWtlQ29udGV4dEN1cnJlbnQoKQoreworICAgIHJldHVybiBtX2ds
Q29udGV4dCA/IG1fZ2xDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSA6IGZhbHNlOworfQor
CitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cjo6cGxhdGZvcm1Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2dsQ29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgOiBHTENvbnRleHQ6OmN1cnJlbnQoKS0+cGxhdGZvcm1D
b250ZXh0KCk7Cit9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCitS
ZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gVGV4dHVyZU1hcHBlckdDM0RQ
bGF0Zm9ybUxheWVyOjpwcm94eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxhdGZvcm1MYXll
clByb3h5LmNvcHlSZWYoKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5
ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQoreworICAgIEFTU0VSVChtX3JlbmRlclN0eWxlID09
IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworICAgIGlmIChtX2NvbnRleHQu
bGF5ZXJDb21wb3NpdGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC5wcmVw
YXJlVGV4dHVyZSgpOworICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0Lm1fY3VycmVu
dFdpZHRoLCBtX2NvbnRleHQubV9jdXJyZW50SGVpZ2h0KTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6
OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2Nv
bnRleHQubV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsK
KworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHkt
PmxvY2soKSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihz
dGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRl
eHQubV9jb21wb3NpdG9yVGV4dHVyZSwgdGV4dHVyZVNpemUsIGZsYWdzKSk7CisgICAgfQorCisg
ICAgbV9jb250ZXh0Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKK30KKyNlbHNlCit2b2lkIFRleHR1
cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQoreworICAgIGlmICgh
bV9nbENvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3JlbmRlclN0eWxl
ID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pOworCisgICAgbV9jb250ZXh0
Lm1hcmtMYXllckNvbXBvc2l0ZWQoKTsKKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyAg
ICBpZiAobV9jb250ZXh0Lm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4dC5tX3N0YXRlLmJv
dW5kRkJPID09IG1fY29udGV4dC5tX211bHRpc2FtcGxlRkJPKSB7CisgICAgICAgIEdMQ29udGV4
dCogcHJldmlvdXNBY3RpdmVDb250ZXh0ID0gR0xDb250ZXh0OjpjdXJyZW50KCk7CisgICAgICAg
IGlmIChwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCisgICAgICAg
ICAgICBtX2NvbnRleHQubWFrZUNvbnRleHRDdXJyZW50KCk7CisKKyAgICAgICAgbV9jb250ZXh0
LnJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC5tX3N0YXRl
LmJvdW5kRkJPKTsKKworICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICYmIHByZXZp
b3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5nZXQoKSkKKyAgICAgICAgICAgIHByZXZp
b3VzQWN0aXZlQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgfQorCisgICAgVGV4
dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRl
eHR1cmVNYXBwZXIpOworICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJl
TWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC5tX2F0dHJzLmFscGhhID8g
VGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOworICAgIEludFNpemUgdGV4dHVyZVNp
emUobV9jb250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQubV9jdXJyZW50SGVpZ2h0KTsK
KyAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX2NvbnRleHQubV90ZXh0dXJlLCBmbGFncywgdGV4
dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CisjZW5kaWYgLy8gVVNFKFRF
WFRVUkVfTUFQUEVSX0dMKQorfQorI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKFRFWFRV
UkVfTUFQUEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjViMWUwMzU0MTQ5NGZjYWYwMzUxN2VlNzVhMmE2OGQzMWU4ZDJlYWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoVEVYVFVSRV9N
QVBQRVIpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgorI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBCaXRtYXBUZXh0dXJlR0w7CitjbGFzcyBHTENvbnRleHQ7CitjbGFz
cyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OworCitjbGFzcyBUZXh0dXJlTWFwcGVy
R0MzRFBsYXRmb3JtTGF5ZXIgOiBwdWJsaWMgUGxhdGZvcm1MYXllciB7CitwdWJsaWM6CisgICAg
VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dDNEJiwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlKTsKKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIoKTsKKworICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUoKSB7IHJldHVybiBtX3JlbmRlclN0
eWxlOyB9CisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisgICAgUmVm
UHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CisjZWxzZQorICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3Bh
Y2l0eSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCYgbV9jb250
ZXh0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IG1fZ2xDb250ZXh0OworICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBtX3JlbmRlclN0eWxlOworCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQcm94eTsKKyAgICBSZWZQdHI8Qml0bWFw
VGV4dHVyZUdMPiBtX2NvbXBvc2l0b3JUZXh0dXJlOworI2VuZGlmCit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300605</attachid>
            <date>2017-02-03 23:03:38 -0800</date>
            <delta_ts>2017-02-03 23:55:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167096-20170203230121.patch</filename>
            <type>text/plain</type>
            <size>22427</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzM2Y0NmMwN2Y1NDM3
Mjc3ODVhMDQ3ODgwYjMzNzIwZWRlYTZmZi4uM2U2NWE5NzI1ZDM5ZWQ1NTk5NjJhNjllNWZjNTdh
N2UzMjZiZWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTAyLTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgbG9naWMgb3V0IG9mIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MDk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNb3ZlIHRoZSBU
ZXh0dXJlTWFwcGVyLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgaW4gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlIGludG8gYQorICAgICAgICBzZXBhcmF0ZSBjbGFzcy4gVGhlIG5ldyBUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIgY2xhc3MgaW5oZXJpdHMgZnJvbSB0aGUKKyAgICAgICAgY2xh
c3MgdGhhdCdzIGFsaWFzZWQgdG8gdGhlIFBsYXRmb3JtTGF5ZXIgdHlwZSwgbGlrZSBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUgZGlkCisgICAgICAgIGJlZm9yZS4KKworICAgICAgICBJbiBHcmFw
aGljc0NvbnRleHQzRCwgdGhlIG5ldyBtX3RleG1hcExheWVyIG1lbWJlciB2YXJpYWJsZSBvZiB0
aGUKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4gdHlwZSBpcyB1c2VkIGZvciBjb25maWd1cmF0aW9ucworICAgICAgICB0aGF0IGVuYWJsZSBU
ZXh0dXJlTWFwcGVyLCBsYXJnZWx5IHRoZSBzYW1lIHdheSB0aGUgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlCisgICAgICAgIG9iamVjdCB3YXMgdXNlZCBiZWZvcmUuIFRoZSByZW1haW5pbmcgY29k
ZSBpbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgaXMgbGVmdAorICAgICAgICB1bmNoYW5nZWQg
dG8ga2VlcCBpdCB3b3JraW5nIGZvciBvdGhlciBwb3J0cy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVy
ZU1hcHBlci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcm94eSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZv
ckN1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjp+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6bWFrZUNvbnRleHRD
dXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cjo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllcjo6cHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnJlbmRlclN0eWxlKToKKwogMjAxNy0wMi0wMyAgRW5yaXF1
ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3Ry
ZWFtZXJdIFN0b3JlIHByZWxvYWRlZCBtZWRpYSBpbiB3ZWJraXQncyBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXggZWI0M2E4OTM4ODRjNzhm
M2IyNGRlNzQ0Mjg3NGRmMWY1NDQwN2FmZS4uZDY1NmI5NTkyYzEzN2E4N2U5YTg3MTRhYzVlMTU0
YjE5Y2FhZmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1h
cHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNt
YWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCBjZmVjNDIyOWI1YjM5ZmViMTA5MGFkNTBmMGQzZjAxMTI3MGVmZmU2
Li4zZTNkZDNiZjNlMzIyZWIzZmYzZmE5NjA1MzY1YTZjNTk4YTM0N2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAg
LTEwMSw2ICsxMDEsOSBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVT
RShDQUlSTykKIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOworI2Vu
ZGlmCiAKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1l
SGFzaDsKIApAQCAtMTQxNiw4ICsxNDE5LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gRXJyb3JzIHJh
aXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBt
X3N5bnRoZXRpY0Vycm9yczsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVBMQVRGT1JN
KEVGTCkKKyAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+IG1fdGV4
bWFwTGF5ZXI7CisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gbV9wcml2
YXRlOworI2VuZGlmCiAgICAgCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV93ZWJn
bENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDgwY2VmMzc5YmIxNDVl
NWMyNDZhOTIwODBkOTczNzUwMjQ0OGFhYmQuLmZjNzY0NjU0ZmM0YTUzMzQ2ODFmYWU0MThjNzNk
YjAzZTQ5NzAzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjUsOSArMjUsNiBA
QAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNl
bmRpZgogCiAjaWYgVVNFKE9QRU5HTF9FU18yKQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgpAQCAt
MzYsMjEgKzMzLDEyIEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotI2luY2x1ZGUgPHRleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aD4KLSNlbmRpZgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQotI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0jZW5kaWYKLQogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQotICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3JlbmRlclN0eWxlKHJlbmRlclN0eWxlKQor
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUp
CisgICAgOiBtX3JlbmRlclN0eWxlKHJlbmRlclN0eWxlKQogewogICAgIHN3aXRjaCAocmVuZGVy
U3R5bGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW46CkBA
IC02MiwyMCArNTAsOSBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQotICAgIGlmIChtX3JlbmRlclN0eWxlID09IEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pCi0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5
ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSk7Ci0jZW5k
aWYKIH0KIAotR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlKCkKLXsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+cGxh
dGZvcm1MYXllcldpbGxCZURlc3Ryb3llZCgpOwotI2VuZGlmCi19CitHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewpAQCAtODcs
NjAgKzY0LDYgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiAgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3Jt
Q29udGV4dCgpOwogfQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
UmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cHJveHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94
eS5jb3B5UmVmKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzd2FwQnVm
ZmVyc0lmTmVlZGVkKCkKLXsKLSAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLSAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBv
c2l0ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5wcmVwYXJlVGV4dHVy
ZSgpOwotICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwg
bV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOwotICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
ZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+
bV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKLQotICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2so
KSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQtPm1f
Y29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncykpOwotICAgIH0KLQotICAgIG1f
Y29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwotfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKLXsK
LSAgICBpZiAoIW1fZ2xDb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9y
ZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLQotICAg
IG1fY29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwotCi0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQotICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4
dC0+bV9zdGF0ZS5ib3VuZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAg
ICAgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJl
bnQoKTsKLSAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5n
ZXQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAg
ICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8pOwotCi0gICAgICAgIGlmIChwcmV2aW91c0FjdGl2
ZUNvbnRleHQgJiYgcHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQot
ICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICB9Ci0KLSAgICBUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcik7Ci0gICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0
LT5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOwotICAg
IEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0
LT5tX2N1cnJlbnRIZWlnaHQpOwotICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSk7Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotfQotI2VuZGlmIC8vIFVTRShU
RVhUVVJFX01BUFBFUikKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGQ3NDYx
MWFlNzViNjY2MDZkZTA3OWMxNDZjMmJiMDBiZDRiYjA3NzQuLjUwNzU1ODI5NzRmOGQ0YTRmYWFm
MzlkNTIzNGMzZWZiZWYwNDJmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0yNCwyMCAr
MjQsMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpdG1h
cFRleHR1cmVHTDsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQotICAgIDogcHVibGljIFBsYXRmb3JtTGF5ZXIKLSNlbmRpZgoteworY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKQEAgLTQ2LDIyICszNyw5
IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJT
dHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVk
ZWQoKSBvdmVycmlkZTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwotI2Vu
ZGlmCi0KIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKICAgICBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyU3R5bGUgbV9yZW5kZXJTdHlsZTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4g
bV9jb21wb3NpdG9yVGV4dHVyZTsKLSNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRENhaXJvLmNwcAppbmRleCA2YmM4YjJlY2Y3NmRmODU1NWY1OTQ4MjY4ODA5YTA0MmUyYThk
MjQxLi5mNDg2NDBhMjNhODhiNmY3NDdmZjA0NTZmYTZkNTViZWJjODA0MGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgogI2VuZGlmCiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSkKQEAgLTkxLDggKzk1LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiAgICAgLCBtX211
bHRpc2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDAp
CiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUp
KQogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBtX3RleG1hcExheWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJT
dHlsZSk7CisjZWxzZQorICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSk7CisjZW5kaWYKKwogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CkBAIC0yMDAsOCAr
MjA5LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QoKQogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAo
bV90ZXhtYXBMYXllci0+cmVuZGVyU3R5bGUoKSA9PSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQp
CisgICAgICAgIHJldHVybjsKKyNlbHNlCiAgICAgaWYgKG1fcHJpdmF0ZS0+cmVuZGVyU3R5bGUo
KSA9PSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgog
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fdGV4dHVyZSkKQEAgLTMzOCw5
ICszNTIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJh
Y2soc3RkOjp1bmlxdWVfcHRyPEVycm9yTWVzc2FnZUNhbGwKIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAobV90ZXhtYXBMYXllcikKKyAg
ICAgICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXItPm1ha2VDb250ZXh0Q3VycmVudCgpOworI2Vsc2UK
KyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXNJZk5lY2Vzc2FyeSgpCkBAIC0zNDksNyArMzY4LDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzSWZOZWNlc3NhcnkoKQog
CiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEKCkKIHsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgcmV0dXJu
IG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29udGV4dCgpOworI2Vsc2UKICAgICByZXR1cm4gbV9w
cml2YXRlLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyNlbmRpZgogfQogCiBQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdApAQCAtMzY4LDcgKzM5
MSwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
IAogUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci5n
ZXQoKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKKyNlbmRpZgogfQogCiAj
aWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggOTVlMWQ0OWE1NDA3MGQ1MTE1MjIxMTE0NDFiNDdjNDZhM2FiZDlkYS4u
YjkxYTUyYjBhZTNkODNiMDk2NGMxNjg1NzhiZDgxYjUyM2Q3MjEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzMsOCArMTMzLDEzIEBA
IHN0YXRpYyB1aW50NjRfdCBuYW1lSGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXpl
X3QgbGVuZ3RoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRCh7IH0sIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFQTEFU
Rk9STShFRkwpCisgICAgaWYgKCFjb250ZXh0LT5tX3RleG1hcExheWVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbHNlCiAgICAgaWYgKCFjb250ZXh0LT5tX3ByaXZhdGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmY3NGFhMjk1Mjg4ZjYyNGU0YmJkMjg3ZDQwYTA1NzE4MDY5YzQ5NwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgiCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
CisKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNsdWRlICJHTENvbnRleHQuaCIK
KyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6VGV4dHVyZU1h
cHBlckdDM0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0LCBHcmFwaGlj
c0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCisgICAgOiBtX2NvbnRleHQoY29u
dGV4dCkKKyAgICAsIG1fcmVuZGVyU3R5bGUocmVuZGVyU3R5bGUpCit7CisgICAgc3dpdGNoIChy
ZW5kZXJTdHlsZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNjcmVl
bjoKKyAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRleHQ6OmNyZWF0ZU9mZnNjcmVlbkNvbnRl
eHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRH
TENvbnRleHQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJl
bmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIGlmIChtX3JlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJPZmZzY3JlZW4pCisgICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5ID0gYWRvcHRSZWYobmV3
IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSk7CisjZW5kaWYKK30KKworVGV4dHVy
ZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjp+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVy
KCkKK3sKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmIChj
bGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQo
KTsKKyNlbmRpZgorfQorCitib29sIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6bWFr
ZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gbV9nbENvbnRleHQgPyBtX2dsQ29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCkgOiBmYWxzZTsKK30KKworUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQzRCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnBsYXRmb3JtQ29udGV4dCgp
Cit7CisgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3JtQ29udGV4dCgpOworfQorCisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorUmVmUHRyPFRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHk+IFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6cHJveHko
KSBjb25zdAoreworICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94eS5jb3B5UmVmKCk7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyT2Zmc2NyZWVuKTsKKyAgICBpZiAobV9jb250ZXh0LmxheWVyQ29tcG9zaXRlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQucHJlcGFyZVRleHR1cmUoKTsKKyAgICBJ
bnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1f
Y3VycmVudEhlaWdodCk7CisgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1
cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0Lm1fYXR0cnMuYWxwaGEg
PyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CisKKyAgICB7CisgICAgICAgIExv
Y2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5sb2NrKCkpOworICAgICAgICBt
X3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3RkOjptYWtlX3VuaXF1ZTxUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0Lm1fY29tcG9zaXRvclRleHR1
cmUsIHRleHR1cmVTaXplLCBmbGFncykpOworICAgIH0KKworICAgIG1fY29udGV4dC5tYXJrTGF5
ZXJDb21wb3NpdGVkKCk7Cit9CisjZWxzZQordm9pZCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3Jt
TGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIW1fZ2xDb250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6UmVuZGVyT2Zmc2NyZWVuKTsKKworICAgIG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVk
KCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKG1fY29udGV4dC5tX2F0
dHJzLmFudGlhbGlhcyAmJiBtX2NvbnRleHQubV9zdGF0ZS5ib3VuZEZCTyA9PSBtX2NvbnRleHQu
bV9tdWx0aXNhbXBsZUZCTykgeworICAgICAgICBHTENvbnRleHQqIHByZXZpb3VzQWN0aXZlQ29u
dGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgICAgICBpZiAocHJldmlvdXNBY3RpdmVD
b250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQorICAgICAgICAgICAgbV9jb250ZXh0Lm1ha2VD
b250ZXh0Q3VycmVudCgpOworCisgICAgICAgIG1fY29udGV4dC5yZXNvbHZlTXVsdGlzYW1wbGlu
Z0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQubV9zdGF0ZS5ib3VuZEZCTyk7CisKKyAgICAg
ICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAmJiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgIT0g
bV9nbENvbnRleHQuZ2V0KCkpCisgICAgICAgICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgIH0KKworICAgIFRleHR1cmVNYXBwZXJHTCYgdGV4bWFw
R0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVyKTsKKyAgICBU
ZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRGbGlw
VGV4dHVyZSB8IChtX2NvbnRleHQubV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hv
dWxkQmxlbmQgOiAwKTsKKyAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJl
bnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7CisgICAgdGV4bWFwR0wuZHJhd1Rl
eHR1cmUobV9jb250ZXh0Lm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0
LCBtYXRyaXgsIG9wYWNpdHkpOworI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKK30K
KyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0MzRFBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjFlMDM1
NDE0OTRmY2FmMDM1MTdlZTc1YTJhNjhkMzFlOGQyZWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIsIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQorCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0
bWFwVGV4dHVyZUdMOworY2xhc3MgR0xDb250ZXh0OworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eTsKKworY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyIDog
cHVibGljIFBsYXRmb3JtTGF5ZXIgeworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllcihHcmFwaGljc0NvbnRleHQzRCYsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJT
dHlsZSk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKCk7CisK
KyAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0
eWxlIHJlbmRlclN0eWxlKCkgeyByZXR1cm4gbV9yZW5kZXJTdHlsZTsgfQorCisjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1
ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOworI2Vsc2UKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0QmIG1fY29udGV4dDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVu
ZGVyU3R5bGUgbV9yZW5kZXJTdHlsZTsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19U
SFJFQURFRCkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9w
bGF0Zm9ybUxheWVyUHJveHk7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4gbV9jb21wb3Np
dG9yVGV4dHVyZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300606</attachid>
            <date>2017-02-03 23:55:53 -0800</date>
            <delta_ts>2017-02-03 23:55:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167096-20170203235335.patch</filename>
            <type>text/plain</type>
            <size>22499</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzEzM2Y0NmMwN2Y1NDM3
Mjc3ODVhMDQ3ODgwYjMzNzIwZWRlYTZmZi4uM2U2NWE5NzI1ZDM5ZWQ1NTk5NjJhNjllNWZjNTdh
N2UzMjZiZWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE3LTAyLTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIFRleHR1cmVN
YXBwZXItc3BlY2lmaWMgbG9naWMgb3V0IG9mIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3MDk2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBNb3ZlIHRoZSBU
ZXh0dXJlTWFwcGVyLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgaW4gR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlIGludG8gYQorICAgICAgICBzZXBhcmF0ZSBjbGFzcy4gVGhlIG5ldyBUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIgY2xhc3MgaW5oZXJpdHMgZnJvbSB0aGUKKyAgICAgICAgY2xh
c3MgdGhhdCdzIGFsaWFzZWQgdG8gdGhlIFBsYXRmb3JtTGF5ZXIgdHlwZSwgbGlrZSBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUgZGlkCisgICAgICAgIGJlZm9yZS4KKworICAgICAgICBJbiBHcmFw
aGljc0NvbnRleHQzRCwgdGhlIG5ldyBtX3RleG1hcExheWVyIG1lbWJlciB2YXJpYWJsZSBvZiB0
aGUKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cj4gdHlwZSBpcyB1c2VkIGZvciBjb25maWd1cmF0aW9ucworICAgICAgICB0aGF0IGVuYWJsZSBU
ZXh0dXJlTWFwcGVyLCBsYXJnZWx5IHRoZSBzYW1lIHdheSB0aGUgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlCisgICAgICAgIG9iamVjdCB3YXMgdXNlZCBiZWZvcmUuIFRoZSByZW1haW5pbmcgY29k
ZSBpbiBHcmFwaGljc0NvbnRleHQzRFByaXZhdGUgaXMgbGVmdAorICAgICAgICB1bmNoYW5nZWQg
dG8ga2VlcCBpdCB3b3JraW5nIGZvciBvdGhlciBwb3J0cy4KKworICAgICAgICBObyBuZXcgdGVz
dHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVy
ZU1hcHBlci5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6Okdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcm94eSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnN3YXBCdWZmZXJzSWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZv
ckN1cnJlbnRHTENvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjpUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjp+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6bWFrZUNvbnRleHRD
dXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXll
cjo6cGxhdGZvcm1Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllcjo6cHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdD
M0RQbGF0Zm9ybUxheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRm
b3JtTGF5ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmguCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnJlbmRlclN0eWxlKToKKwogMjAxNy0wMi0wMyAgRW5yaXF1
ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3Ry
ZWFtZXJdIFN0b3JlIHByZWxvYWRlZCBtZWRpYSBpbiB3ZWJraXQncyBjYWNoZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5kZXggZWI0M2E4OTM4ODRjNzhm
M2IyNGRlNzQ0Mjg3NGRmMWY1NDQwN2FmZS4uZDY1NmI5NTkyYzEzN2E4N2U5YTg3MTRhYzVlMTU0
YjE5Y2FhZmJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1h
cHBlci5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNt
YWtlCkBAIC05LDYgKzksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdT
dG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAppbmRleCBjZmVjNDIyOWI1YjM5ZmViMTA5MGFkNTBmMGQzZjAxMTI3MGVmZmU2
Li4zZTNkZDNiZjNlMzIyZWIzZmYzZmE5NjA1MzY1YTZjNTk4YTM0N2QzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAg
LTEwMSw2ICsxMDEsOSBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogI2lmIFVT
RShDQUlSTykKIGNsYXNzIFBsYXRmb3JtQ29udGV4dENhaXJvOwogI2VuZGlmCisjaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQorY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOworI2Vu
ZGlmCiAKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPENTdHJpbmcsIHVpbnQ2NF90PiBTaGFkZXJOYW1l
SGFzaDsKIApAQCAtMTQxNiw4ICsxNDE5LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gRXJyb3JzIHJh
aXNlZCBieSBzeW50aGVzaXplR0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBt
X3N5bnRoZXRpY0Vycm9yczsKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVBMQVRGT1JN
KEVGTCkKKyAgICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+IG1fdGV4
bWFwTGF5ZXI7CisjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4gbV9wcml2
YXRlOworI2VuZGlmCiAgICAgCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV93ZWJn
bENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDgwY2VmMzc5YmIxNDVl
NWMyNDZhOTIwODBkOTczNzUwMjQ0OGFhYmQuLmZjNzY0NjU0ZmM0YTUzMzQ2ODFmYWU0MThjNzNk
YjAzZTQ5NzAzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMjUsOSArMjUsNiBA
QAogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKLSNpZiBVU0UoQ0FJUk8pCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKLSNl
bmRpZgogCiAjaWYgVVNFKE9QRU5HTF9FU18yKQogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgpAQCAt
MzYsMjEgKzMzLDEyIEBACiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNlbmRpZgogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotI2luY2x1ZGUgPHRleG1hcC9UZXh0dXJlTWFwcGVyR0wu
aD4KLSNlbmRpZgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQotI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgiCi0jZW5kaWYKLQogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxlIHJlbmRlclN0eWxlKQotICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3JlbmRlclN0eWxlKHJlbmRlclN0eWxlKQor
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUp
CisgICAgOiBtX3JlbmRlclN0eWxlKHJlbmRlclN0eWxlKQogewogICAgIHN3aXRjaCAocmVuZGVy
U3R5bGUpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW46CkBA
IC02MiwyMCArNTAsOSBAQCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRwogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0jaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKQotICAgIGlmIChtX3JlbmRlclN0eWxlID09IEdyYXBoaWNz
Q29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pCi0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5
ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSk7Ci0jZW5k
aWYKIH0KIAotR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlKCkKLXsKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQpCi0gICAgaWYgKGNsaWVudCgpKQotICAgICAgICBjbGllbnQoKS0+cGxh
dGZvcm1MYXllcldpbGxCZURlc3Ryb3llZCgpOwotI2VuZGlmCi19CitHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKSA9IGRlZmF1bHQ7CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewpAQCAtODcs
NjAgKzY0LDYgQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGU6OnBsYXRmb3JtQ29udGV4dCgpCiAgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3Jt
Q29udGV4dCgpOwogfQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQot
UmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IEdyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZTo6cHJveHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94
eS5jb3B5UmVmKCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzd2FwQnVm
ZmVyc0lmTmVlZGVkKCkKLXsKLSAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLSAgICBpZiAobV9jb250ZXh0LT5sYXllckNvbXBv
c2l0ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250ZXh0LT5wcmVwYXJlVGV4dHVy
ZSgpOwotICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwg
bV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOwotICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
ZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwgKG1fY29udGV4dC0+
bV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKLQotICAg
IHsKLSAgICAgICAgTG9ja0hvbGRlciBob2xkZXIobV9wbGF0Zm9ybUxheWVyUHJveHktPmxvY2so
KSk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNoTmV4dEJ1ZmZlcihzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihtX2NvbnRleHQtPm1f
Y29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncykpOwotICAgIH0KLQotICAgIG1f
Y29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwotfQotI2VsaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQotdm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKLXsK
LSAgICBpZiAoIW1fZ2xDb250ZXh0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9y
ZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKLQotICAg
IG1fY29udGV4dC0+bWFya0xheWVyQ29tcG9zaXRlZCgpOwotCi0jaWYgVVNFKFRFWFRVUkVfTUFQ
UEVSX0dMKQotICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzICYmIG1fY29udGV4
dC0+bV9zdGF0ZS5ib3VuZEZCTyA9PSBtX2NvbnRleHQtPm1fbXVsdGlzYW1wbGVGQk8pIHsKLSAg
ICAgICAgR0xDb250ZXh0KiBwcmV2aW91c0FjdGl2ZUNvbnRleHQgPSBHTENvbnRleHQ6OmN1cnJl
bnQoKTsKLSAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAhPSBtX2dsQ29udGV4dC5n
ZXQoKSkKLSAgICAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAg
ICAgICAgbV9jb250ZXh0LT5yZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBt
X2NvbnRleHQtPm1fc3RhdGUuYm91bmRGQk8pOwotCi0gICAgICAgIGlmIChwcmV2aW91c0FjdGl2
ZUNvbnRleHQgJiYgcHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQot
ICAgICAgICAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICB9Ci0KLSAgICBUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4
dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcik7Ci0gICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250ZXh0
LT5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDApOwotICAg
IEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0
LT5tX2N1cnJlbnRIZWlnaHQpOwotICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSk7Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotfQotI2VuZGlmIC8vIFVTRShU
RVhUVVJFX01BUFBFUikKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKEdSQVBISUNTX0NPTlRFWFRfM0QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGQ3NDYx
MWFlNzViNjY2MDZkZTA3OWMxNDZjMmJiMDBiZDRiYjA3NzQuLjUwNzU1ODI5NzRmOGQ0YTRmYWFm
MzlkNTIzNGMzZWZiZWYwNDJmMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC0yNCwyMCAr
MjQsMTEgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTGF5ZXIuaCIKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUikKLSNpbmNsdWRlICJUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHkuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJpdG1h
cFRleHR1cmVHTDsKIAotY2xhc3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQotICAgIDogcHVibGljIFBsYXRmb3JtTGF5ZXIKLSNlbmRpZgoteworY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlIHsKIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKQEAgLTQ2LDIyICszNyw5
IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJT
dHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVk
ZWQoKSBvdmVycmlkZTsKLSNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwotI2Vu
ZGlmCi0KIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKICAgICBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyU3R5bGUgbV9yZW5kZXJTdHlsZTsKLQotI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDU19USFJFQURFRCkKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eT4gbV9wbGF0Zm9ybUxheWVyUHJveHk7Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4g
bV9jb21wb3NpdG9yVGV4dHVyZTsKLSNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHQzRENhaXJvLmNwcAppbmRleCA2YmM4YjJlY2Y3NmRmODU1NWY1OTQ4MjY4ODA5YTA0MmUyYThk
MjQxLi5mNDg2NDBhMjNhODhiNmY3NDdmZjA0NTZmYTZkNTViZWJjODA0MGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQz
RENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHQzRENhaXJvLmNwcApAQCAtNTQsNiArNTQsMTAgQEAKICNpbmNsdWRlICJP
cGVuR0xTaGltcy5oIgogI2VuZGlmCiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisjaW5jbHVk
ZSAiVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHls
ZSkKQEAgLTkxLDggKzk1LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQz
RChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiAgICAgLCBtX211
bHRpc2FtcGxlRkJPKDApCiAgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDAp
CiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKLSAgICAsIG1fcHJpdmF0ZShzdGQ6
Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZT4odGhpcywgcmVuZGVyU3R5bGUp
KQogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBtX3RleG1hcExheWVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI+KCp0aGlzLCByZW5kZXJT
dHlsZSk7CisjZWxzZQorICAgIG1fcHJpdmF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlPih0aGlzLCByZW5kZXJTdHlsZSk7CisjZW5kaWYKKwogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CkBAIC0yMDAsOCAr
MjA5LDEzIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzREF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zCiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QoKQogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAo
bV90ZXhtYXBMYXllci0+cmVuZGVyU3R5bGUoKSA9PSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQp
CisgICAgICAgIHJldHVybjsKKyNlbHNlCiAgICAgaWYgKG1fcHJpdmF0ZS0+cmVuZGVyU3R5bGUo
KSA9PSBSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQpCiAgICAgICAgIHJldHVybjsKKyNlbmRpZgog
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fdGV4dHVyZSkKQEAgLTMzOCw5
ICszNTIsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJh
Y2soc3RkOjp1bmlxdWVfcHRyPEVycm9yTWVzc2FnZUNhbGwKIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3ByaXZhdGUtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICBpZiAobV90ZXhtYXBMYXllcikKKyAg
ICAgICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXItPm1ha2VDb250ZXh0Q3VycmVudCgpOworI2Vsc2UK
KyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5tYWtlQ29udGV4
dEN1cnJlbnQoKTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y2hlY2tHUFVTdGF0dXNJZk5lY2Vzc2FyeSgpCkBAIC0zNDksNyArMzY4LDEx
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrR1BVU3RhdHVzSWZOZWNlc3NhcnkoKQog
CiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDNEKCkKIHsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCisgICAgcmV0dXJu
IG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29udGV4dCgpOworI2Vsc2UKICAgICByZXR1cm4gbV9w
cml2YXRlLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyNlbmRpZgogfQogCiBQbGF0Zm9ybTNET2JqZWN0
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdApAQCAtMzY4LDcgKzM5
MSwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QK
IAogUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogeworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci5n
ZXQoKTsKKyNlbHNlCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKKyNlbmRpZgogfQogCiAj
aWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggOTVlMWQ0OWE1NDA3MGQ1MTE1MjIxMTE0NDFiNDdjNDZhM2FiZDlkYS4u
YjkxYTUyYjBhZTNkODNiMDk2NGMxNjg1NzhiZDgxYjUyM2Q3MjEwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzMsOCArMTMzLDEzIEBA
IHN0YXRpYyB1aW50NjRfdCBuYW1lSGFzaEZvclNoYWRlcihjb25zdCBjaGFyKiBuYW1lLCBzaXpl
X3QgbGVuZ3RoKQogUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRS
ZWYoKm5ldyBHcmFwaGljc0NvbnRleHQzRCh7IH0sIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5k
ZXJUb0N1cnJlbnRHTENvbnRleHQpKTsKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFQTEFU
Rk9STShFRkwpCisgICAgaWYgKCFjb250ZXh0LT5tX3RleG1hcExheWVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbHNlCiAgICAgaWYgKCFjb250ZXh0LT5tX3ByaXZhdGUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmCiAgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGE5ZjViZDk1MGI3NDA5OGMzYzc0MWY0ZWYxNjRiOTdiMzUzY2JiMAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuY3BwCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDE3IElnYWxpYSBTLkwuCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmgiCisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVIp
ICYmICFQTEFURk9STShFRkwpCisKKyNpbmNsdWRlICJCaXRtYXBUZXh0dXJlR0wuaCIKKyNpbmNs
dWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllcjo6VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKEdyYXBoaWNzQ29udGV4dDNE
JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fcmVuZGVyU3R5bGUocmVuZGVyU3R5bGUp
Cit7CisgICAgc3dpdGNoIChyZW5kZXJTdHlsZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlJlbmRlck9mZnNjcmVlbjoKKyAgICAgICAgbV9nbENvbnRleHQgPSBHTENvbnRleHQ6OmNy
ZWF0ZU9mZnNjcmVlbkNvbnRleHQoJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNv
bXBvc2l0aW5nKCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpSZW5kZXJUb0N1cnJlbnRHTENvbnRleHQ6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIGlmIChtX3JlbmRlclN0eWxlID09IEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW4pCisgICAgICAgIG1fcGxhdGZvcm1MYXllclBy
b3h5ID0gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkoKSk7Cisj
ZW5kaWYKK30KKworVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyOjp+VGV4dHVyZU1hcHBl
ckdDM0RQbGF0Zm9ybUxheWVyKCkKK3sKKyNpZiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQorICAgIGlmIChjbGllbnQoKSkKKyAgICAgICAgY2xpZW50KCktPnBsYXRmb3JtTGF5
ZXJXaWxsQmVEZXN0cm95ZWQoKTsKKyNlbmRpZgorfQorCitib29sIFRleHR1cmVNYXBwZXJHQzNE
UGxhdGZvcm1MYXllcjo6bWFrZUNvbnRleHRDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gbV9nbENv
bnRleHQgPyBtX2dsQ29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkgOiBmYWxzZTsKK30KKwor
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBUZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6
OnBsYXRmb3JtQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG1fZ2xDb250ZXh0ID8gbV9nbENvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpIDogR0xDb250ZXh0OjpjdXJyZW50KCktPnBsYXRmb3JtQ29u
dGV4dCgpOworfQorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorUmVm
UHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IFRleHR1cmVNYXBwZXJHQzNEUGxh
dGZvcm1MYXllcjo6cHJveHkoKSBjb25zdAoreworICAgIHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQ
cm94eS5jb3B5UmVmKCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVy
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKK3sKKyAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKKyAgICBpZiAobV9jb250ZXh0Lmxh
eWVyQ29tcG9zaXRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbnRleHQucHJlcGFy
ZVRleHR1cmUoKTsKKyAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRX
aWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7CisgICAgVGV4dHVyZU1hcHBlckdMOjpG
bGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1cmUgfCAobV9jb250
ZXh0Lm1fYXR0cnMuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5kIDogMCk7CisK
KyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgaG9sZGVyKG1fcGxhdGZvcm1MYXllclByb3h5LT5s
b2NrKCkpOworICAgICAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoc3Rk
OjptYWtlX3VuaXF1ZTxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4obV9jb250ZXh0
Lm1fY29tcG9zaXRvclRleHR1cmUsIHRleHR1cmVTaXplLCBmbGFncykpOworICAgIH0KKworICAg
IG1fY29udGV4dC5tYXJrTGF5ZXJDb21wb3NpdGVkKCk7Cit9CisjZWxzZQordm9pZCBUZXh0dXJl
TWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBpZiAoIW1f
Z2xDb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW5kZXJTdHlsZSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyT2Zmc2NyZWVuKTsKKworICAgIG1fY29udGV4dC5t
YXJrTGF5ZXJDb21wb3NpdGVkKCk7CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAg
aWYgKG1fY29udGV4dC5tX2F0dHJzLmFudGlhbGlhcyAmJiBtX2NvbnRleHQubV9zdGF0ZS5ib3Vu
ZEZCTyA9PSBtX2NvbnRleHQubV9tdWx0aXNhbXBsZUZCTykgeworICAgICAgICBHTENvbnRleHQq
IHByZXZpb3VzQWN0aXZlQ29udGV4dCA9IEdMQ29udGV4dDo6Y3VycmVudCgpOworICAgICAgICBp
ZiAocHJldmlvdXNBY3RpdmVDb250ZXh0ICE9IG1fZ2xDb250ZXh0LmdldCgpKQorICAgICAgICAg
ICAgbV9jb250ZXh0Lm1ha2VDb250ZXh0Q3VycmVudCgpOworCisgICAgICAgIG1fY29udGV4dC5y
ZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIDo6Z2xCaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQubV9zdGF0ZS5i
b3VuZEZCTyk7CisKKyAgICAgICAgaWYgKHByZXZpb3VzQWN0aXZlQ29udGV4dCAmJiBwcmV2aW91
c0FjdGl2ZUNvbnRleHQgIT0gbV9nbENvbnRleHQuZ2V0KCkpCisgICAgICAgICAgICBwcmV2aW91
c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIH0KKworICAgIFRleHR1
cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0
dXJlTWFwcGVyKTsKKyAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRGbGlwVGV4dHVyZSB8IChtX2NvbnRleHQubV9hdHRycy5hbHBoYSA/IFRl
eHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwKTsKKyAgICBJbnRTaXplIHRleHR1cmVTaXpl
KG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7Cisg
ICAgdGV4bWFwR0wuZHJhd1RleHR1cmUobV9jb250ZXh0Lm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1
cmVTaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworI2VuZGlmIC8vIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKK30KKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShURVhUVVJF
X01BUFBFUikgJiYgIVBMQVRGT1JNKEVGTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0MzRFBsYXRmb3JtTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0Mz
RFBsYXRmb3JtTGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZWNkMzU0NzI0YmIyNGQ0Y2IyNjFiZGYwODE5
ZWM3NTdiNDQ0OTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5oCkBAIC0wLDAg
KzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTcgSWdhbGlhIFMu
TC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhUExBVEZPUk0oRUZMKQorCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQml0bWFw
VGV4dHVyZUdMOworY2xhc3MgR0xDb250ZXh0OworY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eTsKKworY2xhc3MgVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyIDogcHVi
bGljIFBsYXRmb3JtTGF5ZXIgeworcHVibGljOgorICAgIFRleHR1cmVNYXBwZXJHQzNEUGxhdGZv
cm1MYXllcihHcmFwaGljc0NvbnRleHQzRCYsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSk7CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyKCk7CisKKyAg
ICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0
M0QgcGxhdGZvcm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlclN0eWxl
IHJlbmRlclN0eWxlKCkgeyByZXR1cm4gbV9yZW5kZXJTdHlsZTsgfQorCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQorICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc3dhcEJ1ZmZl
cnNJZk5lZWRlZCgpIG92ZXJyaWRlOworI2Vsc2UKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOworI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgR3JhcGhpY3NDb250ZXh0M0QmIG1fY29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8R0xDb250ZXh0PiBtX2dsQ29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVy
U3R5bGUgbV9yZW5kZXJTdHlsZTsKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJF
QURFRCkKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gbV9wbGF0
Zm9ybUxheWVyUHJveHk7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmVHTD4gbV9jb21wb3NpdG9y
VGV4dHVyZTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiAhUExBVEZPUk0oRUZMKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>