<?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>170095</bug_id>
          
          <creation_ts>2017-03-25 00:25:04 -0700</creation_ts>
          <short_desc>[WTF] Introduce WTF::RandomDevice which keeps /dev/urandom opened</short_desc>
          <delta_ts>2017-04-04 00:04:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=169623</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=170071</see_also>
          <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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291169</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 00:25:04 -0700</bug_when>
    <thetext>Currently, everytime cryptographicallyRandomValuesFromOS is called, /dev/urandom is opened and closed.
In addition to unnecessary system calls, especially open is not so scalable due to its POSIX requirement returning the lowest file descriptor number[1].

Instead, we introduce a new class RandomDevice. It keeps `/dev/urandom` file opened in its member.
In the subsequent patch, it may be useful that changing cryptographicallyRandomValuesFromOS to use static RandomDevice for the process.

[1]: http://dl.acm.org/citation.cfm?id=2522712</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291170</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 00:39:16 -0700</bug_when>
    <thetext>It&apos;s similar to std::random_device. But we can select the implementation, avoid arc4random.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291172</commentid>
    <comment_count>2</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-25 01:08:02 -0700</bug_when>
    <thetext>Agreed that opening once is preferable. On MacOS doesn&apos;t libc++&apos;s random_device end up using /dev/urandom? That seems to be the case from the code:
  https://github.com/llvm-mirror/libcxx/blob/master/src/random.cpp
A call_once would take care of this, no?

Why is avoiding arc4random preferable?

If we&apos;re doing our own random device, shouldn&apos;t we also consider SYS_getrandom if available on Linux, or getentropy on BSD?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291176</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 01:47:56 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #2)
&gt; Agreed that opening once is preferable. On MacOS doesn&apos;t libc++&apos;s
&gt; random_device end up using /dev/urandom? That seems to be the case from the
&gt; code:
&gt;   https://github.com/llvm-mirror/libcxx/blob/master/src/random.cpp

In macOS libc++, I think we end up using arc4random. (https://github.com/llvm-mirror/libcxx/blob/master/src/random.cpp#L53).
In WTF, currently, we use CCRandomCopyBytes instead of urandom in WTF::cryptographicallyRandomValuesFromOS.
Start using std::random_device inside cryptographicallyRandomValuesFromOS may have a chance to use arc4random things. We explicitly would like to avoid this case. So, we should have our own RandomDevice, which implementaiton would be carried from the existing cryptographicallyRandomValuesFromOS.

&gt; A call_once would take care of this, no?

I think RandomDevice should open the urandom file.
And on the top of it, we can use call_once to guarantee that only one RandomDevice is created.

&gt; Why is avoiding arc4random preferable?

Let&apos;s see https://trac.webkit.org/r214329.
While that patch is reverted due to significant Speedometer regression, we would like to keep cryptographicallyRandomValuesFromOS non-ARC4.

&gt; If we&apos;re doing our own random device, shouldn&apos;t we also consider
&gt; SYS_getrandom if available on Linux, or getentropy on BSD?

getrandom() sounds nice. And getentropy for BSD sound nice too.
And by introducing our own WTF::RandomDevice, we also keep Windows CSP handle acquired. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291178</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 02:06:07 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; &gt; If we&apos;re doing our own random device, shouldn&apos;t we also consider
&gt; &gt; SYS_getrandom if available on Linux, or getentropy on BSD?
&gt; 
&gt; getrandom() sounds nice. And getentropy for BSD sound nice too.
&gt; And by introducing our own WTF::RandomDevice, we also keep Windows CSP
&gt; handle acquired. :)

But in that case, we should be careful that Linux getrandom is only supported after 3.17 kernel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291185</commentid>
    <comment_count>5</comment_count>
      <attachid>305374</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-25 04:02:04 -0700</bug_when>
    <thetext>Created attachment 305374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291186</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-25 04:04:41 -0700</bug_when>
    <thetext>Attachment 305374 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291247</commentid>
    <comment_count>7</comment_count>
      <attachid>305374</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-25 13:04:34 -0700</bug_when>
    <thetext>Comment on attachment 305374
Patch

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

&gt; Source/WTF/wtf/RandomDevice.cpp:66
&gt; +    m_fd = open(&quot;/dev/urandom&quot;, O_RDONLY, 0);

Technically this can receive EINTR. You should:

    do {
      m_fd = open(&quot;/dev/urandom&quot;, O_RDONLY, 0);
    } while (fd == -1 &amp;&amp; errno == EINTR);

&gt; Source/WTF/wtf/RandomDevice.cpp:85
&gt; +    RELEASE_ASSERT(!CCRandomCopyBytes(kCCRandomDefault, buffer, length));

I was wondering if this was thread-safe. Answer is yes according to the header:
  https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/include/CommonRandomSPI.h
Implementation:
  https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/lib/CommonRandom.c

&gt; Source/WTF/wtf/RandomDevice.h:2
&gt; + * Copyright (C) Google, Inc.

Date?

&gt; Source/WTF/wtf/RandomDevice.h:46
&gt; +    // partially filled. Rather than calling this function directly, consider

Is the &quot;partially filled&quot; thing true? I though the code looped until it fills fully? How would one figure this out and remedy it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291540</commentid>
    <comment_count>8</comment_count>
      <attachid>305374</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-03-27 11:42:32 -0700</bug_when>
    <thetext>Comment on attachment 305374
Patch

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

&gt;&gt; Source/WTF/wtf/RandomDevice.h:46
&gt;&gt; +    // partially filled. Rather than calling this function directly, consider
&gt; 
&gt; Is the &quot;partially filled&quot; thing true? I though the code looped until it fills fully? How would one figure this out and remedy it?

Dived into the core crypto codes. It seems doing the same thing as Linux/Windows code paths. It loops until it fills fully. Otherwise, fails with error. Maybe we should change the description to:
The function loops to get the buffer filled. If any error occurs, it will crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291601</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-27 13:49:45 -0700</bug_when>
    <thetext>The other thing we need in RandomDevice is a randomness cache (that somehow needs to be fork-safe so different web processes don&apos;t wind up with the same random numbers), see bug #169623.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291605</commentid>
    <comment_count>10</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-27 13:56:38 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; The other thing we need in RandomDevice is a randomness cache (that somehow
&gt; needs to be fork-safe so different web processes don&apos;t wind up with the same
&gt; random numbers), see bug #169623.

That bug isn&apos;t accessible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292003</commentid>
    <comment_count>11</comment_count>
      <attachid>305374</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 12:28:11 -0700</bug_when>
    <thetext>Comment on attachment 305374
Patch

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

Thanks!

&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:66
&gt;&gt; +    m_fd = open(&quot;/dev/urandom&quot;, O_RDONLY, 0);
&gt; 
&gt; Technically this can receive EINTR. You should:
&gt; 
&gt;     do {
&gt;       m_fd = open(&quot;/dev/urandom&quot;, O_RDONLY, 0);
&gt;     } while (fd == -1 &amp;&amp; errno == EINTR);

Right! Fixed.

&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:85
&gt;&gt; +    RELEASE_ASSERT(!CCRandomCopyBytes(kCCRandomDefault, buffer, length));
&gt; 
&gt; I was wondering if this was thread-safe. Answer is yes according to the header:
&gt;   https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/include/CommonRandomSPI.h
&gt; Implementation:
&gt;   https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60049/lib/CommonRandom.c

Cool, great.

&gt;&gt; Source/WTF/wtf/RandomDevice.h:2
&gt;&gt; + * Copyright (C) Google, Inc.
&gt; 
&gt; Date?

Fixed.

&gt;&gt;&gt; Source/WTF/wtf/RandomDevice.h:46
&gt;&gt;&gt; +    // partially filled. Rather than calling this function directly, consider
&gt;&gt; 
&gt;&gt; Is the &quot;partially filled&quot; thing true? I though the code looped until it fills fully? How would one figure this out and remedy it?
&gt; 
&gt; Dived into the core crypto codes. It seems doing the same thing as Linux/Windows code paths. It loops until it fills fully. Otherwise, fails with error. Maybe we should change the description to:
&gt; The function loops to get the buffer filled. If any error occurs, it will crash.

OK, I&apos;ll fix this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292005</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 12:28:23 -0700</bug_when>
    <thetext>*** Bug 170096 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292012</commentid>
    <comment_count>13</comment_count>
      <attachid>305622</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 12:51:39 -0700</bug_when>
    <thetext>Created attachment 305622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292014</commentid>
    <comment_count>14</comment_count>
      <attachid>305623</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 12:53:28 -0700</bug_when>
    <thetext>Created attachment 305623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292015</commentid>
    <comment_count>15</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-28 12:54:22 -0700</bug_when>
    <thetext>Attachment 305623 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292016</commentid>
    <comment_count>16</comment_count>
      <attachid>305624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 12:55:11 -0700</bug_when>
    <thetext>Created attachment 305624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292019</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-28 12:57:11 -0700</bug_when>
    <thetext>Attachment 305624 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292028</commentid>
    <comment_count>18</comment_count>
      <attachid>305624</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 13:02:23 -0700</bug_when>
    <thetext>Comment on attachment 305624
Patch

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

&gt; Source/WTF/wtf/RandomDevice.cpp:104
&gt; +        ssize_t currentRead = syscall(SYS_getrandom, buffer, length, 0);

It would be easier to read if Linux were separate from Unix IMO. I kinda almost want each OS to be separate in this file, the interleaving is confusing :)

Is SYS_getrandom always defined for the versions we care about?

Also, don&apos;t you need to advance buffer and subtract from length?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292039</commentid>
    <comment_count>19</comment_count>
      <attachid>305624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 13:11:51 -0700</bug_when>
    <thetext>Comment on attachment 305624
Patch

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

&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:104
&gt;&gt; +        ssize_t currentRead = syscall(SYS_getrandom, buffer, length, 0);
&gt; 
&gt; It would be easier to read if Linux were separate from Unix IMO. I kinda almost want each OS to be separate in this file, the interleaving is confusing :)
&gt; 
&gt; Is SYS_getrandom always defined for the versions we care about?
&gt; 
&gt; Also, don&apos;t you need to advance buffer and subtract from length?

According to the issue https://bugs.webkit.org/show_bug.cgi?id=170096, the Linux versions we care must support getrandom.
Oops, we should do the same thing done in read(). Fixed.
Personally, I like the current one file thing since only this function is significantly different. And difference is small enough I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292046</commentid>
    <comment_count>20</comment_count>
      <attachid>305624</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 13:19:32 -0700</bug_when>
    <thetext>Comment on attachment 305624
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:104
&gt;&gt;&gt; +        ssize_t currentRead = syscall(SYS_getrandom, buffer, length, 0);
&gt;&gt; 
&gt;&gt; It would be easier to read if Linux were separate from Unix IMO. I kinda almost want each OS to be separate in this file, the interleaving is confusing :)
&gt;&gt; 
&gt;&gt; Is SYS_getrandom always defined for the versions we care about?
&gt;&gt; 
&gt;&gt; Also, don&apos;t you need to advance buffer and subtract from length?
&gt; 
&gt; According to the issue https://bugs.webkit.org/show_bug.cgi?id=170096, the Linux versions we care must support getrandom.
&gt; Oops, we should do the same thing done in read(). Fixed.
&gt; Personally, I like the current one file thing since only this function is significantly different. And difference is small enough I think.

Hmm, buildbot is sad. OK, my intension in this patch is avoiding frequent file open/close.
So, let&apos;s just use UNIX implementation for Linux right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292049</commentid>
    <comment_count>21</comment_count>
      <attachid>305633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 13:20:59 -0700</bug_when>
    <thetext>Created attachment 305633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292051</commentid>
    <comment_count>22</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-28 13:22:23 -0700</bug_when>
    <thetext>Attachment 305633 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292099</commentid>
    <comment_count>23</comment_count>
      <attachid>305645</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 14:34:48 -0700</bug_when>
    <thetext>Created attachment 305645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292101</commentid>
    <comment_count>24</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-28 14:36:04 -0700</bug_when>
    <thetext>Attachment 305645 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292268</commentid>
    <comment_count>25</comment_count>
      <attachid>305645</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-03-28 19:46:46 -0700</bug_when>
    <thetext>Comment on attachment 305645
Patch

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

&gt; Source/WTF/wtf/OSRandomSource.cpp:37
&gt; +    static NeverDestroyed&lt;RandomDevice&gt; device;
&gt; +    device.get().cryptographicallyRandomValues(buffer, length);

Do we need a mutex here?

