<?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>164049</bug_id>
          
          <creation_ts>2016-10-27 01:48:47 -0700</creation_ts>
          <short_desc>[GTK] Dramatic increase on memory usage since 2.14.x</short_desc>
          <delta_ts>2016-12-23 04:57:37 -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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gomez Garcia">agomez</reporter>
          <assigned_to name="Miguel Gomez">magomez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>agomez</cc>
    
    <cc>aperez</cc>
    
    <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mike</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>pvollan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245052</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2016-10-27 01:48:47 -0700</bug_when>
    <thetext>This discussion started in ephy&apos;s ML by Michael Gratton, but opening a bug for reference:
https://mail.gnome.org/archives/epiphany-list/2016-October/msg00016.html
 
Hey all,

I feel like Epiphany&apos;s/WebKitGTK&apos;s memory use has substantially 
increased with 3.22/2.14, under X11 on Ubuntu at least.

My current Epiphany session has ~70 tabs over two windows. If I quit 
and restart it, such that only two of those tabs have actually loaded 
any content, then the total memory consumption is ~7GB (as reported by 
gnome-system-monitor total free before and after launching Ephy). This 
seems to be a substantial increase over earlier versions.

Breaking that down, I am seeing the following approx Memory (from 
g-s-m):
 - Epiphany: 100M
 - Network + DB processes: 40M
 - Single web process for loaded tabs: 250M (+ 10M XServer memory)
 - Single web process for not-yet-loaded tabs: 55M (+ 10M XServer 
memory)

While that doesn&apos;t add up to ~7GB, adding up the RSS sizes as reported 
by `ps aux` does.

Switching to a single-shared-process gives 6.4G used after launch, with 
similar numbers for the aux processes, and the following for the single 
web process:

 - Shared web process: 2.1G (+ 550Mb XServer memory)

This is in comparison to the honourable competition, both of which use 
~1G after opening 70 blank tabs.

Is this to be expected? What&apos;s the best way to try to find out where 
all this memory is going?

//Mike</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245053</commentid>
    <comment_count>1</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2016-10-27 01:49:16 -0700</bug_when>
    <thetext>I can confirm that this is also my experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253364</commentid>
    <comment_count>2</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-22 02:43:38 -0800</bug_when>
    <thetext>As we enabled the Threaded Compositor by default, we are intensively using OpenGL for rendering and this has triggered the problem. We found that the extra memory consumption comes from the Intel Mesa driver, which is using the sofware rasterizer to perform OpenGL operations.

In order to fix this we need to change the way we create the OpenGL contexts: we need to request a concrete version where the Intel driver doesn&apos;t use the software rasterizer (3.2 core profile), and then we need to update the OpenGL operations to be coherent with that OpenGL version.

I&apos;ll attach a patch that changes the context creation, requesting a OpenGL 3.2 Core version, and fixes some gl operations when we are using that version. It also tweaks the ANGLE shader translator to output the appropriate code for the version (GLSL 1.50).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253366</commentid>
    <comment_count>3</comment_count>
      <attachid>295334</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-22 03:06:31 -0800</bug_when>
    <thetext>Created attachment 295334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253370</commentid>
    <comment_count>4</comment_count>
      <attachid>295334</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-22 03:21:46 -0800</bug_when>
    <thetext>Comment on attachment 295334
Patch

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

Thanks for working on this. I only have a few comments, I&apos;ll leave the actual review to Zan.

