<?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>153584</bug_id>
          
          <creation_ts>2016-01-27 22:47:58 -0800</creation_ts>
          <short_desc>Enable SamplingProfiler on POSIX environment</short_desc>
          <delta_ts>2016-01-30 04:54:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>joepeck</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159650</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-27 22:47:58 -0800</bug_when>
    <thetext>Discussed with Saam, and my rough design is as follows.

= Suspend
1. in the JS thread, install sigaction to the JS execution thread (This should be done in the constructor of the MachineThread)
2. in the profiler, emit signal with pthread_kill and wait with POSIX semaphore
3. in the signal handler, up the POSIX semaphore. Use sem_post because it is the async-signal-safe function in the UNIX environment[1].
4. in the signal handler, perform sigsuspend to stop the thread until being resumed.
5. in the profiler, we can be waken up from the semaphore because (3) ups.

[1]: http://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04_03

NOTE:
Be careful to sigaction timing. Should not emit pthread_kill for the thread that does not install signal handlers yet. (But in the current case, it should not be possible).

= Resume
1. in the profiler, emit signal and wait on the semaphore
2. in the signal handler, it is waken up from the sigsuspend
3. in the signal handler, up the semaphore
4. in the profiler, the profiler is waken up from the semaphore. It is ensured that the given thread is resumed by the signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159722</commentid>
    <comment_count>1</comment_count>
      <attachid>270116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 08:29:53 -0800</bug_when>
    <thetext>Created attachment 270116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159728</commentid>
    <comment_count>2</comment_count>
      <attachid>270116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 08:53:39 -0800</bug_when>
    <thetext>Comment on attachment 270116
Patch

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

some notes. I&apos;ll fix some build failures.

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:-67
&gt; -#if defined(SA_RESTART)

I think this ifdef is not used anymore.
Because Thread::suspend / resume always emits signals. But signal handler is only installed when SA_RESTART is defined.
So in the environment that there is no SA_RESTART, the process will be terminated.

&gt; Source/WTF/wtf/Platform.h:433
&gt; +#endif

Oops, I&apos;ll fix this part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159737</commentid>
    <comment_count>3</comment_count>
      <attachid>270116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 09:10:37 -0800</bug_when>
    <thetext>Comment on attachment 270116
Patch

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

&gt; Source/JavaScriptCore/heap/MachineStackMarker.h:132
&gt; +        int suspendCount;

Oops, I&apos;ll set { 0 }.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159748</commentid>
    <comment_count>4</comment_count>
      <attachid>270116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 09:40:48 -0800</bug_when>
    <thetext>Comment on attachment 270116
Patch

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

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:377
&gt; +        LockHolder lock(suspendLock);

I&apos;ll change this lock to the static global lock.
Consider the following case, there are threads A and B.
And A attempt to suspend B and B attempt to suspend A.
In that case, if A and B can emit pthread_kill, both will be suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159760</commentid>
    <comment_count>5</comment_count>
      <attachid>270125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 10:21:20 -0800</bug_when>
    <thetext>Created attachment 270125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159792</commentid>
    <comment_count>6</comment_count>
      <attachid>270125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 11:02:52 -0800</bug_when>
    <thetext>Comment on attachment 270125
Patch

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

Add notes.

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:74
&gt; +

And we should note that, when signal comes, first, system calls signal handler.
And later, sigsuspend will be resumed. Signal handler invocation always precedes.
http://pubs.opengroup.org/onlinepubs/009695399/functions/sigsuspend.html
&quot;If the action is to execute a signal-catching function, then sigsuspend() shall return after the signal-catching function returns, with the signal mask restored to the set that existed prior to the sigsuspend() call.&quot;

So, the probelm never happens that suspended.store(true, ...) will be executed before the handler is called.

Later, I&apos;ll insert this note here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159797</commentid>
    <comment_count>7</comment_count>
      <attachid>270125</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 11:08:11 -0800</bug_when>
    <thetext>Comment on attachment 270125
Patch

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

&gt; Source/JavaScriptCore/heap/MachineStackMarker.cpp:384
&gt; +        LockHolder lock(globalSignalLock);

One approach to avoid global lock is that,

1. each thread has a lock.
2. when suspending / resuming, we acquire (1) the suspended thread&apos;s lock and (2) the current thread&apos;s lock at the same time. (using std::lock lock(A, B) can avoid dead lock :))

But I think the global lock is enough in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159800</commentid>
    <comment_count>8</comment_count>
      <attachid>270125</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-01-28 11:12:03 -0800</bug_when>
    <thetext>Comment on attachment 270125
Patch

r=me

It would be good if you could also implement MachineThreads::Thread::Registers::stackPointer() the same way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160012</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 21:32:18 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 270125 [details]
&gt; Patch
&gt; 
&gt; r=me

Thank you for your review!

&gt; 
&gt; It would be good if you could also implement
&gt; MachineThreads::Thread::Registers::stackPointer() the same way.

Yeah! It is nice.

While instructionPointer() and framePointer() are only used for SamplingProfiler (And only built with ENABLE_SAMPLING_PROFILER), stackPointer() is always used to retrieve stack areas for conservative GC.

Currently, only ENABLE_SAMPLING_PROFILER&apos;s configuration can retrieve stack pointers. So under non ENABLE_SAMPLING_PROFILER environment, we still need to keep current portable implementation (using pthread). But I think it&apos;s not good.

Ideally, we would like to support all the supported environment, make ENABLE_SAMPLING_PROFILER always on and drop current portable implementation completely.

So, I&apos;ll discuss what platform (CPU arch, OS, and standard library (BSD LIBC, GLIBC, Android Bionic etc.)) existing ports (GTK and EFL) support.
And at that time, we fill all the platform specific code and implement the above too :)

https://bugs.webkit.org/show_bug.cgi?id=153638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160013</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 21:33:35 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; 
&gt; Yeah! It is nice.
&gt; 
&gt; While instructionPointer() and framePointer() are only used for
&gt; SamplingProfiler (And only built with ENABLE_SAMPLING_PROFILER),
&gt; stackPointer() is always used to retrieve stack areas for conservative GC.
&gt; 
&gt; Currently, only ENABLE_SAMPLING_PROFILER&apos;s configuration can retrieve stack
&gt; pointers. So under non ENABLE_SAMPLING_PROFILER environment, we still need
&gt; to keep current portable implementation (using pthread). But I think it&apos;s
&gt; not good.
&gt; 
&gt; Ideally, we would like to support all the supported environment, make
&gt; ENABLE_SAMPLING_PROFILER always on and drop current portable implementation
&gt; completely.
&gt; 
&gt; So, I&apos;ll discuss what platform (CPU arch, OS, and standard library (BSD
&gt; LIBC, GLIBC, Android Bionic etc.)) existing ports (GTK and EFL) support.
&gt; And at that time, we fill all the platform specific code and implement the
&gt; above too :)
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=153638

Or, maybe, for fallback, keeping pthread portable implementation may be nice...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160092</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-29 05:22:15 -0800</bug_when>
    <thetext>Hmm, the current implementation almost works fine.
But only call-varargs-from-inlined-code-with-odd-number-of-arguments.js with ftl-no-cjit-validate-sampling-profiler mode causes an error. It reports that expected value is different, value becomes NaN.

I&apos;m still not sure why it is caused. But after investigating that,

1. It is caused in DFG phase. During DFG, the register becomes unexpected value.
2. I removed all the logic execpt for pthread_kill. signal handler is empty, and suspend and resume just calls pthread_kill and do nothing more. SamplingProfiler just calls suspend() and resume() and do nothing more. Even in that case, still crash occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160342</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-29 17:12:54 -0800</bug_when>
    <thetext>Yusuke,
I just landed a patch that adds one more register in http://trac.webkit.org/changeset/195865
The function is called llintPC().
Can you also add it in your patch? It returns whichever register regT4
is on the particular ISA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160343</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-29 17:14:12 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Hmm, the current implementation almost works fine.
&gt; But only call-varargs-from-inlined-code-with-odd-number-of-arguments.js with
&gt; ftl-no-cjit-validate-sampling-profiler mode causes an error. It reports that
&gt; expected value is different, value becomes NaN.
&gt; 
&gt; I&apos;m still not sure why it is caused. But after investigating that,
&gt; 
&gt; 1. It is caused in DFG phase. During DFG, the register becomes unexpected
&gt; value.
&gt; 2. I removed all the logic execpt for pthread_kill. signal handler is empty,
&gt; and suspend and resume just calls pthread_kill and do nothing more.
&gt; SamplingProfiler just calls suspend() and resume() and do nothing more. Even
&gt; in that case, still crash occurs.

Is this a recent regression? Does it happen on ToT?
Or does this have to do w/ ::stackPointer()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160440</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 03:35:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Yusuke,
&gt; I just landed a patch that adds one more register in
&gt; http://trac.webkit.org/changeset/195865
&gt; The function is called llintPC().
&gt; Can you also add it in your patch? It returns whichever register regT4
&gt; is on the particular ISA.

Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160441</commentid>
    <comment_count>15</comment_count>
      <attachid>270304</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 03:45:27 -0800</bug_when>
    <thetext>Created attachment 270304
Patch

Simple test patch that causes DFG issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160442</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 03:52:56 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Is this a recent regression? Does it happen on ToT?
&gt; Or does this have to do w/ ::stackPointer()?

Without stackPointer change. And even if we just call signal and do nothing, the issue occurs.

I think, the above patch itself does not have any problems and DFG or elsewhere have some problem...
I uploaded some very very simple patch. That just emit signal in ::suspend and do nothing in ::resume. Signal handler does nothing. And SamplingProfiler just calls suspend and resume periodically.

Even in the above situation, call-varargs-from-inlined-code-with-odd-number-of-arguments.js sometimes fails. So I think the following situation.

1. Signal handler is set with SA_RESTART. But some system calls does not restart. For example, sleep, usleep are the cases in UNIX. We need to fix this anyway (I&apos;ll open the bug for that)
2. So, in some place, sleep is interrupted.
3. As a result, the path that is rarely taken may be taken. For example, if you set some threshold time for invoking DFG, it may not be executed in the usual test cases. But due to interrupted sleep, it may be invoked.
4. And since this path has some issue, it causes the test failure, the result becomes NaN.

So I think there are some issues in DFG because when disabling DFG (with env variables), the issue does not occur.

So in the meantime, I&apos;ll land the patch with stackPointer and LLInt PC change with masking the above test. And I&apos;ll open 2 issues.

1. Making non-restarted syscalls signal-safe. (Like sleep)
2. Tracking call-varargs-from-inlined-code-with-odd-number-of-arguments.js issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160448</commentid>
    <comment_count>17</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-30 04:54:09 -0800</bug_when>
    <thetext>Committed r195891: &lt;http://trac.webkit.org/changeset/195891&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270116</attachid>
            <date>2016-01-28 08:29:53 -0800</date>
            <delta_ts>2016-01-28 10:21:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153584-20160129012927.patch</filename>
            <type>text/plain</type>
            <size>18777</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YWNkODQ1MDJjZjUyZmVmYTJjMWU0ZjQ1ZjRkYjc2MzU0MTE0MDVmLi4wYmZhMTBlYTE0NmVkNjdj