&gt; Source/WTF/wtf/RandomDevice.cpp:65
&gt; +#if !OS(DARWIN) &amp;&amp; !OS(WINDOWS)
&gt; +RandomDevice::RandomDevice()
&gt; +{
&gt; +#if OS(UNIX)

Why two layers of #ifs? Why not either surround the entire constructor with #if OS(UNIX), or simply remove the !OS(DARWIN) &amp;&amp; !OS(WINDOWS) guards?

&gt; Source/WTF/wtf/RandomDevice.cpp:106
&gt; +    // FIXME: We cannot ensure that Cryptographic Service Provider context and CryptGenRandom are safe across threads.
&gt; +    // If it is safe, we can acquire context per RandomDevice.

Do we need a mutex here, too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293592</commentid>
    <comment_count>26</comment_count>
      <attachid>305645</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-03 00:24:31 -0700</bug_when>
    <thetext>Comment on attachment 305645
Patch

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

Thanks. I&apos;ll update the patch.

&gt;&gt; Source/WTF/wtf/OSRandomSource.cpp:37
&gt;&gt; +    device.get().cryptographicallyRandomValues(buffer, length);
&gt; 
&gt; Do we need a mutex here?

We don&apos;t need a mutex. Each cryptographicallyRandomValues function call is thread-safe. And the creation of RandomDevice is guarded by C++11 static semantics. (emitting mutex).

&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:65
&gt;&gt; +#if OS(UNIX)
&gt; 
&gt; Why two layers of #ifs? Why not either surround the entire constructor with #if OS(UNIX), or simply remove the !OS(DARWIN) &amp;&amp; !OS(WINDOWS) guards?

I planned to have OS(WINDOWS) version here which holds CSP. But I cannot ensure this is safe across threads. So we use the original implementation that acquires CSP each time.
So, we can just surround the constructor with (OS(UNIX) &amp;&amp; !(OS(DARWIN))) guard (note that darwin is also unix. so OS(DARWIN) guard is also necessary).

&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:106
&gt;&gt; +    // If it is safe, we can acquire context per RandomDevice.
&gt; 
&gt; Do we need a mutex here, too?

In Windows version, each time we acquire cryptographic service provider. So, this function itself does not share any information.
So, we do not need mutex here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293595</commentid>
    <comment_count>27</comment_count>
      <attachid>305645</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-03 00:36:13 -0700</bug_when>
    <thetext>Comment on attachment 305645
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/RandomDevice.cpp:65
&gt;&gt;&gt; +#if OS(UNIX)
&gt;&gt; 
&gt;&gt; Why two layers of #ifs? Why not either surround the entire constructor with #if OS(UNIX), or simply remove the !OS(DARWIN) &amp;&amp; !OS(WINDOWS) guards?
&gt; 
&gt; I planned to have OS(WINDOWS) version here which holds CSP. But I cannot ensure this is safe across threads. So we use the original implementation that acquires CSP each time.
&gt; So, we can just surround the constructor with (OS(UNIX) &amp;&amp; !(OS(DARWIN))) guard (note that darwin is also unix. so OS(DARWIN) guard is also necessary).

Or, just using the current outer ifdef is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293597</commentid>
    <comment_count>28</comment_count>
      <attachid>306066</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-03 00:38:52 -0700</bug_when>
    <thetext>Created attachment 306066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293598</commentid>
    <comment_count>29</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-03 00:40:58 -0700</bug_when>
    <thetext>Attachment 306066 did not pass style-queue:


ERROR: Source/WTF/wtf/RandomDevice.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293643</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-03 07:34:13 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #26) 
&gt; We don&apos;t need a mutex. Each cryptographicallyRandomValues function call is
&gt; thread-safe. And the creation of RandomDevice is guarded by C++11 static
&gt; semantics. (emitting mutex).

This is news to me, do you have a reference for this? It&apos;s hard to search for online.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293660</commentid>
    <comment_count>31</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-03 09:39:12 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #30)
&gt; (In reply to Yusuke Suzuki from comment #26) 
&gt; &gt; We don&apos;t need a mutex. Each cryptographicallyRandomValues function call is
&gt; &gt; thread-safe. And the creation of RandomDevice is guarded by C++11 static
&gt; &gt; semantics. (emitting mutex).
&gt; 
&gt; This is news to me, do you have a reference for this? It&apos;s hard to search
&gt; for online.

It was added in C++11, some compilers used to do it anyways, but we can&apos;t rely on it because we compile with fno-threadsafe-statics. We should use once_flag instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293687</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-03 11:00:11 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #31)
&gt; It was added in C++11, some compilers used to do it anyways, but we can&apos;t
&gt; rely on it because we compile with fno-threadsafe-statics. We should use
&gt; once_flag instead.

Interesting! Threadsafe statics seem desirable. Does dropping -fno-threadsafe-statics cause a Speedometer regression?

And are you sure we actually use this flag outside libwebrtc? I grepped for it in Source/ and all the results were under ThirdParty/libwebrtc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293688</commentid>
    <comment_count>33</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-03 11:06:54 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #32)
&gt; (In reply to JF Bastien from comment #31)
&gt; &gt; It was added in C++11, some compilers used to do it anyways, but we can&apos;t
&gt; &gt; rely on it because we compile with fno-threadsafe-statics. We should use
&gt; &gt; once_flag instead.
&gt; 
&gt; Interesting! Threadsafe statics seem desirable. Does dropping
&gt; -fno-threadsafe-statics cause a Speedometer regression?

Unknown, but...

&gt; And are you sure we actually use this flag outside libwebrtc? I grepped for
&gt; it in Source/ and all the results were under ThirdParty/libwebrtc.

I&apos;m not sure what the full history is. I think on Chrome the issue was with older MSVC versions. I don&apos;t know if this impacts WebKit. If we still support building with compilers where static init isn&apos;t thread-safe then we can&apos;t move away.

However, if supported compilers are all OK then we could move away, assuming it&apos;s not a regression as you suggest. There are roughly 80 once_flag uses in Source/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293994</commentid>
    <comment_count>34</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-03 22:39:46 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #33)
&gt; Unknown, but...
&gt; 
&gt; &gt; And are you sure we actually use this flag outside libwebrtc? I grepped for
&gt; &gt; it in Source/ and all the results were under ThirdParty/libwebrtc.
&gt; 
&gt; I&apos;m not sure what the full history is. I think on Chrome the issue was with
&gt; older MSVC versions. I don&apos;t know if this impacts WebKit. If we still
&gt; support building with compilers where static init isn&apos;t thread-safe then we
&gt; can&apos;t move away.
&gt; 
&gt; However, if supported compilers are all OK then we could move away, assuming
&gt; it&apos;s not a regression as you suggest. There are roughly 80 once_flag uses in
&gt; Source/.

I think the current WebKit tree does not use no-threadsafe-statics. &quot;no-threadsafe-statics&quot; flag is only shown under the ThirdParty/libwebrtc thing, right?
BTW, I think we already relied this C++11 static semantics in various places. For example, RunLoop::current() in wtf/RunLoop.cpp uses `static NeverDestroyed&lt;ThreadSpecific&lt;Holder&gt;&gt;`. If this C++11 semantics is broken, it becomes racy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293996</commentid>
    <comment_count>35</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-03 22:50:50 -0700</bug_when>
    <thetext>&gt; I think the current WebKit tree does not use no-threadsafe-statics.
&gt; &quot;no-threadsafe-statics&quot; flag is only shown under the ThirdParty/libwebrtc
&gt; thing, right?
&gt; BTW, I think we already relied this C++11 static semantics in various
&gt; places. For example, RunLoop::current() in wtf/RunLoop.cpp uses `static
&gt; NeverDestroyed&lt;ThreadSpecific&lt;Holder&gt;&gt;`. If this C++11 semantics is broken,
&gt; it becomes racy.

OK cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1294002</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-04-04 00:04:44 -0700</bug_when>
    <thetext>Committed r214867: &lt;http://trac.webkit.org/changeset/214867&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305374</attachid>
            <date>2017-03-25 04:02:04 -0700</date>
            <delta_ts>2017-03-28 12:51:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170325200203.patch</filename>
            <type>text/plain</type>
            <size>15009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Mzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU5YmNkZTQyZTEzZTcwY2M4ZGE5MzRi
NjEzMjhhMmEzNDA1OGVmY2UuLmY1NmIxZDc2ZDU2ZDFjNTU4ZTU5NTMzZWRmY2NjNDQxNGE0YWM3
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNCAgSkYgQmFzdGllbiAgPGpmYmFz
dGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHk6IHN0b3JlIHN0YXRlIGluIFRM
UyBpbnN0ZWFkIG9mIG9uIFZNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAzNzc1YmEwMWVmMWI4MzU3YTJlN2FmNTYzZDI1N2EyOTE0NWYzOTZhLi4yZTAwZTZh
M2RhYmU1ZmZhYmQyYjlmZjM4MDNlMzg4NGIzOTE1NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4NSw2ICszODUsOCBAQAogCQlGRTg5MjVCMDFEMDBE
QUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICov
OyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNG
MDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2
OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9
OworCQlGQzZFQzJCRjIwRjg0OTk2OUM2QTVCRTEgLyogUmFuZG9tRGV2aWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEYxQjI0ODYxOUY0MTIyOTZE
MUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi87IH07CisJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0
MCAvKiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAg
Ki87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTc4Miw2ICs3ODQsOCBAQAogCQlGRTg5MjVB
RjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjRGMUIyNDg2MTlGNDEyMjk2RDFDMTlDIC8qIFJhbmRvbURldmljZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSYW5kb21EZXZpY2UuaDsgcGF0aCA9IFJh
bmRvbURldmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOEY1OTdDQTJBNTc0
MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFJhbmRvbURldmljZS5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0x
MDk0LDYgKzEwOTgsOCBAQAogCQkJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNz
SUQuaCAqLywKIAkJCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8s
CiAJCQkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLywKKwkJCQkyNEYx
QjI0ODYxOUY0MTIyOTZEMUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8sCisJCQkJQzhGNTk3Q0Ey
QTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8sCiAJCQkJQThBNDcyRkIxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyRkMxNTFBODI1
QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oICovLAogCQkJCUE4QTQ3MkZEMTUxQTgyNUIwMDQx
MjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmggKi8sCkBAIC0xNTM5LDYgKzE1NDUsNyBAQAogCQkJ
CTBGOUQzMzYzMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDNDQ4ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZDNkVDMkJGMjBGODQ5OTY5QzZBNUJFMSAvKiBSYW5kb21EZXZpY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4QTQ3NDE1MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDE2MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21O
dW1iZXJTZWVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0Eg
LyogUmFuZ2VTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTc5NCw2ICsxODAxLDcgQEAKIAkJCQlE
Q0VFMjIwMzFDRUE3NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFBy
aW50U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0
QSAvKiBSQU1TaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzQjcyNUVDOTg3NDQ2QUQ5M0Yx
QTQ0MCAvKiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MTQxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0
NzQxQTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA5MDZiYTc5ZmFiMWU4ZDY0OTlkZmFm
YWIzNzNlNzgxY2EwZGNmOGE0Li4xNDU3MzExMWI3YWQ1NDZjYTBmNzIyZWRhYWJhNWQzZjY1MzNk
NGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtOTcsNiArOTcsNyBAQCBzZXQoV1RGX0hFQURF
UlMKICAgICBQcmludFN0cmVhbS5oCiAgICAgUHJvY2Vzc0lELmgKICAgICBSQU1TaXplLmgKKyAg
ICBSYW5kb21EZXZpY2UuaAogICAgIFJhbmRvbU51bWJlci5oCiAgICAgUmFuZG9tTnVtYmVyU2Vl
ZC5oCiAgICAgUmFuZ2VTZXQuaApAQCAtMjI1LDYgKzIyNiw3IEBAIHNldChXVEZfU09VUkNFUwog
ICAgIFBhcmtpbmdMb3QuY3BwCiAgICAgUHJpbnRTdHJlYW0uY3BwCiAgICAgUkFNU2l6ZS5jcHAK
KyAgICBSYW5kb21EZXZpY2UuY3BwCiAgICAgUmFuZG9tTnVtYmVyLmNwcAogICAgIFJlZkNvdW50
ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvT1NSYW5kb21Tb3VyY2UuY3BwIGIvU291cmNlL1dURi93dGYvT1NSYW5kb21Tb3VyY2Uu
Y3BwCmluZGV4IDM3ODc5NWRjNzc4MDRlMGUwNDM3MzQxM2IwMDU1MWEwMzRkMmQ2N2UuLmMzZDA4
OTU3ODYxZTQ2OWMwZjVjOGFiYjVhY2I3YWJmMTIwNGU5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL09TUmFuZG9tU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNv
dXJjZS5jcHAKQEAgLTI2LDczICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIk9TUmFuZG9tU291cmNlLmgiCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxz
dGRsaWIuaD4KLQotI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCi0jaW5jbHVkZSA8ZXJybm8u
aD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLSNp
ZiBPUyhXSU5ET1dTKQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3aW5jcnlwdC5o
PiAvLyB3aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KLSNlbmRp
ZgotCi0jaWYgT1MoREFSV0lOKQotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1NQSS5oIgotI2VuZGlm
CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JhbmRvbURl
dmljZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAotI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgp
Ci1ORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVu
YWJsZVRvT3BlblVSYW5kb20oKQotewotICAgIENSQVNIKCk7Ci19Ci0KLU5FVkVSX0lOTElORSBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVS
YW5kb20oKQotewotICAgIENSQVNIKCk7Ci19Ci0jZW5kaWYKLSAgICAKIHZvaWQgY3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21WYWx1ZXNGcm9tT1ModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3Qg
bGVuZ3RoKQogewotI2lmIE9TKERBUldJTikKLSAgICBSRUxFQVNFX0FTU0VSVCghQ0NSYW5kb21D
b3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKLSNlbGlmIE9TKFVO
SVgpCi0gICAgaW50IGZkID0gb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFksIDApOwotICAg
IGlmIChmZCA8IDApCi0gICAgICAgIGNyYXNoVW5hYmxlVG9PcGVuVVJhbmRvbSgpOyAvLyBXZSBu
ZWVkIC9kZXYvdXJhbmRvbSBmb3IgdGhpcyBBUEkgdG8gd29yay4uLgotCi0gICAgc3NpemVfdCBh
bW91bnRSZWFkID0gMDsKLSAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRSZWFk
KSA8IGxlbmd0aCkgewotICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZChmZCwgYnVm
ZmVyICsgYW1vdW50UmVhZCwgbGVuZ3RoIC0gYW1vdW50UmVhZCk7Ci0gICAgICAgIC8vIFdlIG5l
ZWQgdG8gY2hlY2sgZm9yIGJvdGggRUFHQUlOIGFuZCBFSU5UUiBzaW5jZSBvbiBzb21lIHN5c3Rl
bXMgL2Rldi91cmFuZG9tCi0gICAgICAgIC8vIGlzIGJsb2NraW5nIGFuZCBvbiBvdGhlcnMgaXQg
aXMgbm9uLWJsb2NraW5nLgotICAgICAgICBpZiAoY3VycmVudFJlYWQgPT0gLTEpIHsKLSAgICAg
ICAgICAgIGlmICghKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikpCi0gICAgICAg
ICAgICAgICAgY3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIGFtb3VudFJlYWQgKz0gY3VycmVudFJlYWQ7Ci0gICAgfQotICAgIAotICAg
IGNsb3NlKGZkKTsKLQotI2VsaWYgT1MoV0lORE9XUykKLSAgICBIQ1JZUFRQUk9WIGhDcnlwdFBy
b3YgPSAwOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmaENyeXB0UHJvdiwgMCwgTVNf
REVGX1BST1YsIFBST1ZfUlNBX0ZVTEwsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICBD
UkFTSCgpOwotICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgbGVuZ3RoLCBidWZm
ZXIpKQotICAgICAgICBDUkFTSCgpOwotICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENyeXB0UHJv
diwgMCk7Ci0jZWxzZQotICAgICNlcnJvciAiVGhpcyBjb25maWd1cmF0aW9uIGRvZXNuJ3QgaGF2
ZSBhIHN0cm9uZyBzb3VyY2Ugb2YgcmFuZG9tbmVzcy4iCi0gICAgLy8gV0FSTklORzogV2hlbiBh
ZGRpbmcgbmV3IHNvdXJjZXMgb2YgT1MgcmFuZG9tbmVzcywgdGhlIHJhbmRvbW5lc3MgbXVzdAot
ICAgIC8vICAgICAgICAgIGJlIG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKLSNlbmRpZgorICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSYW5kb21EZXZpY2U+IGRldmljZTsKKyAgICBkZXZpY2Uu
Z2V0KCkuY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoYnVmZmVyLCBsZW5ndGgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuY3BwIGIvU291cmNl
L1dURi93dGYvUmFuZG9tRGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTU5NDcyODJmNTc0MDI0NjMy
YTk1MzEwNDljNzJmZTBjYjBiYjMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
UmFuZG9tRGV2aWNlLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFuZG9tRGV2aWNlLmgi
CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmICFPUyhE
QVJXSU4pICYmIE9TKFVOSVgpCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5o
PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmggbXVzdCBi
ZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KKyNlbmRpZgorCisjaWYgT1MoREFSV0lOKQor
I2luY2x1ZGUgIkNvbW1vbkNyeXB0b1NQSS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgewor
CisjaWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVF
X1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9PcGVuVVJhbmRvbSgpCit7CisgICAg
Q1JBU0goKTsKK30KKworTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGlj
IHZvaWQgY3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpCit7CisgICAgQ1JBU0goKTsKK30K
KyNlbmRpZgorCisjaWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpCitSYW5kb21EZXZpY2U6
OlJhbmRvbURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBtX2ZkID0gb3BlbigiL2Rldi91
cmFuZG9tIiwgT19SRE9OTFksIDApOworICAgIGlmIChtX2ZkIDwgMCkKKyAgICAgICAgY3Jhc2hV
bmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFuZG9tIGZvciB0aGlzIEFQ
SSB0byB3b3JrLi4uCisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYgIU9TKERBUldJTikgJiYgIU9T
KFdJTkRPV1MpCitSYW5kb21EZXZpY2U6On5SYW5kb21EZXZpY2UoKQoreworI2lmIE9TKFVOSVgp
CisgICAgY2xvc2UobV9mZCk7CisjZW5kaWYKK30KKyNlbmRpZgorCit2b2lkIFJhbmRvbURldmlj
ZTo6Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBz
aXplX3QgbGVuZ3RoKQoreworI2lmIE9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVCghQ0NS
YW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKKyNlbGlm
IE9TKFVOSVgpCisgICAgc3NpemVfdCBhbW91bnRSZWFkID0gMDsKKyAgICB3aGlsZSAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihhbW91bnRSZWFkKSA8IGxlbmd0aCkgeworICAgICAgICAvLyBGSVhNRTog
VXNlIGdldHJhbmRvbSBzeXNjYWxsIG9uY2UgTGludXgga2VybmVsIHN1cHBvcnQgYmVjb21lcyA+
PSAzLjE3LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcwMDk2CisgICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKG1fZmQsIGJ1ZmZl
ciArIGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJlYWQpOworICAgICAgICAvLyBXZSBuZWVk
IHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlOVFIgc2luY2Ugb24gc29tZSBzeXN0ZW1z
IC9kZXYvdXJhbmRvbQorICAgICAgICAvLyBpcyBibG9ja2luZyBhbmQgb24gb3RoZXJzIGl0IGlz
IG5vbi1ibG9ja2luZy4KKyAgICAgICAgaWYgKGN1cnJlbnRSZWFkID09IC0xKSB7CisgICAgICAg
ICAgICBpZiAoIShlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpKQorICAgICAgICAg
ICAgICAgIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBhbW91bnRSZWFkICs9IGN1cnJlbnRSZWFkOworICAgIH0KKyNlbGlmIE9TKFdJ
TkRPV1MpCisgICAgLy8gRklYTUU6IFdlIGNhbm5vdCBlbnN1cmUgdGhhdCBDcnlwdG9ncmFwaGlj
IFNlcnZpY2UgUHJvdmlkZXIgY29udGV4dCBhbmQgQ3J5cHRHZW5SYW5kb20gYXJlIHNhZmUgYWNy
b3NzIHRocmVhZHMuCisgICAgLy8gSWYgaXQgaXMgc2FmZSwgd2UgY2FuIGFjcXVpcmUgY29udGV4
dCBwZXIgUmFuZG9tRGV2aWNlLgorICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmbV9oQ3J5
cHRQcm92LCAwLCBNU19ERUZfUFJPViwgUFJPVl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVY
VCkpCisgICAgICAgIENSQVNIKCk7CisgICAgaWYgKCFDcnlwdEdlblJhbmRvbShtX2hDcnlwdFBy
b3YsIGxlbmd0aCwgYnVmZmVyKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBDcnlwdFJlbGVhc2VD
b250ZXh0KG1faENyeXB0UHJvdiwgMCk7CisjZWxzZQorI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRp
b24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNvdXJjZSBvZiByYW5kb21uZXNzLiIKKy8vIFdBUk5J
Tkc6IFdoZW4gYWRkaW5nIG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21u
ZXNzIG11c3QKKy8vICAgICAgICAgIGJlIG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKKyNlbmRp
ZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaCBiL1Nv
dXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzNmQ5MjI2ODA0MzZlNTg4
OGU2YzIwYmU2YzgzMTFhZDQyMmE5NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9SYW5kb21EZXZpY2UuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSBH
b29nbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSYW5k
b21EZXZpY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhbmRvbURldmljZSk7CitwdWJs
aWM6CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKQorICAgIFJhbmRvbURldmljZSgpID0g
ZGVmYXVsdDsKKyNlbHNlCisgICAgUmFuZG9tRGV2aWNlKCk7CisgICAgflJhbmRvbURldmljZSgp
OworI2VuZGlmCisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbGwgYnVmZmVy
IHdpdGggcmFuZG9tbmVzcyBmcm9tIHRoZSBvcGVyYXRpbmcKKyAgICAvLyBzeXN0ZW0uIElmIGlu
c3VmZmljaWVudCByYW5kb21uZXNzIGlzIGF2YWlsYWJsZSwgdGhlIGJ1ZmZlciB3aWxsIGJlCisg
ICAgLy8gcGFydGlhbGx5IGZpbGxlZC4gUmF0aGVyIHRoYW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9u
IGRpcmVjdGx5LCBjb25zaWRlcgorICAgIC8vIGNhbGxpbmcgY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIgb3IgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMuCisgICAgdm9pZCBjcnlw
dG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBs
ZW5ndGgpOworCitwcml2YXRlOgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyNlbGlm
IE9TKFVOSVgpCisgICAgaW50IG1fZmQgeyAtMSB9OworI2Vsc2UKKyNlcnJvciAiVGhpcyBjb25m
aWd1cmF0aW9uIGRvZXNuJ3QgaGF2ZSBhIHN0cm9uZyBzb3VyY2Ugb2YgcmFuZG9tbmVzcy4iCisv
LyBXQVJOSU5HOiBXaGVuIGFkZGluZyBuZXcgc291cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUg
cmFuZG9tbmVzcyBtdXN0CisvLyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkh
CisjZW5kaWYKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305622</attachid>
            <date>2017-03-28 12:51:39 -0700</date>
            <delta_ts>2017-03-28 12:53:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170329045138.patch</filename>
            <type>text/plain</type>
            <size>15284</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhNzBhNjgxZDZhZDFjOWMwY2MzZTZj
NjRhYWE3OGY0OTc3NjRkNTUuLjk2Yjg5ODAwYWVjYjQwNmYyNGE5YjA4Y2MwYjVhMTY4YjBlYjdl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Egc2hvdWxkIGRvIGxpdmVuZXNzIHBy
dW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1OGM3
YWJiN2Q3YzY1YzE1MDMzNzY2YmJmNWNjNjgxZDczZGQ2NTIuLmZlY2I0YWExMmJkNGMxOWJjMDYz
OTkwZDM0MzQ2YzM1Y2ZlYmFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzg2LDYgKzM4Niw4IEBACiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFD
RDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CisJCUZDNkVDMkJG
MjBGODQ5OTY5QzZBNUJFMSAvKiBSYW5kb21EZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5k
b21EZXZpY2UuaCAqLzsgfTsKKwkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURl
dmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIC8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJv
eHkgc2VjdGlvbiAqLwpAQCAtNzg0LDYgKzc4Niw4IEBACiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2
OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRl
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NEYxQjI0ODYxOUY0MTIyOTZEMUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJhbmRvbURldmljZS5oOyBwYXRoID0gUmFuZG9tRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAv
KiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmFuZG9tRGV2aWNlLmNwcDsgcGF0aCA9IFJhbmRvbURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEwOTcsNiArMTEwMSw4
IEBACiAJCQkJMEZDNDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovLAogCQkJ
CTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLywKIAkJCQkxNDNGNjEx
RTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovLAorCQkJCTI0RjFCMjQ4NjE5RjQxMjI5
NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLywKKwkJCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJG
RDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLywKIAkJCQlBOEE0NzJGQjE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzJGQzE1MUE4MjVCMDA0MTIzRkYgLyog
UmFuZG9tTnVtYmVyLmggKi8sCiAJCQkJQThBNDcyRkQxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRv
bU51bWJlclNlZWQuaCAqLywKQEAgLTE1NDMsNiArMTU0OSw3IEBACiAJCQkJMEY5RDMzNjMxNjVE
QkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM0NDg4
MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNG
NjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkM2
RUMyQkYyMEY4NDk5NjlDNkE1QkUxIC8qIFJhbmRvbURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0MTYxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlclNlZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNzk4LDYgKzE4MDUsNyBAQAogCQkJCURDRUUyMjAzMUNFQTc1
NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRv
bURldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDFBMTUxQTgyNUIw
MDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NmVhZTk3YjY4ZTBhNWU5Mjk1NjI2ODYwNjU0ZDc2ZmM1
MTUyYWYuLmY2MjZjNjM4MmUwOGI2ODdmMjg5NDA5Yzc4M2FkYzFmNjc2MzhlNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC05OCw2ICs5OCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFByaW50
U3RyZWFtLmgKICAgICBQcm9jZXNzSUQuaAogICAgIFJBTVNpemUuaAorICAgIFJhbmRvbURldmlj
ZS5oCiAgICAgUmFuZG9tTnVtYmVyLmgKICAgICBSYW5kb21OdW1iZXJTZWVkLmgKICAgICBSYW5n
ZVNldC5oCkBAIC0yMjYsNiArMjI3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFya2luZ0xv
dC5jcHAKICAgICBQcmludFN0cmVhbS5jcHAKICAgICBSQU1TaXplLmNwcAorICAgIFJhbmRvbURl
dmljZS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcAogICAgIFJ1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRv
bVNvdXJjZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAKaW5kZXggMzc4
Nzk1ZGM3NzgwNGUwZTA0MzczNDEzYjAwNTUxYTAzNGQyZDY3ZS4uYzNkMDg5NTc4NjFlNDY5YzBm
NWM4YWJiNWFjYjdhYmYxMjA0ZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NSYW5k
b21Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcApAQCAt
MjYsNzMgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT1NSYW5kb21T
b3VyY2UuaCIKIAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0j
aWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUg
PGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIE9TKFdJTkRPV1Mp
Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3Mu
aCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgotI2VuZGlmCi0KLSNpZiBPUyhE
QVJXSU4pCi0jaW5jbHVkZSAiQ29tbW9uQ3J5cHRvU1BJLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tRGV2aWNlLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCi0jaWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLU5FVkVSX0lOTElO
RSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9PcGVuVVJh
bmRvbSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpCi17Ci0g
ICAgQ1JBU0goKTsKLX0KLSNlbmRpZgotICAgIAogdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlc0Zyb21PUyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7Ci0j
aWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NS
YW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOwotI2VsaWYgT1MoVU5JWCkKLSAgICBpbnQg
ZmQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7Ci0gICAgaWYgKGZkIDwgMCkK
LSAgICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFu
ZG9tIGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCi0KLSAgICBzc2l6ZV90IGFtb3VudFJlYWQgPSAw
OwotICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudFJlYWQpIDwgbGVuZ3RoKSB7
Ci0gICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKGZkLCBidWZmZXIgKyBhbW91bnRS
ZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBm
b3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyAvZGV2L3VyYW5k
b20KLSAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90aGVycyBpdCBpcyBub24tYmxvY2tp
bmcuCi0gICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkgewotICAgICAgICAgICAgaWYgKCEo
ZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkKLSAgICAgICAgICAgICAgICBjcmFz
aFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
YW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKLSAgICB9Ci0gICAgCi0gICAgY2xvc2UoZmQpOwot
Ci0jZWxpZiBPUyhXSU5ET1dTKQotICAgIEhDUllQVFBST1YgaENyeXB0UHJvdiA9IDA7Ci0gICAg
aWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZoQ3J5cHRQcm92LCAwLCBNU19ERUZfUFJPViwgUFJP
Vl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAg
aWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCBsZW5ndGgsIGJ1ZmZlcikpCi0gICAgICAg
IENSQVNIKCk7Ci0gICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSNlbHNl
Ci0gICAgI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNv
dXJjZSBvZiByYW5kb21uZXNzLiIKLSAgICAvLyBXQVJOSU5HOiBXaGVuIGFkZGluZyBuZXcgc291
cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUgcmFuZG9tbmVzcyBtdXN0Ci0gICAgLy8gICAgICAg
ICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQotI2VuZGlmCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJhbmRvbURldmljZT4gZGV2aWNlOworICAgIGRldmljZS5nZXQoKS5jcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyhidWZmZXIsIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5k
b21EZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMWYwYzBmNGVlOWRmZDQzOWNjNzE0ZGIzYTExMmZh
YjYzMTY4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2Uu
Y3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5kb21EZXZpY2UuaCIKKworI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgIU9TKERBUldJTikgJiYgT1Mo
VU5JWCkKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVkIGJl
Zm9yZSB3aW5jcnlwdC5oLgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSAiQ29t
bW9uQ3J5cHRvU1BJLmgiCisjZW5kaWYKKworI2lmIE9TKExJTlVYKQorI2lmbmRlZiBfR05VX1NP
VVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisjaW5jbHVkZSA8bGludXgvcmFuZG9t
Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKQoreworICAg
IENSQVNIKCk7Cit9CisKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRp
YyB2b2lkIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQoreworICAgIENSQVNIKCk7Cit9
CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoTElOVVgp
CitSYW5kb21EZXZpY2U6OlJhbmRvbURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBpbnQg
cmV0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9f
UkRPTkxZLCAwKTsKKyAgICB9IHdoaWxlIChyZXQgPT0gLTEgJiYgKGVycm5vID09IEVBR0FJTiB8
fCBlcnJubyA9IEVJTlRSKSkKKyAgICBtX2ZkID0gcmV0OworICAgIGlmIChtX2ZkIDwgMCkKKyAg
ICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFuZG9t
IGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYgIU9TKERB
UldJTikgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhMSU5VWCkKK1JhbmRvbURldmljZTo6flJhbmRv
bURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBjbG9zZShtX2ZkKTsKKyNlbmRpZgorfQor
I2VuZGlmCisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgY2FsbCBmYXN0IGJ5IGNyZWF0aW5nIHRoZSBw
b29sIGluIFJhbmRvbURldmljZS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzAxOTAKK3ZvaWQgUmFuZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlcyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCit7CisjaWYgT1Mo
REFSV0lOKQorICAgIFJFTEVBU0VfQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21E
ZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOworI2VsaWYgT1MoVU5JWCkKKyAgICBzc2l6ZV90IGFt
b3VudFJlYWQgPSAwOworICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudFJlYWQp
IDwgbGVuZ3RoKSB7CisjaWYgT1MoTElOVVgpCisgICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQg
PSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbGVuZ3RoLCAwKTsKKyNlbHNlCisgICAg
ICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKG1fZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQs
IGxlbmd0aCAtIGFtb3VudFJlYWQpOworI2VuZGlmCisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hl
Y2sgZm9yIGJvdGggRUFHQUlOIGFuZCBFSU5UUiBzaW5jZSBvbiBzb21lIHN5c3RlbXMgL2Rldi91
cmFuZG9tCisgICAgICAgIC8vIGlzIGJsb2NraW5nIGFuZCBvbiBvdGhlcnMgaXQgaXMgbm9uLWJs
b2NraW5nLgorICAgICAgICBpZiAoY3VycmVudFJlYWQgPT0gLTEpIHsKKyAgICAgICAgICAgIGlm
ICghKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikpCisgICAgICAgICAgICAgICAg
Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGFtb3VudFJlYWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VsaWYgT1MoV0lORE9XUykK
KyAgICAvLyBGSVhNRTogV2UgY2Fubm90IGVuc3VyZSB0aGF0IENyeXB0b2dyYXBoaWMgU2Vydmlj
ZSBQcm92aWRlciBjb250ZXh0IGFuZCBDcnlwdEdlblJhbmRvbSBhcmUgc2FmZSBhY3Jvc3MgdGhy
ZWFkcy4KKyAgICAvLyBJZiBpdCBpcyBzYWZlLCB3ZSBjYW4gYWNxdWlyZSBjb250ZXh0IHBlciBS
YW5kb21EZXZpY2UuCisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZtX2hDcnlwdFByb3Ys
IDAsIE1TX0RFRl9QUk9WLCBQUk9WX1JTQV9GVUxMLCBDUllQVF9WRVJJRllDT05URVhUKSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKG1faENyeXB0UHJvdiwgbGVu
Z3RoLCBidWZmZXIpKQorICAgICAgICBDUkFTSCgpOworICAgIENyeXB0UmVsZWFzZUNvbnRleHQo
bV9oQ3J5cHRQcm92LCAwKTsKKyNlbHNlCisjZXJyb3IgIlRoaXMgY29uZmlndXJhdGlvbiBkb2Vz
bid0IGhhdmUgYSBzdHJvbmcgc291cmNlIG9mIHJhbmRvbW5lc3MuIgorLy8gV0FSTklORzogV2hl
biBhZGRpbmcgbmV3IHNvdXJjZXMgb2YgT1MgcmFuZG9tbmVzcywgdGhlIHJhbmRvbW5lc3MgbXVz
dAorLy8gICAgICAgICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQorI2VuZGlmCit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5oIGIvU291cmNlL1dU
Ri93dGYvUmFuZG9tRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGFlYzg5MzI0OWRiNDY5MjkwNzYzZmYw
ZGIwZmY4N2ViZmJjNmFlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmRv
bURldmljZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIEdvb2dsZSwg
SW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdP
T0dMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIFJhbmRvbURldmlj
ZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFuZG9tRGV2aWNlKTsKK3B1YmxpYzoKKyNp
ZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpIHx8IE9TKExJTlVYKQorICAgIFJhbmRvbURldmlj
ZSgpID0gZGVmYXVsdDsKKyNlbHNlCisgICAgUmFuZG9tRGV2aWNlKCk7CisgICAgflJhbmRvbURl
dmljZSgpOworI2VuZGlmCisKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRvIGZpbGwg
YnVmZmVyIHdpdGggcmFuZG9tbmVzcyBmcm9tIHRoZSBvcGVyYXRpbmcKKyAgICAvLyBzeXN0ZW0u
IFJhdGhlciB0aGFuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgY29uc2lkZXIgY2Fs
bGluZworICAgIC8vIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyIG9yIGNyeXB0b2dyYXBo
aWNhbGx5UmFuZG9tVmFsdWVzLgorICAgIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1
ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKTsKKworcHJpdmF0ZToKKyNp
ZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpIHx8IE9TKExJTlVYKQorI2VsaWYgT1MoVU5JWCkK
KyAgICBpbnQgbV9mZCB7IC0xIH07CisjZWxzZQorI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24g
ZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNvdXJjZSBvZiByYW5kb21uZXNzLiIKKy8vIFdBUk5JTkc6
IFdoZW4gYWRkaW5nIG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNz
IG11c3QKKy8vICAgICAgICAgIGJlIG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKKyNlbmRpZgor
fTsKKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305623</attachid>
            <date>2017-03-28 12:53:28 -0700</date>
            <delta_ts>2017-03-28 12:55:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170329045327.patch</filename>
            <type>text/plain</type>
            <size>15288</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhNzBhNjgxZDZhZDFjOWMwY2MzZTZj
NjRhYWE3OGY0OTc3NjRkNTUuLjk2Yjg5ODAwYWVjYjQwNmYyNGE5YjA4Y2MwYjVhMTY4YjBlYjdl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Egc2hvdWxkIGRvIGxpdmVuZXNzIHBy
dW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1OGM3
YWJiN2Q3YzY1YzE1MDMzNzY2YmJmNWNjNjgxZDczZGQ2NTIuLmZlY2I0YWExMmJkNGMxOWJjMDYz
OTkwZDM0MzQ2YzM1Y2ZlYmFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzg2LDYgKzM4Niw4IEBACiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFD
RDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CisJCUZDNkVDMkJG
MjBGODQ5OTY5QzZBNUJFMSAvKiBSYW5kb21EZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5k
b21EZXZpY2UuaCAqLzsgfTsKKwkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURl
dmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIC8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJv
eHkgc2VjdGlvbiAqLwpAQCAtNzg0LDYgKzc4Niw4IEBACiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2
OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRl
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NEYxQjI0ODYxOUY0MTIyOTZEMUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJhbmRvbURldmljZS5oOyBwYXRoID0gUmFuZG9tRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAv
KiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmFuZG9tRGV2aWNlLmNwcDsgcGF0aCA9IFJhbmRvbURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEwOTcsNiArMTEwMSw4
IEBACiAJCQkJMEZDNDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovLAogCQkJ
CTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLywKIAkJCQkxNDNGNjEx
RTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovLAorCQkJCTI0RjFCMjQ4NjE5RjQxMjI5
NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLywKKwkJCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJG
RDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLywKIAkJCQlBOEE0NzJGQjE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzJGQzE1MUE4MjVCMDA0MTIzRkYgLyog
UmFuZG9tTnVtYmVyLmggKi8sCiAJCQkJQThBNDcyRkQxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRv
bU51bWJlclNlZWQuaCAqLywKQEAgLTE1NDMsNiArMTU0OSw3IEBACiAJCQkJMEY5RDMzNjMxNjVE
QkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM0NDg4
MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNG
NjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkM2
RUMyQkYyMEY4NDk5NjlDNkE1QkUxIC8qIFJhbmRvbURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0MTYxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlclNlZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNzk4LDYgKzE4MDUsNyBAQAogCQkJCURDRUUyMjAzMUNFQTc1
NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRv
bURldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDFBMTUxQTgyNUIw
MDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NmVhZTk3YjY4ZTBhNWU5Mjk1NjI2ODYwNjU0ZDc2ZmM1
MTUyYWYuLmY2MjZjNjM4MmUwOGI2ODdmMjg5NDA5Yzc4M2FkYzFmNjc2MzhlNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC05OCw2ICs5OCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFByaW50
U3RyZWFtLmgKICAgICBQcm9jZXNzSUQuaAogICAgIFJBTVNpemUuaAorICAgIFJhbmRvbURldmlj
ZS5oCiAgICAgUmFuZG9tTnVtYmVyLmgKICAgICBSYW5kb21OdW1iZXJTZWVkLmgKICAgICBSYW5n
ZVNldC5oCkBAIC0yMjYsNiArMjI3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFya2luZ0xv
dC5jcHAKICAgICBQcmludFN0cmVhbS5jcHAKICAgICBSQU1TaXplLmNwcAorICAgIFJhbmRvbURl
dmljZS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcAogICAgIFJ1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRv
bVNvdXJjZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAKaW5kZXggMzc4
Nzk1ZGM3NzgwNGUwZTA0MzczNDEzYjAwNTUxYTAzNGQyZDY3ZS4uYzNkMDg5NTc4NjFlNDY5YzBm
NWM4YWJiNWFjYjdhYmYxMjA0ZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NSYW5k
b21Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcApAQCAt
MjYsNzMgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT1NSYW5kb21T
b3VyY2UuaCIKIAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0j
aWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUg
PGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIE9TKFdJTkRPV1Mp
Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3Mu
aCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgotI2VuZGlmCi0KLSNpZiBPUyhE
QVJXSU4pCi0jaW5jbHVkZSAiQ29tbW9uQ3J5cHRvU1BJLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tRGV2aWNlLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCi0jaWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLU5FVkVSX0lOTElO
RSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9PcGVuVVJh
bmRvbSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpCi17Ci0g
ICAgQ1JBU0goKTsKLX0KLSNlbmRpZgotICAgIAogdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlc0Zyb21PUyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7Ci0j
aWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NS
YW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOwotI2VsaWYgT1MoVU5JWCkKLSAgICBpbnQg
ZmQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7Ci0gICAgaWYgKGZkIDwgMCkK
LSAgICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFu
ZG9tIGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCi0KLSAgICBzc2l6ZV90IGFtb3VudFJlYWQgPSAw
OwotICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudFJlYWQpIDwgbGVuZ3RoKSB7
Ci0gICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKGZkLCBidWZmZXIgKyBhbW91bnRS
ZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBm
b3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyAvZGV2L3VyYW5k
b20KLSAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90aGVycyBpdCBpcyBub24tYmxvY2tp
bmcuCi0gICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkgewotICAgICAgICAgICAgaWYgKCEo
ZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkKLSAgICAgICAgICAgICAgICBjcmFz
aFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
YW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKLSAgICB9Ci0gICAgCi0gICAgY2xvc2UoZmQpOwot
Ci0jZWxpZiBPUyhXSU5ET1dTKQotICAgIEhDUllQVFBST1YgaENyeXB0UHJvdiA9IDA7Ci0gICAg
aWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZoQ3J5cHRQcm92LCAwLCBNU19ERUZfUFJPViwgUFJP
Vl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAg
aWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCBsZW5ndGgsIGJ1ZmZlcikpCi0gICAgICAg
IENSQVNIKCk7Ci0gICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSNlbHNl
Ci0gICAgI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNv
dXJjZSBvZiByYW5kb21uZXNzLiIKLSAgICAvLyBXQVJOSU5HOiBXaGVuIGFkZGluZyBuZXcgc291
cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUgcmFuZG9tbmVzcyBtdXN0Ci0gICAgLy8gICAgICAg
ICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQotI2VuZGlmCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJhbmRvbURldmljZT4gZGV2aWNlOworICAgIGRldmljZS5nZXQoKS5jcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyhidWZmZXIsIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5k
b21EZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMWYwYzBmNGVlOWRmZDQzOWNjNzE0ZGIzYTExMmZh
YjYzMTY4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2Uu
Y3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5kb21EZXZpY2UuaCIKKworI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgIU9TKERBUldJTikgJiYgT1Mo
VU5JWCkKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVkIGJl
Zm9yZSB3aW5jcnlwdC5oLgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSAiQ29t
bW9uQ3J5cHRvU1BJLmgiCisjZW5kaWYKKworI2lmIE9TKExJTlVYKQorI2lmbmRlZiBfR05VX1NP
VVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisjaW5jbHVkZSA8bGludXgvcmFuZG9t
Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKQoreworICAg
IENSQVNIKCk7Cit9CisKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRp
YyB2b2lkIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQoreworICAgIENSQVNIKCk7Cit9
CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoTElOVVgp
CitSYW5kb21EZXZpY2U6OlJhbmRvbURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBpbnQg
cmV0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9f
UkRPTkxZLCAwKTsKKyAgICB9IHdoaWxlIChyZXQgPT0gLTEgJiYgKGVycm5vID09IEVBR0FJTiB8
fCBlcnJubyA9IEVJTlRSKSkKKyAgICBtX2ZkID0gcmV0OworICAgIGlmIChtX2ZkIDwgMCkKKyAg
ICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFuZG9t
IGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYgIU9TKERB
UldJTikgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhMSU5VWCkKK1JhbmRvbURldmljZTo6flJhbmRv
bURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBjbG9zZShtX2ZkKTsKKyNlbmRpZgorfQor
I2VuZGlmCisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgY2FsbCBmYXN0IGJ5IGNyZWF0aW5nIHRoZSBw
b29sIGluIFJhbmRvbURldmljZS4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzAxOTAKK3ZvaWQgUmFuZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlcyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCit7CisjaWYgT1Mo
REFSV0lOKQorICAgIFJFTEVBU0VfQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NSYW5kb21E
ZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOworI2VsaWYgT1MoVU5JWCkKKyAgICBzc2l6ZV90IGFt
b3VudFJlYWQgPSAwOworICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudFJlYWQp
IDwgbGVuZ3RoKSB7CisjaWYgT1MoTElOVVgpCisgICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQg
PSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbGVuZ3RoLCAwKTsKKyNlbHNlCisgICAg
ICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKG1fZmQsIGJ1ZmZlciArIGFtb3VudFJlYWQs
IGxlbmd0aCAtIGFtb3VudFJlYWQpOworI2VuZGlmCisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hl
Y2sgZm9yIGJvdGggRUFHQUlOIGFuZCBFSU5UUiBzaW5jZSBvbiBzb21lIHN5c3RlbXMgL2Rldi91
cmFuZG9tCisgICAgICAgIC8vIGlzIGJsb2NraW5nIGFuZCBvbiBvdGhlcnMgaXQgaXMgbm9uLWJs
b2NraW5nLgorICAgICAgICBpZiAoY3VycmVudFJlYWQgPT0gLTEpIHsKKyAgICAgICAgICAgIGlm
ICghKGVycm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikpCisgICAgICAgICAgICAgICAg
Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIGFtb3VudFJlYWQgKz0gY3VycmVudFJlYWQ7CisgICAgfQorI2VsaWYgT1MoV0lORE9XUykK
KyAgICAvLyBGSVhNRTogV2UgY2Fubm90IGVuc3VyZSB0aGF0IENyeXB0b2dyYXBoaWMgU2Vydmlj
ZSBQcm92aWRlciBjb250ZXh0IGFuZCBDcnlwdEdlblJhbmRvbSBhcmUgc2FmZSBhY3Jvc3MgdGhy
ZWFkcy4KKyAgICAvLyBJZiBpdCBpcyBzYWZlLCB3ZSBjYW4gYWNxdWlyZSBjb250ZXh0IHBlciBS
YW5kb21EZXZpY2UuCisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZtX2hDcnlwdFByb3Ys
IDAsIE1TX0RFRl9QUk9WLCBQUk9WX1JTQV9GVUxMLCBDUllQVF9WRVJJRllDT05URVhUKSkKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKG1faENyeXB0UHJvdiwgbGVu
Z3RoLCBidWZmZXIpKQorICAgICAgICBDUkFTSCgpOworICAgIENyeXB0UmVsZWFzZUNvbnRleHQo
bV9oQ3J5cHRQcm92LCAwKTsKKyNlbHNlCisjZXJyb3IgIlRoaXMgY29uZmlndXJhdGlvbiBkb2Vz
bid0IGhhdmUgYSBzdHJvbmcgc291cmNlIG9mIHJhbmRvbW5lc3MuIgorLy8gV0FSTklORzogV2hl
biBhZGRpbmcgbmV3IHNvdXJjZXMgb2YgT1MgcmFuZG9tbmVzcywgdGhlIHJhbmRvbW5lc3MgbXVz
dAorLy8gICAgICAgICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQorI2VuZGlmCit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5oIGIvU291cmNlL1dU
Ri93dGYvUmFuZG9tRGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQzMTBhOTAxZDQwYzY3ZDFkZmI0NzEy
MWE3MTRhMzQ4ODJjOWFjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmRv
bURldmljZS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBHT09HTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSYW5kb21E
ZXZpY2UgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhbmRvbURldmljZSk7CitwdWJsaWM6
CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkKKyAgICBSYW5kb21E
ZXZpY2UoKSA9IGRlZmF1bHQ7CisjZWxzZQorICAgIFJhbmRvbURldmljZSgpOworICAgIH5SYW5k
b21EZXZpY2UoKTsKKyNlbmRpZgorCisgICAgLy8gVGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byBm
aWxsIGJ1ZmZlciB3aXRoIHJhbmRvbW5lc3MgZnJvbSB0aGUgb3BlcmF0aW5nCisgICAgLy8gc3lz
dGVtLiBSYXRoZXIgdGhhbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIGNvbnNpZGVy
IGNhbGxpbmcKKyAgICAvLyBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlciBvciBjcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcy4KKyAgICB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7CisKK3ByaXZhdGU6
CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkKKyNlbGlmIE9TKFVO
SVgpCisgICAgaW50IG1fZmQgeyAtMSB9OworI2Vsc2UKKyNlcnJvciAiVGhpcyBjb25maWd1cmF0
aW9uIGRvZXNuJ3QgaGF2ZSBhIHN0cm9uZyBzb3VyY2Ugb2YgcmFuZG9tbmVzcy4iCisvLyBXQVJO
SU5HOiBXaGVuIGFkZGluZyBuZXcgc291cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUgcmFuZG9t
bmVzcyBtdXN0CisvLyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkhCisjZW5k
aWYKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305624</attachid>
            <date>2017-03-28 12:55:11 -0700</date>
            <delta_ts>2017-03-28 13:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170329045510.patch</filename>
            <type>text/plain</type>
            <size>15268</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJhNzBhNjgxZDZhZDFjOWMwY2MzZTZj
NjRhYWE3OGY0OTc3NjRkNTUuLjk2Yjg5ODAwYWVjYjQwNmYyNGE5YjA4Y2MwYjVhMTY4YjBlYjdl
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzOjpmaXhTU0Egc2hvdWxkIGRvIGxpdmVuZXNzIHBy
dW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY1OGM3
YWJiN2Q3YzY1YzE1MDMzNzY2YmJmNWNjNjgxZDczZGQ2NTIuLmZlY2I0YWExMmJkNGMxOWJjMDYz
OTkwZDM0MzQ2YzM1Y2ZlYmFiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMzg2LDYgKzM4Niw4IEBACiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFD
RDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07CisJCUZDNkVDMkJG
MjBGODQ5OTY5QzZBNUJFMSAvKiBSYW5kb21EZXZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5k
b21EZXZpY2UuaCAqLzsgfTsKKwkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRvbURl
dmljZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLzsgfTsKIC8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJv
eHkgc2VjdGlvbiAqLwpAQCAtNzg0LDYgKzc4Niw4IEBACiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2
OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRl
bnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBD
Njk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNE
M0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NEYxQjI0ODYxOUY0MTIyOTZEMUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJhbmRvbURldmljZS5oOyBwYXRoID0gUmFuZG9tRGV2aWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAv
KiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmFuZG9tRGV2aWNlLmNwcDsgcGF0aCA9IFJhbmRvbURldmljZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTEwOTcsNiArMTEwMSw4
IEBACiAJCQkJMEZDNDQ4ODIxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oICovLAogCQkJ
CTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLywKIAkJCQkxNDNGNjEx
RTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oICovLAorCQkJCTI0RjFCMjQ4NjE5RjQxMjI5
NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLywKKwkJCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJG
RDYgLyogUmFuZG9tRGV2aWNlLmNwcCAqLywKIAkJCQlBOEE0NzJGQjE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCAqLywKIAkJCQlBOEE0NzJGQzE1MUE4MjVCMDA0MTIzRkYgLyog
UmFuZG9tTnVtYmVyLmggKi8sCiAJCQkJQThBNDcyRkQxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRv
bU51bWJlclNlZWQuaCAqLywKQEAgLTE1NDMsNiArMTU0OSw3IEBACiAJCQkJMEY5RDMzNjMxNjVE
QkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM0NDg4
MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNG
NjEyMDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkM2
RUMyQkYyMEY4NDk5NjlDNkE1QkUxIC8qIFJhbmRvbURldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQThBNDc0MTUxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQThBNDc0MTYxNTFBODI1QjAwNDEyM0ZGIC8qIFJhbmRvbU51bWJlclNlZWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzI1Q0FDMUM1MDQ2MTYwMEFEOTQzQSAvKiBSYW5nZVNldC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNzk4LDYgKzE4MDUsNyBAQAogCQkJCURDRUUyMjAzMUNFQTc1
NTEwMDBDMjM5NiAvKiBQbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwRjlEMzM2MjE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTNCNzI1RUM5ODc0NDZBRDkzRjFBNDQwIC8qIFJhbmRv
bURldmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDFBMTUxQTgyNUIw
MDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDg1NmVhZTk3YjY4ZTBhNWU5Mjk1NjI2ODYwNjU0ZDc2ZmM1
MTUyYWYuLmY2MjZjNjM4MmUwOGI2ODdmMjg5NDA5Yzc4M2FkYzFmNjc2MzhlNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CkBAIC05OCw2ICs5OCw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFByaW50
U3RyZWFtLmgKICAgICBQcm9jZXNzSUQuaAogICAgIFJBTVNpemUuaAorICAgIFJhbmRvbURldmlj
ZS5oCiAgICAgUmFuZG9tTnVtYmVyLmgKICAgICBSYW5kb21OdW1iZXJTZWVkLmgKICAgICBSYW5n
ZVNldC5oCkBAIC0yMjYsNiArMjI3LDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFya2luZ0xv
dC5jcHAKICAgICBQcmludFN0cmVhbS5jcHAKICAgICBSQU1TaXplLmNwcAorICAgIFJhbmRvbURl
dmljZS5jcHAKICAgICBSYW5kb21OdW1iZXIuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVy
LmNwcAogICAgIFJ1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRv
bVNvdXJjZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAKaW5kZXggMzc4
Nzk1ZGM3NzgwNGUwZTA0MzczNDEzYjAwNTUxYTAzNGQyZDY3ZS4uYzNkMDg5NTc4NjFlNDY5YzBm
NWM4YWJiNWFjYjdhYmYxMjA0ZTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT1NSYW5k
b21Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcApAQCAt
MjYsNzMgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT1NSYW5kb21T
b3VyY2UuaCIKIAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0j
aWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUg
PGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLQotI2lmIE9TKFdJTkRPV1Mp
Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3Mu
aCBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSB3aW5jcnlwdC5oLgotI2VuZGlmCi0KLSNpZiBPUyhE
QVJXSU4pCi0jaW5jbHVkZSAiQ29tbW9uQ3J5cHRvU1BJLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmFuZG9tRGV2aWNlLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCi0jaWYgIU9TKERBUldJTikgJiYgT1MoVU5JWCkKLU5FVkVSX0lOTElO
RSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9PcGVuVVJh
bmRvbSgpCi17Ci0gICAgQ1JBU0goKTsKLX0KLQotTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVf
VE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpCi17Ci0g
ICAgQ1JBU0goKTsKLX0KLSNlbmRpZgotICAgIAogdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlc0Zyb21PUyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7Ci0j
aWYgT1MoREFSV0lOKQotICAgIFJFTEVBU0VfQVNTRVJUKCFDQ1JhbmRvbUNvcHlCeXRlcyhrQ0NS
YW5kb21EZWZhdWx0LCBidWZmZXIsIGxlbmd0aCkpOwotI2VsaWYgT1MoVU5JWCkKLSAgICBpbnQg
ZmQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7Ci0gICAgaWYgKGZkIDwgMCkK
LSAgICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFu
ZG9tIGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCi0KLSAgICBzc2l6ZV90IGFtb3VudFJlYWQgPSAw
OwotICAgIHdoaWxlIChzdGF0aWNfY2FzdDxzaXplX3Q+KGFtb3VudFJlYWQpIDwgbGVuZ3RoKSB7
Ci0gICAgICAgIHNzaXplX3QgY3VycmVudFJlYWQgPSByZWFkKGZkLCBidWZmZXIgKyBhbW91bnRS
ZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBm
b3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyAvZGV2L3VyYW5k
b20KLSAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90aGVycyBpdCBpcyBub24tYmxvY2tp
bmcuCi0gICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkgewotICAgICAgICAgICAgaWYgKCEo
ZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkKLSAgICAgICAgICAgICAgICBjcmFz
aFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
YW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKLSAgICB9Ci0gICAgCi0gICAgY2xvc2UoZmQpOwot
Ci0jZWxpZiBPUyhXSU5ET1dTKQotICAgIEhDUllQVFBST1YgaENyeXB0UHJvdiA9IDA7Ci0gICAg
aWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZoQ3J5cHRQcm92LCAwLCBNU19ERUZfUFJPViwgUFJP
Vl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIENSQVNIKCk7Ci0gICAg
aWYgKCFDcnlwdEdlblJhbmRvbShoQ3J5cHRQcm92LCBsZW5ndGgsIGJ1ZmZlcikpCi0gICAgICAg
IENSQVNIKCk7Ci0gICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKLSNlbHNl
Ci0gICAgI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNv
dXJjZSBvZiByYW5kb21uZXNzLiIKLSAgICAvLyBXQVJOSU5HOiBXaGVuIGFkZGluZyBuZXcgc291
cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUgcmFuZG9tbmVzcyBtdXN0Ci0gICAgLy8gICAgICAg
ICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQotI2VuZGlmCisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJhbmRvbURldmljZT4gZGV2aWNlOworICAgIGRldmljZS5nZXQoKS5jcnlwdG9n
cmFwaGljYWxseVJhbmRvbVZhbHVlcyhidWZmZXIsIGxlbmd0aCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5k
b21EZXZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwY2MzNDYzN2QwNDhjMGM1ZWFhZGIxMDYwNWI2N2E0
YTI1YzM0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2Uu
Y3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09P
R0xFLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYW5kb21EZXZpY2UuaCIKKworI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaWYgIU9TKERBUldJTikgJiYgT1Mo
VU5JWCkKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8
dW5pc3RkLmg+CisjZW5kaWYKKworI2lmIE9TKFdJTkRPV1MpCisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8vIHdpbmRvd3MuaCBtdXN0IGJlIGluY2x1ZGVkIGJl
Zm9yZSB3aW5jcnlwdC5oLgorI2VuZGlmCisKKyNpZiBPUyhEQVJXSU4pCisjaW5jbHVkZSAiQ29t
bW9uQ3J5cHRvU1BJLmgiCisjZW5kaWYKKworI2lmIE9TKExJTlVYKQorI2lmbmRlZiBfR05VX1NP
VVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisjaW5jbHVkZSA8bGludXgvcmFuZG9t
Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsK
KworI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKQoreworICAg
IENSQVNIKCk7Cit9CisKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRp
YyB2b2lkIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQoreworICAgIENSQVNIKCk7Cit9
CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoTElOVVgp
CitSYW5kb21EZXZpY2U6OlJhbmRvbURldmljZSgpCit7CisjaWYgT1MoVU5JWCkKKyAgICBpbnQg
cmV0ID0gMDsKKyAgICBkbyB7CisgICAgICAgIHJldCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9f
UkRPTkxZLCAwKTsKKyAgICB9IHdoaWxlIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpCisg
ICAgbV9mZCA9IHJldDsKKyAgICBpZiAobV9mZCA8IDApCisgICAgICAgIGNyYXNoVW5hYmxlVG9P
cGVuVVJhbmRvbSgpOyAvLyBXZSBuZWVkIC9kZXYvdXJhbmRvbSBmb3IgdGhpcyBBUEkgdG8gd29y
ay4uLgorI2VuZGlmCit9CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dT
KSAmJiAhT1MoTElOVVgpCitSYW5kb21EZXZpY2U6On5SYW5kb21EZXZpY2UoKQoreworI2lmIE9T
KFVOSVgpCisgICAgY2xvc2UobV9mZCk7CisjZW5kaWYKK30KKyNlbmRpZgorCisvLyBGSVhNRTog
TWFrZSB0aGlzIGNhbGwgZmFzdCBieSBjcmVhdGluZyB0aGUgcG9vbCBpbiBSYW5kb21EZXZpY2Uu
CisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTkwCit2b2lk
IFJhbmRvbURldmljZTo6Y3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hh
ciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lmIE9TKERBUldJTikKKyAgICBSRUxFQVNF
X0FTU0VSVCghQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5n
dGgpKTsKKyNlbGlmIE9TKFVOSVgpCisgICAgc3NpemVfdCBhbW91bnRSZWFkID0gMDsKKyAgICB3
aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRSZWFkKSA8IGxlbmd0aCkgeworI2lmIE9T
KExJTlVYKQorICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gc3lzY2FsbChTWVNfZ2V0cmFu
ZG9tLCBidWZmZXIsIGxlbmd0aCwgMCk7CisjZWxzZQorICAgICAgICBzc2l6ZV90IGN1cnJlbnRS
ZWFkID0gcmVhZChtX2ZkLCBidWZmZXIgKyBhbW91bnRSZWFkLCBsZW5ndGggLSBhbW91bnRSZWFk
KTsKKyNlbmRpZgorICAgICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGZvciBib3RoIEVBR0FJTiBh
bmQgRUlOVFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9kZXYvdXJhbmRvbQorICAgICAgICAvLyBp
cyBibG9ja2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5vbi1ibG9ja2luZy4KKyAgICAgICAgaWYg
KGN1cnJlbnRSZWFkID09IC0xKSB7CisgICAgICAgICAgICBpZiAoIShlcnJubyA9PSBFQUdBSU4g
fHwgZXJybm8gPT0gRUlOVFIpKQorICAgICAgICAgICAgICAgIGNyYXNoVW5hYmxlVG9SZWFkRnJv
bVVSYW5kb20oKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBhbW91bnRSZWFkICs9IGN1
cnJlbnRSZWFkOworICAgIH0KKyNlbGlmIE9TKFdJTkRPV1MpCisgICAgLy8gRklYTUU6IFdlIGNh
bm5vdCBlbnN1cmUgdGhhdCBDcnlwdG9ncmFwaGljIFNlcnZpY2UgUHJvdmlkZXIgY29udGV4dCBh
bmQgQ3J5cHRHZW5SYW5kb20gYXJlIHNhZmUgYWNyb3NzIHRocmVhZHMuCisgICAgLy8gSWYgaXQg
aXMgc2FmZSwgd2UgY2FuIGFjcXVpcmUgY29udGV4dCBwZXIgUmFuZG9tRGV2aWNlLgorICAgIGlm
ICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmbV9oQ3J5cHRQcm92LCAwLCBNU19ERUZfUFJPViwgUFJP
Vl9SU0FfRlVMTCwgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisgICAgICAgIENSQVNIKCk7CisgICAg
aWYgKCFDcnlwdEdlblJhbmRvbShtX2hDcnlwdFByb3YsIGxlbmd0aCwgYnVmZmVyKSkKKyAgICAg
ICAgQ1JBU0goKTsKKyAgICBDcnlwdFJlbGVhc2VDb250ZXh0KG1faENyeXB0UHJvdiwgMCk7Cisj
ZWxzZQorI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNv
dXJjZSBvZiByYW5kb21uZXNzLiIKKy8vIFdBUk5JTkc6IFdoZW4gYWRkaW5nIG5ldyBzb3VyY2Vz
IG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKKy8vICAgICAgICAgIGJlIG9m
IGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaCBiL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmljZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjRkMzEwYTkwMWQ0MGM2N2QxZGZiNDcxMjFhNzE0YTM0ODgyYzlhY2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaApAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmFuZG9tRGV2aWNlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSYW5kb21EZXZpY2UpOworcHVibGljOgorI2lmIE9TKERBUldJTikgfHwg
T1MoV0lORE9XUykgfHwgT1MoTElOVVgpCisgICAgUmFuZG9tRGV2aWNlKCkgPSBkZWZhdWx0Owor
I2Vsc2UKKyAgICBSYW5kb21EZXZpY2UoKTsKKyAgICB+UmFuZG9tRGV2aWNlKCk7CisjZW5kaWYK
KworICAgIC8vIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZmlsbCBidWZmZXIgd2l0aCByYW5k
b21uZXNzIGZyb20gdGhlIG9wZXJhdGluZworICAgIC8vIHN5c3RlbS4gUmF0aGVyIHRoYW4gY2Fs
bGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCBjb25zaWRlciBjYWxsaW5nCisgICAgLy8gY3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIgb3IgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1
ZXMuCisgICAgdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyh1bnNpZ25lZCBjaGFy
KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworCitwcml2YXRlOgorI2lmIE9TKERBUldJTikgfHwg
T1MoV0lORE9XUykgfHwgT1MoTElOVVgpCisjZWxpZiBPUyhVTklYKQorICAgIGludCBtX2ZkIHsg
LTEgfTsKKyNlbHNlCisjZXJyb3IgIlRoaXMgY29uZmlndXJhdGlvbiBkb2Vzbid0IGhhdmUgYSBz
dHJvbmcgc291cmNlIG9mIHJhbmRvbW5lc3MuIgorLy8gV0FSTklORzogV2hlbiBhZGRpbmcgbmV3
IHNvdXJjZXMgb2YgT1MgcmFuZG9tbmVzcywgdGhlIHJhbmRvbW5lc3MgbXVzdAorLy8gICAgICAg
ICAgYmUgb2YgY3J5cHRvZ3JhcGhpYyBxdWFsaXR5IQorI2VuZGlmCit9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305633</attachid>
            <date>2017-03-28 13:20:59 -0700</date>
            <delta_ts>2017-03-28 14:34:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170329052058.patch</filename>
            <type>text/plain</type>
            <size>14991</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY3NjEwOWY0MmY0NDE1NDFjMmY2YWMz
ODIyZTZlOTVmNzVmMGFmYTMuLjEwZDlmMDg1YTgwYjJjOWIyMjJhMTc5YzRiYjI0YzMxNDMwNzQ2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBNb3ZlIHBsYXRmb3JtVGhyZWFk
U2lnbmFsIHRvIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjU4YzdhYmI3ZDdjNjVjMTUwMzM3NjZiYmY1Y2M2ODFkNzNkZDY1Mi4uZmVjYjRhYTEyYmQ0
YzE5YmMwNjM5OTBkMzQzNDZjMzVjZmViYWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zODYsNiArMzg2LDggQEAKIAkJRkU4OTI1QjAxRDAwREFFQzAw
NDY5MDdFIC8qIEluZGVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLzsgfTsK
IAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsgfTsKKwkJ
RkM2RUMyQkYyMEY4NDk5NjlDNkE1QkUxIC8qIFJhbmRvbURldmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGMUIyNDg2MTlGNDEyMjk2RDFDMTlD
IC8qIFJhbmRvbURldmljZS5oICovOyB9OworCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyog
UmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC03ODQsNiArNzg2LDggQEAKIAkJRkU4OTI1QUYxRDAw
REFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmFuZG9tRGV2aWNlLmg7IHBhdGggPSBSYW5kb21E
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzhGNTk3Q0EyQTU3NDE3RkJB
QjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBSYW5kb21EZXZpY2UuY3BwOyBwYXRoID0gUmFuZG9tRGV2aWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA5Nyw2
ICsxMTAxLDggQEAKIAkJCQkwRkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmgg
Ki8sCiAJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovLAogCQkJ
CTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8sCisJCQkJMjRGMUIyNDg2
MTlGNDEyMjk2RDFDMTlDIC8qIFJhbmRvbURldmljZS5oICovLAorCQkJCUM4RjU5N0NBMkE1NzQx
N0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovLAogCQkJCUE4QTQ3MkZCMTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4QTQ3MkZDMTUxQTgyNUIwMDQx
MjNGRiAvKiBSYW5kb21OdW1iZXIuaCAqLywKIAkJCQlBOEE0NzJGRDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyU2VlZC5oICovLApAQCAtMTU0Myw2ICsxNTQ5LDcgQEAKIAkJCQkwRjlE
MzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGQzZFQzJCRjIwRjg0OTk2OUM2QTVCRTEgLyogUmFuZG9tRGV2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzQxNTE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQxNjE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVy
U2VlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJh
bmdlU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTE3OTgsNiArMTgwNSw3IEBACiAJCQkJRENFRTIy
MDMxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAg
LyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDE0MTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MUEx
NTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2ZWFlOTdiNjhlMGE1ZTkyOTU2MjY4NjA2
NTRkNzZmYzUxNTJhZi4uZjYyNmM2MzgyZTA4YjY4N2YyODk0MDljNzgzYWRjMWY2NzYzOGU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTk4LDYgKzk4LDcgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAgUkFNU2l6ZS5oCisgICAgUmFu
ZG9tRGV2aWNlLmgKICAgICBSYW5kb21OdW1iZXIuaAogICAgIFJhbmRvbU51bWJlclNlZWQuaAog
ICAgIFJhbmdlU2V0LmgKQEAgLTIyNiw2ICsyMjcsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBQ
YXJraW5nTG90LmNwcAogICAgIFByaW50U3RyZWFtLmNwcAogICAgIFJBTVNpemUuY3BwCisgICAg
UmFuZG9tRGV2aWNlLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWZDb3VudGVkTGVh
a0NvdW50ZXIuY3BwCiAgICAgUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L09TUmFuZG9tU291cmNlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcApp
bmRleCAzNzg3OTVkYzc3ODA0ZTBlMDQzNzM0MTNiMDA1NTFhMDM0ZDJkNjdlLi5jM2QwODk1Nzg2
MWU0NjljMGY1YzhhYmI1YWNiN2FiZjEyMDRlOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9PU1JhbmRvbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvT1NSYW5kb21Tb3VyY2Uu
Y3BwCkBAIC0yNiw3MyArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJP
U1JhbmRvbVNvdXJjZS5oIgogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8c3RkbGli
Lmg+Ci0KLSNpZiAhT1MoREFSV0lOKSAmJiBPUyhVTklYKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0j
aW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0jaWYgT1Mo
V0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d2luY3J5cHQuaD4gLy8g
d2luZG93cy5oIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIHdpbmNyeXB0LmguCi0jZW5kaWYKLQot
I2lmIE9TKERBUldJTikKLSNpbmNsdWRlICJDb21tb25DcnlwdG9TUEkuaCIKLSNlbmRpZgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SYW5kb21EZXZpY2Uu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiAhT1MoREFSV0lOKSAmJiBPUyhVTklYKQotTkVW
RVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFibGVU
b09wZW5VUmFuZG9tKCkKLXsKLSAgICBDUkFTSCgpOwotfQotCi1ORVZFUl9JTkxJTkUgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvUmVhZEZyb21VUmFuZG9t
KCkKLXsKLSAgICBDUkFTSCgpOwotfQotI2VuZGlmCi0gICAgCiB2b2lkIGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tVmFsdWVzRnJvbU9TKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0
aCkKIHsKLSNpZiBPUyhEQVJXSU4pCi0gICAgUkVMRUFTRV9BU1NFUlQoIUNDUmFuZG9tQ29weUJ5
dGVzKGtDQ1JhbmRvbURlZmF1bHQsIGJ1ZmZlciwgbGVuZ3RoKSk7Ci0jZWxpZiBPUyhVTklYKQot
ICAgIGludCBmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKLSAgICBpZiAo
ZmQgPCAwKQotICAgICAgICBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKTsgLy8gV2UgbmVlZCAv
ZGV2L3VyYW5kb20gZm9yIHRoaXMgQVBJIHRvIHdvcmsuLi4KLQotICAgIHNzaXplX3QgYW1vdW50
UmVhZCA9IDA7Ci0gICAgd2hpbGUgKHN0YXRpY19jYXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBs
ZW5ndGgpIHsKLSAgICAgICAgc3NpemVfdCBjdXJyZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciAr
IGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJlYWQpOwotICAgICAgICAvLyBXZSBuZWVkIHRv
IGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlOVFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9k
ZXYvdXJhbmRvbQotICAgICAgICAvLyBpcyBibG9ja2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5v
bi1ibG9ja2luZy4KLSAgICAgICAgaWYgKGN1cnJlbnRSZWFkID09IC0xKSB7Ci0gICAgICAgICAg
ICBpZiAoIShlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpKQotICAgICAgICAgICAg
ICAgIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBhbW91bnRSZWFkICs9IGN1cnJlbnRSZWFkOwotICAgIH0KLSAgICAKLSAgICBjbG9z
ZShmZCk7Ci0KLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0g
MDsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmhDcnlwdFByb3YsIDAsIE1TX0RFRl9Q
Uk9WLCBQUk9WX1JTQV9GVUxMLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgQ1JBU0go
KTsKLSAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIGxlbmd0aCwgYnVmZmVyKSkK
LSAgICAgICAgQ1JBU0goKTsKLSAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDcnlwdFByb3YsIDAp
OwotI2Vsc2UKLSAgICAjZXJyb3IgIlRoaXMgY29uZmlndXJhdGlvbiBkb2Vzbid0IGhhdmUgYSBz
dHJvbmcgc291cmNlIG9mIHJhbmRvbW5lc3MuIgotICAgIC8vIFdBUk5JTkc6IFdoZW4gYWRkaW5n
IG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKLSAgICAv
LyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkhCi0jZW5kaWYKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmFuZG9tRGV2aWNlPiBkZXZpY2U7CisgICAgZGV2aWNlLmdldCgp
LmNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmFuZG9tRGV2aWNlLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1JhbmRvbURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNiYjcyMzAxZWQwZmE5MGFmZTQ1NDRm
YTJjOWZkNGEwYTJlZDI0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmRv
bURldmljZS5jcHAKQEAgLTAsMCArMSwxMTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhbmRvbURldmljZS5oIgorCisj
aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiAhT1MoREFSV0lO
KSAmJiBPUyhVTklYKQorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4gLy8gd2luZG93cy5oIG11c3QgYmUgaW5j
bHVkZWQgYmVmb3JlIHdpbmNyeXB0LmguCisjZW5kaWYKKworI2lmIE9TKERBUldJTikKKyNpbmNs
dWRlICJDb21tb25DcnlwdG9TUEkuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lm
ICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKQoreworICAgIENSQVNI
KCk7Cit9CisKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lk
IGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQoreworICAgIENSQVNIKCk7Cit9CisjZW5k
aWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQorUmFuZG9tRGV2aWNlOjpSYW5k
b21EZXZpY2UoKQoreworI2lmIE9TKFVOSVgpCisgICAgaW50IHJldCA9IDA7CisgICAgZG8gewor
ICAgICAgICByZXQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7CisgICAgfSB3
aGlsZSAocmV0ID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKKyAgICBtX2ZkID0gcmV0OworICAg
IGlmIChtX2ZkIDwgMCkKKyAgICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdl
IG5lZWQgL2Rldi91cmFuZG9tIGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCisjZW5kaWYKK30KKyNl
bmRpZgorCisjaWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpCitSYW5kb21EZXZpY2U6On5S
YW5kb21EZXZpY2UoKQoreworI2lmIE9TKFVOSVgpCisgICAgY2xvc2UobV9mZCk7CisjZW5kaWYK
K30KKyNlbmRpZgorCisvLyBGSVhNRTogTWFrZSB0aGlzIGNhbGwgZmFzdCBieSBjcmVhdGluZyB0
aGUgcG9vbCBpbiBSYW5kb21EZXZpY2UuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMTkwCit2b2lkIFJhbmRvbURldmljZTo6Y3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lm
IE9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVCghQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFu
ZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKKyNlbGlmIE9TKFVOSVgpCisgICAgc3NpemVf
dCBhbW91bnRSZWFkID0gMDsKKyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRS
ZWFkKSA8IGxlbmd0aCkgeworICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZChtX2Zk
LCBidWZmZXIgKyBhbW91bnRSZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKKyAgICAgICAgLy8g
V2UgbmVlZCB0byBjaGVjayBmb3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNvbWUg
c3lzdGVtcyAvZGV2L3VyYW5kb20KKyAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90aGVy
cyBpdCBpcyBub24tYmxvY2tpbmcuCisgICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkgewor
ICAgICAgICAgICAgaWYgKCEoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkKKyAg
ICAgICAgICAgICAgICBjcmFzaFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKKyAgICB9CisjZWxp
ZiBPUyhXSU5ET1dTKQorICAgIC8vIEZJWE1FOiBXZSBjYW5ub3QgZW5zdXJlIHRoYXQgQ3J5cHRv
Z3JhcGhpYyBTZXJ2aWNlIFByb3ZpZGVyIGNvbnRleHQgYW5kIENyeXB0R2VuUmFuZG9tIGFyZSBz
YWZlIGFjcm9zcyB0aHJlYWRzLgorICAgIC8vIElmIGl0IGlzIHNhZmUsIHdlIGNhbiBhY3F1aXJl
IGNvbnRleHQgcGVyIFJhbmRvbURldmljZS4KKyAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQo
Jm1faENyeXB0UHJvdiwgMCwgTVNfREVGX1BST1YsIFBST1ZfUlNBX0ZVTEwsIENSWVBUX1ZFUklG
WUNPTlRFWFQpKQorICAgICAgICBDUkFTSCgpOworICAgIGlmICghQ3J5cHRHZW5SYW5kb20obV9o
Q3J5cHRQcm92LCBsZW5ndGgsIGJ1ZmZlcikpCisgICAgICAgIENSQVNIKCk7CisgICAgQ3J5cHRS
ZWxlYXNlQ29udGV4dChtX2hDcnlwdFByb3YsIDApOworI2Vsc2UKKyNlcnJvciAiVGhpcyBjb25m
aWd1cmF0aW9uIGRvZXNuJ3QgaGF2ZSBhIHN0cm9uZyBzb3VyY2Ugb2YgcmFuZG9tbmVzcy4iCisv
LyBXQVJOSU5HOiBXaGVuIGFkZGluZyBuZXcgc291cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUg
cmFuZG9tbmVzcyBtdXN0CisvLyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkh
CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmFuZG9tRGV2aWNl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjYzNmM5NDFl
MzlhODRkMzQ1NjBmZDliNjM4ZTlmMGUzNTE2NTBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvUmFuZG9tRGV2aWNlLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEdPT0dMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K2NsYXNzIFJhbmRvbURldmljZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFuZG9tRGV2
aWNlKTsKK3B1YmxpYzoKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCisgICAgUmFuZG9t
RGV2aWNlKCkgPSBkZWZhdWx0OworI2Vsc2UKKyAgICBSYW5kb21EZXZpY2UoKTsKKyAgICB+UmFu
ZG9tRGV2aWNlKCk7CisjZW5kaWYKKworICAgIC8vIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8g
ZmlsbCBidWZmZXIgd2l0aCByYW5kb21uZXNzIGZyb20gdGhlIG9wZXJhdGluZworICAgIC8vIHN5
c3RlbS4gUmF0aGVyIHRoYW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCBjb25zaWRl
ciBjYWxsaW5nCisgICAgLy8gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIgb3IgY3J5cHRv
Z3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMuCisgICAgdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRv
bVZhbHVlcyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpOworCitwcml2YXRl
OgorI2lmIE9TKERBUldJTikgfHwgT1MoV0lORE9XUykKKyNlbGlmIE9TKFVOSVgpCisgICAgaW50
IG1fZmQgeyAtMSB9OworI2Vsc2UKKyNlcnJvciAiVGhpcyBjb25maWd1cmF0aW9uIGRvZXNuJ3Qg
aGF2ZSBhIHN0cm9uZyBzb3VyY2Ugb2YgcmFuZG9tbmVzcy4iCisvLyBXQVJOSU5HOiBXaGVuIGFk
ZGluZyBuZXcgc291cmNlcyBvZiBPUyByYW5kb21uZXNzLCB0aGUgcmFuZG9tbmVzcyBtdXN0Cisv
LyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkhCisjZW5kaWYKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305645</attachid>
            <date>2017-03-28 14:34:48 -0700</date>
            <delta_ts>2017-04-03 00:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170329063446.patch</filename>
            <type>text/plain</type>
            <size>15017</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NDg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY3NjEwOWY0MmY0NDE1NDFjMmY2YWMz
ODIyZTZlOTVmNzVmMGFmYTMuLjEwZDlmMDg1YTgwYjJjOWIyMjJhMTc5YzRiYjI0YzMxNDMwNzQ2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDMtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wMy0yNSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBNb3ZlIHBsYXRmb3JtVGhyZWFk
U2lnbmFsIHRvIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjU4YzdhYmI3ZDdjNjVjMTUwMzM3NjZiYmY1Y2M2ODFkNzNkZDY1Mi4uZmVjYjRhYTEyYmQ0
YzE5YmMwNjM5OTBkMzQzNDZjMzVjZmViYWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zODYsNiArMzg2LDggQEAKIAkJRkU4OTI1QjAxRDAwREFFQzAw
NDY5MDdFIC8qIEluZGVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLzsgfTsK
IAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsgfTsKKwkJ
RkM2RUMyQkYyMEY4NDk5NjlDNkE1QkUxIC8qIFJhbmRvbURldmljZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRGMUIyNDg2MTlGNDEyMjk2RDFDMTlD
IC8qIFJhbmRvbURldmljZS5oICovOyB9OworCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyog
UmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC03ODQsNiArNzg2LDggQEAKIAkJRkU4OTI1QUYxRDAw
REFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluZGVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYz
MEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdGFja1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI0RjFCMjQ4NjE5RjQxMjI5NkQxQzE5QyAvKiBSYW5kb21EZXZpY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmFuZG9tRGV2aWNlLmg7IHBhdGggPSBSYW5kb21E
ZXZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzhGNTk3Q0EyQTU3NDE3RkJB
QjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBSYW5kb21EZXZpY2UuY3BwOyBwYXRoID0gUmFuZG9tRGV2aWNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA5Nyw2
ICsxMTAxLDggQEAKIAkJCQkwRkM0NDg4MjE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmgg
Ki8sCiAJCQkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovLAogCQkJ
CTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8sCisJCQkJMjRGMUIyNDg2
MTlGNDEyMjk2RDFDMTlDIC8qIFJhbmRvbURldmljZS5oICovLAorCQkJCUM4RjU5N0NBMkE1NzQx
N0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovLAogCQkJCUE4QTQ3MkZCMTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwICovLAogCQkJCUE4QTQ3MkZDMTUxQTgyNUIwMDQx
MjNGRiAvKiBSYW5kb21OdW1iZXIuaCAqLywKIAkJCQlBOEE0NzJGRDE1MUE4MjVCMDA0MTIzRkYg
LyogUmFuZG9tTnVtYmVyU2VlZC5oICovLApAQCAtMTU0Myw2ICsxNTQ5LDcgQEAKIAkJCQkwRjlE
MzM2MzE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzQ0ODgzMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGQzZFQzJCRjIwRjg0OTk2OUM2QTVCRTEgLyogUmFuZG9tRGV2aWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzQxNTE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEE0NzQxNjE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVy
U2VlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MjVDQUMxQzUwNDYxNjAwQUQ5NDNBIC8qIFJh
bmdlU2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTE3OTgsNiArMTgwNSw3IEBACiAJCQkJRENFRTIy
MDMxQ0VBNzU1MTAwMEMyMzk2IC8qIFBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlc01hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0
cmVhbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAg
LyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDE0MTUxQTgyNUIw
MDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MUEx
NTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggODU2ZWFlOTdiNjhlMGE1ZTkyOTU2MjY4NjA2
NTRkNzZmYzUxNTJhZi4uZjYyNmM2MzgyZTA4YjY4N2YyODk0MDljNzgzYWRjMWY2NzYzOGU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTk4LDYgKzk4LDcgQEAgc2V0KFdURl9IRUFERVJTCiAg
ICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAgUkFNU2l6ZS5oCisgICAgUmFu
ZG9tRGV2aWNlLmgKICAgICBSYW5kb21OdW1iZXIuaAogICAgIFJhbmRvbU51bWJlclNlZWQuaAog
ICAgIFJhbmdlU2V0LmgKQEAgLTIyNiw2ICsyMjcsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBQ
YXJraW5nTG90LmNwcAogICAgIFByaW50U3RyZWFtLmNwcAogICAgIFJBTVNpemUuY3BwCisgICAg
UmFuZG9tRGV2aWNlLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWZDb3VudGVkTGVh
a0NvdW50ZXIuY3BwCiAgICAgUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L09TUmFuZG9tU291cmNlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcApp
bmRleCAzNzg3OTVkYzc3ODA0ZTBlMDQzNzM0MTNiMDA1NTFhMDM0ZDJkNjdlLi5jM2QwODk1Nzg2
MWU0NjljMGY1YzhhYmI1YWNiN2FiZjEyMDRlOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9PU1JhbmRvbVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvT1NSYW5kb21Tb3VyY2Uu
Y3BwCkBAIC0yNiw3MyArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJP
U1JhbmRvbVNvdXJjZS5oIgogCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8c3RkbGli
Lmg+Ci0KLSNpZiAhT1MoREFSV0lOKSAmJiBPUyhVTklYKQotI2luY2x1ZGUgPGVycm5vLmg+Ci0j
aW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotCi0jaWYgT1Mo
V0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jaW5jbHVkZSA8d2luY3J5cHQuaD4gLy8g
d2luZG93cy5oIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIHdpbmNyeXB0LmguCi0jZW5kaWYKLQot
I2lmIE9TKERBUldJTikKLSNpbmNsdWRlICJDb21tb25DcnlwdG9TUEkuaCIKLSNlbmRpZgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9SYW5kb21EZXZpY2Uu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLSNpZiAhT1MoREFSV0lOKSAmJiBPUyhVTklYKQotTkVW
RVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFibGVU
b09wZW5VUmFuZG9tKCkKLXsKLSAgICBDUkFTSCgpOwotfQotCi1ORVZFUl9JTkxJTkUgTk9fUkVU
VVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvUmVhZEZyb21VUmFuZG9t
KCkKLXsKLSAgICBDUkFTSCgpOwotfQotI2VuZGlmCi0gICAgCiB2b2lkIGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tVmFsdWVzRnJvbU9TKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0
aCkKIHsKLSNpZiBPUyhEQVJXSU4pCi0gICAgUkVMRUFTRV9BU1NFUlQoIUNDUmFuZG9tQ29weUJ5
dGVzKGtDQ1JhbmRvbURlZmF1bHQsIGJ1ZmZlciwgbGVuZ3RoKSk7Ci0jZWxpZiBPUyhVTklYKQot
ICAgIGludCBmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZLCAwKTsKLSAgICBpZiAo
ZmQgPCAwKQotICAgICAgICBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKTsgLy8gV2UgbmVlZCAv
ZGV2L3VyYW5kb20gZm9yIHRoaXMgQVBJIHRvIHdvcmsuLi4KLQotICAgIHNzaXplX3QgYW1vdW50
UmVhZCA9IDA7Ci0gICAgd2hpbGUgKHN0YXRpY19jYXN0PHNpemVfdD4oYW1vdW50UmVhZCkgPCBs
ZW5ndGgpIHsKLSAgICAgICAgc3NpemVfdCBjdXJyZW50UmVhZCA9IHJlYWQoZmQsIGJ1ZmZlciAr
IGFtb3VudFJlYWQsIGxlbmd0aCAtIGFtb3VudFJlYWQpOwotICAgICAgICAvLyBXZSBuZWVkIHRv
IGNoZWNrIGZvciBib3RoIEVBR0FJTiBhbmQgRUlOVFIgc2luY2Ugb24gc29tZSBzeXN0ZW1zIC9k
ZXYvdXJhbmRvbQotICAgICAgICAvLyBpcyBibG9ja2luZyBhbmQgb24gb3RoZXJzIGl0IGlzIG5v
bi1ibG9ja2luZy4KLSAgICAgICAgaWYgKGN1cnJlbnRSZWFkID09IC0xKSB7Ci0gICAgICAgICAg
ICBpZiAoIShlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIpKQotICAgICAgICAgICAg
ICAgIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBhbW91bnRSZWFkICs9IGN1cnJlbnRSZWFkOwotICAgIH0KLSAgICAKLSAgICBjbG9z
ZShmZCk7Ci0KLSNlbGlmIE9TKFdJTkRPV1MpCi0gICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0g
MDsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmhDcnlwdFByb3YsIDAsIE1TX0RFRl9Q
Uk9WLCBQUk9WX1JTQV9GVUxMLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgQ1JBU0go
KTsKLSAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIGxlbmd0aCwgYnVmZmVyKSkK
LSAgICAgICAgQ1JBU0goKTsKLSAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDcnlwdFByb3YsIDAp
OwotI2Vsc2UKLSAgICAjZXJyb3IgIlRoaXMgY29uZmlndXJhdGlvbiBkb2Vzbid0IGhhdmUgYSBz
dHJvbmcgc291cmNlIG9mIHJhbmRvbW5lc3MuIgotICAgIC8vIFdBUk5JTkc6IFdoZW4gYWRkaW5n
IG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKLSAgICAv
LyAgICAgICAgICBiZSBvZiBjcnlwdG9ncmFwaGljIHF1YWxpdHkhCi0jZW5kaWYKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmFuZG9tRGV2aWNlPiBkZXZpY2U7CisgICAgZGV2aWNlLmdldCgp
LmNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGJ1ZmZlciwgbGVuZ3RoKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmFuZG9tRGV2aWNlLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1JhbmRvbURldmljZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmViNzQyZDBmZGY2NmVkZmU1MzRlOWFm
MmEyNGNjZjBkYjRhYTNmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JhbmRv
bURldmljZS5jcHAKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhbmRvbURldmljZS5oIgorCisj
aW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZiAhT1MoREFSV0lO
KSAmJiBPUyhVTklYKQorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNp
bmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaWYgT1MoV0lORE9XUykKKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4gLy8gd2luZG93cy5oIG11c3QgYmUgaW5j
bHVkZWQgYmVmb3JlIHdpbmNyeXB0LmguCisjZW5kaWYKKworI2lmIE9TKERBUldJTikKKyNpbmNs
dWRlICJDb21tb25DcnlwdG9TUEkuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworI2lm
ICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCitORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19D
UkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5kb20oKQoreworICAgIENSQVNI
KCk7Cit9CisKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lk
IGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQoreworICAgIENSQVNIKCk7Cit9CisjZW5k
aWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhXSU5ET1dTKQorUmFuZG9tRGV2aWNlOjpSYW5k
b21EZXZpY2UoKQoreworI2lmIE9TKFVOSVgpCisgICAgaW50IHJldCA9IDA7CisgICAgZG8gewor
ICAgICAgICByZXQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSwgMCk7CisgICAgfSB3
aGlsZSAocmV0ID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKKyAgICBtX2ZkID0gcmV0OworICAg
IGlmIChtX2ZkIDwgMCkKKyAgICAgICAgY3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdl
IG5lZWQgL2Rldi91cmFuZG9tIGZvciB0aGlzIEFQSSB0byB3b3JrLi4uCisjZW5kaWYKK30KKyNl
bmRpZgorCisjaWYgIU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpCitSYW5kb21EZXZpY2U6On5S
YW5kb21EZXZpY2UoKQoreworI2lmIE9TKFVOSVgpCisgICAgY2xvc2UobV9mZCk7CisjZW5kaWYK
K30KKyNlbmRpZgorCisvLyBGSVhNRTogTWFrZSB0aGlzIGNhbGwgZmFzdCBieSBjcmVhdGluZyB0
aGUgcG9vbCBpbiBSYW5kb21EZXZpY2UuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMTkwCit2b2lkIFJhbmRvbURldmljZTo6Y3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21WYWx1ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQoreworI2lm
IE9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVCghQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFu
ZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKKyNlbGlmIE9TKFVOSVgpCisgICAgc3NpemVf
dCBhbW91bnRSZWFkID0gMDsKKyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRS
ZWFkKSA8IGxlbmd0aCkgeworICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZChtX2Zk
LCBidWZmZXIgKyBhbW91bnRSZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKKyAgICAgICAgLy8g
V2UgbmVlZCB0byBjaGVjayBmb3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNvbWUg
c3lzdGVtcyAvZGV2L3VyYW5kb20KKyAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90aGVy
cyBpdCBpcyBub24tYmxvY2tpbmcuCisgICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkgewor
ICAgICAgICAgICAgaWYgKCEoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkKKyAg
ICAgICAgICAgICAgICBjcmFzaFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgYW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKKyAgICB9CisjZWxp
ZiBPUyhXSU5ET1dTKQorICAgIC8vIEZJWE1FOiBXZSBjYW5ub3QgZW5zdXJlIHRoYXQgQ3J5cHRv
Z3JhcGhpYyBTZXJ2aWNlIFByb3ZpZGVyIGNvbnRleHQgYW5kIENyeXB0R2VuUmFuZG9tIGFyZSBz
YWZlIGFjcm9zcyB0aHJlYWRzLgorICAgIC8vIElmIGl0IGlzIHNhZmUsIHdlIGNhbiBhY3F1aXJl
IGNvbnRleHQgcGVyIFJhbmRvbURldmljZS4KKyAgICBIQ1JZUFRQUk9WIGhDcnlwdFByb3YgPSAw
OworICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmaENyeXB0UHJvdiwgMCwgTVNfREVGX1BS
T1YsIFBST1ZfUlNBX0ZVTEwsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQorICAgICAgICBDUkFTSCgp
OworICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgbGVuZ3RoLCBidWZmZXIpKQor
ICAgICAgICBDUkFTSCgpOworICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENyeXB0UHJvdiwgMCk7
CisjZWxzZQorI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25n
IHNvdXJjZSBvZiByYW5kb21uZXNzLiIKKy8vIFdBUk5JTkc6IFdoZW4gYWRkaW5nIG5ldyBzb3Vy
Y2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKKy8vICAgICAgICAgIGJl
IG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaCBiL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURldmlj
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2NjM2Yzk0MWUzOWE4NGQzNDU2MGZkOWI2MzhlOWYwZTM1MTY1MGEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaApAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmFuZG9tRGV2aWNlIHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSYW5kb21EZXZpY2UpOworcHVibGljOgorI2lmIE9TKERBUldJTikg
fHwgT1MoV0lORE9XUykKKyAgICBSYW5kb21EZXZpY2UoKSA9IGRlZmF1bHQ7CisjZWxzZQorICAg
IFJhbmRvbURldmljZSgpOworICAgIH5SYW5kb21EZXZpY2UoKTsKKyNlbmRpZgorCisgICAgLy8g
VGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byBmaWxsIGJ1ZmZlciB3aXRoIHJhbmRvbW5lc3MgZnJv
bSB0aGUgb3BlcmF0aW5nCisgICAgLy8gc3lzdGVtLiBSYXRoZXIgdGhhbiBjYWxsaW5nIHRoaXMg
ZnVuY3Rpb24gZGlyZWN0bHksIGNvbnNpZGVyIGNhbGxpbmcKKyAgICAvLyBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlciBvciBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcy4KKyAgICB2
b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHVuc2lnbmVkIGNoYXIqIGJ1ZmZlciwg
c2l6ZV90IGxlbmd0aCk7CisKK3ByaXZhdGU6CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dT
KQorI2VsaWYgT1MoVU5JWCkKKyAgICBpbnQgbV9mZCB7IC0xIH07CisjZWxzZQorI2Vycm9yICJU
aGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNvdXJjZSBvZiByYW5kb21u
ZXNzLiIKKy8vIFdBUk5JTkc6IFdoZW4gYWRkaW5nIG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRvbW5l
c3MsIHRoZSByYW5kb21uZXNzIG11c3QKKy8vICAgICAgICAgIGJlIG9mIGNyeXB0b2dyYXBoaWMg
cXVhbGl0eSEKKyNlbmRpZgorfTsKKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306066</attachid>
            <date>2017-04-03 00:38:52 -0700</date>
            <delta_ts>2017-04-03 07:33:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170095-20170403163851.patch</filename>
            <type>text/plain</type>
            <size>14963</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0NzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0OWRkZGNmZDcyOGM3YmI1ZTYxY2Fh
NzMyZmY3NGUzZmU1N2E0MDEuLjNjNmRmZmRlNzAyM2QyNjU5OGY3YjgxNWFlMGYyYWFiYWM2MGMw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTctMDQtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gSW50cm9kdWNlIFdURjo6UmFuZG9t
RGV2aWNlIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDA5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVj
ZSBSYW5kb21EZXZpY2UsIHdoaWNoIGtlZXBzIC9kZXYvdXJhbmRvbSBvcGVuZWQKKyAgICAgICAg
dG8gYXZvaWQgcmVwZWF0ZWRseSBvcGVuIGFuZCBjbG9zZSB1cmFuZG9tIGZpbGUgZGVzY3JpcHRv
ciBpbiBMaW51eC4KKworICAgICAgICBUaGUgcHVycG9zZSBpcyBzaW1pbGFyIHRvIHN0ZDo6cmFu
ZG9tX2RldmljZSwgYnV0IFdURjo6UmFuZG9tRGV2aWNlIGV4cGxpY2l0bHkKKyAgICAgICAgYXZv
aWRzIHVzaW5nIEFSQzQsIHdoaWNoIGlzIHJlY2VudGx5IGF0dGVtcHRlZCB0byBiZSByZW1vdmVk
IGZyb20gdGhlIFdlYktpdAorICAgICAgICB0cmVlWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcvcjIxNDMyOQorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9PU1JhbmRvbVNvdXJjZS5jcHA6CisgICAgICAgIChXVEY6OmNyeXB0b2dyYXBoaWNhbGx5UmFu
ZG9tVmFsdWVzRnJvbU9TKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9t
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJhbmRvbSk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JhbmRvbURldmljZS5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XVEYvd3RmL09TUmFuZG9tU291cmNlLmNwcC4KKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFi
bGVUb09wZW5VUmFuZG9tKToKKyAgICAgICAgKFdURjo6Y3Jhc2hVbmFibGVUb1JlYWRGcm9tVVJh
bmRvbSk6CisgICAgICAgIChXVEY6OlJhbmRvbURldmljZTo6UmFuZG9tRGV2aWNlKToKKyAgICAg
ICAgKFdURjo6UmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKToKKyAgICAgICAgKFdURjo6UmFu
ZG9tRGV2aWNlOjpjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcyk6CisgICAgICAgICogd3Rm
L1JhbmRvbURldmljZS5oOiBBZGRlZC4KKwogMjAxNy0wNC0wMSAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBjbWFrZSBidWlsZGZpeCBhZnRlciAy
MTQ1ODYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzI1
ZTFiYmM3MjY3NzZiMzVmM2I4ZDUxMjAxODUxMjI3NWM5MzZhLi5mNThmMTliNTZkMzNjYjg4YTZm
YjQ5ZDZlNWYzYjYwOTc4NmJjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTM4OCw2ICszODgsOCBAQAogCQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0Ug
LyogSW5kZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovOyB9OwogCQlGRURB
Q0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyog
U3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OworCQlGQzZFQzJC
RjIwRjg0OTk2OUM2QTVCRTEgLyogUmFuZG9tRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNEYxQjI0ODYxOUY0MTIyOTZEMUMxOUMgLyogUmFu
ZG9tRGV2aWNlLmggKi87IH07CisJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5kb21E
ZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzhGNTk3Q0EyQTU3NDE3RkJBQjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87IH07CiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KQEAgLTc4OCw2ICs3OTAsOCBAQAogCQlGRTg5MjVBRjFEMDBEQUVDMDA0
NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5k
ZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFD
RDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjRGMUIyNDg2MTlGNDEyMjk2RDFDMTlDIC8qIFJhbmRvbURldmljZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBSYW5kb21EZXZpY2UuaDsgcGF0aCA9IFJhbmRvbURldmljZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOEY1OTdDQTJBNTc0MTdGQkFCOTJGRDYg
LyogUmFuZG9tRGV2aWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFJhbmRvbURldmljZS5jcHA7IHBhdGggPSBSYW5kb21EZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMTAyLDYgKzExMDYs
OCBAQAogCQkJCTBGQzQ0ODgyMTZGRTlGRTEwMDg0NEJFOSAvKiBQcm9jZXNzSUQuaCAqLywKIAkJ
CQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8sCiAJCQkJMTQzRjYx
MUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLywKKwkJCQkyNEYxQjI0ODYxOUY0MTIy
OTZEMUMxOUMgLyogUmFuZG9tRGV2aWNlLmggKi8sCisJCQkJQzhGNTk3Q0EyQTU3NDE3RkJBQjky
RkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi8sCiAJCQkJQThBNDcyRkIxNTFBODI1QjAwNDEyM0ZG
IC8qIFJhbmRvbU51bWJlci5jcHAgKi8sCiAJCQkJQThBNDcyRkMxNTFBODI1QjAwNDEyM0ZGIC8q
IFJhbmRvbU51bWJlci5oICovLAogCQkJCUE4QTQ3MkZEMTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5k
b21OdW1iZXJTZWVkLmggKi8sCkBAIC0xNTUwLDYgKzE1NTYsNyBAQAogCQkJCTBGOUQzMzYzMTY1
REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNDQ4
ODMxNkZFOUZFMTAwODQ0QkU5IC8qIFByb2Nlc3NJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQz
RjYxMjAxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZD
NkVDMkJGMjBGODQ5OTY5QzZBNUJFMSAvKiBSYW5kb21EZXZpY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QTQ3NDE1MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3NDE2MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXJTZWVkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjcyNUNBQzFDNTA0NjE2MDBBRDk0M0EgLyogUmFuZ2VTZXQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTgwNiw2ICsxODEzLDcgQEAKIAkJCQlEQ0VFMjIwMzFDRUE3
NTUxMDAwQzIzOTYgLyogUGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFuZ3VhZ2VzTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY5RDMzNjIxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXpl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5k
b21EZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MTQxNTFBODI1QjAwNDEyM0ZG
IC8qIFJhbmRvbU51bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQxQTE1MUE4MjVC
MDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAxMWYyODNkNzBhMTJmYWY4ZGFhMDYxYjVlOTY5ZWQ1NTZl
YWYzNDNkLi5hMzQxOTExOWNhNzFlZGRmOTU1M2NiMzBhNzZhMmE4NTVmZWJhMmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtOTgsNiArOTgsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBQcmlu
dFN0cmVhbS5oCiAgICAgUHJvY2Vzc0lELmgKICAgICBSQU1TaXplLmgKKyAgICBSYW5kb21EZXZp
Y2UuaAogICAgIFJhbmRvbU51bWJlci5oCiAgICAgUmFuZG9tTnVtYmVyU2VlZC5oCiAgICAgUmFu
Z2UuaApAQCAtMjI3LDYgKzIyOCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFBhcmtpbmdMb3Qu
Y3BwCiAgICAgUHJpbnRTdHJlYW0uY3BwCiAgICAgUkFNU2l6ZS5jcHAKKyAgICBSYW5kb21EZXZp
Y2UuY3BwCiAgICAgUmFuZG9tTnVtYmVyLmNwcAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5j
cHAKICAgICBSdW5Mb29wLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT1NSYW5kb21T
b3VyY2UuY3BwIGIvU291cmNlL1dURi93dGYvT1NSYW5kb21Tb3VyY2UuY3BwCmluZGV4IDM3ODc5
NWRjNzc4MDRlMGUwNDM3MzQxM2IwMDU1MWEwMzRkMmQ2N2UuLmMzZDA4OTU3ODYxZTQ2OWMwZjVj
OGFiYjVhY2I3YWJmMTIwNGU5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09TUmFuZG9t
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU1JhbmRvbVNvdXJjZS5jcHAKQEAgLTI2
LDczICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk9TUmFuZG9tU291
cmNlLmgiCiAKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotI2lm
ICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxm
Y250bC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLSNpZiBPUyhXSU5ET1dTKQot
I2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmgg
bXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgd2luY3J5cHQuaC4KLSNlbmRpZgotCi0jaWYgT1MoREFS
V0lOKQotI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1NQSS5oIgotI2VuZGlmCisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1JhbmRvbURldmljZS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAotI2lmICFPUyhEQVJXSU4pICYmIE9TKFVOSVgpCi1ORVZFUl9JTkxJTkUg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaFVuYWJsZVRvT3BlblVSYW5k
b20oKQotewotICAgIENSQVNIKCk7Ci19Ci0KLU5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHN0YXRpYyB2b2lkIGNyYXNoVW5hYmxlVG9SZWFkRnJvbVVSYW5kb20oKQotewotICAg
IENSQVNIKCk7Ci19Ci0jZW5kaWYKLSAgICAKIHZvaWQgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21W
YWx1ZXNGcm9tT1ModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQogewotI2lm
IE9TKERBUldJTikKLSAgICBSRUxFQVNFX0FTU0VSVCghQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFu
ZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKLSNlbGlmIE9TKFVOSVgpCi0gICAgaW50IGZk
ID0gb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFksIDApOwotICAgIGlmIChmZCA8IDApCi0g
ICAgICAgIGNyYXNoVW5hYmxlVG9PcGVuVVJhbmRvbSgpOyAvLyBXZSBuZWVkIC9kZXYvdXJhbmRv
bSBmb3IgdGhpcyBBUEkgdG8gd29yay4uLgotCi0gICAgc3NpemVfdCBhbW91bnRSZWFkID0gMDsK
LSAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91bnRSZWFkKSA8IGxlbmd0aCkgewot
ICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZChmZCwgYnVmZmVyICsgYW1vdW50UmVh
ZCwgbGVuZ3RoIC0gYW1vdW50UmVhZCk7Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgZm9y
IGJvdGggRUFHQUlOIGFuZCBFSU5UUiBzaW5jZSBvbiBzb21lIHN5c3RlbXMgL2Rldi91cmFuZG9t
Ci0gICAgICAgIC8vIGlzIGJsb2NraW5nIGFuZCBvbiBvdGhlcnMgaXQgaXMgbm9uLWJsb2NraW5n
LgotICAgICAgICBpZiAoY3VycmVudFJlYWQgPT0gLTEpIHsKLSAgICAgICAgICAgIGlmICghKGVy
cm5vID09IEVBR0FJTiB8fCBlcnJubyA9PSBFSU5UUikpCi0gICAgICAgICAgICAgICAgY3Jhc2hV
bmFibGVUb1JlYWRGcm9tVVJhbmRvbSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGFt
b3VudFJlYWQgKz0gY3VycmVudFJlYWQ7Ci0gICAgfQotICAgIAotICAgIGNsb3NlKGZkKTsKLQot
I2VsaWYgT1MoV0lORE9XUykKLSAgICBIQ1JZUFRQUk9WIGhDcnlwdFByb3YgPSAwOwotICAgIGlm
ICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmaENyeXB0UHJvdiwgMCwgTVNfREVGX1BST1YsIFBST1Zf
UlNBX0ZVTEwsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICBDUkFTSCgpOwotICAgIGlm
ICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgbGVuZ3RoLCBidWZmZXIpKQotICAgICAgICBD
UkFTSCgpOwotICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENyeXB0UHJvdiwgMCk7Ci0jZWxzZQot
ICAgICNlcnJvciAiVGhpcyBjb25maWd1cmF0aW9uIGRvZXNuJ3QgaGF2ZSBhIHN0cm9uZyBzb3Vy
Y2Ugb2YgcmFuZG9tbmVzcy4iCi0gICAgLy8gV0FSTklORzogV2hlbiBhZGRpbmcgbmV3IHNvdXJj
ZXMgb2YgT1MgcmFuZG9tbmVzcywgdGhlIHJhbmRvbW5lc3MgbXVzdAotICAgIC8vICAgICAgICAg
IGJlIG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKLSNlbmRpZgorICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSYW5kb21EZXZpY2U+IGRldmljZTsKKyAgICBkZXZpY2UuZ2V0KCkuY3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21WYWx1ZXMoYnVmZmVyLCBsZW5ndGgpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuY3BwIGIvU291cmNlL1dURi93dGYvUmFuZG9t
RGV2aWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWQ2MDU3ODgxMTkxYzRjZjFhZGIzYzUzNTY3ZTNkNjM2
ZDZhNjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUmFuZG9tRGV2aWNlLmNw
cApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFuZG9tRGV2aWNlLmgiCisKKyNpbmNsdWRlIDxz
dGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2lmICFPUyhEQVJXSU4pICYmIE9TKFVO
SVgpCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVu
aXN0ZC5oPgorI2VuZGlmCisKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4K
KyNpbmNsdWRlIDx3aW5jcnlwdC5oPiAvLyB3aW5kb3dzLmggbXVzdCBiZSBpbmNsdWRlZCBiZWZv
cmUgd2luY3J5cHQuaC4KKyNlbmRpZgorCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgIkNvbW1v
bkNyeXB0b1NQSS5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgIU9TKERBUldJ
TikgJiYgT1MoVU5JWCkKK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRp
YyB2b2lkIGNyYXNoVW5hYmxlVG9PcGVuVVJhbmRvbSgpCit7CisgICAgQ1JBU0goKTsKK30KKwor
TkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2hVbmFi
bGVUb1JlYWRGcm9tVVJhbmRvbSgpCit7CisgICAgQ1JBU0goKTsKK30KKyNlbmRpZgorCisjaWYg
IU9TKERBUldJTikgJiYgIU9TKFdJTkRPV1MpCitSYW5kb21EZXZpY2U6OlJhbmRvbURldmljZSgp
Cit7CisgICAgaW50IHJldCA9IDA7CisgICAgZG8geworICAgICAgICByZXQgPSBvcGVuKCIvZGV2
L3VyYW5kb20iLCBPX1JET05MWSwgMCk7CisgICAgfSB3aGlsZSAocmV0ID09IC0xICYmIGVycm5v
ID09IEVJTlRSKTsKKyAgICBtX2ZkID0gcmV0OworICAgIGlmIChtX2ZkIDwgMCkKKyAgICAgICAg
Y3Jhc2hVbmFibGVUb09wZW5VUmFuZG9tKCk7IC8vIFdlIG5lZWQgL2Rldi91cmFuZG9tIGZvciB0
aGlzIEFQSSB0byB3b3JrLi4uCit9CisjZW5kaWYKKworI2lmICFPUyhEQVJXSU4pICYmICFPUyhX
SU5ET1dTKQorUmFuZG9tRGV2aWNlOjp+UmFuZG9tRGV2aWNlKCkKK3sKKyAgICBjbG9zZShtX2Zk
KTsKK30KKyNlbmRpZgorCisvLyBGSVhNRTogTWFrZSB0aGlzIGNhbGwgZmFzdCBieSBjcmVhdGlu
ZyB0aGUgcG9vbCBpbiBSYW5kb21EZXZpY2UuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcwMTkwCit2b2lkIFJhbmRvbURldmljZTo6Y3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hhciogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQorewor
I2lmIE9TKERBUldJTikKKyAgICBSRUxFQVNFX0FTU0VSVCghQ0NSYW5kb21Db3B5Qnl0ZXMoa0ND
UmFuZG9tRGVmYXVsdCwgYnVmZmVyLCBsZW5ndGgpKTsKKyNlbGlmIE9TKFVOSVgpCisgICAgc3Np
emVfdCBhbW91bnRSZWFkID0gMDsKKyAgICB3aGlsZSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhbW91
bnRSZWFkKSA8IGxlbmd0aCkgeworICAgICAgICBzc2l6ZV90IGN1cnJlbnRSZWFkID0gcmVhZCht
X2ZkLCBidWZmZXIgKyBhbW91bnRSZWFkLCBsZW5ndGggLSBhbW91bnRSZWFkKTsKKyAgICAgICAg
Ly8gV2UgbmVlZCB0byBjaGVjayBmb3IgYm90aCBFQUdBSU4gYW5kIEVJTlRSIHNpbmNlIG9uIHNv
bWUgc3lzdGVtcyAvZGV2L3VyYW5kb20KKyAgICAgICAgLy8gaXMgYmxvY2tpbmcgYW5kIG9uIG90
aGVycyBpdCBpcyBub24tYmxvY2tpbmcuCisgICAgICAgIGlmIChjdXJyZW50UmVhZCA9PSAtMSkg
eworICAgICAgICAgICAgaWYgKCEoZXJybm8gPT0gRUFHQUlOIHx8IGVycm5vID09IEVJTlRSKSkK
KyAgICAgICAgICAgICAgICBjcmFzaFVuYWJsZVRvUmVhZEZyb21VUmFuZG9tKCk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgYW1vdW50UmVhZCArPSBjdXJyZW50UmVhZDsKKyAgICB9Cisj
ZWxpZiBPUyhXSU5ET1dTKQorICAgIC8vIEZJWE1FOiBXZSBjYW5ub3QgZW5zdXJlIHRoYXQgQ3J5
cHRvZ3JhcGhpYyBTZXJ2aWNlIFByb3ZpZGVyIGNvbnRleHQgYW5kIENyeXB0R2VuUmFuZG9tIGFy
ZSBzYWZlIGFjcm9zcyB0aHJlYWRzLgorICAgIC8vIElmIGl0IGlzIHNhZmUsIHdlIGNhbiBhY3F1
aXJlIGNvbnRleHQgcGVyIFJhbmRvbURldmljZS4KKyAgICBIQ1JZUFRQUk9WIGhDcnlwdFByb3Yg
PSAwOworICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmaENyeXB0UHJvdiwgMCwgTVNfREVG
X1BST1YsIFBST1ZfUlNBX0ZVTEwsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQorICAgICAgICBDUkFT
SCgpOworICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgbGVuZ3RoLCBidWZmZXIp
KQorICAgICAgICBDUkFTSCgpOworICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENyeXB0UHJvdiwg
MCk7CisjZWxzZQorI2Vycm9yICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ry
b25nIHNvdXJjZSBvZiByYW5kb21uZXNzLiIKKy8vIFdBUk5JTkc6IFdoZW4gYWRkaW5nIG5ldyBz
b3VyY2VzIG9mIE9TIHJhbmRvbW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKKy8vICAgICAgICAg
IGJlIG9mIGNyeXB0b2dyYXBoaWMgcXVhbGl0eSEKKyNlbmRpZgorfQorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaCBiL1NvdXJjZS9XVEYvd3RmL1JhbmRvbURl
dmljZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg2NjM2Yzk0MWUzOWE4NGQzNDU2MGZkOWI2MzhlOWYwZTM1MTY1
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5kb21EZXZpY2UuaApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmFuZG9tRGV2aWNlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSYW5kb21EZXZpY2UpOworcHVibGljOgorI2lmIE9TKERBUldJ
TikgfHwgT1MoV0lORE9XUykKKyAgICBSYW5kb21EZXZpY2UoKSA9IGRlZmF1bHQ7CisjZWxzZQor
ICAgIFJhbmRvbURldmljZSgpOworICAgIH5SYW5kb21EZXZpY2UoKTsKKyNlbmRpZgorCisgICAg
Ly8gVGhpcyBmdW5jdGlvbiBhdHRlbXB0cyB0byBmaWxsIGJ1ZmZlciB3aXRoIHJhbmRvbW5lc3Mg
ZnJvbSB0aGUgb3BlcmF0aW5nCisgICAgLy8gc3lzdGVtLiBSYXRoZXIgdGhhbiBjYWxsaW5nIHRo
aXMgZnVuY3Rpb24gZGlyZWN0bHksIGNvbnNpZGVyIGNhbGxpbmcKKyAgICAvLyBjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlciBvciBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVlcy4KKyAg
ICB2b2lkIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKHVuc2lnbmVkIGNoYXIqIGJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCk7CisKK3ByaXZhdGU6CisjaWYgT1MoREFSV0lOKSB8fCBPUyhXSU5E
T1dTKQorI2VsaWYgT1MoVU5JWCkKKyAgICBpbnQgbV9mZCB7IC0xIH07CisjZWxzZQorI2Vycm9y
ICJUaGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBoYXZlIGEgc3Ryb25nIHNvdXJjZSBvZiByYW5k
b21uZXNzLiIKKy8vIFdBUk5JTkc6IFdoZW4gYWRkaW5nIG5ldyBzb3VyY2VzIG9mIE9TIHJhbmRv
bW5lc3MsIHRoZSByYW5kb21uZXNzIG11c3QKKy8vICAgICAgICAgIGJlIG9mIGNyeXB0b2dyYXBo
aWMgcXVhbGl0eSEKKyNlbmRpZgorfTsKKworfQo=
</data>
<flag name="review"
          id="327440"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>