&gt; Source/WebCore/platform/graphics/GLContext.cpp:170
&gt; +    if (!m_version) {
&gt; +        GC3Dint mayor = 0;
&gt; +        GC3Dint minor = 0;
&gt; +        ::glGetIntegerv(GL_MAJOR_VERSION, &amp;mayor);
&gt; +        ::glGetIntegerv(GL_MINOR_VERSION, &amp;minor);
&gt; +        m_version = mayor * 100 + minor * 10;

mayor -&gt; major

I think we could initialize this always in the constructor since this will probably always be called, and then we can make this a simpler const getter.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:63
&gt; +#if !PLATFORM(GTK)
&gt; +    return false;
&gt; +#endif

I don&apos;t think this should be GTK specific. This code is only used by GTK+ in any case, so we don&apos;t need any platform ifdef.

&gt; Source/WebCore/platform/graphics/glx/GLContextGLX.cpp:87
&gt; +    int nConfigs = 0;

Use numConfigs or configsCount</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253371</commentid>
    <comment_count>5</comment_count>
      <attachid>295335</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-22 03:33:42 -0800</bug_when>
    <thetext>Created attachment 295335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253372</commentid>
    <comment_count>6</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-22 03:36:52 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/GLContext.cpp:170
&gt; &gt; +    if (!m_version) {
&gt; &gt; +        GC3Dint mayor = 0;
&gt; &gt; +        GC3Dint minor = 0;
&gt; &gt; +        ::glGetIntegerv(GL_MAJOR_VERSION, &amp;mayor);
&gt; &gt; +        ::glGetIntegerv(GL_MINOR_VERSION, &amp;minor);
&gt; &gt; +        m_version = mayor * 100 + minor * 10;
&gt; 
&gt; mayor -&gt; major
&gt; 
&gt; I think we could initialize this always in the constructor since this will
&gt; probably always be called, and then we can make this a simpler const getter.

I haven&apos;t changed the initialization in the new patch. The gl version cannot be initialized in the constructor because we need a current gl context set in order to call glGetIntegerv(), and the context is not current in the constructor yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253633</commentid>
    <comment_count>7</comment_count>
      <attachid>295335</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2016-11-25 01:44:02 -0800</bug_when>
    <thetext>Comment on attachment 295335
Patch

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

&gt; Source/WebCore/platform/graphics/GLContext.h:50
&gt; +    uint version();

unsigned should be used, not uint.

&gt; Source/WebCore/platform/graphics/GLContext.h:81
&gt; +    uint m_version { 0 };

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253641</commentid>
    <comment_count>8</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-25 05:49:04 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 295335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295335&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.h:50
&gt; &gt; +    uint version();
&gt; 
&gt; unsigned should be used, not uint.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GLContext.h:81
&gt; &gt; +    uint m_version { 0 };
&gt; 
&gt; Same here.

Ok, I&apos;ll fix those, rebase the patch and commit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253823</commentid>
    <comment_count>9</comment_count>
      <attachid>295484</attachid>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-28 03:15:31 -0800</bug_when>
    <thetext>Created attachment 295484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253835</commentid>
    <comment_count>10</comment_count>
      <attachid>295484</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-28 07:00:59 -0800</bug_when>
    <thetext>Comment on attachment 295484
Patch

Clearing flags on attachment: 295484

Committed r208997: &lt;http://trac.webkit.org/changeset/208997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253836</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-28 07:01:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253890</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-28 11:11:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 295484 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 295484
&gt; 
&gt; Committed r208997: &lt;http://trac.webkit.org/changeset/208997&gt;

It broke the WinCairo build:
..\..\Source\WebCore\platform\graphics\GLContext.cpp(168): error C2039: &apos;glGetIntegerv&apos;: is not a member of &apos;`global namespace&apos;&apos;
..\..\Source\WebCore\platform\graphics\GLContext.cpp(168): error C2065: &apos;GL_MAJOR_VERSION&apos;: undeclared identifier
..\..\Source\WebCore\platform\graphics\GLContext.cpp(168): error C3861: &apos;glGetIntegerv&apos;: identifier not found
..\..\Source\WebCore\platform\graphics\GLContext.cpp(169): error C2039: &apos;glGetIntegerv&apos;: is not a member of &apos;`global namespace&apos;&apos;
..\..\Source\WebCore\platform\graphics\GLContext.cpp(169): error C2065: &apos;GL_MINOR_VERSION&apos;: undeclared identifier
..\..\Source\WebCore\platform\graphics\GLContext.cpp(169): error C3861: &apos;glGetIntegerv&apos;: identifier not found

cc-ing folks, who can be interested in fixing the WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253956</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-28 13:13:58 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 295484 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 295484
&gt; 
&gt; Committed r208997: &lt;http://trac.webkit.org/changeset/208997&gt;

And it broke performance testing, see https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Perf%29/builds/7073 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254244</commentid>
    <comment_count>14</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-11-29 05:01:58 -0800</bug_when>
    <thetext>If the WinCairo folks are interested in the added feature they can adapt the code. If not, I can add some platforms guards to avoid the build failure. Just tell me what you prefer.

Regarding the perf bot, I suspect it has the GLX_ARB_create_context extension, but it doesn&apos;t support OpenGL 3.2. From what I read, in this case glXCreateContextAttribsARB, besides returning a null context, can throw that GLXBadFBConfig error. That&apos;s not being checked in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255237</commentid>
    <comment_count>15</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2016-12-01 06:53:04 -0800</bug_when>
    <thetext>For the record, the perf bot failure is being handled in bug 165200.

Any comment about the WinCairo build issue? Should I just add the needed platform guards?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255240</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-01 07:04:57 -0800</bug_when>
    <thetext>Yes, please add platform guards. It will probably be a while before anyone working on WinCairo tries to fix it otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255246</commentid>
    <comment_count>17</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-01 07:38:03 -0800</bug_when>
    <thetext>Just out of curiosity, does WinCairo port have at least one full-time maintainer? 

There is a 3 day long build break and nobody has time/interest to comment it.
Why should the community maintain this port build if nobody cares about it?
(Who knows if it works at all? WinCairo port didn&apos;t have public tester bot ever.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255259</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-01 08:32:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Just out of curiosity, does WinCairo port have at least one full-time
&gt; maintainer? 

Of course not.

&gt; There is a 3 day long build break and nobody has time/interest to comment it.
&gt; Why should the community maintain this port build if nobody cares about it?
&gt; (Who knows if it works at all? WinCairo port didn&apos;t have public tester bot
&gt; ever.)

I really really do not want to suggest removing the WinCairo port, as it is the only way for non-Apple companies to use WebKit on Windows, but as none of the companies that depend on it seem to be interested in maintaining it... and especially since it is the only port without an EWS bot, so there&apos;s no way to know if we&apos;re breaking it or not... this should probably be discussed in webkit-dev@.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255516</commentid>
    <comment_count>19</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-01 15:23:30 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=165283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255517</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-01 15:24:22 -0800</bug_when>
    <thetext>Ossy, some of us have been known to go on vacation for more than three days at a time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258113</commentid>
    <comment_count>21</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2016-12-09 02:43:31 -0800</bug_when>
    <thetext>Please, take a look to attachment 296649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262512</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-22 18:44:54 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Just out of curiosity, does WinCairo port have at least one full-time
&gt; maintainer? 
&gt; 
&gt; There is a 3 day long build break and nobody has time/interest to comment it.
&gt; Why should the community maintain this port build if nobody cares about it?
&gt; (Who knows if it works at all? WinCairo port didn&apos;t have public tester bot
&gt; ever.)

It also broke the GTK GLES build, nobody noticed for a month, see bug #166455. Guess we shouldn&apos;t be so hard on WinCairo. ;)

Carlos Lopez, do we have capacity to set up a GLES buildbot to check for this? Would anybody even notice if such a bot was broken, since it wouldn&apos;t be on EWS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262546</commentid>
    <comment_count>23</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-12-23 04:57:37 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; It also broke the GTK GLES build, nobody noticed for a month, see bug
&gt; #166455. Guess we shouldn&apos;t be so hard on WinCairo. ;)
&gt; 
&gt; Carlos Lopez, do we have capacity to set up a GLES buildbot to check for
&gt; this? 

I would like to set a bot that tries builds disabling/enabling options to see if some build configuration is broken.

Apart from that, setting an ARM buildbot with GLES can be a good idea.

&gt; Would anybody even notice if such a bot was broken, since it wouldn&apos;t be on EWS?

They would notice after the fact, because the buildbot only tries already committed revisions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295334</attachid>
            <date>2016-11-22 03:06:31 -0800</date>
            <delta_ts>2016-11-22 03:33:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164049-20161122120617.patch</filename>
            <type>text/plain</type>
            <size>18208</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDRlODk1YzcyZmVj
MTVjMGY3NWQ1ZjY5ZTliYTRkNjBhYTBlNS4uZTk5MzQ3ZWIyNTc0YjEwYTlhZGU2NzM1MWE0Nzdi
ZjY2NDljZjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTExLTIyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRHJhbWF0aWMg
aW5jcmVhc2Ugb24gbWVtb3J5IHVzYWdlIHNpbmNlIDIuMTQueAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIE9wZW5HTCB2ZXJzaW9uIDMuMiBDb3Jl
IGZvciByZW5kZXJpbmcgd2hlbiBhdmFpbGFibGUuCisgICAgICAgIFVwZGF0ZSBzb21lIG9wZXJh
dGlvbnMgdGhhdCBoYXZlIGNoYW5nZWQgd2hlbiB1c2luZyAzLjIgQ29yZToKKyAgICAgICAgLSBV
c2UgZ2xHZXRTdHJpbmdpIHRvIGdldCB0aGUgZXh0ZW5zaW9ucyBsaXN0LgorICAgICAgICAtIERv
IG5vdCB1c2UgR0xfUE9JTlRfU1BSSVRFLgorICAgICAgICAtIEFsd2F5cyB1c2UgYSBWQU8gd2hl
biByZW5kZXJpbmcuCisgICAgICAgIC0gVXNlIGEgR0xTTCAxLjUwIGNvbXBhdGlibGUgc2hhZGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0Ojp2ZXJz
aW9uKToKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGdldCBPcGVuR0wgdmVyc2lvbiB3ZSBhcmUg
dXNpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0Lmg6CisgICAgICAg
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gc3RvcmUgdGhlIFZBTyB1c2VkIGZvciByZW5k
ZXJpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKToKKyAgICAgICAgQWRkIGdsR2V0
U3RyaW5naSB0byB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBTZXQg
YXBwcm9wcmlhdGUgb3V0cHV0IHRvIHRoZSBzaGFkZXIgY29tcGlsZXIgYW5kIGluaXRhbGl6ZSB0
aGUgVkFPIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBEZWxldGUgdGhlIFZBTyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAg
ICAgIFVzZSBnbEdldEV4dGVuc2lvbnNpIGZvciBPcGVuR0wgdmVyc2lvbnMgPj0gMy4yLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFzR0xYQVJCQ3JlYXRlQ29udGV4dEV4dGVuc2lvbik6CisgICAgICAgIENoZWNr
IHdoZXRoZXIgdGhlIEdMWF9BUkJfY3JlYXRlX2NvbnRleHQgZXh0ZW5zaW9uIGlzIGF2YWlsYWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dCk6
CisgICAgICAgIFVzZSBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQigpIGlmIHBvc3NpYmxlIHRv
IHJlcXVlc3QgYW4gT3BlbkdMIDMuMiBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6CisgICAgICAgIERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZh
aWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEVuYWJsZSBnbEdldFN0cmluZ2kgZm9yIEdUSy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICBEbyBub3QgdXNlIGRlZmF1bHQgZ2V0RXh0ZW5zaW9ucygpIG1ldGhv
ZCBmb3IgR1RLLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgRGl0dG8uCisKIDIwMTYtMTEtMjEgIEtvbnN0
YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIERpc2FibGUgI2xp
bmUgbWFya2VycyBpbiBiaXNvbiBvdXRwdXQgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggYzE5OTc4MTMxNThiMzE1MjRj
NDUxNGI5MWVhYjM1YzcxNTg2NjcyNi4uN2NkOWM1Yzk0MTE0OThkODYzYmVjODU4NzlhYTRmNDFh
NWZiMWNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCkBAIC0xNjAsNiArMTYwLDE4IEBAIGJvb2wgR0xDb250ZXh0Ojppc0V4dGVuc2lvblN1
cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25MaXN0LCBjb25zdCBjaGFyKiBleHRlCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit1aW50IEdMQ29udGV4dDo6dmVyc2lvbigpCit7CisgICAgaWYg
KCFtX3ZlcnNpb24pIHsKKyAgICAgICAgR0MzRGludCBtYXlvciA9IDA7CisgICAgICAgIEdDM0Rp
bnQgbWlub3IgPSAwOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFKT1JfVkVSU0lPTiwg
Jm1heW9yKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01JTk9SX1ZFUlNJT04sICZtaW5v
cik7CisgICAgICAgIG1fdmVyc2lvbiA9IG1heW9yICogMTAwICsgbWlub3IgKiAxMDsKKyAgICB9
CisgICAgcmV0dXJuIG1fdmVyc2lvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5k
ZXggNTc2Y2NhZGFlOTNkOTBjNWQzNWFlNjlkZjRlNDA2MTNlOWM2M2M5MS4uMGRlN2NiODYwYWY2
ODM1MjNhOWIyNDdmMjUzNmEwYmMyOTg3M2Y1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzRXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbkxpc3Qs
IGNvbnN0IGNoYXIqIGV4dGVuc2lvbik7CiAKICAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXko
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KKyAgICB1aW50IHZlcnNpb24oKTsKIAogICAg
IHZpcnR1YWwgfkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKQEAgLTc3LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIEdMQ29udGV4dChQbGF0Zm9y
bURpc3BsYXkmKTsKIAogICAgIFBsYXRmb3JtRGlzcGxheSYgbV9kaXNwbGF5OworICAgIHVpbnQg
bV92ZXJzaW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggODNhMTFlODc4MWYzMTYyMDI1NDgxYTA0MTkxZDQ4YjI0ZWQ1OTM5MC4uY2IyZWEwY2M3NmUy
Y2Q2NzAzYjZiZGY3MGNiYWE3ZjI4MDBhYzE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNDM2LDYgKzE0MzYs
MTEgQEAgcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX3dlYmdsQ29u
dGV4dDsKIAogICAgIGJvb2wgbV9pc0ZvcldlYkdMMiB7IGZhbHNlIH07CisKKyNpZiBVU0UoQ0FJ
Uk8pCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKKyNlbmRpZgorCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xTaGltcy5jcHAKaW5kZXggNTM2ZWIxYjlhODZlM2YzYWU0ZTdhMjdlNmM1YjFi
Y2M1YjBmMDE0OS4uZDNjZmQyN2Q1NzFlMzdlNjg3OTk2NDcyNzAyOTQ0OTFjZmQ3NTNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApA
QCAtMTYyLDYgKzE2Miw5IEBAIGJvb2wgaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkKICAgICBBU1NJ
R05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJJbmZvTG9nLCBzdWNjZXNzKTsKICAg
ICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJpdiwgc3VjY2Vzcyk7CiAg
ICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0U2hhZGVyU291cmNlLCBzdWNjZXNz
KTsKKyAgICAvLyBnbEdldFN0cmluZ2kgaXMgb25seSBhdmFpbGFibGUgb24gT3BlbkdMIG9yIEdM
RVMgdmVyc2lvbnMgPj0gMy4wLgorICAgIC8vIEFkZCBpdCB3aXRoIF9FWFQgc28gaXQgZG9lc24n
dCBjYXVzZSBhbiBpbml0aWFsaXphdGlvbiBmYWlsdXJlIG9uIGxvd2VyIHZlcnNpb25zLgorICAg
IEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWV9FWFQoZ2xHZXRTdHJpbmdpKTsKICAgICBBU1NJ
R05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRVbmlmb3JtZnYsIHN1Y2Nlc3MpOwogICAgIEFT
U0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFVuaWZvcm1pdiwgc3VjY2Vzcyk7CiAgICAg
QVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uLCBzdWNjZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCmlu
ZGV4IDkwZDI4YmNmYzI1MzBiNzA2MTBjNzQyNDI0YTMyZWMzYzliNWZlZGMuLmEwYjhlMmFlNWI4
ZjVhMTE2OWE2YzE2NTRiYzYyMzg1MWFkMTMzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaApAQCAtOTIsNiArOTIsNyBAQCB0eXBlZGVmIHZv
aWQgKEdMQVBJRU5UUlkgKmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVt
LCBHTGVudW0sIEdMaQogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdldFNoYWRlckluZm9M
b2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwogdHlwZWRlZiB2b2lk
IChHTEFQSUVOVFJZICpnbEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCop
OwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Cit0eXBlZGVmIGNvbnN0IEdMdWJ5dGUqIChH
TEFQSUVOVFJZICpnbEdldFN0cmluZ2lUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiBH
TGludCAoR0xBUElFTlRSWSAqZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25z
dCBjaGFyKik7CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsR2V0VW5pZm9ybWZ2VHlwZSkg
KEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xH
ZXRVbmlmb3JtaXZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xpbnQqKTsKQEAgLTE5OCw2ICsxOTks
NyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAgICAgRlVOQ1RJT05f
VEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRS
WShnbEdldFNoYWRlcml2KTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFNoYWRlclNv
dXJjZSk7CisgICAgRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTdHJpbmdpKTsKICAgICBGVU5D
VElPTl9UQUJMRV9FTlRSWShnbEdldFVuaWZvcm1mdik7CiAgICAgRlVOQ1RJT05fVEFCTEVfRU5U
UlkoZ2xHZXRVbmlmb3JtaXYpOwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKTsKQEAgLTMyNSw2ICszMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVu
Y3Rpb25UYWJsZSB7CiAjZGVmaW5lIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFNoYWRlckluZm9Mb2cpCiAjZGVmaW5lIGdsR2V0
U2hhZGVyaXYgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFNoYWRlcml2KQogI2RlZmluZSBnbEdldFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJTb3VyY2UpCisjZGVmaW5lIGdsR2V0U3Ry
aW5naSAgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFN0
cmluZ2kpCiAjZGVmaW5lIGdsR2V0VW5pZm9ybWZ2ICAgICAgICAgICAgICAgICAgICAgICAgIExP
T0tVUF9HTF9GVU5DVElPTihnbEdldFVuaWZvcm1mdikKICNkZWZpbmUgZ2xHZXRVbmlmb3JtaXYg
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VW5pZm9ybWl2
KQogI2RlZmluZSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRVbmlmb3JtTG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCmluZGV4IGMyZTY3ZDAwNDMxNzY0ZWVmYjRkYmFjY2NhNzA1NDA0NWEwNzk0NjEu
LjJlNDRiODllZDcxNjhhNmI3NDFhY2ExMWU3MDdkMjRhMWY1Mjc5MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC03OSw3ICs3OSw2IEBAIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKICAgICA6IG1fY3VycmVudFdpZHRoKDApCiAg
ICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKLSAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFu
dCgpID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQogICAg
ICwgbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2NvbXBv
c2l0b3JUZXh0dXJlKDApCkBAIC0xNDUsNiArMTQ0LDM0IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
LCBICiAgICAgICAgIH0KICAgICB9CiAKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIDo6Z2xF
bmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7CisKKyAgICBpZiAoR0xDb250ZXh0
OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApIHsKKyAgICAgICAgLy8gRnJvbSB2ZXJzaW9u
IDMuMiBvbiB3ZSB1c2UgdGhlIE9wZW5HTCBDb3JlIHByb2ZpbGUsIHNvIHJlcXVlc3QgdGhhdCBv
dXB1dCB0byB0aGUgc2hhZGVyIGNvbXBpbGVyLgorICAgICAgICAvLyBPcGVuR0wgdmVyc2lvbiAz
LjIgdXNlcyBHTFNMIHZlcnNpb24gMS41MC4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2Vi
S2l0QnJpZGdlKFNIX0dMU0xfMTUwX0NPUkVfT1VUUFVUKTsKKworICAgICAgICAvLyBGcm9tIHZl
cnNpb24gMy4yIG9uIHdlIHVzZSB0aGUgT3BlbkdMIENvcmUgcHJvZmlsZSwgYW5kIHdlIG5lZWQg
YSBWQU8gZm9yIHJlbmRlcmluZy4KKyAgICAgICAgLy8gQSBWQU8gY291bGQgYmUgY3JlYXRlZCBh
bmQgYm91bmQgYnkgZWFjaCBjb21wb25lbnQgdXNpbmcgR0wgcmVuZGVyaW5nIChUZXh0dXJlTWFw
cGVyLCBXZWJHTCwgZXRjKS4gVGhpcyBpcworICAgICAgICAvLyBhIHNpbXBsZXIgc29sdXRpb246
IHRoZSBmaXJzdCBHcmFwaGljc0NvbnRleHQzRCBjcmVhdGVkIG9uIGEgR0xDb250ZXh0IHdpbGwg
Y3JlYXRlIGFuZCBiaW5kIGEgVkFPIGZvciB0aGF0IGNvbnRleHQuCisgICAgICAgIEdDM0RpbnQg
Y3VycmVudFZBTyA9IDA7CisgICAgICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpW
RVJURVhfQVJSQVlfQklORElORywgJmN1cnJlbnRWQU8pOworICAgICAgICBpZiAoIWN1cnJlbnRW
QU8pIHsKKyAgICAgICAgICAgIG1fdmFvID0gY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAg
ICAgIGJpbmRWZXJ0ZXhBcnJheShtX3Zhbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBGb3IgbG93ZXIgdmVyc2lvbnMgcmVxdWVzdCB0aGUgY29tcGF0aWJpbGl0eSBvdXRw
dXQgdG8gdGhlIHNoYWRlciBjb21waWxlci4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2Vi
S2l0QnJpZGdlKFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpOworCisgICAgICAgIC8vIEdM
X1BPSU5UX1NQUklURSBpcyBuZWVkZWQgaW4gbG93ZXIgdmVyc2lvbnMuCisgICAgICAgIDo6Z2xF
bmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKKyAgICB9CisjZWxzZQorICAgIG1fY29tcGlsZXIgPSBB
TkdMRVdlYktpdEJyaWRnZShTSF9FU1NMX09VVFBVVCk7CisjZW5kaWYKKwogICAgIC8vIEFOR0xF
IGluaXRpYWxpemF0aW9uLgogICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsK
ICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CkBAIC0xNjYsMTEg
KzE5Myw2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAKICAgICBtX2NvbXBpbGVyLnNldFJl
c291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAgIDo6
Z2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7Ci0gICAgOjpnbEVuYWJsZShH
TF9QT0lOVF9TUFJJVEUpOwotI2VuZGlmCi0KICAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKIH0KIApAQCAtMTk4LDYgKzIyMCw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3ND
b250ZXh0M0QoKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICA6
OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CiAjZW5kaWYKKwor
ICAgIGlmIChtX3ZhbykKKyAgICAgICAgZGVsZXRlVmVydGV4QXJyYXkobV92YW8pOwogfQogCiBH
cmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpCkBAIC0z
NDQsNiArMzY5LDIyIEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQorRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cygpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisg
ICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMyLgorICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0
aGlzLCAgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVz
ZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgor
ICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworI2VuZGlm
CisgICAgfQorICAgIHJldHVybiAqbV9leHRlbnNpb25zOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmNwcAppbmRleCA5YzJlZDNkZjg5MGEzOWUxY2M1NmM2MGQ5M2ViZDhjNmUzNWI3MmZjLi5i
MjVmMjZmZTdlNjI1YTA5YTc2OGMzNjYyNmIwNWViY2M4NDE5ODRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAt
MzUsOCArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFkZWZpbmVkKFBGTkdMWFNX
QVBJTlRFUlZBTFNHSVBST0MpCiB0eXBlZGVmIGludCAoKlBGTkdMWFNXQVBJTlRFUlZBTFNHSVBS
T0MpIChpbnQpOwogI2VuZGlmCisjaWYgIWRlZmluZWQoUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJ
QlNBUkJQUk9DKQordHlwZWRlZiBHTFhDb250ZXh0ICgqUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJ
QlNBUkJQUk9DKSAoRGlzcGxheSAqZHB5LCBHTFhGQkNvbmZpZyBjb25maWcsIEdMWENvbnRleHQg
c2hhcmVfY29udGV4dCwgQm9vbCBkaXJlY3QsIGNvbnN0IGludCAqYXR0cmliX2xpc3QpOworI2Vu
ZGlmCiAKIHN0YXRpYyBQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DIGdsWFN3YXBJbnRlcnZhbFNH
STsKK3N0YXRpYyBQRk5HTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBST0MgZ2xYQ3JlYXRlQ29u
dGV4dEF0dHJpYnNBUkI7CiAKIHN0YXRpYyBib29sIGhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9u
KERpc3BsYXkqIGRpc3BsYXkpCiB7CkBAIC01Miw2ICs1NiwyNCBAQCBzdGF0aWMgYm9vbCBoYXNT
R0lTd2FwQ29udHJvbEV4dGVuc2lvbihEaXNwbGF5KiBkaXNwbGF5KQogICAgIHJldHVybiAhIWds
WFN3YXBJbnRlcnZhbFNHSTsKIH0KIAorc3RhdGljIGJvb2wgaGFzR0xYQVJCQ3JlYXRlQ29udGV4
dEV4dGVuc2lvbihEaXNwbGF5KiBkaXNwbGF5KQoreworI2lmICFQTEFURk9STShHVEspCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZh
bHNlOworICAgIGlmIChpbml0aWFsaXplZCkKKyAgICAgICAgcmV0dXJuICEhZ2xYQ3JlYXRlQ29u
dGV4dEF0dHJpYnNBUkI7CisKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgaWYgKCFHTENv
bnRleHQ6OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZyhkaXNw
bGF5LCAwKSwgIkdMWF9BUkJfY3JlYXRlX2NvbnRleHQiKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIgPSByZWludGVycHJldF9jYXN0PFBG
TkdMWENSRUFURUNPTlRFWFRBVFRSSUJTQVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oImdsWENyZWF0ZUNvbnRleHRBdHRyaWJz
QVJCIikpKTsKKyAgICByZXR1cm4gISFnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQjsKK30KKwog
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dD
b250ZXh0KEdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIFBsYXRmb3JtRGlzcGxheSYgcGxhdGZv
cm1EaXNwbGF5LCBHTFhDb250ZXh0IHNoYXJpbmdDb250ZXh0KQogewogICAgIERpc3BsYXkqIGRp
c3BsYXkgPSBkb3duY2FzdDxQbGF0Zm9ybURpc3BsYXlYMTE+KHBsYXRmb3JtRGlzcGxheSkubmF0
aXZlKCk7CkBAIC02MiwxMCArODQsMzggQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4g
R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0KEdMTmF0aXZlV2luZG93VHkKICAgICBY
VmlzdWFsSW5mbyB2aXN1YWxJbmZvOwogICAgIHZpc3VhbEluZm8udmlzdWFsaWQgPSBYVmlzdWFs
SURGcm9tVmlzdWFsKGF0dHJpYnV0ZXMudmlzdWFsKTsKIAotICAgIGludCBudW1SZXR1cm5lZCA9
IDA7Ci0gICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFsSW5mb0xpc3QoWEdldFZpc3Vh
bEluZm8oZGlzcGxheSwgVmlzdWFsSURNYXNrLCAmdmlzdWFsSW5mbywgJm51bVJldHVybmVkKSk7
CisgICAgaW50IG5Db25maWdzID0gMDsKKyAgICBHTFhGQkNvbmZpZyBjb25maWcgPSBudWxscHRy
OworICAgIFhVbmlxdWVQdHI8R0xYRkJDb25maWc+IGNvbmZpZ3MoZ2xYR2V0RkJDb25maWdzKGRp
c3BsYXksIERlZmF1bHRTY3JlZW4oZGlzcGxheSksICZuQ29uZmlncykpOworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbkNvbmZpZ3M7IGkrKykgeworICAgICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJ
bmZvPiBnbHhWaXN1YWxJbmZvKGdsWEdldFZpc3VhbEZyb21GQkNvbmZpZyhkaXNwbGF5LCBjb25m
aWdzLmdldCgpW2ldKSk7CisgICAgICAgIGlmICghZ2x4VmlzdWFsSW5mbykKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmIChnbHhWaXN1YWxJbmZvLmdldCgpLT52aXN1YWxpZCA9
PSB2aXN1YWxJbmZvLnZpc3VhbGlkKSB7CisgICAgICAgICAgICBjb25maWcgPSBjb25maWdzLmdl
dCgpW2ldOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJU
KGNvbmZpZyk7CisKKyAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0OworICAgIGlmIChoYXNH
TFhBUkJDcmVhdGVDb250ZXh0RXh0ZW5zaW9uKGRpc3BsYXkpKSB7CisgICAgICAgIC8vIFJlcXVl
c3QgT3BlbkdMIHZlcnNpb24gMy4yIGFuZCBjb3JlIHByb2ZpbGUsIHdoaWNoIGd1YXJhbnRlZXMg
dGhhdCB0aGUgaTk2NSBkcml2ZXIgZG9lc24ndCB1c2UgdGhlIHNvZnR3YXJlIHJlbmRlcmVyLgor
ICAgICAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7CisgICAgICAg
ICAgICBHTFhfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0FSQiwgMywKKyAgICAgICAgICAgIEdMWF9D
T05URVhUX01JTk9SX1ZFUlNJT05fQVJCLCAyLAorICAgICAgICAgICAgMAorICAgICAgICB9Owor
ICAgICAgICBjb250ZXh0LnJlc2V0KGdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCKGRpc3BsYXks
IGNvbmZpZywgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUsIGNvbnRleHRBdHRyaWJ1dGVzKSk7Cisg
ICAgfQorCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIC8vIEZhbGxiYWNrIHRvIGxlZ2Fj
eSBPcGVuR0wgdmVyc2lvbi4KKyAgICAgICAgWFVuaXF1ZVB0cjxYVmlzdWFsSW5mbz4gdmlzdWFs
SW5mb0xpc3QoZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKGRpc3BsYXksIGNvbmZpZykpOworICAg
ICAgICBjb250ZXh0LnJlc2V0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlzdWFsSW5mb0xp
c3QuZ2V0KCksIHNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CisgICAgfQogCi0gICAgWFVuaXF1ZUdM
WENvbnRleHQgY29udGV4dChnbFhDcmVhdGVDb250ZXh0KGRpc3BsYXksIHZpc3VhbEluZm9MaXN0
LmdldCgpLCBzaGFyaW5nQ29udGV4dCwgVHJ1ZSkpOwogICAgIGlmICghY29udGV4dCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk3LDcgKzE0NywyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVBidWZmZXJDb250ZXh0KFBsYXRmb3Jt
RGlzcGxheQogICAgIGlmICghcGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwg
Y29uZmlncy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUp
KTsKKyAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0OworCisgICAgaWYgKGhhc0dMWEFSQkNy
ZWF0ZUNvbnRleHRFeHRlbnNpb24oZGlzcGxheSkpIHsKKyAgICAgICAgLy8gUmVxdWVzdCBPcGVu
R0wgdmVyc2lvbiAzLjIgYW5kIGNvcmUgcHJvZmlsZSwgd2hpY2ggZ3VhcmFudGVlcyB0aGF0IHRo
ZSBpOTY1IGRyaXZlciBkb2Vzbid0IHVzZSB0aGUgc29mdHdhcmUgcmVuZGVyZXIuCisgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAgIEdM
WF9DT05URVhUX01BSk9SX1ZFUlNJT05fQVJCLCAzLAorICAgICAgICAgICAgR0xYX0NPTlRFWFRf
TUlOT1JfVkVSU0lPTl9BUkIsIDIsCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAgICAg
IGNvbnRleHQucmVzZXQoZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIoZGlzcGxheSwgY29uZmln
cy5nZXQoKVswXSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUsIGNvbnRleHRBdHRyaWJ1dGVzKSk7
CisgICAgfQorCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIC8vIEZhbGxiYWNrIHRvIGxl
Z2FjeSBPcGVuR0wgdmVyc2lvbi4KKyAgICAgICAgY29udGV4dC5yZXNldChnbFhDcmVhdGVOZXdD
b250ZXh0KGRpc3BsYXksIGNvbmZpZ3MuZ2V0KClbMF0sIEdMWF9SR0JBX1RZUEUsIHNoYXJpbmdD
b250ZXh0LCBHTF9UUlVFKSk7CisgICAgfQorCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcApp
bmRleCBhMjllZTJkOGNmODVhY2I1MWQ2NmJlYmU2ZDI1MzMzMjM5MzJhNjkxLi40OTJiNTkzNTQw
YTQzMGFkYWYyMjE1YTczMGJlNmRhM2ZmYjY0ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIFN0cmluZyBFeHRlbnNpb25zM0RP
cGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybTNET2Jq
ZWN0CiAKIHZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZhaWxhYmxl
RXh0ZW5zaW9ucygpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oR1RLKQogICAgIGlmIChtX3VzZUluZGV4ZWRHZXRTdHJpbmcpIHsKICAgICAgICAg
R0xpbnQgbnVtRXh0ZW5zaW9ucyA9IDA7CiAgICAgICAgIDo6Z2xHZXRJbnRlZ2VydihHTF9OVU1f
RVhURU5TSU9OUywgJm51bUV4dGVuc2lvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAKaW5kZXggYWU4YmNhN2FlNTFjZTI4NzE2MzZlMWVhMWJjYTQ2OWUxNmM2ZjBiNS4u
MzFjMjg3YzgzN2Y1MzUyZGNhMmZiZTZlODgyYzMxZDM4MWM5Yjg4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC00MDcsMTIgKzQwNywxNCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiAjZW5kaWYKIH0KIAor
I2lmICFQTEFURk9STShHVEspCiBFeHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
eHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJD
b21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CisjZW5kaWYKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xF
Uy5jcHAKaW5kZXggNTUyNzYzY2I3MDNmYjg0OWE2YzdlYmU4ZDVhY2JkYzBjOTFkN2EyNi4uZmVm
ZDM4ZjI1ZjY4YWUxNDhmMWM3MWJhMTlhNmMxMTdhM2I1M2UwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtMjM4LDEyICsyMzgsMTQgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogICAgIDo6Z2xDbGVh
ckRlcHRoZihkZXB0aCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oR1RLKQogRXh0ZW5zaW9uczNEJiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lv
bnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNE
T3BlbkdMRVM+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7CiAgICAgcmV0dXJuICptX2V4dGVu
c2lvbnM7CiB9CisjZW5kaWYKIAogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295335</attachid>
            <date>2016-11-22 03:33:42 -0800</date>
            <delta_ts>2016-11-28 03:15:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164049-20161122123328.patch</filename>
            <type>text/plain</type>
            <size>18165</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA0ZDRlODk1YzcyZmVj
MTVjMGY3NWQ1ZjY5ZTliYTRkNjBhYTBlNS4uZTk5MzQ3ZWIyNTc0YjEwYTlhZGU2NzM1MWE0Nzdi
ZjY2NDljZjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTExLTIyICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRHJhbWF0aWMg
aW5jcmVhc2Ugb24gbWVtb3J5IHVzYWdlIHNpbmNlIDIuMTQueAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIE9wZW5HTCB2ZXJzaW9uIDMuMiBDb3Jl
IGZvciByZW5kZXJpbmcgd2hlbiBhdmFpbGFibGUuCisgICAgICAgIFVwZGF0ZSBzb21lIG9wZXJh
dGlvbnMgdGhhdCBoYXZlIGNoYW5nZWQgd2hlbiB1c2luZyAzLjIgQ29yZToKKyAgICAgICAgLSBV
c2UgZ2xHZXRTdHJpbmdpIHRvIGdldCB0aGUgZXh0ZW5zaW9ucyBsaXN0LgorICAgICAgICAtIERv
IG5vdCB1c2UgR0xfUE9JTlRfU1BSSVRFLgorICAgICAgICAtIEFsd2F5cyB1c2UgYSBWQU8gd2hl
biByZW5kZXJpbmcuCisgICAgICAgIC0gVXNlIGEgR0xTTCAxLjUwIGNvbXBhdGlibGUgc2hhZGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0Ojp2ZXJz
aW9uKToKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGdldCBPcGVuR0wgdmVyc2lvbiB3ZSBhcmUg
dXNpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0Lmg6CisgICAgICAg
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gc3RvcmUgdGhlIFZBTyB1c2VkIGZvciByZW5k
ZXJpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKToKKyAgICAgICAgQWRkIGdsR2V0
U3RyaW5naSB0byB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBTZXQg
YXBwcm9wcmlhdGUgb3V0cHV0IHRvIHRoZSBzaGFkZXIgY29tcGlsZXIgYW5kIGluaXRhbGl6ZSB0
aGUgVkFPIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBEZWxldGUgdGhlIFZBTyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAg
ICAgIFVzZSBnbEdldEV4dGVuc2lvbnNpIGZvciBPcGVuR0wgdmVyc2lvbnMgPj0gMy4yLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFzR0xYQVJCQ3JlYXRlQ29udGV4dEV4dGVuc2lvbik6CisgICAgICAgIENoZWNr
IHdoZXRoZXIgdGhlIEdMWF9BUkJfY3JlYXRlX2NvbnRleHQgZXh0ZW5zaW9uIGlzIGF2YWlsYWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dCk6
CisgICAgICAgIFVzZSBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQigpIGlmIHBvc3NpYmxlIHRv
IHJlcXVlc3QgYW4gT3BlbkdMIDMuMiBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6CisgICAgICAgIERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZh
aWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEVuYWJsZSBnbEdldFN0cmluZ2kgZm9yIEdUSy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICBEbyBub3QgdXNlIGRlZmF1bHQgZ2V0RXh0ZW5zaW9ucygpIG1ldGhv
ZCBmb3IgR1RLLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgRGl0dG8uCisKIDIwMTYtMTEtMjEgIEtvbnN0
YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIERpc2FibGUgI2xp
bmUgbWFya2VycyBpbiBiaXNvbiBvdXRwdXQgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggYzE5OTc4MTMxNThiMzE1MjRj
NDUxNGI5MWVhYjM1YzcxNTg2NjcyNi4uZGE1MTE3YjYxOTExMjQ3MTMxOTliYzBjNWVlZmYyZTRm
ZDVmYzc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCkBAIC0xNjAsNiArMTYwLDE4IEBAIGJvb2wgR0xDb250ZXh0Ojppc0V4dGVuc2lvblN1
cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25MaXN0LCBjb25zdCBjaGFyKiBleHRlCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit1aW50IEdMQ29udGV4dDo6dmVyc2lvbigpCit7CisgICAgaWYg
KCFtX3ZlcnNpb24pIHsKKyAgICAgICAgR0MzRGludCBtYWpvciA9IDA7CisgICAgICAgIEdDM0Rp
bnQgbWlub3IgPSAwOworICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTUFKT1JfVkVSU0lPTiwg
Jm1ham9yKTsKKyAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01JTk9SX1ZFUlNJT04sICZtaW5v
cik7CisgICAgICAgIG1fdmVyc2lvbiA9IG1ham9yICogMTAwICsgbWlub3IgKiAxMDsKKyAgICB9
CisgICAgcmV0dXJuIG1fdmVyc2lvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKaW5k
ZXggNTc2Y2NhZGFlOTNkOTBjNWQzNWFlNjlkZjRlNDA2MTNlOWM2M2M5MS4uMGRlN2NiODYwYWY2
ODM1MjNhOWIyNDdmMjUzNmEwYmMyOTg3M2Y1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzRXh0ZW5zaW9uU3VwcG9ydGVkKGNvbnN0IGNoYXIqIGV4dGVuc2lvbkxpc3Qs
IGNvbnN0IGNoYXIqIGV4dGVuc2lvbik7CiAKICAgICBQbGF0Zm9ybURpc3BsYXkmIGRpc3BsYXko
KSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXk7IH0KKyAgICB1aW50IHZlcnNpb24oKTsKIAogICAg
IHZpcnR1YWwgfkdMQ29udGV4dCgpOwogICAgIHZpcnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKQEAgLTc3LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIEdMQ29udGV4dChQbGF0Zm9y
bURpc3BsYXkmKTsKIAogICAgIFBsYXRmb3JtRGlzcGxheSYgbV9kaXNwbGF5OworICAgIHVpbnQg
bV92ZXJzaW9uIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5k
ZXggODNhMTFlODc4MWYzMTYyMDI1NDgxYTA0MTkxZDQ4YjI0ZWQ1OTM5MC4uY2IyZWEwY2M3NmUy
Y2Q2NzAzYjZiZGY3MGNiYWE3ZjI4MDBhYzE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNDM2LDYgKzE0MzYs
MTEgQEAgcHJpdmF0ZToKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX3dlYmdsQ29u
dGV4dDsKIAogICAgIGJvb2wgbV9pc0ZvcldlYkdMMiB7IGZhbHNlIH07CisKKyNpZiBVU0UoQ0FJ
Uk8pCisgICAgUGxhdGZvcm0zRE9iamVjdCBtX3ZhbyB7IDAgfTsKKyNlbmRpZgorCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9PcGVuR0xTaGltcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9PcGVuR0xTaGltcy5jcHAKaW5kZXggNTM2ZWIxYjlhODZlM2YzYWU0ZTdhMjdlNmM1YjFi
Y2M1YjBmMDE0OS4uZDNjZmQyN2Q1NzFlMzdlNjg3OTk2NDcyNzAyOTQ0OTFjZmQ3NTNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApA
QCAtMTYyLDYgKzE2Miw5IEBAIGJvb2wgaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkKICAgICBBU1NJ
R05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJJbmZvTG9nLCBzdWNjZXNzKTsKICAg
ICBBU1NJR05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJpdiwgc3VjY2Vzcyk7CiAg
ICAgQVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0U2hhZGVyU291cmNlLCBzdWNjZXNz
KTsKKyAgICAvLyBnbEdldFN0cmluZ2kgaXMgb25seSBhdmFpbGFibGUgb24gT3BlbkdMIG9yIEdM
RVMgdmVyc2lvbnMgPj0gMy4wLgorICAgIC8vIEFkZCBpdCB3aXRoIF9FWFQgc28gaXQgZG9lc24n
dCBjYXVzZSBhbiBpbml0aWFsaXphdGlvbiBmYWlsdXJlIG9uIGxvd2VyIHZlcnNpb25zLgorICAg
IEFTU0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWV9FWFQoZ2xHZXRTdHJpbmdpKTsKICAgICBBU1NJ
R05fRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRVbmlmb3JtZnYsIHN1Y2Nlc3MpOwogICAgIEFT
U0lHTl9GVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFVuaWZvcm1pdiwgc3VjY2Vzcyk7CiAgICAg
QVNTSUdOX0ZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uLCBzdWNjZXNz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNo
aW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCmlu
ZGV4IDkwZDI4YmNmYzI1MzBiNzA2MTBjNzQyNDI0YTMyZWMzYzliNWZlZGMuLmEwYjhlMmFlNWI4
ZjVhMTE2OWE2YzE2NTRiYzYyMzg1MWFkMTMzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuaApAQCAtOTIsNiArOTIsNyBAQCB0eXBlZGVmIHZv
aWQgKEdMQVBJRU5UUlkgKmdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVt
LCBHTGVudW0sIEdMaQogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdldFNoYWRlckluZm9M
b2dUeXBlKSAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopOwogdHlwZWRlZiB2b2lk
IChHTEFQSUVOVFJZICpnbEdldFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCop
OwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKik7Cit0eXBlZGVmIGNvbnN0IEdMdWJ5dGUqIChH
TEFQSUVOVFJZICpnbEdldFN0cmluZ2lUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiBH
TGludCAoR0xBUElFTlRSWSAqZ2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25z
dCBjaGFyKik7CiB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmdsR2V0VW5pZm9ybWZ2VHlwZSkg
KEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xH
ZXRVbmlmb3JtaXZUeXBlKSAoR0x1aW50LCBHTGludCwgR0xpbnQqKTsKQEAgLTE5OCw2ICsxOTks
NyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAgICAgRlVOQ1RJT05f
VEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJJbmZvTG9nKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRS
WShnbEdldFNoYWRlcml2KTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFNoYWRlclNv
dXJjZSk7CisgICAgRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRTdHJpbmdpKTsKICAgICBGVU5D
VElPTl9UQUJMRV9FTlRSWShnbEdldFVuaWZvcm1mdik7CiAgICAgRlVOQ1RJT05fVEFCTEVfRU5U
UlkoZ2xHZXRVbmlmb3JtaXYpOwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKTsKQEAgLTMyNSw2ICszMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVu
Y3Rpb25UYWJsZSB7CiAjZGVmaW5lIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgICAg
ICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFNoYWRlckluZm9Mb2cpCiAjZGVmaW5lIGdsR2V0
U2hhZGVyaXYgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdl
dFNoYWRlcml2KQogI2RlZmluZSBnbEdldFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAgICAg
ICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRTaGFkZXJTb3VyY2UpCisjZGVmaW5lIGdsR2V0U3Ry
aW5naSAgICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFN0
cmluZ2kpCiAjZGVmaW5lIGdsR2V0VW5pZm9ybWZ2ICAgICAgICAgICAgICAgICAgICAgICAgIExP
T0tVUF9HTF9GVU5DVElPTihnbEdldFVuaWZvcm1mdikKICNkZWZpbmUgZ2xHZXRVbmlmb3JtaXYg
ICAgICAgICAgICAgICAgICAgICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VW5pZm9ybWl2
KQogI2RlZmluZSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAgICAgICAgICAgICAgICAgICBMT09LVVBf
R0xfRlVOQ1RJT04oZ2xHZXRVbmlmb3JtTG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNE
Q2Fpcm8uY3BwCmluZGV4IGMyZTY3ZDAwNDMxNzY0ZWVmYjRkYmFjY2NhNzA1NDA0NWEwNzk0NjEu
LjJlNDRiODllZDcxNjhhNmI3NDFhY2ExMWU3MDdkMjRhMWY1Mjc5MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwCkBAIC03OSw3ICs3OSw2IEBAIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSByZW5kZXJTdHlsZSkKICAgICA6IG1fY3VycmVudFdpZHRoKDApCiAg
ICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKLSAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFu
dCgpID8gU0hfRVNTTF9PVVRQVVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQogICAg
ICwgbV9hdHRycyhhdHRyaWJ1dGVzKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2NvbXBv
c2l0b3JUZXh0dXJlKDApCkBAIC0xNDUsNiArMTQ0LDM0IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVz
LCBICiAgICAgICAgIH0KICAgICB9CiAKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIDo6Z2xF
bmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7CisKKyAgICBpZiAoR0xDb250ZXh0
OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApIHsKKyAgICAgICAgLy8gRnJvbSB2ZXJzaW9u
IDMuMiBvbiB3ZSB1c2UgdGhlIE9wZW5HTCBDb3JlIHByb2ZpbGUsIHNvIHJlcXVlc3QgdGhhdCBv
dXB1dCB0byB0aGUgc2hhZGVyIGNvbXBpbGVyLgorICAgICAgICAvLyBPcGVuR0wgdmVyc2lvbiAz
LjIgdXNlcyBHTFNMIHZlcnNpb24gMS41MC4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2Vi
S2l0QnJpZGdlKFNIX0dMU0xfMTUwX0NPUkVfT1VUUFVUKTsKKworICAgICAgICAvLyBGcm9tIHZl
cnNpb24gMy4yIG9uIHdlIHVzZSB0aGUgT3BlbkdMIENvcmUgcHJvZmlsZSwgYW5kIHdlIG5lZWQg
YSBWQU8gZm9yIHJlbmRlcmluZy4KKyAgICAgICAgLy8gQSBWQU8gY291bGQgYmUgY3JlYXRlZCBh
bmQgYm91bmQgYnkgZWFjaCBjb21wb25lbnQgdXNpbmcgR0wgcmVuZGVyaW5nIChUZXh0dXJlTWFw
cGVyLCBXZWJHTCwgZXRjKS4gVGhpcyBpcworICAgICAgICAvLyBhIHNpbXBsZXIgc29sdXRpb246
IHRoZSBmaXJzdCBHcmFwaGljc0NvbnRleHQzRCBjcmVhdGVkIG9uIGEgR0xDb250ZXh0IHdpbGwg
Y3JlYXRlIGFuZCBiaW5kIGEgVkFPIGZvciB0aGF0IGNvbnRleHQuCisgICAgICAgIEdDM0RpbnQg
Y3VycmVudFZBTyA9IDA7CisgICAgICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpW
RVJURVhfQVJSQVlfQklORElORywgJmN1cnJlbnRWQU8pOworICAgICAgICBpZiAoIWN1cnJlbnRW
QU8pIHsKKyAgICAgICAgICAgIG1fdmFvID0gY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAg
ICAgIGJpbmRWZXJ0ZXhBcnJheShtX3Zhbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICAvLyBGb3IgbG93ZXIgdmVyc2lvbnMgcmVxdWVzdCB0aGUgY29tcGF0aWJpbGl0eSBvdXRw
dXQgdG8gdGhlIHNoYWRlciBjb21waWxlci4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2Vi
S2l0QnJpZGdlKFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpOworCisgICAgICAgIC8vIEdM
X1BPSU5UX1NQUklURSBpcyBuZWVkZWQgaW4gbG93ZXIgdmVyc2lvbnMuCisgICAgICAgIDo6Z2xF
bmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKKyAgICB9CisjZWxzZQorICAgIG1fY29tcGlsZXIgPSBB
TkdMRVdlYktpdEJyaWRnZShTSF9FU1NMX09VVFBVVCk7CisjZW5kaWYKKwogICAgIC8vIEFOR0xF
IGluaXRpYWxpemF0aW9uLgogICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsK
ICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CkBAIC0xNjYsMTEg
KzE5Myw2IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAKICAgICBtX2NvbXBpbGVyLnNldFJl
c291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAgIDo6
Z2xFbmFibGUoR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSk7Ci0gICAgOjpnbEVuYWJsZShH
TF9QT0lOVF9TUFJJVEUpOwotI2VuZGlmCi0KICAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAw
KTsKIH0KIApAQCAtMTk4LDYgKzIyMCw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3ND
b250ZXh0M0QoKQogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICA6
OmdsRGVsZXRlVGV4dHVyZXMoMSwgJm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CiAjZW5kaWYKKwor
ICAgIGlmIChtX3ZhbykKKyAgICAgICAgZGVsZXRlVmVydGV4QXJyYXkobV92YW8pOwogfQogCiBH
cmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpCkBAIC0z
NDQsNiArMzY5LDIyIEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQorRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9u
cygpCit7CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisg
ICAgICAgIC8vIGdsR2V0U3RyaW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMyLgorICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0
aGlzLCAgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVz
ZSB0aGUgQ29yZSBwcm9maWxlLCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgor
ICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5H
TD4odGhpcywgR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworI2VuZGlm
CisgICAgfQorICAgIHJldHVybiAqbV9leHRlbnNpb25zOworfQorI2VuZGlmCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4
dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0
R0xYLmNwcAppbmRleCA5YzJlZDNkZjg5MGEzOWUxY2M1NmM2MGQ5M2ViZDhjNmUzNWI3MmZjLi4w
ZDNhOTcwMjdlYjk1ZTc0NDk2MTc5MDg4MTAyZjU4ZWQzNDNmMTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAt
MzUsOCArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFkZWZpbmVkKFBGTkdMWFNX
QVBJTlRFUlZBTFNHSVBST0MpCiB0eXBlZGVmIGludCAoKlBGTkdMWFNXQVBJTlRFUlZBTFNHSVBS
T0MpIChpbnQpOwogI2VuZGlmCisjaWYgIWRlZmluZWQoUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJ
QlNBUkJQUk9DKQordHlwZWRlZiBHTFhDb250ZXh0ICgqUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJ
QlNBUkJQUk9DKSAoRGlzcGxheSAqZHB5LCBHTFhGQkNvbmZpZyBjb25maWcsIEdMWENvbnRleHQg
c2hhcmVfY29udGV4dCwgQm9vbCBkaXJlY3QsIGNvbnN0IGludCAqYXR0cmliX2xpc3QpOworI2Vu
ZGlmCiAKIHN0YXRpYyBQRk5HTFhTV0FQSU5URVJWQUxTR0lQUk9DIGdsWFN3YXBJbnRlcnZhbFNH
STsKK3N0YXRpYyBQRk5HTFhDUkVBVEVDT05URVhUQVRUUklCU0FSQlBST0MgZ2xYQ3JlYXRlQ29u
dGV4dEF0dHJpYnNBUkI7CiAKIHN0YXRpYyBib29sIGhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9u
KERpc3BsYXkqIGRpc3BsYXkpCiB7CkBAIC01Miw2ICs1NiwyMCBAQCBzdGF0aWMgYm9vbCBoYXNT
R0lTd2FwQ29udHJvbEV4dGVuc2lvbihEaXNwbGF5KiBkaXNwbGF5KQogICAgIHJldHVybiAhIWds
WFN3YXBJbnRlcnZhbFNHSTsKIH0KIAorc3RhdGljIGJvb2wgaGFzR0xYQVJCQ3JlYXRlQ29udGV4
dEV4dGVuc2lvbihEaXNwbGF5KiBkaXNwbGF5KQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxp
emVkID0gZmFsc2U7CisgICAgaWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gISFnbFhD
cmVhdGVDb250ZXh0QXR0cmlic0FSQjsKKworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBp
ZiAoIUdMQ29udGV4dDo6aXNFeHRlbnNpb25TdXBwb3J0ZWQoZ2xYUXVlcnlFeHRlbnNpb25zU3Ry
aW5nKGRpc3BsYXksIDApLCAiR0xYX0FSQl9jcmVhdGVfY29udGV4dCIpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DPihnbFhHZXRQcm9jQWRkcmVz
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigiZ2xYQ3JlYXRlQ29udGV4
dEF0dHJpYnNBUkIiKSkpOworICAgIHJldHVybiAhIWdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJC
OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0
ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5
JiBwbGF0Zm9ybURpc3BsYXksIEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7CiAgICAgRGlz
cGxheSogZGlzcGxheSA9IGRvd25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNw
bGF5KS5uYXRpdmUoKTsKQEAgLTYyLDEwICs4MCwzOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250
ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dU
eQogICAgIFhWaXN1YWxJbmZvIHZpc3VhbEluZm87CiAgICAgdmlzdWFsSW5mby52aXN1YWxpZCA9
IFhWaXN1YWxJREZyb21WaXN1YWwoYXR0cmlidXRlcy52aXN1YWwpOwogCi0gICAgaW50IG51bVJl
dHVybmVkID0gMDsKLSAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvTGlzdChY
R2V0VmlzdWFsSW5mbyhkaXNwbGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0
dXJuZWQpKTsKKyAgICBpbnQgbnVtQ29uZmlncyA9IDA7CisgICAgR0xYRkJDb25maWcgY29uZmln
ID0gbnVsbHB0cjsKKyAgICBYVW5pcXVlUHRyPEdMWEZCQ29uZmlnPiBjb25maWdzKGdsWEdldEZC
Q29uZmlncyhkaXNwbGF5LCBEZWZhdWx0U2NyZWVuKGRpc3BsYXkpLCAmbnVtQ29uZmlncykpOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29uZmlnczsgaSsrKSB7CisgICAgICAgIFhVbmlx
dWVQdHI8WFZpc3VhbEluZm8+IGdseFZpc3VhbEluZm8oZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmln
KGRpc3BsYXksIGNvbmZpZ3MuZ2V0KClbaV0pKTsKKyAgICAgICAgaWYgKCFnbHhWaXN1YWxJbmZv
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGdseFZpc3VhbEluZm8uZ2V0
KCktPnZpc3VhbGlkID09IHZpc3VhbEluZm8udmlzdWFsaWQpIHsKKyAgICAgICAgICAgIGNvbmZp
ZyA9IGNvbmZpZ3MuZ2V0KClbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICBBU1NFUlQoY29uZmlnKTsKKworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQ7
CisgICAgaWYgKGhhc0dMWEFSQkNyZWF0ZUNvbnRleHRFeHRlbnNpb24oZGlzcGxheSkpIHsKKyAg
ICAgICAgLy8gUmVxdWVzdCBPcGVuR0wgdmVyc2lvbiAzLjIgYW5kIGNvcmUgcHJvZmlsZSwgd2hp
Y2ggZ3VhcmFudGVlcyB0aGF0IHRoZSBpOTY1IGRyaXZlciBkb2Vzbid0IHVzZSB0aGUgc29mdHdh
cmUgcmVuZGVyZXIuCisgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgY29udGV4dEF0dHJpYnV0ZXNb
XSA9IHsKKyAgICAgICAgICAgIEdMWF9DT05URVhUX01BSk9SX1ZFUlNJT05fQVJCLCAzLAorICAg
ICAgICAgICAgR0xYX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9BUkIsIDIsCisgICAgICAgICAgICAw
CisgICAgICAgIH07CisgICAgICAgIGNvbnRleHQucmVzZXQoZ2xYQ3JlYXRlQ29udGV4dEF0dHJp
YnNBUkIoZGlzcGxheSwgY29uZmlnLCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSwgY29udGV4dEF0
dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgLy8gRmFs
bGJhY2sgdG8gbGVnYWN5IE9wZW5HTCB2ZXJzaW9uLgorICAgICAgICBYVW5pcXVlUHRyPFhWaXN1
YWxJbmZvPiB2aXN1YWxJbmZvTGlzdChnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoZGlzcGxheSwg
Y29uZmlnKSk7CisgICAgICAgIGNvbnRleHQucmVzZXQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCB2aXN1YWxJbmZvTGlzdC5nZXQoKSwgc2hhcmluZ0NvbnRleHQsIFRydWUpKTsKKyAgICB9CiAK
LSAgICBYVW5pcXVlR0xYQ29udGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
dmlzdWFsSW5mb0xpc3QuZ2V0KCksIHNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTcsNyArMTQzLDIzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNv
bnRleHQoUGxhdGZvcm1EaXNwbGF5CiAgICAgaWYgKCFwYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlTmV3Q29u
dGV4dChkaXNwbGF5LCBjb25maWdzLmdldCgpWzBdLCBHTFhfUkdCQV9UWVBFLCBzaGFyaW5nQ29u
dGV4dCwgR0xfVFJVRSkpOworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQ7CisKKyAgICBp
ZiAoaGFzR0xYQVJCQ3JlYXRlQ29udGV4dEV4dGVuc2lvbihkaXNwbGF5KSkgeworICAgICAgICAv
LyBSZXF1ZXN0IE9wZW5HTCB2ZXJzaW9uIDMuMiBhbmQgY29yZSBwcm9maWxlLCB3aGljaCBndWFy
YW50ZWVzIHRoYXQgdGhlIGk5NjUgZHJpdmVyIGRvZXNuJ3QgdXNlIHRoZSBzb2Z0d2FyZSByZW5k
ZXJlci4KKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBjb250ZXh0QXR0cmlidXRlc1tdID0gewor
ICAgICAgICAgICAgR0xYX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9BUkIsIDMsCisgICAgICAgICAg
ICBHTFhfQ09OVEVYVF9NSU5PUl9WRVJTSU9OX0FSQiwgMiwKKyAgICAgICAgICAgIDAKKyAgICAg
ICAgfTsKKyAgICAgICAgY29udGV4dC5yZXNldChnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQihk
aXNwbGF5LCBjb25maWdzLmdldCgpWzBdLCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSwgY29udGV4
dEF0dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgLy8g
RmFsbGJhY2sgdG8gbGVnYWN5IE9wZW5HTCB2ZXJzaW9uLgorICAgICAgICBjb250ZXh0LnJlc2V0
KGdsWENyZWF0ZU5ld0NvbnRleHQoZGlzcGxheSwgY29uZmlncy5nZXQoKVswXSwgR0xYX1JHQkFf
VFlQRSwgc2hhcmluZ0NvbnRleHQsIEdMX1RSVUUpKTsKKyAgICB9CisKICAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xDb21tb24uY3BwCmluZGV4IGEyOWVlMmQ4Y2Y4NWFjYjUxZDY2YmViZTZkMjUzMzMyMzkzMmE2
OTEuLjQ5MmI1OTM1NDBhNDMwYWRhZjIyMTVhNzMwYmU2ZGEzZmZiNjRlOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgU3RyaW5n
IEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtM0RPYmplY3QKIAogdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmluaXRp
YWxpemVBdmFpbGFibGVFeHRlbnNpb25zKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspCiAgICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmlu
ZykgewogICAgICAgICBHTGludCBudW1FeHRlbnNpb25zID0gMDsKICAgICAgICAgOjpnbEdldElu
dGVnZXJ2KEdMX05VTV9FWFRFTlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBhZThiY2E3YWU1MWNlMjg3MTYzNmUxZWExYmNh
NDY5ZTE2YzZmMGI1Li4zMWMyODdjODM3ZjUzNTJkY2EyZmJlNmU4ODJjMzFkMzgxYzliODhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQwNywxMiArNDA3LDE0
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkK
ICNlbmRpZgogfQogCisjaWYgIVBMQVRGT1JNKEdUSykKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAg
ICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4o
dGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0K
KyNlbmRpZgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgdm9pZCogZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcAppbmRleCA1NTI3NjNjYjcwM2ZiODQ5YTZjN2ViZThkNWFjYmRj
MGM5MWQ3YTI2Li5mZWZkMzhmMjVmNjhhZTE0OGYxYzcxYmExOWE2YzExN2EzYjUzZTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMuY3BwCkBAIC0yMzgsMTIgKzIzOCwx
NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgp
CiAgICAgOjpnbENsZWFyRGVwdGhmKGRlcHRoKTsKIH0KIAorI2lmICFQTEFURk9STShHVEspCiBF
eHRlbnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBp
ZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1
ZTxFeHRlbnNpb25zM0RPcGVuR0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICBy
ZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KKyNlbmRpZgogCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295484</attachid>
            <date>2016-11-28 03:15:31 -0800</date>
            <delta_ts>2016-11-28 07:00:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164049-20161128121507.patch</filename>
            <type>text/plain</type>
            <size>18147</size>
            <attacher name="Miguel Gomez">magomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE1YzNiYTRiMzAxMzFk
NmJlZTU0MzI2MzVkMzY1MGY2MTBiMjdjNC4uMjE3MGE5ZWE1ZjNlZmZiZmZjNWI5YzkyMjQwZTg4
NGFmYTk0OGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTExLTI4ICBNaWd1
ZWwgR29tZXogIDxtYWdvbWV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gRHJhbWF0aWMg
aW5jcmVhc2Ugb24gbWVtb3J5IHVzYWdlIHNpbmNlIDIuMTQueAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDQ5CisKKyAgICAgICAgUmV2aWV3ZWQg
Ynkgxb1hbiBEb2JlcsWhZWsuCisKKyAgICAgICAgVXNlIE9wZW5HTCB2ZXJzaW9uIDMuMiBDb3Jl
IGZvciByZW5kZXJpbmcgd2hlbiBhdmFpbGFibGUuCisgICAgICAgIFVwZGF0ZSBzb21lIG9wZXJh
dGlvbnMgdGhhdCBoYXZlIGNoYW5nZWQgd2hlbiB1c2luZyAzLjIgQ29yZToKKyAgICAgICAgLSBV
c2UgZ2xHZXRTdHJpbmdpIHRvIGdldCB0aGUgZXh0ZW5zaW9ucyBsaXN0LgorICAgICAgICAtIERv
IG5vdCB1c2UgR0xfUE9JTlRfU1BSSVRFLgorICAgICAgICAtIEFsd2F5cyB1c2UgYSBWQU8gd2hl
biByZW5kZXJpbmcuCisgICAgICAgIC0gVXNlIGEgR0xTTCAxLjUwIGNvbXBhdGlibGUgc2hhZGVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HTENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0Ojp2ZXJz
aW9uKToKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIGdldCBPcGVuR0wgdmVyc2lvbiB3ZSBhcmUg
dXNpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0Lmg6CisgICAgICAg
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6
CisgICAgICAgIEFkZCBhbiBhdHRyaWJ1dGUgdG8gc3RvcmUgdGhlIFZBTyB1c2VkIGZvciByZW5k
ZXJpbmcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZU9wZW5HTFNoaW1zKToKKyAgICAgICAgQWRkIGdsR2V0
U3RyaW5naSB0byB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvT3BlbkdMU2hpbXMuaDoKKyAgICAgICAgRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBTZXQg
YXBwcm9wcmlhdGUgb3V0cHV0IHRvIHRoZSBzaGFkZXIgY29tcGlsZXIgYW5kIGluaXRhbGl6ZSB0
aGUgVkFPIGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+
R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICBEZWxldGUgdGhlIFZBTyBpZiBuZWVkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAg
ICAgIFVzZSBnbEdldEV4dGVuc2lvbnNpIGZvciBPcGVuR0wgdmVyc2lvbnMgPj0gMy4yLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6aGFzR0xYQVJCQ3JlYXRlQ29udGV4dEV4dGVuc2lvbik6CisgICAgICAgIENoZWNr
IHdoZXRoZXIgdGhlIEdMWF9BUkJfY3JlYXRlX2NvbnRleHQgZXh0ZW5zaW9uIGlzIGF2YWlsYWJs
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlV2luZG93Q29udGV4dCk6
CisgICAgICAgIFVzZSBnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQigpIGlmIHBvc3NpYmxlIHRv
IHJlcXVlc3QgYW4gT3BlbkdMIDMuMiBjb250ZXh0LgorICAgICAgICAoV2ViQ29yZTo6R0xDb250
ZXh0R0xYOjpjcmVhdGVQYnVmZmVyQ29udGV4dCk6CisgICAgICAgIERpdHRvLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZh
aWxhYmxlRXh0ZW5zaW9ucyk6CisgICAgICAgIEVuYWJsZSBnbEdldFN0cmluZ2kgZm9yIEdUSy4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0wuY3BwOgorICAgICAgICBEbyBub3QgdXNlIGRlZmF1bHQgZ2V0RXh0ZW5zaW9ucygpIG1ldGhv
ZCBmb3IgR1RLLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgRGl0dG8uCisKIDIwMTYtMTEtMjcgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIERPTVJlcXVl
c3RTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5j
cHAKaW5kZXggYzE5OTc4MTMxNThiMzE1MjRjNDUxNGI5MWVhYjM1YzcxNTg2NjcyNi4uNTI1OTVi
OWJjOTA3MzkyNTQwNzVkMDBiNDU0NDMyMGUzNjIyZjM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xNjAsNiArMTYwLDE4IEBAIGJv
b2wgR0xDb250ZXh0Ojppc0V4dGVuc2lvblN1cHBvcnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25M
aXN0LCBjb25zdCBjaGFyKiBleHRlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit1bnNpZ25lZCBH
TENvbnRleHQ6OnZlcnNpb24oKQoreworICAgIGlmICghbV92ZXJzaW9uKSB7CisgICAgICAgIEdD
M0RpbnQgbWFqb3IgPSAwOworICAgICAgICBHQzNEaW50IG1pbm9yID0gMDsKKyAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX01BSk9SX1ZFUlNJT04sICZtYWpvcik7CisgICAgICAgIDo6Z2xHZXRJ
bnRlZ2VydihHTF9NSU5PUl9WRVJTSU9OLCAmbWlub3IpOworICAgICAgICBtX3ZlcnNpb24gPSBt
YWpvciAqIDEwMCArIG1pbm9yICogMTA7CisgICAgfQorICAgIHJldHVybiBtX3ZlcnNpb247Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCmluZGV4IDU3NmNjYWRhZTkzZDkwYzVkMzVhZTY5
ZGY0ZTQwNjEzZTljNjNjOTEuLjJjMGVhMjdlMTkzNWUzMjA4NGVjZDU2MjgzZWVhMzlkMTkwYjRk
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5oCkBA
IC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc0V4dGVuc2lvblN1cHBv
cnRlZChjb25zdCBjaGFyKiBleHRlbnNpb25MaXN0LCBjb25zdCBjaGFyKiBleHRlbnNpb24pOwog
CiAgICAgUGxhdGZvcm1EaXNwbGF5JiBkaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5
OyB9CisgICAgdW5zaWduZWQgdmVyc2lvbigpOwogCiAgICAgdmlydHVhbCB+R0xDb250ZXh0KCk7
CiAgICAgdmlydHVhbCBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtNzcsNiArNzgsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgR0xDb250ZXh0KFBsYXRmb3JtRGlzcGxheSYpOwogCiAgICAgUGxh
dGZvcm1EaXNwbGF5JiBtX2Rpc3BsYXk7CisgICAgdW5zaWduZWQgbV92ZXJzaW9uIHsgMCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggODNhMTFlODc4MWYzMTYy
MDI1NDgxYTA0MTkxZDQ4YjI0ZWQ1OTM5MC4uY2IyZWEwY2M3NmUyY2Q2NzAzYjZiZGY3MGNiYWE3
ZjI4MDBhYzE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xNDM2LDYgKzE0MzYsMTEgQEAgcHJpdmF0ZToKICAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBtX3dlYmdsQ29udGV4dDsKIAogICAgIGJvb2wg
bV9pc0ZvcldlYkdMMiB7IGZhbHNlIH07CisKKyNpZiBVU0UoQ0FJUk8pCisgICAgUGxhdGZvcm0z
RE9iamVjdCBtX3ZhbyB7IDAgfTsKKyNlbmRpZgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xT
aGltcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5j
cHAKaW5kZXggNTM2ZWIxYjlhODZlM2YzYWU0ZTdhMjdlNmM1YjFiY2M1YjBmMDE0OS4uZDNjZmQy
N2Q1NzFlMzdlNjg3OTk2NDcyNzAyOTQ0OTFjZmQ3NTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3BlbkdMU2hpbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmNwcApAQCAtMTYyLDYgKzE2Miw5IEBA
IGJvb2wgaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVf
RU5UUlkoZ2xHZXRTaGFkZXJJbmZvTG9nLCBzdWNjZXNzKTsKICAgICBBU1NJR05fRlVOQ1RJT05f
VEFCTEVfRU5UUlkoZ2xHZXRTaGFkZXJpdiwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9O
X1RBQkxFX0VOVFJZKGdsR2V0U2hhZGVyU291cmNlLCBzdWNjZXNzKTsKKyAgICAvLyBnbEdldFN0
cmluZ2kgaXMgb25seSBhdmFpbGFibGUgb24gT3BlbkdMIG9yIEdMRVMgdmVyc2lvbnMgPj0gMy4w
LgorICAgIC8vIEFkZCBpdCB3aXRoIF9FWFQgc28gaXQgZG9lc24ndCBjYXVzZSBhbiBpbml0aWFs
aXphdGlvbiBmYWlsdXJlIG9uIGxvd2VyIHZlcnNpb25zLgorICAgIEFTU0lHTl9GVU5DVElPTl9U
QUJMRV9FTlRSWV9FWFQoZ2xHZXRTdHJpbmdpKTsKICAgICBBU1NJR05fRlVOQ1RJT05fVEFCTEVf
RU5UUlkoZ2xHZXRVbmlmb3JtZnYsIHN1Y2Nlc3MpOwogICAgIEFTU0lHTl9GVU5DVElPTl9UQUJM
RV9FTlRSWShnbEdldFVuaWZvcm1pdiwgc3VjY2Vzcyk7CiAgICAgQVNTSUdOX0ZVTkNUSU9OX1RB
QkxFX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uLCBzdWNjZXNzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL09wZW5HTFNoaW1zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9PcGVuR0xTaGltcy5oCmluZGV4IDkwZDI4YmNmYzI1MzBi
NzA2MTBjNzQyNDI0YTMyZWMzYzliNWZlZGMuLmEwYjhlMmFlNWI4ZjVhMTE2OWE2YzE2NTRiYzYy
Mzg1MWFkMTMzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L09wZW5HTFNoaW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvT3Bl
bkdMU2hpbXMuaApAQCAtOTIsNiArOTIsNyBAQCB0eXBlZGVmIHZvaWQgKEdMQVBJRU5UUlkgKmds
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZUeXBlKSAoR0xlbnVtLCBHTGVudW0sIEdMaQogdHlw
ZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdldFNoYWRlckluZm9Mb2dUeXBlKSAoR0x1aW50LCBH
THNpemVpLCBHTHNpemVpKiwgY2hhciopOwogdHlwZWRlZiB2b2lkIChHTEFQSUVOVFJZICpnbEdl
dFNoYWRlcml2VHlwZSkgKEdMdWludCwgR0xlbnVtLCBHTGludCopOwogdHlwZWRlZiB2b2lkIChH
TEFQSUVOVFJZICpnbEdldFNoYWRlclNvdXJjZVR5cGUpIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6
ZWkqLCBjaGFyKik7Cit0eXBlZGVmIGNvbnN0IEdMdWJ5dGUqIChHTEFQSUVOVFJZICpnbEdldFN0
cmluZ2lUeXBlKSAoR0xlbnVtLCBHTHVpbnQpOwogdHlwZWRlZiBHTGludCAoR0xBUElFTlRSWSAq
Z2xHZXRVbmlmb3JtTG9jYXRpb25UeXBlKSAoR0x1aW50LCBjb25zdCBjaGFyKik7CiB0eXBlZGVm
IHZvaWQgKEdMQVBJRU5UUlkgKmdsR2V0VW5pZm9ybWZ2VHlwZSkgKEdMdWludCwgR0xpbnQsIEdM
ZmxvYXQqKTsKIHR5cGVkZWYgdm9pZCAoR0xBUElFTlRSWSAqZ2xHZXRVbmlmb3JtaXZUeXBlKSAo
R0x1aW50LCBHTGludCwgR0xpbnQqKTsKQEAgLTE5OCw2ICsxOTksNyBAQCB0eXBlZGVmIHN0cnVj
dCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAgICAgRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRT
aGFkZXJJbmZvTG9nKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFNoYWRlcml2KTsK
ICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShnbEdldFNoYWRlclNvdXJjZSk7CisgICAgRlVOQ1RJ
T05fVEFCTEVfRU5UUlkoZ2xHZXRTdHJpbmdpKTsKICAgICBGVU5DVElPTl9UQUJMRV9FTlRSWShn
bEdldFVuaWZvcm1mdik7CiAgICAgRlVOQ1RJT05fVEFCTEVfRU5UUlkoZ2xHZXRVbmlmb3JtaXYp
OwogICAgIEZVTkNUSU9OX1RBQkxFX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uKTsKQEAgLTMy
NSw2ICszMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBfT3BlbkdMRnVuY3Rpb25UYWJsZSB7CiAjZGVm
aW5lIGdsR2V0U2hhZGVySW5mb0xvZyAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5D
VElPTihnbEdldFNoYWRlckluZm9Mb2cpCiAjZGVmaW5lIGdsR2V0U2hhZGVyaXYgICAgICAgICAg
ICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFNoYWRlcml2KQogI2RlZmlu
ZSBnbEdldFNoYWRlclNvdXJjZSAgICAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJ
T04oZ2xHZXRTaGFkZXJTb3VyY2UpCisjZGVmaW5lIGdsR2V0U3RyaW5naSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihnbEdldFN0cmluZ2kpCiAjZGVmaW5lIGds
R2V0VW5pZm9ybWZ2ICAgICAgICAgICAgICAgICAgICAgICAgIExPT0tVUF9HTF9GVU5DVElPTihn
bEdldFVuaWZvcm1mdikKICNkZWZpbmUgZ2xHZXRVbmlmb3JtaXYgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9PS1VQX0dMX0ZVTkNUSU9OKGdsR2V0VW5pZm9ybWl2KQogI2RlZmluZSBnbEdldFVu
aWZvcm1Mb2NhdGlvbiAgICAgICAgICAgICAgICAgICBMT09LVVBfR0xfRlVOQ1RJT04oZ2xHZXRV
bmlmb3JtTG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGMy
ZTY3ZDAwNDMxNzY0ZWVmYjRkYmFjY2NhNzA1NDA0NWEwNzk0NjEuLjJlNDRiODllZDcxNjhhNmI3
NDFhY2ExMWU3MDdkMjRhMWY1Mjc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCkBAIC03OSw3ICs3OSw2IEBAIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3ND
b250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlCiBHcmFwaGljc0Nv
bnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMg
YXR0cmlidXRlcywgSG9zdFdpbmRvdyosIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBy
ZW5kZXJTdHlsZSkKICAgICA6IG1fY3VycmVudFdpZHRoKDApCiAgICAgLCBtX2N1cnJlbnRIZWln
aHQoMCkKLSAgICAsIG1fY29tcGlsZXIoaXNHTEVTMkNvbXBsaWFudCgpID8gU0hfRVNTTF9PVVRQ
VVQgOiBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQogICAgICwgbV9hdHRycyhhdHRyaWJ1
dGVzKQogICAgICwgbV90ZXh0dXJlKDApCiAgICAgLCBtX2NvbXBvc2l0b3JUZXh0dXJlKDApCkBA
IC0xNDUsNiArMTQ0LDM0IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChH
cmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzLCBICiAgICAgICAgIH0KICAg
ICB9CiAKKyNpZiAhVVNFKE9QRU5HTF9FU18yKQorICAgIDo6Z2xFbmFibGUoR0xfVkVSVEVYX1BS
T0dSQU1fUE9JTlRfU0laRSk7CisKKyAgICBpZiAoR0xDb250ZXh0OjpjdXJyZW50KCktPnZlcnNp
b24oKSA+PSAzMjApIHsKKyAgICAgICAgLy8gRnJvbSB2ZXJzaW9uIDMuMiBvbiB3ZSB1c2UgdGhl
IE9wZW5HTCBDb3JlIHByb2ZpbGUsIHNvIHJlcXVlc3QgdGhhdCBvdXB1dCB0byB0aGUgc2hhZGVy
IGNvbXBpbGVyLgorICAgICAgICAvLyBPcGVuR0wgdmVyc2lvbiAzLjIgdXNlcyBHTFNMIHZlcnNp
b24gMS41MC4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdlKFNIX0dMU0xf
MTUwX0NPUkVfT1VUUFVUKTsKKworICAgICAgICAvLyBGcm9tIHZlcnNpb24gMy4yIG9uIHdlIHVz
ZSB0aGUgT3BlbkdMIENvcmUgcHJvZmlsZSwgYW5kIHdlIG5lZWQgYSBWQU8gZm9yIHJlbmRlcmlu
Zy4KKyAgICAgICAgLy8gQSBWQU8gY291bGQgYmUgY3JlYXRlZCBhbmQgYm91bmQgYnkgZWFjaCBj
b21wb25lbnQgdXNpbmcgR0wgcmVuZGVyaW5nIChUZXh0dXJlTWFwcGVyLCBXZWJHTCwgZXRjKS4g
VGhpcyBpcworICAgICAgICAvLyBhIHNpbXBsZXIgc29sdXRpb246IHRoZSBmaXJzdCBHcmFwaGlj
c0NvbnRleHQzRCBjcmVhdGVkIG9uIGEgR0xDb250ZXh0IHdpbGwgY3JlYXRlIGFuZCBiaW5kIGEg
VkFPIGZvciB0aGF0IGNvbnRleHQuCisgICAgICAgIEdDM0RpbnQgY3VycmVudFZBTyA9IDA7Cisg
ICAgICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVJSQVlfQklORElO
RywgJmN1cnJlbnRWQU8pOworICAgICAgICBpZiAoIWN1cnJlbnRWQU8pIHsKKyAgICAgICAgICAg
IG1fdmFvID0gY3JlYXRlVmVydGV4QXJyYXkoKTsKKyAgICAgICAgICAgIGJpbmRWZXJ0ZXhBcnJh
eShtX3Zhbyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGb3IgbG93ZXIg
dmVyc2lvbnMgcmVxdWVzdCB0aGUgY29tcGF0aWJpbGl0eSBvdXRwdXQgdG8gdGhlIHNoYWRlciBj
b21waWxlci4KKyAgICAgICAgbV9jb21waWxlciA9IEFOR0xFV2ViS2l0QnJpZGdlKFNIX0dMU0xf
Q09NUEFUSUJJTElUWV9PVVRQVVQpOworCisgICAgICAgIC8vIEdMX1BPSU5UX1NQUklURSBpcyBu
ZWVkZWQgaW4gbG93ZXIgdmVyc2lvbnMuCisgICAgICAgIDo6Z2xFbmFibGUoR0xfUE9JTlRfU1BS
SVRFKTsKKyAgICB9CisjZWxzZQorICAgIG1fY29tcGlsZXIgPSBBTkdMRVdlYktpdEJyaWRnZShT
SF9FU1NMX09VVFBVVCk7CisjZW5kaWYKKwogICAgIC8vIEFOR0xFIGluaXRpYWxpemF0aW9uLgog
ICAgIFNoQnVpbHRJblJlc291cmNlcyBBTkdMRVJlc291cmNlczsKICAgICBTaEluaXRCdWlsdElu
UmVzb3VyY2VzKCZBTkdMRVJlc291cmNlcyk7CkBAIC0xNjYsMTEgKzE5Myw2IEBAIEdyYXBoaWNz
Q29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRyaWJ1dGVzLCBICiAKICAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291
cmNlcyk7CiAKLSNpZiAhVVNFKE9QRU5HTF9FU18yKQotICAgIDo6Z2xFbmFibGUoR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSk7Ci0gICAgOjpnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOwot
I2VuZGlmCi0KICAgICA6OmdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKIH0KIApAQCAtMTk4LDYg
KzIyMCw5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICAgICA6OmdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1faW50ZXJtZWRpYXRlVGV4dHVyZSk7CiAjZW5kaWYKKworICAgIGlmIChtX3ZhbykKKyAg
ICAgICAgZGVsZXRlVmVydGV4QXJyYXkobV92YW8pOwogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6
SW1hZ2VFeHRyYWN0b3I6On5JbWFnZUV4dHJhY3RvcigpCkBAIC0zNDQsNiArMzY5LDIyIEBAIFBs
YXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQorRXh0ZW5z
aW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCit7CisgICAgaWYgKCFt
X2V4dGVuc2lvbnMpIHsKKyNpZiBVU0UoT1BFTkdMX0VTXzIpCisgICAgICAgIC8vIGdsR2V0U3Ry
aW5naSBpcyBub3QgYXZhaWxhYmxlIG9uIEdMRVMyLgorICAgICAgICBtX2V4dGVuc2lvbnMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTEVTPih0aGlzLCAgZmFsc2UpOworI2Vs
c2UKKyAgICAgICAgLy8gRnJvbSBPcGVuR0wgMy4yIG9uIHdlIHVzZSB0aGUgQ29yZSBwcm9maWxl
LCBhbmQgdGhlcmUgd2UgbXVzdCB1c2UgZ2xHZXRTdHJpbmdpLgorICAgICAgICBtX2V4dGVuc2lv
bnMgPSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgR0xDb250ZXh0
OjpjdXJyZW50KCktPnZlcnNpb24oKSA+PSAzMjApOworI2VuZGlmCisgICAgfQorICAgIHJldHVy
biAqbV9leHRlbnNpb25zOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShHUkFQSElDU19DT05URVhUXzNEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAppbmRleCA5YzJl
ZDNkZjg5MGEzOWUxY2M1NmM2MGQ5M2ViZDhjNmUzNWI3MmZjLi4wZDNhOTcwMjdlYjk1ZTc0NDk2
MTc5MDg4MTAyZjU4ZWQzNDNmMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcApAQCAtMzUsOCArMzUsMTIgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2lmICFkZWZpbmVkKFBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0Mp
CiB0eXBlZGVmIGludCAoKlBGTkdMWFNXQVBJTlRFUlZBTFNHSVBST0MpIChpbnQpOwogI2VuZGlm
CisjaWYgIWRlZmluZWQoUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DKQordHlwZWRl
ZiBHTFhDb250ZXh0ICgqUEZOR0xYQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DKSAoRGlzcGxh
eSAqZHB5LCBHTFhGQkNvbmZpZyBjb25maWcsIEdMWENvbnRleHQgc2hhcmVfY29udGV4dCwgQm9v
bCBkaXJlY3QsIGNvbnN0IGludCAqYXR0cmliX2xpc3QpOworI2VuZGlmCiAKIHN0YXRpYyBQRk5H
TFhTV0FQSU5URVJWQUxTR0lQUk9DIGdsWFN3YXBJbnRlcnZhbFNHSTsKK3N0YXRpYyBQRk5HTFhD
UkVBVEVDT05URVhUQVRUUklCU0FSQlBST0MgZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkI7CiAK
IHN0YXRpYyBib29sIGhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9uKERpc3BsYXkqIGRpc3BsYXkp
CiB7CkBAIC01Miw2ICs1NiwyMCBAQCBzdGF0aWMgYm9vbCBoYXNTR0lTd2FwQ29udHJvbEV4dGVu
c2lvbihEaXNwbGF5KiBkaXNwbGF5KQogICAgIHJldHVybiAhIWdsWFN3YXBJbnRlcnZhbFNHSTsK
IH0KIAorc3RhdGljIGJvb2wgaGFzR0xYQVJCQ3JlYXRlQ29udGV4dEV4dGVuc2lvbihEaXNwbGF5
KiBkaXNwbGF5KQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7CisgICAg
aWYgKGluaXRpYWxpemVkKQorICAgICAgICByZXR1cm4gISFnbFhDcmVhdGVDb250ZXh0QXR0cmli
c0FSQjsKKworICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKyAgICBpZiAoIUdMQ29udGV4dDo6aXNF
eHRlbnNpb25TdXBwb3J0ZWQoZ2xYUXVlcnlFeHRlbnNpb25zU3RyaW5nKGRpc3BsYXksIDApLCAi
R0xYX0FSQl9jcmVhdGVfY29udGV4dCIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBn
bFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQiA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xYQ1JFQVRF
Q09OVEVYVEFUVFJJQlNBUkJQUk9DPihnbFhHZXRQcm9jQWRkcmVzcyhyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPigiZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIiKSkpOwor
ICAgIHJldHVybiAhIWdsWENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgUGxhdGZvcm1EaXNwbGF5JiBwbGF0Zm9ybURpc3BsYXks
IEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCiB7CiAgICAgRGlzcGxheSogZGlzcGxheSA9IGRv
d25jYXN0PFBsYXRmb3JtRGlzcGxheVgxMT4ocGxhdGZvcm1EaXNwbGF5KS5uYXRpdmUoKTsKQEAg
LTYyLDEwICs4MCwzOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRH
TFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoR0xOYXRpdmVXaW5kb3dUeQogICAgIFhWaXN1YWxJbmZv
IHZpc3VhbEluZm87CiAgICAgdmlzdWFsSW5mby52aXN1YWxpZCA9IFhWaXN1YWxJREZyb21WaXN1
YWwoYXR0cmlidXRlcy52aXN1YWwpOwogCi0gICAgaW50IG51bVJldHVybmVkID0gMDsKLSAgICBY
VW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZvTGlzdChYR2V0VmlzdWFsSW5mbyhkaXNw
bGF5LCBWaXN1YWxJRE1hc2ssICZ2aXN1YWxJbmZvLCAmbnVtUmV0dXJuZWQpKTsKKyAgICBpbnQg
bnVtQ29uZmlncyA9IDA7CisgICAgR0xYRkJDb25maWcgY29uZmlnID0gbnVsbHB0cjsKKyAgICBY
VW5pcXVlUHRyPEdMWEZCQ29uZmlnPiBjb25maWdzKGdsWEdldEZCQ29uZmlncyhkaXNwbGF5LCBE
ZWZhdWx0U2NyZWVuKGRpc3BsYXkpLCAmbnVtQ29uZmlncykpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtQ29uZmlnczsgaSsrKSB7CisgICAgICAgIFhVbmlxdWVQdHI8WFZpc3VhbEluZm8+
IGdseFZpc3VhbEluZm8oZ2xYR2V0VmlzdWFsRnJvbUZCQ29uZmlnKGRpc3BsYXksIGNvbmZpZ3Mu
Z2V0KClbaV0pKTsKKyAgICAgICAgaWYgKCFnbHhWaXN1YWxJbmZvKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgaWYgKGdseFZpc3VhbEluZm8uZ2V0KCktPnZpc3VhbGlkID09IHZp
c3VhbEluZm8udmlzdWFsaWQpIHsKKyAgICAgICAgICAgIGNvbmZpZyA9IGNvbmZpZ3MuZ2V0KClb
aV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQoY29u
ZmlnKTsKKworICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQ7CisgICAgaWYgKGhhc0dMWEFS
QkNyZWF0ZUNvbnRleHRFeHRlbnNpb24oZGlzcGxheSkpIHsKKyAgICAgICAgLy8gUmVxdWVzdCBP
cGVuR0wgdmVyc2lvbiAzLjIgYW5kIGNvcmUgcHJvZmlsZSwgd2hpY2ggZ3VhcmFudGVlcyB0aGF0
IHRoZSBpOTY1IGRyaXZlciBkb2Vzbid0IHVzZSB0aGUgc29mdHdhcmUgcmVuZGVyZXIuCisgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29udGV4dEF0dHJpYnV0ZXNbXSA9IHsKKyAgICAgICAgICAg
IEdMWF9DT05URVhUX01BSk9SX1ZFUlNJT05fQVJCLCAzLAorICAgICAgICAgICAgR0xYX0NPTlRF
WFRfTUlOT1JfVkVSU0lPTl9BUkIsIDIsCisgICAgICAgICAgICAwCisgICAgICAgIH07CisgICAg
ICAgIGNvbnRleHQucmVzZXQoZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIoZGlzcGxheSwgY29u
ZmlnLCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSwgY29udGV4dEF0dHJpYnV0ZXMpKTsKKyAgICB9
CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgLy8gRmFsbGJhY2sgdG8gbGVnYWN5IE9w
ZW5HTCB2ZXJzaW9uLgorICAgICAgICBYVW5pcXVlUHRyPFhWaXN1YWxJbmZvPiB2aXN1YWxJbmZv
TGlzdChnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcoZGlzcGxheSwgY29uZmlnKSk7CisgICAgICAg
IGNvbnRleHQucmVzZXQoZ2xYQ3JlYXRlQ29udGV4dChkaXNwbGF5LCB2aXN1YWxJbmZvTGlzdC5n
ZXQoKSwgc2hhcmluZ0NvbnRleHQsIFRydWUpKTsKKyAgICB9CiAKLSAgICBYVW5pcXVlR0xYQ29u
dGV4dCBjb250ZXh0KGdsWENyZWF0ZUNvbnRleHQoZGlzcGxheSwgdmlzdWFsSW5mb0xpc3QuZ2V0
KCksIHNoYXJpbmdDb250ZXh0LCBUcnVlKSk7CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtOTcsNyArMTQzLDIzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQoUGxhdGZvcm1EaXNw
bGF5CiAgICAgaWYgKCFwYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFhV
bmlxdWVHTFhDb250ZXh0IGNvbnRleHQoZ2xYQ3JlYXRlTmV3Q29udGV4dChkaXNwbGF5LCBjb25m
aWdzLmdldCgpWzBdLCBHTFhfUkdCQV9UWVBFLCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSkpOwor
ICAgIFhVbmlxdWVHTFhDb250ZXh0IGNvbnRleHQ7CisKKyAgICBpZiAoaGFzR0xYQVJCQ3JlYXRl
Q29udGV4dEV4dGVuc2lvbihkaXNwbGF5KSkgeworICAgICAgICAvLyBSZXF1ZXN0IE9wZW5HTCB2
ZXJzaW9uIDMuMiBhbmQgY29yZSBwcm9maWxlLCB3aGljaCBndWFyYW50ZWVzIHRoYXQgdGhlIGk5
NjUgZHJpdmVyIGRvZXNuJ3QgdXNlIHRoZSBzb2Z0d2FyZSByZW5kZXJlci4KKyAgICAgICAgc3Rh
dGljIGNvbnN0IGludCBjb250ZXh0QXR0cmlidXRlc1tdID0geworICAgICAgICAgICAgR0xYX0NP
TlRFWFRfTUFKT1JfVkVSU0lPTl9BUkIsIDMsCisgICAgICAgICAgICBHTFhfQ09OVEVYVF9NSU5P
Ul9WRVJTSU9OX0FSQiwgMiwKKyAgICAgICAgICAgIDAKKyAgICAgICAgfTsKKyAgICAgICAgY29u
dGV4dC5yZXNldChnbFhDcmVhdGVDb250ZXh0QXR0cmlic0FSQihkaXNwbGF5LCBjb25maWdzLmdl
dCgpWzBdLCBzaGFyaW5nQ29udGV4dCwgR0xfVFJVRSwgY29udGV4dEF0dHJpYnV0ZXMpKTsKKyAg
ICB9CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgLy8gRmFsbGJhY2sgdG8gbGVnYWN5
IE9wZW5HTCB2ZXJzaW9uLgorICAgICAgICBjb250ZXh0LnJlc2V0KGdsWENyZWF0ZU5ld0NvbnRl
eHQoZGlzcGxheSwgY29uZmlncy5nZXQoKVswXSwgR0xYX1JHQkFfVFlQRSwgc2hhcmluZ0NvbnRl
eHQsIEdMX1RSVUUpKTsKKyAgICB9CisKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCmluZGV4
IGEyOWVlMmQ4Y2Y4NWFjYjUxZDY2YmViZTZkMjUzMzMyMzkzMmE2OTEuLjQ5MmI1OTM1NDBhNDMw
YWRhZjIyMTVhNzMwYmU2ZGEzZmZiNjRlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xDb21tb24uY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgU3RyaW5nIEV4dGVuc2lvbnMzRE9wZW5H
TENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtM0RPYmplY3QK
IAogdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFibGVFeHRl
bnNpb25zKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShHVEspCiAgICAgaWYgKG1fdXNlSW5kZXhlZEdldFN0cmluZykgewogICAgICAgICBHTGlu
dCBudW1FeHRlbnNpb25zID0gMDsKICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX05VTV9FWFRF
TlNJT05TLCAmbnVtRXh0ZW5zaW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
LmNwcAppbmRleCBhZThiY2E3YWU1MWNlMjg3MTYzNmUxZWExYmNhNDY5ZTE2YzZmMGI1Li4zMWMy
ODdjODM3ZjUzNTJkY2EyZmJlNmU4ODJjMzFkMzgxYzliODhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTQwNywxMiArNDA3LDE0IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNsYW1wZiBkZXB0aCkKICNlbmRpZgogfQogCisjaWYg
IVBMQVRGT1JNKEdUSykKIEV4dGVuc2lvbnMzRCYgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVu
c2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcywgaXNHTEVTMkNvbXBs
aWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KKyNlbmRpZgogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgdm9pZCogZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNw
cAppbmRleCA1NTI3NjNjYjcwM2ZiODQ5YTZjN2ViZThkNWFjYmRjMGM5MWQ3YTI2Li5mZWZkMzhm
MjVmNjhhZTE0OGYxYzcxYmExOWE2YzExN2EzYjUzZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMRVMuY3BwCkBAIC0yMzgsMTIgKzIzOCwxNCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiAgICAgOjpnbENsZWFyRGVw
dGhmKGRlcHRoKTsKIH0KIAorI2lmICFQTEFURk9STShHVEspCiBFeHRlbnNpb25zM0QmIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykK
ICAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVu
R0xFUz4odGhpcywgaXNHTEVTMkNvbXBsaWFudCgpKTsKICAgICByZXR1cm4gKm1fZXh0ZW5zaW9u
czsKIH0KKyNlbmRpZgogCiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>