YWE2ODNhNGNhNDk2ZDQ2NDA2ODNlY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9maWxlciBvbiBQT1NJWCBlbnZpcm9u
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
NTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgd2UgaW1wbGVtZW50IHN1c3BlbmQgYW5kIHJlc3VtZSBtZWNoYW5pem0gZm9y
IFBPU0lYIHRocmVhZHMuCisgICAgICAgIEFuZCB3aXRoIEdMSUJDLCB3ZSBjYW4gcmV0cmlldmUg
cmVnaXN0ZXJzIGZyb20gaXQuCisKKyAgICAgICAgV2UgdGFrZSB0aGUgZm9sbG93aW5nIHN0cmF0
ZWd5LgorCisgICAgICAgIFN1c3BlbmQgc2lkZS4KKyAgICAgICAgMS4gaW5zdGFsbCBzaWdhY3Rp
b24gdG8gdGhlIHRocmVhZHMuCisgICAgICAgIDIuIGluIHRoZSBwcm9maWxlciAoc3VzcGVuZCAv
IHJlc3VtZSBjYWxsZXJzKSwgZW1pdCBzaWduYWwgd2l0aCBwdGhyZWFkX2tpbGwgYW5kIHdhaXQg
d2l0aCBQT1NJWCBzZW1hcGhvcmUuCisgICAgICAgIDMuIGluIHRoZSBzaWduYWwgaGFuZGxlciwg
dXAgdGhlIFBPU0lYIHNlbWFwaG9yZS4gVXNlIHNlbV9wb3N0IGJlY2F1c2UgaXQgaXMgdGhlIGFz
eW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9uIGluIFBPU0lYLgorICAgICAgICA0LiBpbiB0aGUgc2ln
bmFsIGhhbmRsZXIsIHBlcmZvcm0gc2lnc3VzcGVuZCB0byBzdG9wIHRoZSB0aHJlYWQgdW50aWwg
YmVpbmcgcmVzdW1lZC4KKyAgICAgICAgNS4gaW4gdGhlIHByb2ZpbGVyLCB3ZSBjYW4gYmUgd2Fr
ZW4gdXAgZnJvbSB0aGUgc2VtYXBob3JlIGJlY2F1c2UgKDMpIHVwcy4KKworICAgICAgICBSZXN1
bWUgc2lkZS4KKyAgICAgICAgMS4gaW4gdGhlIHByb2ZpbGVyLCBlbWl0IHNpZ25hbCBhbmQgd2Fp
dCBvbiB0aGUgc2VtYXBob3JlLgorICAgICAgICAyLiBpbiB0aGUgc2lnbmFsIGhhbmRsZXIsIGl0
IGlzIHdha2VuIHVwIGZyb20gdGhlIHNpZ3N1c3BlbmQuCisgICAgICAgIDMuIGluIHRoZSBzaWdu
YWwgaGFuZGxlciwgdXAgdGhlIHNlbWFwaG9yZS4KKyAgICAgICAgNC4gaW4gdGhlIHByb2ZpbGVy
LCB0aGUgcHJvZmlsZXIgaXMgd2FrZW4gdXAgZnJvbSB0aGUgc2VtYXBob3JlLiBJdCBpcyBlbnN1
cmVkIHRoYXQgdGhlIGdpdmVuIHRocmVhZCBpcyByZXN1bWVkIGJ5IHRoZSBzaWduYWwuCisKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChwdGhyZWFkU2ln
bmFsSGFuZGxlclN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
VGhyZWFkOjpUaHJlYWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjp+
VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6c3VzcGVuZCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnJlc3VtZSk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omlu
c3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6
OmZyZWVSZWdpc3RlcnMpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6cmVw
b3J0U3RhdHMpOgorCiAyMDE2LTAxLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21w
aWxlclRodW5rKCkgY2FuIHRyYXNoIHZhbHVlcyBpbiBGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOWI5YzhjMjA1NzRiMzU1
ZjM4YTI4NTBhODM4MmJmMzFiOTQyZWM3My4uNmJmZTRjYmU4YWViNjYyNmRjM2VlODRiYWE1YzA1
M2QxMzM0NjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMS0yOCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9m
aWxlciBvbiBQT1NJWCBlbnZpcm9ubWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIF9fR0xJQkNfXyBzaW5jZSBtY29udGV4dF90IGxheW91dCBk
ZXBlbmRzIG9uIGl0LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTYtMDEtMjcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3aW5kb3cuYXRvYigp
IHNob3VsZCBpZ25vcmUgc3BhY2VzIGluIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmOGFkNTU0MWUzMThhZWE4M2Q3
YzUyODgzYTBiOTUyZWZiZmNhMDQyLi43NzM3NmI3ZGU1MDA0NWYyMDE3NzIyOGYyMmJjNzI2NjAy
YzlhNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAKQEAgLTYyLDE3ICs2Miw0MiBAQAogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9T
KFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKy8vIFdlIHVz
ZSBTSUdVU1IyIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBtYWNoaW5lIHRocmVhZHMgaW4gSmF2YVNj
cmlwdENvcmUuCiBzdGF0aWMgY29uc3QgaW50IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdV
U1IyOwordGhyZWFkX2xvY2FsIHN0YXRpYyBzdGQ6OmF0b21pYzxKU0M6Ok1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQqPiB0aHJlYWRMb2NhbEN1cnJlbnRUaHJlYWQ7CiAKLSNpZiBkZWZpbmVkKFNBX1JF
U1RBUlQpCi1zdGF0aWMgdm9pZCBwdGhyZWFkU2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWUoaW50
KQorc3RhdGljIHZvaWQgcHRocmVhZFNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCwgc2ln
aW5mb190Kiwgdm9pZCogdWNvbnRleHQpCiB7Ci0gICAgc2lnc2V0X3Qgc2lnbmFsU2V0OwotICAg
IHNpZ2VtcHR5c2V0KCZzaWduYWxTZXQpOwotICAgIHNpZ2FkZHNldCgmc2lnbmFsU2V0LCBTaWdU
aHJlYWRTdXNwZW5kUmVzdW1lKTsKLSAgICBzaWdzdXNwZW5kKCZzaWduYWxTZXQpOworICAgIC8v
IFRvdWNoaW5nIHRocmVhZCBsb2NhbCBhdG9taWMgdHlwZXMgZnJvbSBzaWduYWwgaGFuZGxlcnMg
aXMgYWxsb3dlZC4KKyAgICBKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQqIHRocmVhZCA9IHRo
cmVhZExvY2FsQ3VycmVudFRocmVhZC5sb2FkKCk7CisKKyAgICBpZiAodGhyZWFkLT5zdXNwZW5k
ZWQubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSkgeworICAgICAgICAvLyBUaGlzIGlz
IHNpZ25hbCBoYW5kbGVyIGludm9jYXRpb24gdGhhdCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRv
IHJlc3VtZSBzaWdzdXNwZW5kLgorICAgICAgICAvLyBTbyB0aGlzIGhhbmRsZXIgaW52b2NhdGlv
biBpdHNlbGYgc2hvdWxkIG5vdCBwcm9jZXNzLgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc3RydWN0IHVjb250ZXh0KiB1c2VyQ29udGV4dCA9IHN0YXRpY19jYXN0PHN0cnVjdCB1Y29u
dGV4dCo+KHVjb250ZXh0KTsKKyAgICB0aHJlYWQtPnN1c3BlbmRlZE1hY2hpbmVDb250ZXh0ID0g
dXNlckNvbnRleHQtPnVjX21jb250ZXh0OworCisgICAgLy8gQWxsb3cgc3VzcGVuZCBjYWxsZXIg
dG8gc2VlIHRoYXQgdGhpcyB0aHJlYWQgaXMgc3VzcGVuZGVkLgorICAgIC8vIHNlbV9wb3N0IGlz
IGFzeW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9uLiBJdCBtZWFucyB0aGF0IHdlIGNhbiBjYWxsIHRo
aXMgZnJvbSBhIHNpZ25hbCBoYW5kbGVyLgorICAgIC8vIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5v
cmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3hzaF9jaGFwMDJfMDQuaHRtbCN0YWdf
MDJfMDRfMDMKKyAgICAvLworICAgIC8vIEFuZCBzZW1fcG9zdCBlbWl0cyBtZW1vcnkgYmFycmll
ciB0aGF0IGVuc3VyZXMgdGhhdCBzdXNwZW5kZWRNYWNoaW5lQ29udGV4dCBpcyBjb3JyZWN0bHkg
c2F2ZWQuCisgICAgLy8gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5
MTk3OTkvYmFzZWRlZnMvVjFfY2hhcDA0Lmh0bWwjdGFnXzA0XzExCisgICAgc2VtX3Bvc3QoJnRo
cmVhZC0+c2VtYXBob3JlRm9yU3VzcGVuZFJlc3VtZSk7CisKKyAgICAvLyBSZWFjaGluZyBoZXJl
LCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGlzIGJsb2NrZWQgaW4gdGhpcyBoYW5kbGVyICh0aGlz
IGlzIGNvbmZpZ3VyZWQgYnkgc2lnYWN0aW9uJ3Mgc2FfbWFzaykuCisgICAgLy8gU28gYmVmb3Jl
IGNhbGxpbmcgc2lnc3VzcGVuZCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSB0byB0aGlzIHRocmVh
ZCBpcyBkZWZlcnJlZC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGhhbmRsZXIgaXMgbm90IGV4ZWN1
dGVkIHJlY3Vyc2l2ZWx5LgorICAgIHNpZ3NldF90IGJsb2NrZWRTaWduYWxTZXQ7CisgICAgc2ln
ZmlsbHNldCgmYmxvY2tlZFNpZ25hbFNldCk7CisgICAgc2lnZGVsc2V0KCZibG9ja2VkU2lnbmFs
U2V0LCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKKyAgICBzaWdzdXNwZW5kKCZibG9ja2VkU2ln
bmFsU2V0KTsKKworICAgIC8vIEFsbG93IHJlc3VtZSBjYWxsZXIgdG8gc2VlIHRoYXQgdGhpcyB0
aHJlYWQgaXMgcmVzdW1lZC4KKyAgICBzZW1fcG9zdCgmdGhyZWFkLT5zZW1hcGhvcmVGb3JTdXNw
ZW5kUmVzdW1lKTsKIH0KLSNlbmRpZiAvLyBkZWZpbmVkKFNBX1JFU1RBUlQpCiAjZW5kaWYgLy8g
VVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9TKERBUldJTikKIAogI2VuZGlmCkBA
IC0yOTYsMjQgKzMyMSwzNSBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVu
dFRocmVhZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdAogICAgICwgc3RhY2tC
YXNlKGJhc2UpCiAgICAgLCBzdGFja0VuZChlbmQpCiB7Ci0jaWYgVVNFKFBUSFJFQURTKSAmJiAh
T1MoV0lORE9XUykgJiYgIU9TKERBUldJTikgJiYgZGVmaW5lZChTQV9SRVNUQVJUKQotICAgIC8v
IGlmIHdlIGhhdmUgU0FfUkVTVEFSVCwgZW5hYmxlIFNJR1VTUjIgZGVidWdnaW5nIG1lY2hhbmlz
bQotICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotICAgIGFjdGlvbi5zYV9oYW5kbGVyID0g
cHRocmVhZFNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lOwotICAgIHNpZ2VtcHR5c2V0KCZhY3Rp
b24uc2FfbWFzayk7Ci0gICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVDsKLSAgICBzaWdh
Y3Rpb24oU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSwgJmFjdGlvbiwgMCk7Ci0KLSAgICBzaWdzZXRf
dCBtYXNrOwotICAgIHNpZ2VtcHR5c2V0KCZtYXNrKTsKLSAgICBzaWdhZGRzZXQoJm1hc2ssIFNp
Z1RocmVhZFN1c3BlbmRSZXN1bWUpOwotICAgIHB0aHJlYWRfc2lnbWFzayhTSUdfVU5CTE9DSywg
Jm1hc2ssIDApOwotI2VsaWYgT1MoV0lORE9XUykKKyNpZiBPUyhXSU5ET1dTKQogICAgIEFTU0VS
VChwbGF0Zm9ybVRocmVhZCA9PSBHZXRDdXJyZW50VGhyZWFkSWQoKSk7CiAgICAgYm9vbCBpc1N1
Y2Nlc3NmdWwgPQogICAgICAgICBEdXBsaWNhdGVIYW5kbGUoR2V0Q3VycmVudFByb2Nlc3MoKSwg
R2V0Q3VycmVudFRocmVhZCgpLCBHZXRDdXJyZW50UHJvY2VzcygpLAogICAgICAgICAgICAgJnBs
YXRmb3JtVGhyZWFkSGFuZGxlLCAwLCBGQUxTRSwgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKICAg
ICBSRUxFQVNFX0FTU0VSVChpc1N1Y2Nlc3NmdWwpOworI2VsaWYgVVNFKFBUSFJFQURTKSAmJiAh
T1MoREFSV0lOKQorICAgIHRocmVhZExvY2FsQ3VycmVudFRocmVhZC5zdG9yZSh0aGlzKTsKKwor
ICAgIC8vIFNpZ25hbCBoYW5kbGVycyBhcmUgcHJvY2VzcyBnbG9iYWwgY29uZmlndXJhdGlvbi4K
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZVNpZ25hbEhhbmRsZXI7CisgICAg
c3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZVNpZ25hbEhhbmRsZXIsIFtdIHsKKyAgICAgICAgLy8g
SW50ZW50aW9uYWxseSBibG9jayBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIGluIHRoZSBoYW5kbGVy
LgorICAgICAgICAvLyBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lIHdpbGwgYmUgYWxsb3dlZCBpbiB0
aGUgaGFuZGxlciBieSBzaWdzdXNwZW5kLgorICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlv
bjsKKyAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgc2lnYWRk
c2V0KCZhY3Rpb24uc2FfbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CisKKyAgICAgICAg
YWN0aW9uLnNhX3NpZ2FjdGlvbiA9IHB0aHJlYWRTaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZTsK
KyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfUkVTVEFSVCB8IFNBX1NJR0lORk87CisgICAg
ICAgIHNpZ2FjdGlvbihTaWdUaHJlYWRTdXNwZW5kUmVzdW1lLCAmYWN0aW9uLCAwKTsKKyAgICB9
KTsKKworICAgIHNpZ3NldF90IG1hc2s7CisgICAgc2lnZW1wdHlzZXQoJm1hc2spOworICAgIHNp
Z2FkZHNldCgmbWFzaywgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CisgICAgcHRocmVhZF9zaWdt
YXNrKFNJR19VTkJMT0NLLCAmbWFzaywgMCk7CisKKyAgICBzZW1faW5pdCgmc2VtYXBob3JlRm9y
U3VzcGVuZFJlc3VtZSwgLyogT25seSBhdmFpbGFibGUgaW4gdGhpcyBwcm9jZXNzLiAqLyAwLCAv
KiBJbml0aWFsIHZhbHVlIGZvciB0aGUgc2VtYXBob3JlLiAqLyAwKTsKICNlbmRpZgogfQogCkBA
IC0zMjEsNiArMzU3LDggQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyRnJvbUN1cnJlbnRU
aHJlYWQoQ29uc2VydmF0aXZlUm9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKIHsKICNpZiBPUyhXSU5E
T1dTKQogICAgIENsb3NlSGFuZGxlKHBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKKyNlbGlmIFVTRShQ
VEhSRUFEUykgJiYgIU9TKERBUldJTikKKyAgICBzZW1fZGVzdHJveSgmc2VtYXBob3JlRm9yU3Vz
cGVuZFJlc3VtZSk7CiAjZW5kaWYKIH0KIApAQCAtMzM0LDcgKzM3MiwyMSBAQCBib29sIE1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OnN1c3BlbmQoKQogICAgIEFTU0VSVCh0aHJlYWRJc1N1c3BlbmRl
ZCk7CiAgICAgcmV0dXJuIHRocmVhZElzU3VzcGVuZGVkOwogI2VsaWYgVVNFKFBUSFJFQURTKQot
ICAgIHB0aHJlYWRfa2lsbChwbGF0Zm9ybVRocmVhZCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7
CisgICAgeworICAgICAgICAvLyBEdXJpbmcgc3VzcGVuZCwgc3VzcGVuZCBvciByZXN1bWUgc2hv
dWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0aHJlYWRzLgorICAgICAgICBMb2Nr
SG9sZGVyIGxvY2soc3VzcGVuZExvY2spOworICAgICAgICBpZiAoIXN1c3BlbmRDb3VudCkgewor
ICAgICAgICAgICAgLy8gSWRlYWxseSwgd2Ugd291bGQgbGlrZSB0byB1c2UgcHRocmVhZF9zaWdx
dWV1ZS4gSXQgYWxsb3dzIHVzIHRvIHBhc3MgdGhlIGFyZ3VtZW50IHRvIHRoZSBzaWduYWwgaGFu
ZGxlci4KKyAgICAgICAgICAgIC8vIEJ1dCBpdCBjYW4gYmUgdXNlZCBpbiBhIGZldyBwbGF0Zm9y
bXMsIGxpa2UgTGludXguCisgICAgICAgICAgICAvLyBJbnN0ZWFkLCB3ZSB1c2UgVGhyZWFkKiBz
dG9yZWQgaW4gdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIHRvIHBhc3MgaXQgdG8gdGhlIHNpZ25h
bCBoYW5kbGVyLgorICAgICAgICAgICAgaWYgKHB0aHJlYWRfa2lsbChwbGF0Zm9ybVRocmVhZCwg
U2lnVGhyZWFkU3VzcGVuZFJlc3VtZSkgPT0gRVNSQ0gpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgc2VtX3dhaXQoJnNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUp
OworICAgICAgICAgICAgLy8gUmVsZWFzZSBiYXJyaWVyIGVuc3VyZXMgdGhhdCB0aGlzIG9wZXJh
dGlvbiBpcyBhbHdheXMgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHRoZSBhYm92ZSBwcm9jZXNzaW5nIGlz
IGRvbmUuCisgICAgICAgICAgICBzdXNwZW5kZWQuc3RvcmUodHJ1ZSwgc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsZWFzZSk7CisgICAgICAgIH0KKyAgICAgICAgKytzdXNwZW5kQ291bnQ7CisgICAgfQog
ICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIHN1c3BlbmQgdGhy
ZWFkcyBvbiB0aGlzIHBsYXRmb3JtCkBAIC0zNDgsNyArNDAwLDI1IEBAIHZvaWQgTWFjaGluZVRo
cmVhZHM6OlRocmVhZDo6cmVzdW1lKCkKICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgUmVzdW1lVGhy
ZWFkKHBsYXRmb3JtVGhyZWFkSGFuZGxlKTsKICNlbGlmIFVTRShQVEhSRUFEUykKLSAgICBwdGhy
ZWFkX2tpbGwocGxhdGZvcm1UaHJlYWQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIHsK
KyAgICAgICAgLy8gRHVyaW5nIHJlc3VtZSwgc3VzcGVuZCBvciByZXN1bWUgc2hvdWxkIG5vdCBi
ZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0aHJlYWRzLgorICAgICAgICBMb2NrSG9sZGVyIGxv
Y2soc3VzcGVuZExvY2spOworICAgICAgICBpZiAoc3VzcGVuZENvdW50ID09IDEpIHsKKyAgICAg
ICAgICAgIC8vIFdoZW4gYWxsb3dpbmcgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpbnRlcnJ1cHQg
aW4gdGhlIHNpZ25hbCBoYW5kbGVyIGJ5IHNpZ3N1c3BlbmQgYW5kIFNpZ1RocmVhZFN1c3BlbmRS
ZXN1bWUgaXMgYWN0dWFsbHkgaXNzdWVkLAorICAgICAgICAgICAgLy8gdGhlIHNpZ25hbCBoYW5k
bGVyIGl0c2VsZiB3aWxsIGJlIGNhbGxlZCBvbmNlIGFnYWluLgorICAgICAgICAgICAgLy8gVGhl
cmUgYXJlIHNldmVyYWwgd2F5cyB0byBkaXN0aW5ndWlzaCB0aGUgaGFuZGxlciBpbnZvY2F0aW9u
IGZvciBzdXNwZW5kIGFuZCByZXN1bWUuCisgICAgICAgICAgICAvLyAxLiBVc2UgZGlmZmVyZW50
IHNpZ25hbCBudW1iZXJzLiBBbmQgY2hlY2sgdGhlIHNpZ25hbCBudW1iZXIgaW4gdGhlIGhhbmRs
ZXIuCisgICAgICAgICAgICAvLyAyLiBVc2Ugc29tZSBhcmd1bWVudHMgdG8gZGlzdGluZ3Vpc2gg
c3VzcGVuZCBhbmQgcmVzdW1lIGluIHRoZSBoYW5kbGVyLiBJZiBwdGhyZWFkX3NpZ3F1ZXVlIGNh
biBiZSB1c2VkLCB3ZSBjYW4gdGFrZSB0aGlzLgorICAgICAgICAgICAgLy8gMy4gVXNlIHRocmVh
ZCBsb2NhbCBzdG9yYWdlIHdpdGggYXRvbWljIHZhcmlhYmxlcyBpbiB0aGUgc2lnbmFsIGhhbmRs
ZXIuCisgICAgICAgICAgICAvLyBJbiB0aGlzIGltcGxlbWVudGFpdG9uLCB3ZSB0YWtlICgzKS4g
c3VzcGVuZGVkIGZsYWcgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBpdC4KKyAgICAgICAgICAgIGlm
IChwdGhyZWFkX2tpbGwocGxhdGZvcm1UaHJlYWQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpID09
IEVTUkNIKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbV93YWl0KCZz
ZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lKTsKKyAgICAgICAgICAgIC8vIFJlbGVhc2UgYmFycmll
ciBlbnN1cmVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYWx3YXlzIGV4ZWN1dGVkIGFmdGVyIGFs
bCB0aGUgYWJvdmUgcHJvY2Vzc2luZyBpcyBkb25lLgorICAgICAgICAgICAgc3VzcGVuZGVkLnN0
b3JlKGZhbHNlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAgICAgfQorICAgICAg
ICAtLXN1c3BlbmRDb3VudDsKKyAgICB9CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gcmVz
dW1lIHRocmVhZHMgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC0zOTQsMTYgKzQ2NCwxNyBA
QCBzaXplX3QgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKFRocmVhZDo6UmVn
aXN0ZXJzJiByZWdpc3RlcnMpCiAgICAgR2V0VGhyZWFkQ29udGV4dChwbGF0Zm9ybVRocmVhZEhh
bmRsZSwgJnJlZ3MpOwogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CiAjZWxpZiBVU0UoUFRI
UkVBRFMpCi0gICAgcHRocmVhZF9hdHRyX2luaXQoJnJlZ3MpOworICAgIHB0aHJlYWRfYXR0cl9p
bml0KCZyZWdzLmF0dHJpYnV0ZSk7CiAjaWYgSEFWRShQVEhSRUFEX05QX0gpIHx8IE9TKE5FVEJT
RCkKICNpZiAhT1MoT1BFTkJTRCkKICAgICAvLyBlLmcuIG9uIEZyZWVCU0QgNS40LCBuZXVuZG9y
ZkBrZGUub3JnCi0gICAgcHRocmVhZF9hdHRyX2dldF9ucChwbGF0Zm9ybVRocmVhZCwgJnJlZ3Mp
OworICAgIHB0aHJlYWRfYXR0cl9nZXRfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzLmF0dHJpYnV0
ZSk7CiAjZW5kaWYKICNlbHNlCiAgICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBv
cnRhYmxlOyBvdGhlciBQT1NJWCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5h
dGl2ZXMKLSAgICBwdGhyZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzKTsKKyAg
ICBwdGhyZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzLmF0dHJpYnV0ZSk7CiAj
ZW5kaWYKKyAgICByZWdzLm1hY2hpbmVDb250ZXh0ID0gc3VzcGVuZGVkTWFjaGluZUNvbnRleHQ7
CiAgICAgcmV0dXJuIDA7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRocmVhZCBy
ZWdpc3RlcnMgb24gdGhpcyBwbGF0Zm9ybQpAQCAtNDY4LDcgKzUzOSw3IEBAIHZvaWQqIE1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKICAgICBz
dGFja0Jhc2UgPSAodm9pZCopKChzaXplX3QpIHNzLnNzX3NwIC0gc3Muc3Nfc2l6ZSk7CiAgICAg
c3RhY2tTaXplID0gc3Muc3Nfc2l6ZTsKICNlbHNlCi0gICAgaW50IHJjID0gcHRocmVhZF9hdHRy
X2dldHN0YWNrKCZyZWdzLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsKKyAgICBpbnQgcmMgPSBw
dGhyZWFkX2F0dHJfZ2V0c3RhY2soJnJlZ3MuYXR0cmlidXRlLCAmc3RhY2tCYXNlLCAmc3RhY2tT
aXplKTsKICNlbmRpZgogICAgICh2b2lkKXJjOyAvLyBGSVhNRTogRGVhbCB3aXRoIGVycm9yIGNv
ZGUgc29tZWhvdz8gU2VlbXMgZmF0YWwuCiAgICAgQVNTRVJUKHN0YWNrQmFzZSk7CkBAIC01MjQs
NiArNTk1LDIzIEBAIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJh
bWVQb2ludGVyKCkgY29uc3QKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlmCiAK
KyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRl
cGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0
LmdyZWdzW1JFR19FQlBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVH
X1JCUF0pOworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oKHVpbnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fZnApOworI2VsaWYgQ1BVKEFS
TTY0KQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdz
Lm1hY2hpbmVDb250ZXh0LnJlZ3NbMjldKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0Lmdy
ZWdzWzMwXSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwog
I2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5v
dGhlciB0aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC01NzMsNiArNjYxLDIzIEBA
IHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5zdHJ1Y3Rpb25Qb2lu
dGVyKCkgY29uc3QKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlmCiAKKyNlbGlm
IGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMg
b24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19FSVBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0p
OworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fcGMpOworI2VsaWYgQ1BVKEFSTTY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0LnBjKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnBjKTsKKyNlbHNlCisj
ZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCiAjZWxzZQogI2Vycm9yIE5lZWQg
YSB3YXkgdG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBv
biB0aGlzIHBsYXRmb3JtCiAjZW5kaWYKQEAgLTU4Myw3ICs2ODgsNyBAQCB2b2lkIE1hY2hpbmVU
aHJlYWRzOjpUaHJlYWQ6OmZyZWVSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVy
cykKIHsKICAgICBUaHJlYWQ6OlJlZ2lzdGVyczo6UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MgPSBy
ZWdpc3RlcnMucmVnczsKICNpZiBVU0UoUFRIUkVBRFMpICYmICFPUyhXSU5ET1dTKSAmJiAhT1Mo
REFSV0lOKQotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZyZWdzKTsKKyAgICBwdGhyZWFkX2F0
dHJfZGVzdHJveSgmcmVncy5hdHRyaWJ1dGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVn
cyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hp
bmVTdGFja01hcmtlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNr
TWFya2VyLmgKaW5kZXggNGI2YTZlZWZlNDBlZTY4NjEyMGIzMTNmN2RmMzA5OGFmOWQxMDZhMy4u
MWRkZTZhY2U3ZjlhZmI4YjhhMDQ4OGMxZTMyYjNlMDIwMTgzZTUyNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTMxLDYgKzMxLDEx
IEBACiAjaW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhS
RUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2VtYXBob3Jl
Lmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERBUldJTikKIHR5cGVk
ZWYgbWFjaF9wb3J0X3QgUGxhdGZvcm1UaHJlYWQ7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtOTQs
NyArOTksMTAgQEAgY2xhc3MgTWFjaGluZVRocmVhZHMgewogI2VsaWYgT1MoV0lORE9XUykKICAg
ICAgICAgICAgIHR5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlbGlmIFVTRShQ
VEhSRUFEUykKLSAgICAgICAgICAgIHR5cGVkZWYgcHRocmVhZF9hdHRyX3QgUGxhdGZvcm1SZWdp
c3RlcnM7CisgICAgICAgICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgeworICAgICAgICAg
ICAgICAgIHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsKKyAgICAgICAgICAgICAgICBtY29udGV4
dF90IG1hY2hpbmVDb250ZXh0OworICAgICAgICAgICAgfTsKICNlbHNlCiAjZXJyb3IgTmVlZCBh
IHRocmVhZCByZWdpc3RlciBzdHJ1Y3QgZm9yIHRoaXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtMTE3
LDYgKzEyNSwxMiBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgIHZvaWQqIHN0YWNr
RW5kOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgICAgIEhBTkRMRSBwbGF0Zm9ybVRocmVhZEhhbmRs
ZTsKKyNlbGlmIFVTRShQVEhSRUFEUykgJiYgIU9TKERBUldJTikKKyAgICAgICAgc2VtX3Qgc2Vt
YXBob3JlRm9yU3VzcGVuZFJlc3VtZTsKKyAgICAgICAgbWNvbnRleHRfdCBzdXNwZW5kZWRNYWNo
aW5lQ29udGV4dDsKKyAgICAgICAgTG9jayBzdXNwZW5kTG9jazsKKyAgICAgICAgaW50IHN1c3Bl
bmRDb3VudDsKKyAgICAgICAgc3RkOjphdG9taWM8Ym9vbD4gc3VzcGVuZGVkIHsgZmFsc2UgfTsK
ICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggMzNiM2RmYmQwMzliYWFmYzY5ZjJkNjg2MzA2Zjc5
ZjM3Y2M5MDE2ZS4uZmM4YmUyMGViNDk1MGRhOGRhNjE0MjgxN2JmNmU4Mjg0YjM4MTI1YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5j
cHAKQEAgLTY0LDkgKzY0LDkgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCByZXBvcnRTdGF0
cygpCiAgICAgaWYgKHNSZXBvcnRTdGF0cyAmJiBzTnVtVG90YWxXYWxrcyAmJiBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc051bVRvdGFsV2Fsa3MpICUgc051bVdhbGtSZXBvcnRpbmdGcmVxdWVuY3kg
PT0gMCkgewogICAgICAgICBpZiAoIXNSZXBvcnRTdGF0c09ubHlXaGVuVGhleXJlQWJvdmVUaHJl
c2hvbGQgfHwgKHNOdW1GYWlsZWRXYWxrcyAvIHNOdW1Ub3RhbFdhbGtzID4gc1dhbGtFcnJvclBl
cmNlbnRhZ2UpKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiTnVtIHRvdGFsIHdhbGtzOiAlbGx1
LiBGYWlsZWQgd2Fsa3MgcGVyY2VudDogJWxmXG4iLAotICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PHVpbnQ2NF90PihzTnVtVG90YWxXYWxrcyksIHNOdW1GYWlsZWRXYWxrcyAvIHNOdW1Ub3Rh
bFdhbGtzKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KHNOdW1Ub3RhbFdhbGtzKSwgc051bUZhaWxlZFdhbGtzIC8gc051bVRvdGFsV2Fsa3MpOwogICAg
ICAgICAgICAgZGF0YUxvZ0YoIlRvdGFsIHN0YWNrIHRyYWNlczogJWxsdS4gTmVlZHMgdmVyaWZp
Y2F0aW9uIHBlcmNlbnQ6ICVsZlxuIiwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50
NjRfdD4oc051bVRvdGFsU3RhY2tUcmFjZXMpLCBzTnVtVW52ZXJpZmllZFN0YWNrVHJhY2VzIC8g
c051bVRvdGFsU3RhY2tUcmFjZXMpOworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4oc051bVRvdGFsU3RhY2tUcmFjZXMpLCBzTnVtVW52ZXJpZmllZFN0YWNr
VHJhY2VzIC8gc051bVRvdGFsU3RhY2tUcmFjZXMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKaW5kZXggZWI5NmZkNjIxZDNlMzE0MjYyMDEzMWM1OGRiMjA4MTM3M2JjMjIzNy4uMTIx
ZWZhNTEyNGMzMTkzYzczNzNhNjE1ZGM2NWM5ZjMyYmRhZDY4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC00
MjYsNiArNDI2LDEyIEBACiAKIC8qIE9wZXJhdGluZyBlbnZpcm9ubWVudHMgKi8KIAorLyogU3Rh
bmRhcmQgbGlicmFyaWVzICovCisjaWYgZGVmaW5lZChIQVZFX0ZFQVRVUkVTX0gpCisvKiBJZiB0
aGUgaW5jbHVkZWQgZmVhdHVyZXMuaCBpcyBnbGliYydzIG9uZSwgX19HTElCQ19fIGlzIGRlZmlu
ZWQuICovCisjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyNlbmRpZgorCiAvKiBGSVhNRTogdGhlc2Ug
YXJlIGFsbCBtaXhlcyBvZiBPUywgb3BlcmF0aW5nIGVudmlyb25tZW50IGFuZCBwb2xpY3kgY2hv
aWNlcy4gKi8KIC8qIFBMQVRGT1JNKEVGTCkgKi8KIC8qIFBMQVRGT1JNKEdUSykgKi8KQEAgLTc5
OCw4ICs4MDQsMTAgQEAKICNlbmRpZgogCiAvKiBUaGUgU2FtcGxpbmdQcm9maWxlciBpcyB0aGUg
cHJvYmFiaWxpc3RpYyBhbmQgbG93LW92ZXJoZWFkIHByb2ZpbGVyIHVzZWQgYnkKLSAqIEpTQyB0
byBtZWFzdXJlIHdoZXJlIHRpbWUgaXMgc3BlbnQgaW5zaWRlIGEgSmF2YVNjcmlwdCBwcm9ncmFt
LiAqLwotI2lmIChPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpKSAmJiBFTkFCTEUoSklUKQorICog
SlNDIHRvIG1lYXN1cmUgd2hlcmUgdGltZSBpcyBzcGVudCBpbnNpZGUgYSBKYXZhU2NyaXB0IHBy
b2dyYW0uCisgKiBJbiBjb25maWd1cmF0aW9ucyBvdGhlciB0aGFuIFdpbmRvd3MgYW5kIERhcndp
biwgYmVjYXVzZSBsYXlvdXQgb2YgbWNvbnRleHRfdCBkZXBlbmRzIG9uIHN0YW5kYXJkIGxpYnJh
cmllcyAobGlrZSBnbGliYyksCisgKiBzYW1wbGluZyBwcm9maWxlciBpcyBlbmFibGVkIGlmIFdl
YktpdCB1c2VzIHB0aHJlYWRzIGFuZCBnbGliYy4gKi8KKyNpZiAoT1MoREFSV0lOKSB8fCBPUyhX
SU5ET1dTKSB8fCAoVVNFKFBUSFJFQURTKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpKSAmJiBFTkFC
TEUoSklUKQogI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfUFJPRklMRVIgMQogI2Vsc2UKICNkZWZp
bmUgRU5BQkxFX1NBTVBMSU5HX1BST0ZJTEVSIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9P
cHRpb25zQ29tbW9uLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UKaW5k
ZXggMzM5YzU3YmI4MDI0NWQxMzdmMWM2ODhmMjRmMGZkMTBkZDE1ODNkZC4uNDZkNjk1ZTkyOTFl
OGU3ZGIyZDA2NjA5MTM2MDk4MzA1NDE4OGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNDb21tb24uY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UK
QEAgLTE0NywzICsxNDcsOSBAQCBlbmRpZiAoKQogaWYgKE5PVCBBUFBMRSkKICAgICBzZXQoQ01B
S0VfTklOSkFfRk9SQ0VfUkVTUE9OU0VfRklMRSAxKQogZW5kaWYgKCkKKworIyBDaGVjayB3aGV0
aGVyIGZlYXR1cmVzLmggaGVhZGVyIGV4aXN0cy4KKyMgSW5jbHVkaW5nIGdsaWJjJ3Mgb25lIGRl
ZmluZXMgX19HTElCQ19fLCB0aGF0IGlzIHVzZWQgaW4gUGxhdGZvcm0uaAoraW5jbHVkZShDaGVj
a0luY2x1ZGVGaWxlcykKK2NoZWNrX2luY2x1ZGVfZmlsZXMoZmVhdHVyZXMuaCBIQVZFX0ZFQVRV
UkVTX0gpCitTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChIQVZFX0ZFQVRVUkVTX0ggJHtIQVZFX0ZF
QVRVUkVTX0h9KQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGQyZWRj
NjI5OWNlMGZmM2M0OGY3NjEyMWQ1MDcxMTgxNjlmOWZmMjIuLjkxZjRkY2VhMGZlZmU1ZmYzMTEy
NWVlNTQzMGU0NjZhNTQ2YWNhOWMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9maWxlciBvbiBQT1NJ
WCBlbnZpcm9ubWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGZlYXR1cmVzLmggaGVhZGVyIGNoZWNrLiBJdCB3aWxsIGRlZmluZSBfX0dMSUJD
X18uCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZToKKwogMjAx
Ni0wMS0yNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgRU5BQkxFX0NVUlJFTlRTUkMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270125</attachid>
            <date>2016-01-28 10:21:20 -0800</date>
            <delta_ts>2016-01-28 11:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153584-20160129032054.patch</filename>
            <type>text/plain</type>
            <size>19282</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NzI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YWNkODQ1MDJjZjUyZmVmYTJjMWU0ZjQ1ZjRkYjc2MzU0MTE0MDVmLi4wYmZhMTBlYTE0NmVkNjdj
YWE2ODNhNGNhNDk2ZDQ2NDA2ODNlY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNi0wMS0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9maWxlciBvbiBQT1NJWCBlbnZpcm9u
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
NTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgd2UgaW1wbGVtZW50IHN1c3BlbmQgYW5kIHJlc3VtZSBtZWNoYW5pem0gZm9y
IFBPU0lYIHRocmVhZHMuCisgICAgICAgIEFuZCB3aXRoIEdMSUJDLCB3ZSBjYW4gcmV0cmlldmUg
cmVnaXN0ZXJzIGZyb20gaXQuCisKKyAgICAgICAgV2UgdGFrZSB0aGUgZm9sbG93aW5nIHN0cmF0
ZWd5LgorCisgICAgICAgIFN1c3BlbmQgc2lkZS4KKyAgICAgICAgMS4gaW5zdGFsbCBzaWdhY3Rp
b24gdG8gdGhlIHRocmVhZHMuCisgICAgICAgIDIuIGluIHRoZSBwcm9maWxlciAoc3VzcGVuZCAv
IHJlc3VtZSBjYWxsZXJzKSwgZW1pdCBzaWduYWwgd2l0aCBwdGhyZWFkX2tpbGwgYW5kIHdhaXQg
d2l0aCBQT1NJWCBzZW1hcGhvcmUuCisgICAgICAgIDMuIGluIHRoZSBzaWduYWwgaGFuZGxlciwg
dXAgdGhlIFBPU0lYIHNlbWFwaG9yZS4gVXNlIHNlbV9wb3N0IGJlY2F1c2UgaXQgaXMgdGhlIGFz
eW5jLXNpZ25hbC1zYWZlIGZ1bmN0aW9uIGluIFBPU0lYLgorICAgICAgICA0LiBpbiB0aGUgc2ln
bmFsIGhhbmRsZXIsIHBlcmZvcm0gc2lnc3VzcGVuZCB0byBzdG9wIHRoZSB0aHJlYWQgdW50aWwg
YmVpbmcgcmVzdW1lZC4KKyAgICAgICAgNS4gaW4gdGhlIHByb2ZpbGVyLCB3ZSBjYW4gYmUgd2Fr
ZW4gdXAgZnJvbSB0aGUgc2VtYXBob3JlIGJlY2F1c2UgKDMpIHVwcy4KKworICAgICAgICBSZXN1
bWUgc2lkZS4KKyAgICAgICAgMS4gaW4gdGhlIHByb2ZpbGVyLCBlbWl0IHNpZ25hbCBhbmQgd2Fp
dCBvbiB0aGUgc2VtYXBob3JlLgorICAgICAgICAyLiBpbiB0aGUgc2lnbmFsIGhhbmRsZXIsIGl0
IGlzIHdha2VuIHVwIGZyb20gdGhlIHNpZ3N1c3BlbmQuCisgICAgICAgIDMuIGluIHRoZSBzaWdu
YWwgaGFuZGxlciwgdXAgdGhlIHNlbWFwaG9yZS4KKyAgICAgICAgNC4gaW4gdGhlIHByb2ZpbGVy
LCB0aGUgcHJvZmlsZXIgaXMgd2FrZW4gdXAgZnJvbSB0aGUgc2VtYXBob3JlLiBJdCBpcyBlbnN1
cmVkIHRoYXQgdGhlIGdpdmVuIHRocmVhZCBpcyByZXN1bWVkIGJ5IHRoZSBzaWduYWwuCisKKyAg
ICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChwdGhyZWFkU2ln
bmFsSGFuZGxlclN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6
VGhyZWFkOjpUaHJlYWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjp+
VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6c3VzcGVuZCk6
CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnJlc3VtZSk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKToKKyAg
ICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50
ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6Omlu
c3RydWN0aW9uUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6
OmZyZWVSZWdpc3RlcnMpOgorICAgICAgICAqIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6cmVw
b3J0U3RhdHMpOgorCiAyMDE2LTAxLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIGFkanVzdEZyYW1lQW5kU3RhY2tJbk9TUkV4aXRDb21w
aWxlclRodW5rKCkgY2FuIHRyYXNoIHZhbHVlcyBpbiBGVEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOWI5YzhjMjA1NzRiMzU1
ZjM4YTI4NTBhODM4MmJmMzFiOTQyZWM3My4uNmJmZTRjYmU4YWViNjYyNmRjM2VlODRiYWE1YzA1
M2QxMzM0NjEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wMS0yOCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9m
aWxlciBvbiBQT1NJWCBlbnZpcm9ubWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUzNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIF9fR0xJQkNfXyBzaW5jZSBtY29udGV4dF90IGxheW91dCBk
ZXBlbmRzIG9uIGl0LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTYtMDEtMjcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICB3aW5kb3cuYXRvYigp
IHNob3VsZCBpZ25vcmUgc3BhY2VzIGluIGlucHV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAppbmRleCBmOGFkNTU0MWUzMThhZWE4M2Q3
YzUyODgzYTBiOTUyZWZiZmNhMDQyLi5jODE5YzVjMjExNzdlYjMyNDFiZDhlYThkMmQyMzQzOGZm
NTNiMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAKQEAgLTYyLDE3ICs2Miw0MyBAQAogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9T
KFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKy8vIFdlIHVz
ZSBTSUdVU1IyIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBtYWNoaW5lIHRocmVhZHMgaW4gSmF2YVNj
cmlwdENvcmUuCiBzdGF0aWMgY29uc3QgaW50IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgPSBTSUdV
U1IyOworc3RhdGljIFN0YXRpY0xvY2sgZ2xvYmFsU2lnbmFsTG9jazsKK3RocmVhZF9sb2NhbCBz
dGF0aWMgc3RkOjphdG9taWM8SlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkKj4gdGhyZWFkTG9j
YWxDdXJyZW50VGhyZWFkOwogCi0jaWYgZGVmaW5lZChTQV9SRVNUQVJUKQotc3RhdGljIHZvaWQg
cHRocmVhZFNpZ25hbEhhbmRsZXJTdXNwZW5kUmVzdW1lKGludCkKK3N0YXRpYyB2b2lkIHB0aHJl
YWRTaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZShpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVjb250
ZXh0KQogewotICAgIHNpZ3NldF90IHNpZ25hbFNldDsKLSAgICBzaWdlbXB0eXNldCgmc2lnbmFs
U2V0KTsKLSAgICBzaWdhZGRzZXQoJnNpZ25hbFNldCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7
Ci0gICAgc2lnc3VzcGVuZCgmc2lnbmFsU2V0KTsKKyAgICAvLyBUb3VjaGluZyB0aHJlYWQgbG9j
YWwgYXRvbWljIHR5cGVzIGZyb20gc2lnbmFsIGhhbmRsZXJzIGlzIGFsbG93ZWQuCisgICAgSlND
OjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkKiB0aHJlYWQgPSB0aHJlYWRMb2NhbEN1cnJlbnRUaHJl
YWQubG9hZCgpOworCisgICAgaWYgKHRocmVhZC0+c3VzcGVuZGVkLmxvYWQoc3RkOjptZW1vcnlf
b3JkZXJfYWNxdWlyZSkpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBzaWduYWwgaGFuZGxlciBpbnZv
Y2F0aW9uIHRoYXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byByZXN1bWUgc2lnc3VzcGVuZC4K
KyAgICAgICAgLy8gU28gdGhpcyBoYW5kbGVyIGludm9jYXRpb24gaXRzZWxmIHNob3VsZCBub3Qg
cHJvY2Vzcy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0cnVjdCB1Y29udGV4dCog
dXNlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxzdHJ1Y3QgdWNvbnRleHQqPih1Y29udGV4dCk7Cisg
ICAgdGhyZWFkLT5zdXNwZW5kZWRNYWNoaW5lQ29udGV4dCA9IHVzZXJDb250ZXh0LT51Y19tY29u
dGV4dDsKKworICAgIC8vIEFsbG93IHN1c3BlbmQgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhy
ZWFkIGlzIHN1c3BlbmRlZC4KKyAgICAvLyBzZW1fcG9zdCBpcyBhc3luYy1zaWduYWwtc2FmZSBm
dW5jdGlvbi4gSXQgbWVhbnMgdGhhdCB3ZSBjYW4gY2FsbCB0aGlzIGZyb20gYSBzaWduYWwgaGFu
ZGxlci4KKyAgICAvLyBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1
Mzk5L2Z1bmN0aW9ucy94c2hfY2hhcDAyXzA0Lmh0bWwjdGFnXzAyXzA0XzAzCisgICAgLy8KKyAg
ICAvLyBBbmQgc2VtX3Bvc3QgZW1pdHMgbWVtb3J5IGJhcnJpZXIgdGhhdCBlbnN1cmVzIHRoYXQg
c3VzcGVuZGVkTWFjaGluZUNvbnRleHQgaXMgY29ycmVjdGx5IHNhdmVkLgorICAgIC8vIGh0dHA6
Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L2Jhc2VkZWZzL1YxX2No
YXAwNC5odG1sI3RhZ18wNF8xMQorICAgIHNlbV9wb3N0KCZ0aHJlYWQtPnNlbWFwaG9yZUZvclN1
c3BlbmRSZXN1bWUpOworCisgICAgLy8gUmVhY2hpbmcgaGVyZSwgU2lnVGhyZWFkU3VzcGVuZFJl
c3VtZSBpcyBibG9ja2VkIGluIHRoaXMgaGFuZGxlciAodGhpcyBpcyBjb25maWd1cmVkIGJ5IHNp
Z2FjdGlvbidzIHNhX21hc2spLgorICAgIC8vIFNvIGJlZm9yZSBjYWxsaW5nIHNpZ3N1c3BlbmQs
IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUgdG8gdGhpcyB0aHJlYWQgaXMgZGVmZXJyZWQuIFRoaXMg
ZW5zdXJlcyB0aGF0IHRoZSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCByZWN1cnNpdmVseS4KKyAg
ICBzaWdzZXRfdCBibG9ja2VkU2lnbmFsU2V0OworICAgIHNpZ2ZpbGxzZXQoJmJsb2NrZWRTaWdu
YWxTZXQpOworICAgIHNpZ2RlbHNldCgmYmxvY2tlZFNpZ25hbFNldCwgU2lnVGhyZWFkU3VzcGVu
ZFJlc3VtZSk7CisgICAgc2lnc3VzcGVuZCgmYmxvY2tlZFNpZ25hbFNldCk7CisKKyAgICAvLyBB
bGxvdyByZXN1bWUgY2FsbGVyIHRvIHNlZSB0aGF0IHRoaXMgdGhyZWFkIGlzIHJlc3VtZWQuCisg
ICAgc2VtX3Bvc3QoJnRocmVhZC0+c2VtYXBob3JlRm9yU3VzcGVuZFJlc3VtZSk7CiB9Ci0jZW5k
aWYgLy8gZGVmaW5lZChTQV9SRVNUQVJUKQogI2VuZGlmIC8vIFVTRShQVEhSRUFEUykgJiYgIU9T
KFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCiAKICNlbmRpZgpAQCAtMjk2LDI0ICszMjIsMzUgQEAg
dm9pZCBNYWNoaW5lVGhyZWFkczo6Z2F0aGVyRnJvbUN1cnJlbnRUaHJlYWQoQ29uc2VydmF0aXZl
Um9vdHMmIGNvbnNlcnZhdGl2ZVJvb3QKICAgICAsIHN0YWNrQmFzZShiYXNlKQogICAgICwgc3Rh
Y2tFbmQoZW5kKQogewotI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhE
QVJXSU4pICYmIGRlZmluZWQoU0FfUkVTVEFSVCkKLSAgICAvLyBpZiB3ZSBoYXZlIFNBX1JFU1RB
UlQsIGVuYWJsZSBTSUdVU1IyIGRlYnVnZ2luZyBtZWNoYW5pc20KLSAgICBzdHJ1Y3Qgc2lnYWN0
aW9uIGFjdGlvbjsKLSAgICBhY3Rpb24uc2FfaGFuZGxlciA9IHB0aHJlYWRTaWduYWxIYW5kbGVy
U3VzcGVuZFJlc3VtZTsKLSAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOwotICAgIGFj
dGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7Ci0gICAgc2lnYWN0aW9uKFNpZ1RocmVhZFN1c3Bl
bmRSZXN1bWUsICZhY3Rpb24sIDApOwotCi0gICAgc2lnc2V0X3QgbWFzazsKLSAgICBzaWdlbXB0
eXNldCgmbWFzayk7Ci0gICAgc2lnYWRkc2V0KCZtYXNrLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1l
KTsKLSAgICBwdGhyZWFkX3NpZ21hc2soU0lHX1VOQkxPQ0ssICZtYXNrLCAwKTsKLSNlbGlmIE9T
KFdJTkRPV1MpCisjaWYgT1MoV0lORE9XUykKICAgICBBU1NFUlQocGxhdGZvcm1UaHJlYWQgPT0g
R2V0Q3VycmVudFRocmVhZElkKCkpOwogICAgIGJvb2wgaXNTdWNjZXNzZnVsID0KICAgICAgICAg
RHVwbGljYXRlSGFuZGxlKEdldEN1cnJlbnRQcm9jZXNzKCksIEdldEN1cnJlbnRUaHJlYWQoKSwg
R2V0Q3VycmVudFByb2Nlc3MoKSwKICAgICAgICAgICAgICZwbGF0Zm9ybVRocmVhZEhhbmRsZSwg
MCwgRkFMU0UsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNT
dWNjZXNzZnVsKTsKKyNlbGlmIFVTRShQVEhSRUFEUykgJiYgIU9TKERBUldJTikKKyAgICB0aHJl
YWRMb2NhbEN1cnJlbnRUaHJlYWQuc3RvcmUodGhpcyk7CisKKyAgICAvLyBTaWduYWwgaGFuZGxl
cnMgYXJlIHByb2Nlc3MgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uCisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGluaXRpYWxpemVTaWduYWxIYW5kbGVyOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVTaWduYWxIYW5kbGVyLCBbXSB7CisgICAgICAgIC8vIEludGVudGlvbmFsbHkgYmxvY2sg
U2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpbiB0aGUgaGFuZGxlci4KKyAgICAgICAgLy8gU2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSB3aWxsIGJlIGFsbG93ZWQgaW4gdGhlIGhhbmRsZXIgYnkgc2lnc3Vz
cGVuZC4KKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisgICAgICAgIHNpZ2VtcHR5
c2V0KCZhY3Rpb24uc2FfbWFzayk7CisgICAgICAgIHNpZ2FkZHNldCgmYWN0aW9uLnNhX21hc2ss
IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworCisgICAgICAgIGFjdGlvbi5zYV9zaWdhY3Rpb24g
PSBwdGhyZWFkU2lnbmFsSGFuZGxlclN1c3BlbmRSZXN1bWU7CisgICAgICAgIGFjdGlvbi5zYV9m
bGFncyA9IFNBX1JFU1RBUlQgfCBTQV9TSUdJTkZPOworICAgICAgICBzaWdhY3Rpb24oU2lnVGhy
ZWFkU3VzcGVuZFJlc3VtZSwgJmFjdGlvbiwgMCk7CisgICAgfSk7CisKKyAgICBzaWdzZXRfdCBt
YXNrOworICAgIHNpZ2VtcHR5c2V0KCZtYXNrKTsKKyAgICBzaWdhZGRzZXQoJm1hc2ssIFNpZ1Ro
cmVhZFN1c3BlbmRSZXN1bWUpOworICAgIHB0aHJlYWRfc2lnbWFzayhTSUdfVU5CTE9DSywgJm1h
c2ssIDApOworCisgICAgc2VtX2luaXQoJnNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUsIC8qIE9u
bHkgYXZhaWxhYmxlIGluIHRoaXMgcHJvY2Vzcy4gKi8gMCwgLyogSW5pdGlhbCB2YWx1ZSBmb3Ig
dGhlIHNlbWFwaG9yZS4gKi8gMCk7CiAjZW5kaWYKIH0KIApAQCAtMzIxLDYgKzM1OCw4IEBAIHZv
aWQgTWFjaGluZVRocmVhZHM6OmdhdGhlckZyb21DdXJyZW50VGhyZWFkKENvbnNlcnZhdGl2ZVJv
b3RzJiBjb25zZXJ2YXRpdmVSb290CiB7CiAjaWYgT1MoV0lORE9XUykKICAgICBDbG9zZUhhbmRs
ZShwbGF0Zm9ybVRocmVhZEhhbmRsZSk7CisjZWxpZiBVU0UoUFRIUkVBRFMpICYmICFPUyhEQVJX
SU4pCisgICAgc2VtX2Rlc3Ryb3koJnNlbWFwaG9yZUZvclN1c3BlbmRSZXN1bWUpOwogI2VuZGlm
CiB9CiAKQEAgLTMzNCw3ICszNzMsMjcgQEAgYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpz
dXNwZW5kKCkKICAgICBBU1NFUlQodGhyZWFkSXNTdXNwZW5kZWQpOwogICAgIHJldHVybiB0aHJl
YWRJc1N1c3BlbmRlZDsKICNlbGlmIFVTRShQVEhSRUFEUykKLSAgICBwdGhyZWFkX2tpbGwocGxh
dGZvcm1UaHJlYWQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkgIT0gcGxhdGZvcm1UaHJlYWQsICJDdXJy
ZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCBzdXNwZW5kIHRoZSBjdXJyZW50IHRocmVhZCBpdHNlbGYu
Iik7CisgICAgeworICAgICAgICAvLyBEdXJpbmcgc3VzcGVuZCwgc3VzcGVuZCBvciByZXN1bWUg
c2hvdWxkIG5vdCBiZSBleGVjdXRlZCBmcm9tIHRoZSBvdGhlciB0aHJlYWRzLgorICAgICAgICAv
LyBXZSB1c2UgZ2xvYmFsIGxvY2sgaW5zdGVhZCBvZiBwZXIgdGhyZWFkIGxvY2suCisgICAgICAg
IC8vIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY2FzZSwgdGhlcmUgYXJlIHRocmVhZHMgQSBhbmQg
Qi4KKyAgICAgICAgLy8gQW5kIEEgYXR0ZW1wdCB0byBzdXNwZW5kIEIgYW5kIEIgYXR0ZW1wdCB0
byBzdXNwZW5kIEEuCisgICAgICAgIC8vIEEgYW5kIEIgc2VuZCBzaWduYWxzLiBBbmQgbGF0ZXIs
IHNpZ25hbHMgYXJlIGRlbGl2ZXJlZCB0byBBIGFuZCBCLgorICAgICAgICAvLyBJbiB0aGF0IGNh
c2UsIGJvdGggd2lsbCBiZSBzdXNwZW5kZWQuCisgICAgICAgIExvY2tIb2xkZXIgbG9jayhnbG9i
YWxTaWduYWxMb2NrKTsKKyAgICAgICAgaWYgKCFzdXNwZW5kQ291bnQpIHsKKyAgICAgICAgICAg
IC8vIElkZWFsbHksIHdlIHdvdWxkIGxpa2UgdG8gdXNlIHB0aHJlYWRfc2lncXVldWUuIEl0IGFs
bG93cyB1cyB0byBwYXNzIHRoZSBhcmd1bWVudCB0byB0aGUgc2lnbmFsIGhhbmRsZXIuCisgICAg
ICAgICAgICAvLyBCdXQgaXQgY2FuIGJlIHVzZWQgaW4gYSBmZXcgcGxhdGZvcm1zLCBsaWtlIExp
bnV4LgorICAgICAgICAgICAgLy8gSW5zdGVhZCwgd2UgdXNlIFRocmVhZCogc3RvcmVkIGluIHRo
ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSB0byBwYXNzIGl0IHRvIHRoZSBzaWduYWwgaGFuZGxlci4K
KyAgICAgICAgICAgIGlmIChwdGhyZWFkX2tpbGwocGxhdGZvcm1UaHJlYWQsIFNpZ1RocmVhZFN1
c3BlbmRSZXN1bWUpID09IEVTUkNIKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHNlbV93YWl0KCZzZW1hcGhvcmVGb3JTdXNwZW5kUmVzdW1lKTsKKyAgICAgICAg
ICAgIC8vIFJlbGVhc2UgYmFycmllciBlbnN1cmVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYWx3
YXlzIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgYWJvdmUgcHJvY2Vzc2luZyBpcyBkb25lLgorICAg
ICAgICAgICAgc3VzcGVuZGVkLnN0b3JlKHRydWUsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGVhc2Up
OworICAgICAgICB9CisgICAgICAgICsrc3VzcGVuZENvdW50OworICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKICNlbHNlCiAjZXJyb3IgTmVlZCBhIHdheSB0byBzdXNwZW5kIHRocmVhZHMgb24gdGhp
cyBwbGF0Zm9ybQpAQCAtMzQ4LDcgKzQwNywyNSBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjpUaHJl
YWQ6OnJlc3VtZSgpCiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIFJlc3VtZVRocmVhZChwbGF0Zm9y
bVRocmVhZEhhbmRsZSk7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCi0gICAgcHRocmVhZF9raWxsKHBs
YXRmb3JtVGhyZWFkLCBTaWdUaHJlYWRTdXNwZW5kUmVzdW1lKTsKKyAgICB7CisgICAgICAgIC8v
IER1cmluZyByZXN1bWUsIHN1c3BlbmQgb3IgcmVzdW1lIHNob3VsZCBub3QgYmUgZXhlY3V0ZWQg
ZnJvbSB0aGUgb3RoZXIgdGhyZWFkcy4KKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKGdsb2JhbFNp
Z25hbExvY2spOworICAgICAgICBpZiAoc3VzcGVuZENvdW50ID09IDEpIHsKKyAgICAgICAgICAg
IC8vIFdoZW4gYWxsb3dpbmcgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSBpbnRlcnJ1cHQgaW4gdGhl
IHNpZ25hbCBoYW5kbGVyIGJ5IHNpZ3N1c3BlbmQgYW5kIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUg
aXMgYWN0dWFsbHkgaXNzdWVkLAorICAgICAgICAgICAgLy8gdGhlIHNpZ25hbCBoYW5kbGVyIGl0
c2VsZiB3aWxsIGJlIGNhbGxlZCBvbmNlIGFnYWluLgorICAgICAgICAgICAgLy8gVGhlcmUgYXJl
IHNldmVyYWwgd2F5cyB0byBkaXN0aW5ndWlzaCB0aGUgaGFuZGxlciBpbnZvY2F0aW9uIGZvciBz
dXNwZW5kIGFuZCByZXN1bWUuCisgICAgICAgICAgICAvLyAxLiBVc2UgZGlmZmVyZW50IHNpZ25h
bCBudW1iZXJzLiBBbmQgY2hlY2sgdGhlIHNpZ25hbCBudW1iZXIgaW4gdGhlIGhhbmRsZXIuCisg
ICAgICAgICAgICAvLyAyLiBVc2Ugc29tZSBhcmd1bWVudHMgdG8gZGlzdGluZ3Vpc2ggc3VzcGVu
ZCBhbmQgcmVzdW1lIGluIHRoZSBoYW5kbGVyLiBJZiBwdGhyZWFkX3NpZ3F1ZXVlIGNhbiBiZSB1
c2VkLCB3ZSBjYW4gdGFrZSB0aGlzLgorICAgICAgICAgICAgLy8gMy4gVXNlIHRocmVhZCBsb2Nh
bCBzdG9yYWdlIHdpdGggYXRvbWljIHZhcmlhYmxlcyBpbiB0aGUgc2lnbmFsIGhhbmRsZXIuCisg
ICAgICAgICAgICAvLyBJbiB0aGlzIGltcGxlbWVudGFpdG9uLCB3ZSB0YWtlICgzKS4gc3VzcGVu
ZGVkIGZsYWcgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBpdC4KKyAgICAgICAgICAgIGlmIChwdGhy
ZWFkX2tpbGwocGxhdGZvcm1UaHJlYWQsIFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpID09IEVTUkNI
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNlbV93YWl0KCZzZW1hcGhv
cmVGb3JTdXNwZW5kUmVzdW1lKTsKKyAgICAgICAgICAgIC8vIFJlbGVhc2UgYmFycmllciBlbnN1
cmVzIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgYWx3YXlzIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUg
YWJvdmUgcHJvY2Vzc2luZyBpcyBkb25lLgorICAgICAgICAgICAgc3VzcGVuZGVkLnN0b3JlKGZh
bHNlLCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxlYXNlKTsKKyAgICAgICAgfQorICAgICAgICAtLXN1
c3BlbmRDb3VudDsKKyAgICB9CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gcmVzdW1lIHRo
cmVhZHMgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC0zOTQsMTYgKzQ3MSwxNyBAQCBzaXpl
X3QgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0UmVnaXN0ZXJzKFRocmVhZDo6UmVnaXN0ZXJz
JiByZWdpc3RlcnMpCiAgICAgR2V0VGhyZWFkQ29udGV4dChwbGF0Zm9ybVRocmVhZEhhbmRsZSwg
JnJlZ3MpOwogICAgIHJldHVybiBzaXplb2YoQ09OVEVYVCk7CiAjZWxpZiBVU0UoUFRIUkVBRFMp
Ci0gICAgcHRocmVhZF9hdHRyX2luaXQoJnJlZ3MpOworICAgIHB0aHJlYWRfYXR0cl9pbml0KCZy
ZWdzLmF0dHJpYnV0ZSk7CiAjaWYgSEFWRShQVEhSRUFEX05QX0gpIHx8IE9TKE5FVEJTRCkKICNp
ZiAhT1MoT1BFTkJTRCkKICAgICAvLyBlLmcuIG9uIEZyZWVCU0QgNS40LCBuZXVuZG9yZkBrZGUu
b3JnCi0gICAgcHRocmVhZF9hdHRyX2dldF9ucChwbGF0Zm9ybVRocmVhZCwgJnJlZ3MpOworICAg
IHB0aHJlYWRfYXR0cl9nZXRfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzLmF0dHJpYnV0ZSk7CiAj
ZW5kaWYKICNlbHNlCiAgICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBvcnRhYmxl
OyBvdGhlciBQT1NJWCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5hdGl2ZXMK
LSAgICBwdGhyZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzKTsKKyAgICBwdGhy
ZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzLmF0dHJpYnV0ZSk7CiAjZW5kaWYK
KyAgICByZWdzLm1hY2hpbmVDb250ZXh0ID0gc3VzcGVuZGVkTWFjaGluZUNvbnRleHQ7CiAgICAg
cmV0dXJuIDA7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8gZ2V0IHRocmVhZCByZWdpc3Rl
cnMgb24gdGhpcyBwbGF0Zm9ybQpAQCAtNDY4LDcgKzU0Niw3IEBAIHZvaWQqIE1hY2hpbmVUaHJl
YWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6c3RhY2tQb2ludGVyKCkgY29uc3QKICAgICBzdGFja0Jh
c2UgPSAodm9pZCopKChzaXplX3QpIHNzLnNzX3NwIC0gc3Muc3Nfc2l6ZSk7CiAgICAgc3RhY2tT
aXplID0gc3Muc3Nfc2l6ZTsKICNlbHNlCi0gICAgaW50IHJjID0gcHRocmVhZF9hdHRyX2dldHN0
YWNrKCZyZWdzLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsKKyAgICBpbnQgcmMgPSBwdGhyZWFk
X2F0dHJfZ2V0c3RhY2soJnJlZ3MuYXR0cmlidXRlLCAmc3RhY2tCYXNlLCAmc3RhY2tTaXplKTsK
ICNlbmRpZgogICAgICh2b2lkKXJjOyAvLyBGSVhNRTogRGVhbCB3aXRoIGVycm9yIGNvZGUgc29t
ZWhvdz8gU2VlbXMgZmF0YWwuCiAgICAgQVNTRVJUKHN0YWNrQmFzZSk7CkBAIC01MjQsNiArNjAy
LDIzIEBAIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6ZnJhbWVQb2lu
dGVyKCkgY29uc3QKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlmCiAKKyNlbGlm
IGRlZmluZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMg
b24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdz
W1JFR19FQlBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JCUF0p
OworI2VsaWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVp
bnRwdHJfdCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fZnApOworI2VsaWYgQ1BVKEFSTTY0KQor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hp
bmVDb250ZXh0LnJlZ3NbMjldKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzWzMw
XSk7CisjZWxzZQorI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKwogI2Vsc2UK
ICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgZnJhbWUgcG9pbnRlciBmb3IgYW5vdGhlciB0
aHJlYWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC01NzMsNiArNjY4LDIzIEBAIHZvaWQq
IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6aW5zdHJ1Y3Rpb25Qb2ludGVyKCkg
Y29uc3QKICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogI2VuZGlmCiAKKyNlbGlmIGRlZmlu
ZWQoX19HTElCQ19fKQorCisvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xp
YmMncyBzeXMvdWNvbnRleHQuaC4KKyNpZiBDUFUoWDg2KQorICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LmdyZWdzW1JFR19F
SVBdKTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KCh1aW50cHRyX3QpIHJlZ3MubWFjaGluZUNvbnRleHQuZ3JlZ3NbUkVHX1JJUF0pOworI2Vs
aWYgQ1BVKEFSTSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oKHVpbnRwdHJf
dCkgcmVncy5tYWNoaW5lQ29udGV4dC5hcm1fcGMpOworI2VsaWYgQ1BVKEFSTTY0KQorICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250
ZXh0LnBjKTsKKyNlbGlmIENQVShNSVBTKQorICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZv
aWQqPigodWludHB0cl90KSByZWdzLm1hY2hpbmVDb250ZXh0LnBjKTsKKyNlbHNlCisjZXJyb3Ig
VW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorCiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkg
dG8gZ2V0IHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvciBhbm90aGVyIHRocmVhZCBvbiB0aGlz
IHBsYXRmb3JtCiAjZW5kaWYKQEAgLTU4Myw3ICs2OTUsNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRz
OjpUaHJlYWQ6OmZyZWVSZWdpc3RlcnMoVGhyZWFkOjpSZWdpc3RlcnMmIHJlZ2lzdGVycykKIHsK
ICAgICBUaHJlYWQ6OlJlZ2lzdGVyczo6UGxhdGZvcm1SZWdpc3RlcnMmIHJlZ3MgPSByZWdpc3Rl
cnMucmVnczsKICNpZiBVU0UoUFRIUkVBRFMpICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoREFSV0lO
KQotICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZyZWdzKTsKKyAgICBwdGhyZWFkX2F0dHJfZGVz
dHJveSgmcmVncy5hdHRyaWJ1dGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVncyk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFj
a01hcmtlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2Vy
LmgKaW5kZXggNGI2YTZlZWZlNDBlZTY4NjEyMGIzMTNmN2RmMzA5OGFmOWQxMDZhMy4uM2UwNTZh
ZDU1ZjU1Mzc3YmU2ZGIzZWI3OWIxMDRkMjg0NWNlMDVhNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmgKQEAgLTMxLDYgKzMxLDExIEBACiAj
aW5jbHVkZSA8bWFjaC90aHJlYWRfYWN0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShQVEhSRUFEUykg
JiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCisjaW5jbHVkZSA8c2VtYXBob3JlLmg+Cisj
aW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKwogI2lmIE9TKERBUldJTikKIHR5cGVkZWYgbWFj
aF9wb3J0X3QgUGxhdGZvcm1UaHJlYWQ7CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtOTQsNyArOTks
MTAgQEAgY2xhc3MgTWFjaGluZVRocmVhZHMgewogI2VsaWYgT1MoV0lORE9XUykKICAgICAgICAg
ICAgIHR5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlbGlmIFVTRShQVEhSRUFE
UykKLSAgICAgICAgICAgIHR5cGVkZWYgcHRocmVhZF9hdHRyX3QgUGxhdGZvcm1SZWdpc3RlcnM7
CisgICAgICAgICAgICBzdHJ1Y3QgUGxhdGZvcm1SZWdpc3RlcnMgeworICAgICAgICAgICAgICAg
IHB0aHJlYWRfYXR0cl90IGF0dHJpYnV0ZTsKKyAgICAgICAgICAgICAgICBtY29udGV4dF90IG1h
Y2hpbmVDb250ZXh0OworICAgICAgICAgICAgfTsKICNlbHNlCiAjZXJyb3IgTmVlZCBhIHRocmVh
ZCByZWdpc3RlciBzdHJ1Y3QgZm9yIHRoaXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtMTE3LDYgKzEy
NSwxMSBAQCBjbGFzcyBNYWNoaW5lVGhyZWFkcyB7CiAgICAgICAgIHZvaWQqIHN0YWNrRW5kOwog
I2lmIE9TKFdJTkRPV1MpCiAgICAgICAgIEhBTkRMRSBwbGF0Zm9ybVRocmVhZEhhbmRsZTsKKyNl
bGlmIFVTRShQVEhSRUFEUykgJiYgIU9TKERBUldJTikKKyAgICAgICAgc2VtX3Qgc2VtYXBob3Jl
Rm9yU3VzcGVuZFJlc3VtZTsKKyAgICAgICAgbWNvbnRleHRfdCBzdXNwZW5kZWRNYWNoaW5lQ29u
dGV4dDsKKyAgICAgICAgaW50IHN1c3BlbmRDb3VudCB7IDAgfTsKKyAgICAgICAgc3RkOjphdG9t
aWM8Ym9vbD4gc3VzcGVuZGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXgg
MzNiM2RmYmQwMzliYWFmYzY5ZjJkNjg2MzA2Zjc5ZjM3Y2M5MDE2ZS4uZmM4YmUyMGViNDk1MGRh
OGRhNjE0MjgxN2JmNmU4Mjg0YjM4MTI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCByZXBvcnRTdGF0cygpCiAgICAgaWYgKHNSZXBvcnRTdGF0cyAm
JiBzTnVtVG90YWxXYWxrcyAmJiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc051bVRvdGFsV2Fsa3Mp
ICUgc051bVdhbGtSZXBvcnRpbmdGcmVxdWVuY3kgPT0gMCkgewogICAgICAgICBpZiAoIXNSZXBv
cnRTdGF0c09ubHlXaGVuVGhleXJlQWJvdmVUaHJlc2hvbGQgfHwgKHNOdW1GYWlsZWRXYWxrcyAv
IHNOdW1Ub3RhbFdhbGtzID4gc1dhbGtFcnJvclBlcmNlbnRhZ2UpKSB7CiAgICAgICAgICAgICBk
YXRhTG9nRigiTnVtIHRvdGFsIHdhbGtzOiAlbGx1LiBGYWlsZWQgd2Fsa3MgcGVyY2VudDogJWxm
XG4iLAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzTnVtVG90YWxXYWxr
cyksIHNOdW1GYWlsZWRXYWxrcyAvIHNOdW1Ub3RhbFdhbGtzKTsKKyAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KHNOdW1Ub3RhbFdhbGtzKSwgc051bUZhaWxl
ZFdhbGtzIC8gc051bVRvdGFsV2Fsa3MpOwogICAgICAgICAgICAgZGF0YUxvZ0YoIlRvdGFsIHN0
YWNrIHRyYWNlczogJWxsdS4gTmVlZHMgdmVyaWZpY2F0aW9uIHBlcmNlbnQ6ICVsZlxuIiwKLSAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc051bVRvdGFsU3RhY2tUcmFjZXMp
LCBzTnVtVW52ZXJpZmllZFN0YWNrVHJhY2VzIC8gc051bVRvdGFsU3RhY2tUcmFjZXMpOworICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc051bVRvdGFsU3Rh
Y2tUcmFjZXMpLCBzTnVtVW52ZXJpZmllZFN0YWNrVHJhY2VzIC8gc051bVRvdGFsU3RhY2tUcmFj
ZXMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZWI5NmZkNjIxZDNlMzE0
MjYyMDEzMWM1OGRiMjA4MTM3M2JjMjIzNy4uNjIyNWM0ZGM5YTNkMGQ0OTc2YmU3ZmMwNmZiZjRk
OTcyY2YwNGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC00MjYsNiArNDI2LDEyIEBACiAKIC8qIE9wZXJh
dGluZyBlbnZpcm9ubWVudHMgKi8KIAorLyogU3RhbmRhcmQgbGlicmFyaWVzICovCisjaWYgZGVm
aW5lZChIQVZFX0ZFQVRVUkVTX0gpICYmIEhBVkVfRkVBVFVSRVNfSAorLyogSWYgdGhlIGluY2x1
ZGVkIGZlYXR1cmVzLmggaXMgZ2xpYmMncyBvbmUsIF9fR0xJQkNfXyBpcyBkZWZpbmVkLiAqLwor
I2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjZW5kaWYKKwogLyogRklYTUU6IHRoZXNlIGFyZSBhbGwg
bWl4ZXMgb2YgT1MsIG9wZXJhdGluZyBlbnZpcm9ubWVudCBhbmQgcG9saWN5IGNob2ljZXMuICov
CiAvKiBQTEFURk9STShFRkwpICovCiAvKiBQTEFURk9STShHVEspICovCkBAIC03OTgsOCArODA0
LDEwIEBACiAjZW5kaWYKIAogLyogVGhlIFNhbXBsaW5nUHJvZmlsZXIgaXMgdGhlIHByb2JhYmls
aXN0aWMgYW5kIGxvdy1vdmVyaGVhZCBwcm9maWxlciB1c2VkIGJ5Ci0gKiBKU0MgdG8gbWVhc3Vy
ZSB3aGVyZSB0aW1lIGlzIHNwZW50IGluc2lkZSBhIEphdmFTY3JpcHQgcHJvZ3JhbS4gKi8KLSNp
ZiAoT1MoREFSV0lOKSB8fCBPUyhXSU5ET1dTKSkgJiYgRU5BQkxFKEpJVCkKKyAqIEpTQyB0byBt
ZWFzdXJlIHdoZXJlIHRpbWUgaXMgc3BlbnQgaW5zaWRlIGEgSmF2YVNjcmlwdCBwcm9ncmFtLgor
ICogSW4gY29uZmlndXJhdGlvbnMgb3RoZXIgdGhhbiBXaW5kb3dzIGFuZCBEYXJ3aW4sIGJlY2F1
c2UgbGF5b3V0IG9mIG1jb250ZXh0X3QgZGVwZW5kcyBvbiBzdGFuZGFyZCBsaWJyYXJpZXMgKGxp
a2UgZ2xpYmMpLAorICogc2FtcGxpbmcgcHJvZmlsZXIgaXMgZW5hYmxlZCBpZiBXZWJLaXQgdXNl
cyBwdGhyZWFkcyBhbmQgZ2xpYmMuICovCisjaWYgKE9TKERBUldJTikgfHwgT1MoV0lORE9XUykg
fHwgKFVTRShQVEhSRUFEUykgJiYgZGVmaW5lZChfX0dMSUJDX18pKSkgJiYgRU5BQkxFKEpJVCkK
ICNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1BST0ZJTEVSIDEKICNlbHNlCiAjZGVmaW5lIEVOQUJM
RV9TQU1QTElOR19QUk9GSUxFUiAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0Nv
bW1vbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmluZGV4IDMzOWM1
N2JiODAyNDVkMTM3ZjFjNjg4ZjI0ZjBmZDEwZGQxNTgzZGQuLjQ2ZDY5NWU5MjkxZThlN2RiMmQw
NjYwOTEzNjA5ODMwNTQxODhmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29t
bW9uLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCkBAIC0xNDcs
MyArMTQ3LDkgQEAgZW5kaWYgKCkKIGlmIChOT1QgQVBQTEUpCiAgICAgc2V0KENNQUtFX05JTkpB
X0ZPUkNFX1JFU1BPTlNFX0ZJTEUgMSkKIGVuZGlmICgpCisKKyMgQ2hlY2sgd2hldGhlciBmZWF0
dXJlcy5oIGhlYWRlciBleGlzdHMuCisjIEluY2x1ZGluZyBnbGliYydzIG9uZSBkZWZpbmVzIF9f
R0xJQkNfXywgdGhhdCBpcyB1c2VkIGluIFBsYXRmb3JtLmgKK2luY2x1ZGUoQ2hlY2tJbmNsdWRl
RmlsZXMpCitjaGVja19pbmNsdWRlX2ZpbGVzKGZlYXR1cmVzLmggSEFWRV9GRUFUVVJFU19IKQor
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoSEFWRV9GRUFUVVJFU19IICR7SEFWRV9GRUFUVVJFU19I
fSkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkMmVkYzYyOTljZTBm
ZjNjNDhmNzYxMjFkNTA3MTE4MTY5ZjlmZjIyLi45MWY0ZGNlYTBmZWZlNWZmMzExMjVlZTU0MzBl
NDY2YTU0NmFjYTljIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTYtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgRW5hYmxlIFNhbXBsaW5nUHJvZmlsZXIgb24gUE9TSVggZW52aXJv
bm1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MzU4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBmZWF0dXJlcy5oIGhlYWRlciBjaGVjay4gSXQgd2lsbCBkZWZpbmUgX19HTElCQ19fLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2U6CisKIDIwMTYtMDEtMjcg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVO
QUJMRV9DVVJSRU5UU1JDCg==
</data>
<flag name="review"
          id="294984"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270304</attachid>
            <date>2016-01-30 03:45:27 -0800</date>
            <delta_ts>2016-01-30 03:45:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153584-20160130204501.patch</filename>
            <type>text/plain</type>
            <size>5229</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NDE3OWJhNDE2MzBkZDI1OWY5NjhjYWM2YzIxYjQ5NDYwZmRlNzRhLi5jMzc5OWIzNDU0YmU2MjE0
ZDI3MDQwNGQxMGI0YjM4YWZlYzk4ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wMS0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBFbmFibGUgU2FtcGxpbmdQcm9maWxlciBvbiBQT1NJWCBlbnZpcm9u
bWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
NTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
ZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHA6CisgICAgICAgIChwdGhyZWFkU2lnbmFsSGFuZGxl
clN1c3BlbmRSZXN1bWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpy
ZXN1bWUpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6
OmZyYW1lUG9pbnRlcik6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJl
Z2lzdGVyczo6aW5zdHJ1Y3Rpb25Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpsbGludFBDKToKKyAgICAgICAgKiBydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1Byb2ZpbGVyOjpTYW1wbGlu
Z1Byb2ZpbGVyKToKKwogMjAxNi0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIEIzIHNob3VsZCByZWR1Y2UgTW9kKHZhbHVlLCBjb25zdGFudCkgdG8gRGl2
IGFuZCBNdWwgc28gdGhhdCBvdXIgRGl2IG9wdGltaXphdGlvbnMgY2FuIGRvIHRoaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA5NDExOGRmODUxOTAxMmE1MjIwOWRkMzc4YjYyMzYzNzE2ZmE0MTU1Li4wYzUzMGFhZmYyNDVl
ZjJhZDYyNjc4MjY2ZTBlMmY2NDQ0YTQyOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTAx
LTMwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEVu
YWJsZSBTYW1wbGluZ1Byb2ZpbGVyIG9uIFBPU0lYIGVudmlyb25tZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAy
MDE2LTAxLTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgZXF1YWxJZ25vcmluZ0Nhc2Ugc2luY2UgYWxsIGNhbGxlcnMgcmVhbGx5IHdhbnRlZCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFj
aGluZVN0YWNrTWFya2VyLmNwcAppbmRleCA0NmUzMjVmOWU1Nzg2NTE1NmM2MjgzOWI3ZjFlN2Y0
MTgwZTQ0ZTg2Li5iMTAzMDFmNGFjN2Y5OGNlMDdhN2UzMTVjYjI1MTViZWM0NTVjYmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAK
QEAgLTcwLDEwICs3MCwxMiBAQAogI2lmIGRlZmluZWQoU0FfUkVTVEFSVCkKIHN0YXRpYyB2b2lk
IHB0aHJlYWRTaWduYWxIYW5kbGVyU3VzcGVuZFJlc3VtZShpbnQpCiB7CisjaWYgMAogICAgIHNp
Z3NldF90IHNpZ25hbFNldDsKICAgICBzaWdlbXB0eXNldCgmc2lnbmFsU2V0KTsKICAgICBzaWdh
ZGRzZXQoJnNpZ25hbFNldCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAgICAgc2lnc3VzcGVu
ZCgmc2lnbmFsU2V0KTsKKyNlbmRpZgogfQogI2VuZGlmIC8vIGRlZmluZWQoU0FfUkVTVEFSVCkK
ICNlbmRpZiAvLyBVU0UoUFRIUkVBRFMpICYmICFPUyhXSU5ET1dTKSAmJiAhT1MoREFSV0lOKQpA
QCAtMzUxLDcgKzM1Myw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6cmVzdW1lKCkK
ICNlbGlmIE9TKFdJTkRPV1MpCiAgICAgUmVzdW1lVGhyZWFkKHBsYXRmb3JtVGhyZWFkSGFuZGxl
KTsKICNlbGlmIFVTRShQVEhSRUFEUykKLSAgICBwdGhyZWFkX2tpbGwocGxhdGZvcm1UaHJlYWQs
IFNpZ1RocmVhZFN1c3BlbmRSZXN1bWUpOworICAgIC8vIHB0aHJlYWRfa2lsbChwbGF0Zm9ybVRo
cmVhZCwgU2lnVGhyZWFkU3VzcGVuZFJlc3VtZSk7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkg
dG8gcmVzdW1lIHRocmVhZHMgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCkBAIC01MjgsNyArNTMw
LDcgQEAgdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpmcmFtZVBvaW50
ZXIoKSBjb25zdAogI2VuZGlmCiAKICNlbHNlCi0jZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhl
IGZyYW1lIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCkBAIC01NzcsNyArNTc5LDcgQEAgdm9pZCogTWFj
aGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjppbnN0cnVjdGlvblBvaW50ZXIoKSBjb25z
dAogI2VuZGlmCiAKICNlbHNlCi0jZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIGluc3RydWN0
aW9uIHBvaW50ZXIgZm9yIGFub3RoZXIgdGhyZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyAgICByZXR1
cm4gbnVsbHB0cjsKICNlbmRpZgogfQogdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVn
aXN0ZXJzOjpsbGludFBDKCkgY29uc3QKQEAgLTYzNSw3ICs2MzcsNyBAQCB2b2lkKiBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnM6OmxsaW50UEMoKSBjb25zdAogI2VuZGlmCiAKICNl
bHNlCi0jZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIExMSW50UEMgZm9yIGFub3RoZXIgdGhy
ZWFkIG9uIHRoaXMgcGxhdGZvcm0KKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogI2Vu
ZGlmIC8vIEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAKaW5kZXggN2YwZWQ3MzUzODA2YjVh
NjczOTVjYjNjN2ZlODA0OWNkYjE4MDk4MS4uNTgwMzkxYTZkODk3NmNlMDYyMTg2ODFlZGU1NzVk
ZWZlNTE5MWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Ft
cGxpbmdQcm9maWxlci5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBjbGFzcyBGcmFtZVdhbGtlciB7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV92bS5lbnRyeVNjb3BlKSB7Ci0gICAgICAgICAg
ICBkb3VibGUgbm93VGltZSA9IG1fc3RvcHdhdGNoLT5lbGFwc2VkVGltZSgpOworICAgICAgICAg
ICAgLy8gZG91YmxlIG5vd1RpbWUgPSBtX3N0b3B3YXRjaC0+ZWxhcHNlZFRpbWUoKTsKIAogICAg
ICAgICAgICAgTG9ja0hvbGRlciBtYWNoaW5lVGhyZWFkc0xvY2tlcihtX3ZtLmhlYXAubWFjaGlu
ZVRocmVhZHMoKS5nZXRMb2NrKCkpOwogICAgICAgICAgICAgTG9ja0hvbGRlciBjb2RlQmxvY2tT
ZXRMb2NrZXIobV92bS5oZWFwLmNvZGVCbG9ja1NldCgpLmdldExvY2soKSk7CkBAIC0yMTQsNiAr
MjE0LDggQEAgY2xhc3MgRnJhbWVXYWxrZXIgewogCiAgICAgICAgICAgICBib29sIGRpZFN1c3Bl
bmQgPSBtX2pzY0V4ZWN1dGlvblRocmVhZC0+c3VzcGVuZCgpOwogICAgICAgICAgICAgaWYgKGRp
ZFN1c3BlbmQpIHsKKyAgICAgICAgICAgICAgICBtX2pzY0V4ZWN1dGlvblRocmVhZC0+cmVzdW1l
KCk7CisjaWYgMAogICAgICAgICAgICAgICAgIC8vIFdoaWxlIHRoZSBKU0MgdGhyZWFkIGlzIHN1
c3BlbmRlZCwgd2UgY2FuJ3QgZG8gdGhpbmdzIGxpa2UgbWFsbG9jIGJlY2F1c2UgdGhlIEpTQyB0
aHJlYWQKICAgICAgICAgICAgICAgICAvLyBtYXkgYmUgaG9sZGluZyB0aGUgbWFsbG9jIGxvY2su
CiAgICAgICAgICAgICAgICAgRXhlY1N0YXRlKiBjYWxsRnJhbWU7CkBAIC0yNzgsNiArMjgwLDcg
QEAgY2xhc3MgRnJhbWVXYWxrZXIgewogCiAgICAgICAgICAgICAgICAgICAgIG1fdG90YWxUaW1l
ICs9IG5vd1RpbWUgLSBtX2xhc3RUaW1lOwogICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGViOTZmZDYyMWQzZTMxNDI2
MjAxMzFjNThkYjIwODEzNzNiYzIyMzcuLjhkMTg0MjY1MDRiM2ZmYTZhZGRhODgyZjk4YjRkMTVm
NmY3MDEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtNzk5LDcgKzc5OSw3IEBACiAKIC8qIFRoZSBTYW1w
bGluZ1Byb2ZpbGVyIGlzIHRoZSBwcm9iYWJpbGlzdGljIGFuZCBsb3ctb3ZlcmhlYWQgcHJvZmls
ZXIgdXNlZCBieQogICogSlNDIHRvIG1lYXN1cmUgd2hlcmUgdGltZSBpcyBzcGVudCBpbnNpZGUg
YSBKYXZhU2NyaXB0IHByb2dyYW0uICovCi0jaWYgKE9TKERBUldJTikgfHwgT1MoV0lORE9XUykp
ICYmIEVOQUJMRShKSVQpCisjaWYgKE9TKERBUldJTikgfHwgT1MoV0lORE9XUykgfHwgT1MoTElO
VVgpKSAmJiBFTkFCTEUoSklUKQogI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfUFJPRklMRVIgMQog
I2Vsc2UKICNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1BST0ZJTEVSIDAK
</data>

          </attachment>
      

    </bug>

</bugzilla>