<?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>155706</bug_id>
          
          <creation_ts>2016-03-20 16:52:45 -0700</creation_ts>
          <short_desc>[JSCOnly] Implement RunLoop and remove glib dependency</short_desc>
          <delta_ts>2016-04-18 15:59:22 -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>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>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1176631</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-20 16:52:45 -0700</bug_when>
    <thetext>Worth trying. When it&apos;s done, JSCOnly port only requires ICU in the system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181795</commentid>
    <comment_count>1</comment_count>
      <attachid>275915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-07 12:34:36 -0700</bug_when>
    <thetext>Created attachment 275915
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181796</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-07 12:35:56 -0700</bug_when>
    <thetext>Attachment 275915 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:81:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:87:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:127:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 20 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>1182174</commentid>
    <comment_count>3</comment_count>
      <attachid>276008</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-08 09:42:34 -0700</bug_when>
    <thetext>Created attachment 276008
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182179</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 09:57:31 -0700</bug_when>
    <thetext>Attachment 276008 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:81:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:87:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:127:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 18 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>1182192</commentid>
    <comment_count>5</comment_count>
      <attachid>276010</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-08 10:24:45 -0700</bug_when>
    <thetext>Created attachment 276010
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182250</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 12:22:33 -0700</bug_when>
    <thetext>Attachment 276010 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:81:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/WorkQueueNone.cpp:87:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:131:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 18 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>1182682</commentid>
    <comment_count>7</comment_count>
      <attachid>276142</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-11 05:56:01 -0700</bug_when>
    <thetext>Created attachment 276142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182683</commentid>
    <comment_count>8</comment_count>
      <attachid>276142</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-11 05:57:31 -0700</bug_when>
    <thetext>Comment on attachment 276142
Patch

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

Add comments.

&gt; Tools/TestWebKitAPI/PlatformUtilities.h:29
&gt; +#if !PLATFORM(JSCONLY)

Currently, PLATFORM(JSCONLY) is only used in the TestWTF test harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182684</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 05:57:53 -0700</bug_when>
    <thetext>Attachment 276142 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 18 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>1182685</commentid>
    <comment_count>10</comment_count>
      <attachid>276143</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-11 06:01:24 -0700</bug_when>
    <thetext>Created attachment 276143
Patch

Windows Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182686</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 06:02:30 -0700</bug_when>
    <thetext>Attachment 276143 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 18 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>1182695</commentid>
    <comment_count>12</comment_count>
      <attachid>276149</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-11 07:27:53 -0700</bug_when>
    <thetext>Created attachment 276149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182697</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 07:30:14 -0700</bug_when>
    <thetext>Attachment 276149 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/config.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WTF/wtf/none/RunLoopNone.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 18 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>1183090</commentid>
    <comment_count>14</comment_count>
      <attachid>276242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 09:59:16 -0700</bug_when>
    <thetext>Created attachment 276242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183091</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 10:00:54 -0700</bug_when>
    <thetext>Attachment 276242 did not pass style-queue:


ERROR: Source/WTF/wtf/platformindependent/RunLoopPlatformIndependent.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 20 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>1183092</commentid>
    <comment_count>16</comment_count>
      <attachid>276242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 10:01:54 -0700</bug_when>
    <thetext>Comment on attachment 276242
Patch

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

Add comments.

&gt; Source/WTF/wtf/Platform.h:1149
&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE  &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)

Instead of adding these flag definition in port&apos;s build configs, we determine it in Platform.h.
This is the same style to PLATFORM(OSX) / PLATFORM(IOS).

&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:153
&gt; +}

Move it from WorkQueueGLib. This is better since it is RunLoop related code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183097</commentid>
    <comment_count>17</comment_count>
      <attachid>276242</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-12 10:22:36 -0700</bug_when>
    <thetext>Comment on attachment 276242
Patch

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

&gt; Source/WTF/wtf/PlatformGTK.cmake:10
&gt; +    platformindependent/WorkQueuePlatformIndependent.cpp

&quot;PlatformIndependent&quot; is overly long, in this case

&gt; Source/WTF/wtf/RunLoop.h:167
&gt; +#elif EVENT_LOOP(COCOA)

I think it should be EVENT_LOOP(DARWIN) or EVENT_LOOP(CF)

&gt;&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:153
&gt;&gt; +}
&gt; 
&gt; Move it from WorkQueueGLib. This is better since it is RunLoop related code.

I would do it in a separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183098</commentid>
    <comment_count>18</comment_count>
      <attachid>276242</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-12 10:26:53 -0700</bug_when>
    <thetext>Comment on attachment 276242
Patch

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

&gt;&gt; Source/WTF/wtf/PlatformGTK.cmake:10
&gt;&gt; +    platformindependent/WorkQueuePlatformIndependent.cpp
&gt; 
&gt; &quot;PlatformIndependent&quot; is overly long, in this case

...in this case I think it might be better to call it &quot;C++11 event loop&quot; (e.g., cxx11/WorkQueueCxx11.cpp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183113</commentid>
    <comment_count>19</comment_count>
      <attachid>276246</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:00:07 -0700</bug_when>
    <thetext>Created attachment 276246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183114</commentid>
    <comment_count>20</comment_count>
      <attachid>276242</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:02:05 -0700</bug_when>
    <thetext>Comment on attachment 276242
Patch

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

Thanks!

&gt;&gt;&gt; Source/WTF/wtf/PlatformGTK.cmake:10
&gt;&gt;&gt; +    platformindependent/WorkQueuePlatformIndependent.cpp
&gt;&gt; 
&gt;&gt; &quot;PlatformIndependent&quot; is overly long, in this case
&gt; 
&gt; ...in this case I think it might be better to call it &quot;C++11 event loop&quot; (e.g., cxx11/WorkQueueCxx11.cpp)

Changed to Cxx11. (EVENT_LOOP(CXX11).

&gt;&gt; Source/WTF/wtf/RunLoop.h:167
&gt;&gt; +#elif EVENT_LOOP(COCOA)
&gt; 
&gt; I think it should be EVENT_LOOP(DARWIN) or EVENT_LOOP(CF)

Changed to DARWIN. Since AppleWin port uses CF, but it uses EVENT_LOOP(WINDOWS). EVENT_LOOP(DARWIN) seems better.

&gt;&gt;&gt; Source/WTF/wtf/glib/RunLoopGLib.cpp:153
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Move it from WorkQueueGLib. This is better since it is RunLoop related code.
&gt; 
&gt; I would do it in a separate patch

Done :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183115</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 11:02:30 -0700</bug_when>
    <thetext>Attachment 276246 did not pass style-queue:


ERROR: Source/WTF/wtf/cxx11/RunLoopCxx11.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 19 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>1183116</commentid>
    <comment_count>22</comment_count>
      <attachid>276246</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-12 11:03:44 -0700</bug_when>
    <thetext>Comment on attachment 276246
Patch

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

&gt; Source/cmake/OptionsJSCOnly.cmake:19
&gt; +set(DEFAULT_EVENT_LOOP_TYPE &quot;None&quot;)

Please rename &quot;None&quot; to &quot;C++11&quot; or &quot;Cxx11&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183117</commentid>
    <comment_count>23</comment_count>
      <attachid>276246</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:04:39 -0700</bug_when>
    <thetext>Comment on attachment 276246
Patch

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

&gt;&gt; Source/cmake/OptionsJSCOnly.cmake:19
&gt;&gt; +set(DEFAULT_EVENT_LOOP_TYPE &quot;None&quot;)
&gt; 
&gt; Please rename &quot;None&quot; to &quot;C++11&quot; or &quot;Cxx11&quot;

Oops, renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183118</commentid>
    <comment_count>24</comment_count>
      <attachid>276247</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:07:46 -0700</bug_when>
    <thetext>Created attachment 276247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183119</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-12 11:09:27 -0700</bug_when>
    <thetext>Attachment 276247 did not pass style-queue:


ERROR: Source/WTF/wtf/cxx11/RunLoopCxx11.cpp:129:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 19 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>1183123</commentid>
    <comment_count>26</comment_count>
      <attachid>276247</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-12 11:12:41 -0700</bug_when>
    <thetext>Comment on attachment 276247
Patch

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

&gt; Source/WTF/wtf/cxx11/RunLoopCxx11.cpp:129
&gt; +        {

I think we should avoid having clever scope there and move its contents into static inline function instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183131</commentid>
    <comment_count>27</comment_count>
      <attachid>276248</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:30:00 -0700</bug_when>
    <thetext>Created attachment 276248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183132</commentid>
    <comment_count>28</comment_count>
      <attachid>276249</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:30:56 -0700</bug_when>
    <thetext>Created attachment 276249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183135</commentid>
    <comment_count>29</comment_count>
      <attachid>276247</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:35:11 -0700</bug_when>
    <thetext>Comment on attachment 276247
Patch

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

&gt;&gt; Source/WTF/wtf/cxx11/RunLoopCxx11.cpp:129
&gt;&gt; +        {
&gt; 
&gt; I think we should avoid having clever scope there and move its contents into static inline function instead

Changed it. But this scope highly depends on RunLoop&apos;s fields. So static inline function cannot be used here.
Instead, I added RunLoop::populateTasks() member function with ALWAYS_INLINE. And call it only from RunLoopCxx11.cpp.
And I annotated runImpl as NEVER_INLINE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183141</commentid>
    <comment_count>30</comment_count>
      <attachid>276251</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:39:12 -0700</bug_when>
    <thetext>Created attachment 276251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183148</commentid>
    <comment_count>31</comment_count>
      <attachid>276253</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:42:54 -0700</bug_when>
    <thetext>Created attachment 276253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183151</commentid>
    <comment_count>32</comment_count>
      <attachid>276254</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:47:07 -0700</bug_when>
    <thetext>Created attachment 276254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183158</commentid>
    <comment_count>33</comment_count>
      <attachid>276253</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-12 11:51:59 -0700</bug_when>
    <thetext>Comment on attachment 276253
Patch

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

&gt; Source/WTF/wtf/RunLoop.h:185
&gt; +    void scheduleAndWakeUp(RefPtr&lt;TimerBase::ScheduledTask&gt;);

Shouldn&apos;t schedule methods take RefPtr&lt;TimerBase::ScheduledTask&gt; by rvalue reference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183160</commentid>
    <comment_count>34</comment_count>
      <attachid>276257</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 11:57:08 -0700</bug_when>
    <thetext>Created attachment 276257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183162</commentid>
    <comment_count>35</comment_count>
      <attachid>276253</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 12:02:17 -0700</bug_when>
    <thetext>Comment on attachment 276253
Patch

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

&gt;&gt; Source/WTF/wtf/RunLoop.h:185
&gt;&gt; +    void scheduleAndWakeUp(RefPtr&lt;TimerBase::ScheduledTask&gt;);
&gt; 
&gt; Shouldn&apos;t schedule methods take RefPtr&lt;TimerBase::ScheduledTask&gt; by rvalue reference?

For scheduleAndWakeUp, it should not be rvalue ref since TimerBase owns it as m_scheduledTask.
for schedule(RefPtr&lt;TimerBase::ScheduledTask&gt;), it is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183163</commentid>
    <comment_count>36</comment_count>
      <attachid>276258</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 12:07:08 -0700</bug_when>
    <thetext>Created attachment 276258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183181</commentid>
    <comment_count>37</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-12 12:56:44 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Comment on attachment 276246 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=276246&amp;action=review
&gt; 
&gt; &gt; Source/cmake/OptionsJSCOnly.cmake:19
&gt; &gt; +set(DEFAULT_EVENT_LOOP_TYPE &quot;None&quot;)
&gt; 
&gt; Please rename &quot;None&quot; to &quot;C++11&quot; or &quot;Cxx11&quot;

I would go with &quot;Generic&quot; personally</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183187</commentid>
    <comment_count>38</comment_count>
      <attachid>276246</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 13:11:38 -0700</bug_when>
    <thetext>Comment on attachment 276246
Patch

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

&gt;&gt;&gt;&gt; Source/cmake/OptionsJSCOnly.cmake:19
&gt;&gt;&gt;&gt; +set(DEFAULT_EVENT_LOOP_TYPE &quot;None&quot;)
&gt;&gt;&gt; 
&gt;&gt;&gt; Please rename &quot;None&quot; to &quot;C++11&quot; or &quot;Cxx11&quot;
&gt;&gt; 
&gt;&gt; Oops, renaming.
&gt; 
&gt; I would go with &quot;Generic&quot; personally

OK, I&apos;ve updated it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183188</commentid>
    <comment_count>39</comment_count>
      <attachid>276265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-12 13:12:30 -0700</bug_when>
    <thetext>Created attachment 276265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183523</commentid>
    <comment_count>40</comment_count>
      <attachid>276265</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-13 13:52:21 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

I&apos;ve reviewed so far all but RunLoopGeneric.cpp (the most important part). I have a bunch of comments but they&apos;re all minor, mostly just nits about your comments. So far this looks like r+ to me, but I need to spend more time looking at RunLoopGeneric.cpp first.

&gt; Source/WTF/ChangeLog:15
&gt; +        dependency. As a result, now, JSCOnly port removes dependencies except for the system ICU.

Excellent.

I&apos;m curious how the performance is relative to the GLib-based RunLoop.

&gt; Source/WTF/ChangeLog:21
&gt; +        EVENT_LOOP determination is done in Platform.h. This follows the style of WTF PLATFORM.

Missing a newline before this paragraph.

&gt; Source/WTF/wtf/Platform.h:1147
&gt; + * For example, GTK port in OSX, its platform is GTK, OS is DARWIN and EVENT_LOOP is GLIB.

OS X

&gt; Source/WTF/wtf/Platform.h:1149
&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE  &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)

You have an extra space character here before the &amp;&amp;

&gt; Source/WTF/wtf/Platform.h:1159
&gt; + * So that, EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.

Some English nits here: this comma doesn&apos;t belong, and this is a sentence fragment. The easiest way to improve it is to merge it into the previous sentence:

Even if the port is AppleWin, we use the Windows message pump system for the event loop, so that EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.

&gt; Source/WTF/wtf/Platform.h:1161
&gt; + * PLATFORM(WIN) should be false. And in that case, GLIB&apos;s event loop is used.

GLib&apos;s

&gt; Source/WTF/wtf/Platform.h:1165
&gt; +/* OSX and IOS. Use CoreFoundation &amp; GCD abstraction. */

OS X, iOS

Another style nit: &amp; -&gt; &quot;and.&quot; We normally only use &amp; in trademarks, logos, and other special situations: https://en.wikipedia.org/wiki/Ampersand#Usage

A more substantial question: is WTF_EVENT_LOOP_DARWIN the best name for this? I&apos;m not familiar with Apple ecosystem development, but that implies to me that the event loop abstraction uses native Darwin APIs and can be used without the higher-level CoreFoundation?

&gt; Source/WTF/wtf/Platform.h:1168
&gt; +/* EFL port uses GLIB. But it uses its own event loop abstraction.

GLib

&gt; Source/WTF/wtf/Platform.h:1173
&gt; +/* Use GLIB&apos;s event loop abstraction. Primarily GTK port uses it. */

Ditto.

&gt; Source/WTF/wtf/RunLoop.h:77
&gt; +    WTF_EXPORT_PRIVATE static void iterate();

A public static function that iterates every RunLoop that exists? This doesn&apos;t seem like a great interface....

&gt; Source/WTF/wtf/WorkQueue.h:86
&gt; +    RunLoop&amp; runLoop() const { return *m_runLoop; }

Looks like m_runLoop is always non-null. In a follow-up patch, it would be good to convert m_runLoop to be a reference rather than a pointer.

&gt; Source/WTF/wtf/generic/WorkQueueGeneric.cpp:42
&gt; +        threadName = threadName.substring(size + 1);

This code is pretty confusing without the comment in WorkQueueGLib.cpp, you might want to copy that as well.

&gt; Source/WTF/wtf/generic/WorkQueueGeneric.cpp:87
&gt; +void WorkQueue::dispatchAfter(std::chrono::nanoseconds delay, std::function&lt;void()&gt; function)

So, except for this dispatchAfter function, all the code in this file looks identical to WorkQueueGLib.cpp. It&apos;s a recipe for bugs to be fixed in one port but not the other. Perhaps we could move this to be conditionally-compiled in WorkQueue.cpp? We already have a huge chunk of #if !PLATFORM(COCOA) there, so it&apos;s not really any worse to add an #if EVENT_LOOP(GLIB) || EVENT_LOOP(GENERIC) block as well.

&gt; Tools/ChangeLog:10
&gt; +        it is not `cxx11` (Since it includes the GLIB event loop case).

Stale &quot;cxx11&quot; in the changelog

&gt; Tools/TestWebKitAPI/PlatformJSCOnly.cmake:14
&gt; +if (LOWERCASE_EVENT_LOOP_TYPE STREQUAL &quot;glib&quot;)

I&apos;m not sure whether it&apos;s good idea to support the GLib event loop any more. It would be unfortunate if you run into a bug that can only be reproduced with one event loop setting or the other.

It could be useful to compile WebKit twice with different event loops for testing purposes, to confirm that they work the same, or to compare performance; but it&apos;s simple enough to restore support for the GLib event loop with a patch, so I don&apos;t think this outweighs the disadvantage.

&gt; Tools/TestWebKitAPI/PlatformUtilities.h:29
&gt; +#if !defined(BUILDING_JSCONLY__)

You could use #ifndef here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183538</commentid>
    <comment_count>41</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-13 14:32:23 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; &gt; Source/WTF/wtf/RunLoop.h:77
&gt; &gt; +    WTF_EXPORT_PRIVATE static void iterate();
&gt; 
&gt; A public static function that iterates every RunLoop that exists? This
&gt; doesn&apos;t seem like a great interface....

Ah I see it only iterates the current RunLoop... well that was my guess, based on the declaration in the header file; perhaps worth adding a comment there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183543</commentid>
    <comment_count>42</comment_count>
      <attachid>276265</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-13 14:38:00 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

&gt;&gt; Source/WTF/wtf/Platform.h:1159
&gt;&gt; + * So that, EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.
&gt; 
&gt; Some English nits here: this comma doesn&apos;t belong, and this is a sentence fragment. The easiest way to improve it is to merge it into the previous sentence:
&gt; 
&gt; Even if the port is AppleWin, we use the Windows message pump system for the event loop, so that EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.

BTW, I think this whole passage is superfluous:
1. Anyone slightly aware of how Windows ports work knows that they have USE(CF), and if it is not self-evident, there may be a better place to discuss it
2. It&apos;s absolutely natural to use WTF_EVENT_LOOP_WINDOWS with PLATFORM(WIN)

&gt;&gt; Source/WTF/wtf/Platform.h:1165
&gt;&gt; +/* OSX and IOS. Use CoreFoundation &amp; GCD abstraction. */
&gt; 
&gt; OS X, iOS
&gt; 
&gt; Another style nit: &amp; -&gt; &quot;and.&quot; We normally only use &amp; in trademarks, logos, and other special situations: https://en.wikipedia.org/wiki/Ampersand#Usage
&gt; 
&gt; A more substantial question: is WTF_EVENT_LOOP_DARWIN the best name for this? I&apos;m not familiar with Apple ecosystem development, but that implies to me that the event loop abstraction uses native Darwin APIs and can be used without the higher-level CoreFoundation?

Currenly existing cannot be used without CF

&gt; Source/WTF/wtf/Platform.h:1169
&gt; + * Thus, EVENT_LOOP(EFL) &amp;&amp; USE(GLIB) can be true.

These words would be better expressed as code, if we had in one place

#if PLATFORM(EFL)
#define WTF_EVENT_LOOP_EFL 1
#define USE_GLIB 1
...

&gt;&gt; Tools/TestWebKitAPI/PlatformJSCOnly.cmake:14
&gt;&gt; +if (LOWERCASE_EVENT_LOOP_TYPE STREQUAL &quot;glib&quot;)
&gt; 
&gt; I&apos;m not sure whether it&apos;s good idea to support the GLib event loop any more. It would be unfortunate if you run into a bug that can only be reproduced with one event loop setting or the other.
&gt; 
&gt; It could be useful to compile WebKit twice with different event loops for testing purposes, to confirm that they work the same, or to compare performance; but it&apos;s simple enough to restore support for the GLib event loop with a patch, so I don&apos;t think this outweighs the disadvantage.

I think it&apos;s a good idea, because using native event loop may be very useful for those trying to use JSC in application which already runs some event loop. And if, for example, there is a bug in JSCOnly with GLib it almost certainly means there is the same bug in GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183638</commentid>
    <comment_count>43</comment_count>
      <attachid>276265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-13 22:56:41 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

&gt;&gt; Source/WTF/ChangeLog:15
&gt;&gt; +        dependency. As a result, now, JSCOnly port removes dependencies except for the system ICU.
&gt; 
&gt; Excellent.
&gt; 
&gt; I&apos;m curious how the performance is relative to the GLib-based RunLoop.

I&apos;ve just measured the time. The test invokes the event loop 100000000 times. https://gist.github.com/Constellation/e27d023de983af2cee917200b10c34e6
Roughly speaking, each loop is 7.6x faster than glib&apos;s one.
But I think it&apos;s not a problem since each loop is still very fast enough.

$ time WebKitBuild/runloop/Release/bin/TestWebKitAPI/WTF/TestWTF --gtest_filter=&quot;?*RunLoop?*ManyTimes?*&quot;
**PASS** WTF_RunLoop.ManyTimes
WebKitBuild/runloop/Release/bin/TestWebKitAPI/WTF/TestWTF   12.42s user 0.00s system 100% cpu 12.416 total

$ time WebKitBuild/runloop/Release/bin/TestWebKitAPI/WTF/TestWTF --gtest_filter=&quot;?*RunLoop?*ManyTimes?*&quot;
**PASS** WTF_RunLoop.ManyTimes
WebKitBuild/runloop/Release/bin/TestWebKitAPI/WTF/TestWTF   93.01s user 42.65s system 100% cpu 2:15.54 total

I don&apos;t investigate it carefully, but we can consider the following reason.

1. RunLoop interface is limited compared to glib&apos;s main loop. Our generic RunLoop design is suitable for the current RunLoop&apos;s interface. So it is highly optimized. (For example, our main loop allocation is done in C stack, while glib allocates it by using g_main_loop_new.)
2. We use WTF&apos;s lock and condition. They are highly optimized compared to system&apos;s one. It first spins. And after some durations, it becomes usual lock.
3. Our RunLoop is designed for CPU works. So our implementation does not consider about async I/O usage. But glib&apos;s one is not. It may call select / epoll / kqueue in its implementation. But we don&apos;t.

&gt;&gt; Source/WTF/ChangeLog:21
&gt;&gt; +        EVENT_LOOP determination is done in Platform.h. This follows the style of WTF PLATFORM.
&gt; 
&gt; Missing a newline before this paragraph.

Added.

&gt;&gt; Source/WTF/wtf/Platform.h:1147
&gt;&gt; + * For example, GTK port in OSX, its platform is GTK, OS is DARWIN and EVENT_LOOP is GLIB.
&gt; 
&gt; OS X

Thanks, fixed.

&gt;&gt; Source/WTF/wtf/Platform.h:1149
&gt;&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE  &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)
&gt; 
&gt; You have an extra space character here before the &amp;&amp;

Oops, thanks.

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1159
&gt;&gt;&gt; + * So that, EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.
&gt;&gt; 
&gt;&gt; Some English nits here: this comma doesn&apos;t belong, and this is a sentence fragment. The easiest way to improve it is to merge it into the previous sentence:
&gt;&gt; 
&gt;&gt; Even if the port is AppleWin, we use the Windows message pump system for the event loop, so that EVENT_LOOP(WINDOWS) &amp;&amp; USE(CF) can be true.
&gt; 
&gt; BTW, I think this whole passage is superfluous:
&gt; 1. Anyone slightly aware of how Windows ports work knows that they have USE(CF), and if it is not self-evident, there may be a better place to discuss it
&gt; 2. It&apos;s absolutely natural to use WTF_EVENT_LOOP_WINDOWS with PLATFORM(WIN)

I think it is necessary. USE(CF) makes us confused; we could misunderstand that CF event loop can be used in PLATFORM(WIN). This description clarify that PLATFORM(WIN) uses Windows message pump.

&gt;&gt; Source/WTF/wtf/Platform.h:1161
&gt;&gt; + * PLATFORM(WIN) should be false. And in that case, GLIB&apos;s event loop is used.
&gt; 
&gt; GLib&apos;s

Fixed.

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1165
&gt;&gt;&gt; +/* OSX and IOS. Use CoreFoundation &amp; GCD abstraction. */
&gt;&gt; 
&gt;&gt; OS X, iOS
&gt;&gt; 
&gt;&gt; Another style nit: &amp; -&gt; &quot;and.&quot; We normally only use &amp; in trademarks, logos, and other special situations: https://en.wikipedia.org/wiki/Ampersand#Usage
&gt;&gt; 
&gt;&gt; A more substantial question: is WTF_EVENT_LOOP_DARWIN the best name for this? I&apos;m not familiar with Apple ecosystem development, but that implies to me that the event loop abstraction uses native Darwin APIs and can be used without the higher-level CoreFoundation?
&gt; 
&gt; Currenly existing cannot be used without CF

We cannot use these event loops without GCD (libdispatch) since WorkQueueCocoa uses libdispatch. I&apos;m not sure, but I think libdispatch is not included in CF.
If we choose EVENT_LOOP_CF, it is confusing for AppleWin. We could misconsider that AppleWin port may use this EVENT_LOOP_CF since it uses CF.
That&apos;s why I take DARWIN for this name.

&gt;&gt; Source/WTF/wtf/Platform.h:1168
&gt;&gt; +/* EFL port uses GLIB. But it uses its own event loop abstraction.
&gt; 
&gt; GLib

Fixed.

&gt;&gt; Source/WTF/wtf/Platform.h:1169
&gt;&gt; + * Thus, EVENT_LOOP(EFL) &amp;&amp; USE(GLIB) can be true.
&gt; 
&gt; These words would be better expressed as code, if we had in one place
&gt; 
&gt; #if PLATFORM(EFL)
&gt; #define WTF_EVENT_LOOP_EFL 1
&gt; #define USE_GLIB 1
&gt; ...

Hm, I don&apos;t think it&apos;s good idea; scattering EVENT_LOOP definitions.
It makes us difficult to understand which EVENT_LOOP is used for the given platform.
And it makes WTF_DEFAULT_EVENT_LOOP difficult.
Everytime you define WTF_EVENT_LOOP_XXX, you need to check WTF_DEFAULT_EVENT_LOOP.

&gt;&gt; Source/WTF/wtf/Platform.h:1173
&gt;&gt; +/* Use GLIB&apos;s event loop abstraction. Primarily GTK port uses it. */
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WTF/wtf/RunLoop.h:77
&gt;&gt; +    WTF_EXPORT_PRIVATE static void iterate();
&gt; 
&gt; A public static function that iterates every RunLoop that exists? This doesn&apos;t seem like a great interface....

The TestWTF uses this interface. (And it is only the user).
In the other port (like GTK / EFL), they call the raw platform-dependent iteration operation (For example, EFL calls ecore_main_loop_iterate()).

&gt;&gt; Source/WTF/wtf/WorkQueue.h:86
&gt;&gt; +    RunLoop&amp; runLoop() const { return *m_runLoop; }
&gt; 
&gt; Looks like m_runLoop is always non-null. In a follow-up patch, it would be good to convert m_runLoop to be a reference rather than a pointer.

Sounds nice.

&gt;&gt; Source/WTF/wtf/generic/WorkQueueGeneric.cpp:42
&gt;&gt; +        threadName = threadName.substring(size + 1);
&gt; 
&gt; This code is pretty confusing without the comment in WorkQueueGLib.cpp, you might want to copy that as well.

Thanks, copied.

&gt;&gt; Source/WTF/wtf/generic/WorkQueueGeneric.cpp:87
&gt;&gt; +void WorkQueue::dispatchAfter(std::chrono::nanoseconds delay, std::function&lt;void()&gt; function)
&gt; 
&gt; So, except for this dispatchAfter function, all the code in this file looks identical to WorkQueueGLib.cpp. It&apos;s a recipe for bugs to be fixed in one port but not the other. Perhaps we could move this to be conditionally-compiled in WorkQueue.cpp? We already have a huge chunk of #if !PLATFORM(COCOA) there, so it&apos;s not really any worse to add an #if EVENT_LOOP(GLIB) || EVENT_LOOP(GENERIC) block as well.

WorkQueueGLib&apos;s dispatchAfter (creating GSource and registering it) should be moved to RunLoop since it interacts with the platform-dependent run loop abstraction.
So my proposed patch was,

1. Move WorkQueueGLib::dispatchAfter&apos;s content to RunLoopGLib::dispatchAfter
2. Remove WorkQueueGLib.cpp and use generic/WorkQueueGeneric.cpp instead.

But it enlarges the patch. So once it was done in the previous patch (https://bugs.webkit.org/attachment.cgi?id=276242&amp;action=review), now it is removed.
This will be done in the subsequent patch :)

&gt;&gt; Tools/ChangeLog:10
&gt;&gt; +        it is not `cxx11` (Since it includes the GLIB event loop case).
&gt; 
&gt; Stale &quot;cxx11&quot; in the changelog

Thanks. Fixed.

&gt;&gt; Tools/TestWebKitAPI/PlatformUtilities.h:29
&gt;&gt; +#if !defined(BUILDING_JSCONLY__)
&gt; 
&gt; You could use #ifndef here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183640</commentid>
    <comment_count>44</comment_count>
      <attachid>276265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-13 22:58:54 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

&gt;&gt;&gt; Tools/TestWebKitAPI/PlatformJSCOnly.cmake:14
&gt;&gt;&gt; +if (LOWERCASE_EVENT_LOOP_TYPE STREQUAL &quot;glib&quot;)
&gt;&gt; 
&gt;&gt; I&apos;m not sure whether it&apos;s good idea to support the GLib event loop any more. It would be unfortunate if you run into a bug that can only be reproduced with one event loop setting or the other.
&gt;&gt; 
&gt;&gt; It could be useful to compile WebKit twice with different event loops for testing purposes, to confirm that they work the same, or to compare performance; but it&apos;s simple enough to restore support for the GLib event loop with a patch, so I don&apos;t think this outweighs the disadvantage.
&gt; 
&gt; I think it&apos;s a good idea, because using native event loop may be very useful for those trying to use JSC in application which already runs some event loop. And if, for example, there is a bug in JSCOnly with GLib it almost certainly means there is the same bug in GTK port.

I think it&apos;s good. We can easily compare the generic RunLoop with the GLib&apos;s one.
And maintenance cost is very small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183641</commentid>
    <comment_count>45</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-13 23:02:04 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (In reply to comment #40)
&gt; &gt; &gt; Source/WTF/wtf/RunLoop.h:77
&gt; &gt; &gt; +    WTF_EXPORT_PRIVATE static void iterate();
&gt; &gt; 
&gt; &gt; A public static function that iterates every RunLoop that exists? This
&gt; &gt; doesn&apos;t seem like a great interface....
&gt; 
&gt; Ah I see it only iterates the current RunLoop... well that was my guess,
&gt; based on the declaration in the header file; perhaps worth adding a comment
&gt; there.

Yup, I&apos;ll comment it here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183642</commentid>
    <comment_count>46</comment_count>
      <attachid>276373</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-13 23:07:20 -0700</bug_when>
    <thetext>Created attachment 276373
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183679</commentid>
    <comment_count>47</comment_count>
      <attachid>276265</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-14 03:27:20 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1165
&gt;&gt;&gt;&gt; +/* OSX and IOS. Use CoreFoundation &amp; GCD abstraction. */
&gt;&gt;&gt; 
&gt;&gt;&gt; A more substantial question: is WTF_EVENT_LOOP_DARWIN the best name for this? I&apos;m not familiar with Apple ecosystem development, but that implies to me that the event loop abstraction uses native Darwin APIs and can be used without the higher-level CoreFoundation?
&gt;&gt; 
&gt;&gt; Currenly existing cannot be used without CF
&gt; 
&gt; We cannot use these event loops without GCD (libdispatch) since WorkQueueCocoa uses libdispatch. I&apos;m not sure, but I think libdispatch is not included in CF.
&gt; If we choose EVENT_LOOP_CF, it is confusing for AppleWin. We could misconsider that AppleWin port may use this EVENT_LOOP_CF since it uses CF.
&gt; That&apos;s why I take DARWIN for this name.

Well, similar situation exists in EFL port which has USE(GLIB) bun not EVENT_LOOP(GLIB), which was the whole point of EVENT_LOOP macto introduction.

But I think it should be correct to call it EVENT_LOOP(LIBDISPATCH) if you don&apos;t like EVENT_LOOP(CF).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183683</commentid>
    <comment_count>48</comment_count>
      <attachid>276265</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-14 03:45:56 -0700</bug_when>
    <thetext>Comment on attachment 276265
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1165
&gt;&gt;&gt;&gt;&gt; +/* OSX and IOS. Use CoreFoundation &amp; GCD abstraction. */
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; OS X, iOS
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Another style nit: &amp; -&gt; &quot;and.&quot; We normally only use &amp; in trademarks, logos, and other special situations: https://en.wikipedia.org/wiki/Ampersand#Usage
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; A more substantial question: is WTF_EVENT_LOOP_DARWIN the best name for this? I&apos;m not familiar with Apple ecosystem development, but that implies to me that the event loop abstraction uses native Darwin APIs and can be used without the higher-level CoreFoundation?
&gt;&gt;&gt; 
&gt;&gt;&gt; Currenly existing cannot be used without CF
&gt;&gt; 
&gt;&gt; We cannot use these event loops without GCD (libdispatch) since WorkQueueCocoa uses libdispatch. I&apos;m not sure, but I think libdispatch is not included in CF.
&gt;&gt; If we choose EVENT_LOOP_CF, it is confusing for AppleWin. We could misconsider that AppleWin port may use this EVENT_LOOP_CF since it uses CF.
&gt;&gt; That&apos;s why I take DARWIN for this name.
&gt; 
&gt; Well, similar situation exists in EFL port which has USE(GLIB) bun not EVENT_LOOP(GLIB), which was the whole point of EVENT_LOOP macto introduction.
&gt; 
&gt; But I think it should be correct to call it EVENT_LOOP(LIBDISPATCH) if you don&apos;t like EVENT_LOOP(CF).

Can we call GCD as a part of CF? If so, we can call it as EVENT_LOOP(GCD) / EVENT_LOOP(LIBDISPATCH).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183730</commentid>
    <comment_count>49</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-04-14 09:47:21 -0700</bug_when>
    <thetext>I don&apos;t like this. I don&apos;t think we should have our own run loop implementation in WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183965</commentid>
    <comment_count>50</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-14 17:24:44 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; I don&apos;t like this. I don&apos;t think we should have our own run loop
&gt; implementation in WTF.

I think adding this simple run loop for JSCOnly port&apos;s fallback has good tradeoff in comparison with adding the whole glib dependency to JSCOnly port.

The goal of this patch is *not* replacing the existing run loop (like, RunLoopWin, RunLoopCF, etc.) with our own run loop.
This patch just adds the super simple fallback implementation to JSCOnly port.
Of course, it does not affect on OSX, IOS, and other ports.
I think adding such a simple generic run loop fallback for JSCOnly port is good
in comparison with adding the whole glib dependencies to JSCOnly port,
since JSCOnly port doesn&apos;t depend on any glib specific features except for this run loop.
The run loop itself is easy to be written if we don&apos;t consider about platform-dependent async I/O (abstracting select, epoll, kqueue, etc. If we require such features, it makes the run loop implementation very complicated).
WTF RunLoop does not support such async I/O interfaces.
This fact makes the run loop fallback implementation simple.

Furthermore, I think the added run loop does not incur maintenance burden.
This is because of the following reasons.

1. RunLoop&apos;s common interface is much stable since it is not changed for a very long time (from when we moved RunLoop from WebCore to WTF at 2013). So once it works, we need not to change it anymore.
2. The patch&apos;s logic part is completely limited in RunLoopGeneric.cpp. While the uploaded patch incldues generic/WorkQueueGeneric.cpp, but it is almost the same to glib/WorkQueueGLib.cpp. The subsequent patch will drop WorkQueueGLib to use this generic WorkQueue instead. After that, generic run loop specific code is confined in RunLoopGeneric.cpp. (Since including this change enlarges the patch, we splitted out)

The goal of JSCOnly port[1] is providing JSC only build configuration with very limited dependencies (currently, ICU).
It makes building JSC easily on any platforms with super aggressive features (Since JSCOnly port is not production port).
And it also makes the testing easiter, especially on Linux.
For example, since we have no dependencies except for ICU, we can easily build the old JSC without rebuilding dependent libraries for the old revision.

One alternative approach is moving RunLoop from WTF to some platform specific library set, like PAL[2].
This also seems good to me.

[1]: https://lists.webkit.org/pipermail/webkit-dev/2015-November/027785.html
[2]: https://bugs.webkit.org/show_bug.cgi?id=143358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183967</commentid>
    <comment_count>51</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-14 17:38:03 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; I don&apos;t like this. I don&apos;t think we should have our own run loop
&gt; implementation in WTF.

Why not; where would you rather put it? Some new directory seems like overkill?

(In reply to comment #50)
&gt; One alternative approach is moving RunLoop from WTF to some platform
&gt; specific library set, like PAL[2].

Once PAL exists, that would be fine IMO; for now, WTF is a better place than WebCore/platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184106</commentid>
    <comment_count>52</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-15 10:20:36 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; (In reply to comment #49)
&gt; &gt; I don&apos;t like this. I don&apos;t think we should have our own run loop
&gt; &gt; implementation in WTF.
&gt; 
&gt; Why not; where would you rather put it? Some new directory seems like
&gt; overkill?
I see where Anders is coming from, but I must say I think being able to build JavaScriptCore with only ICU as a dependency will have large benefits to us.
&gt; 
&gt; (In reply to comment #50)
&gt; &gt; One alternative approach is moving RunLoop from WTF to some platform
&gt; &gt; specific library set, like PAL[2].
&gt; 
&gt; Once PAL exists, that would be fine IMO; for now, WTF is a better place than
&gt; WebCore/platform.
I do not think this should go in WebCore.  The whole point of JSCOnly is that it does not have any dependencies on WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184107</commentid>
    <comment_count>53</comment_count>
      <attachid>276373</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-04-15 10:24:59 -0700</bug_when>
    <thetext>Comment on attachment 276373
Patch

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

&gt; Source/WTF/wtf/Platform.h:1151
&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)

I don&apos;t think we should add another macro for this.  Couldn&apos;t we just use USE(GLIB) etc?

&gt; Tools/TestWebKitAPI/PlatformJSCOnly.cmake:26
&gt; +    ${TESTWEBKITAPI_DIR}/Tests/WTF/RunLoop.cpp

We may as well run all WTF API tests for JSCOnly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184129</commentid>
    <comment_count>54</comment_count>
      <attachid>276373</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-15 10:54:40 -0700</bug_when>
    <thetext>Comment on attachment 276373
Patch

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

&gt;&gt; Source/WTF/wtf/Platform.h:1151
&gt;&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)
&gt; 
&gt; I don&apos;t think we should add another macro for this.  Couldn&apos;t we just use USE(GLIB) etc?

I proposed this change in order to clarify preprocessor logic in event loop headers. Currenlty it has two issues:

1) it depends on ordering, because PLATFORM(EFL) needs to preceed USE(GLIB) so that EFL port, which enables USE(GLIB), could use its own event loop; if WorkQueue USE(GLIB) must precede OS(DARWIN), otherwise GTK port would break

2) it is not consistent: USE(GLIB), PLATFORM(COCOA,EFL,WIN), OS(DARWIN) are all used for choosing event loop implementation. I think using new macro will make intention clear, and will allow  JSCOnly to use all those event loops on platforms where they are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184143</commentid>
    <comment_count>55</comment_count>
      <attachid>276373</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-15 11:25:29 -0700</bug_when>
    <thetext>Comment on attachment 276373
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1151
&gt;&gt;&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)
&gt;&gt; 
&gt;&gt; I don&apos;t think we should add another macro for this.  Couldn&apos;t we just use USE(GLIB) etc?
&gt; 
&gt; I proposed this change in order to clarify preprocessor logic in event loop headers. Currenlty it has two issues:
&gt; 
&gt; 1) it depends on ordering, because PLATFORM(EFL) needs to preceed USE(GLIB) so that EFL port, which enables USE(GLIB), could use its own event loop; if WorkQueue USE(GLIB) must precede OS(DARWIN), otherwise GTK port would break
&gt; 
&gt; 2) it is not consistent: USE(GLIB), PLATFORM(COCOA,EFL,WIN), OS(DARWIN) are all used for choosing event loop implementation. I think using new macro will make intention clear, and will allow  JSCOnly to use all those event loops on platforms where they are available.

We should definitely not add a new macro like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184146</commentid>
    <comment_count>56</comment_count>
      <attachid>276373</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-15 11:28:16 -0700</bug_when>
    <thetext>Comment on attachment 276373
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1151
&gt;&gt;&gt;&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t think we should add another macro for this.  Couldn&apos;t we just use USE(GLIB) etc?
&gt;&gt; 
&gt;&gt; I proposed this change in order to clarify preprocessor logic in event loop headers. Currenlty it has two issues:
&gt;&gt; 
&gt;&gt; 1) it depends on ordering, because PLATFORM(EFL) needs to preceed USE(GLIB) so that EFL port, which enables USE(GLIB), could use its own event loop; if WorkQueue USE(GLIB) must precede OS(DARWIN), otherwise GTK port would break
&gt;&gt; 
&gt;&gt; 2) it is not consistent: USE(GLIB), PLATFORM(COCOA,EFL,WIN), OS(DARWIN) are all used for choosing event loop implementation. I think using new macro will make intention clear, and will allow  JSCOnly to use all those event loops on platforms where they are available.
&gt; 
&gt; We should definitely not add a new macro like this.

The correct WebKit pattern would be:

    USE(WINDOWS_EVENT_LOOP)
    USE(DARWIN_EVENT_LOOP)
    USE(EFL_EVENT_LOOP)
    USE(GLIB_EVENT_LOOP)

It’s fine with me if we want to add those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184157</commentid>
    <comment_count>57</comment_count>
      <attachid>276373</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-15 12:10:24 -0700</bug_when>
    <thetext>Comment on attachment 276373
Patch

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

Thanks!

&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1151
&gt;&gt;&gt;&gt;&gt; +#define EVENT_LOOP(WTF_FEATURE) (defined WTF_EVENT_LOOP_##WTF_FEATURE &amp;&amp; WTF_EVENT_LOOP_##WTF_FEATURE)
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I don&apos;t think we should add another macro for this.  Couldn&apos;t we just use USE(GLIB) etc?
&gt;&gt;&gt; 
&gt;&gt;&gt; I proposed this change in order to clarify preprocessor logic in event loop headers. Currenlty it has two issues:
&gt;&gt;&gt; 
&gt;&gt;&gt; 1) it depends on ordering, because PLATFORM(EFL) needs to preceed USE(GLIB) so that EFL port, which enables USE(GLIB), could use its own event loop; if WorkQueue USE(GLIB) must precede OS(DARWIN), otherwise GTK port would break
&gt;&gt;&gt; 
&gt;&gt;&gt; 2) it is not consistent: USE(GLIB), PLATFORM(COCOA,EFL,WIN), OS(DARWIN) are all used for choosing event loop implementation. I think using new macro will make intention clear, and will allow  JSCOnly to use all those event loops on platforms where they are available.
&gt;&gt; 
&gt;&gt; We should definitely not add a new macro like this.
&gt; 
&gt; The correct WebKit pattern would be:
&gt; 
&gt;     USE(WINDOWS_EVENT_LOOP)
&gt;     USE(DARWIN_EVENT_LOOP)
&gt;     USE(EFL_EVENT_LOOP)
&gt;     USE(GLIB_EVENT_LOOP)
&gt; 
&gt; It’s fine with me if we want to add those.

Darin&apos;s suggestion sounds fine to me. I&apos;ll update the patch with this form :)

&gt;&gt; Tools/TestWebKitAPI/PlatformJSCOnly.cmake:26
&gt;&gt; +    ${TESTWEBKITAPI_DIR}/Tests/WTF/RunLoop.cpp
&gt; 
&gt; We may as well run all WTF API tests for JSCOnly.

Yeah. This is list(APPEND), So TestWTF_SOURCES already contains TestWTF test cases in Tools/TestWebKitAPI/CMakeLists.txt.
So we can already run TestWTF :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184166</commentid>
    <comment_count>58</comment_count>
      <attachid>276493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-15 12:26:39 -0700</bug_when>
    <thetext>Created attachment 276493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184180</commentid>
    <comment_count>59</comment_count>
      <attachid>276493</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-15 12:53:24 -0700</bug_when>
    <thetext>Comment on attachment 276493
Patch

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

&gt; Source/WTF/wtf/Platform.h:1163
&gt; +/* OS X and IOS. Use CoreFoundation &amp; GCD abstraction. */
&gt; +#define USE_DARWIN_EVENT_LOOP 1

Reading the description here, I think the appropriate name is COCOA_EVENT_LOOP since CoreFoundation is not part of “Darwin”.

&gt; Source/WTF/wtf/Platform.h:1173
&gt; +#define USE_GENERIC_EVENT_LOOP 1

What are the properties of the “generic” event loop? I might have a different idea for the name, depending on what it does. After looking at the implementation a bit I am getting the impression that it’s based on WTF::Timer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184342</commentid>
    <comment_count>60</comment_count>
      <attachid>276493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-16 03:30:07 -0700</bug_when>
    <thetext>Comment on attachment 276493
Patch

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

&gt;&gt; Source/WTF/wtf/Platform.h:1163
&gt;&gt; +#define USE_DARWIN_EVENT_LOOP 1
&gt; 
&gt; Reading the description here, I think the appropriate name is COCOA_EVENT_LOOP since CoreFoundation is not part of “Darwin”.

OK, COCOA includes CF and GCD. I&apos;ve renamed it to USE_COCOA_EVENT_LOOP.

&gt;&gt; Source/WTF/wtf/Platform.h:1173
&gt;&gt; +#define USE_GENERIC_EVENT_LOOP 1
&gt; 
&gt; What are the properties of the “generic” event loop? I might have a different idea for the name, depending on what it does. After looking at the implementation a bit I am getting the impression that it’s based on WTF::Timer.

The event loop relys on WTF::Condition; when the tasks are queued, the condition notifies to the run loop.
And RunLoop::Timer is implemented on the top of these event loops.
The properties of the &quot;generic&quot; is that it depends on WTF threading primitives (WTF::Condition), so it is platform-independent.

How about USE_WTF_EVENT_LOOP?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184343</commentid>
    <comment_count>61</comment_count>
      <attachid>276493</attachid>
    <who name="Konstantin Tokarev">annulen</who>
    <bug_when>2016-04-16 03:35:05 -0700</bug_when>
    <thetext>Comment on attachment 276493
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1173
&gt;&gt;&gt; +#define USE_GENERIC_EVENT_LOOP 1
&gt;&gt; 
&gt;&gt; What are the properties of the “generic” event loop? I might have a different idea for the name, depending on what it does. After looking at the implementation a bit I am getting the impression that it’s based on WTF::Timer.
&gt; 
&gt; The event loop relys on WTF::Condition; when the tasks are queued, the condition notifies to the run loop.
&gt; And RunLoop::Timer is implemented on the top of these event loops.
&gt; The properties of the &quot;generic&quot; is that it depends on WTF threading primitives (WTF::Condition), so it is platform-independent.
&gt; 
&gt; How about USE_WTF_EVENT_LOOP?

And WTF::Condition relies on C++11 threading primitives, hence my initial proposal to dub it &quot;Cxx11&quot; event loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184344</commentid>
    <comment_count>62</comment_count>
      <attachid>276552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-16 04:21:48 -0700</bug_when>
    <thetext>Created attachment 276552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184345</commentid>
    <comment_count>63</comment_count>
      <attachid>276493</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-16 04:27:01 -0700</bug_when>
    <thetext>Comment on attachment 276493
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/Platform.h:1173
&gt;&gt;&gt;&gt; +#define USE_GENERIC_EVENT_LOOP 1
&gt;&gt;&gt; 
&gt;&gt;&gt; What are the properties of the “generic” event loop? I might have a different idea for the name, depending on what it does. After looking at the implementation a bit I am getting the impression that it’s based on WTF::Timer.
&gt;&gt; 
&gt;&gt; The event loop relys on WTF::Condition; when the tasks are queued, the condition notifies to the run loop.
&gt;&gt; And RunLoop::Timer is implemented on the top of these event loops.
&gt;&gt; The properties of the &quot;generic&quot; is that it depends on WTF threading primitives (WTF::Condition), so it is platform-independent.
&gt;&gt; 
&gt;&gt; How about USE_WTF_EVENT_LOOP?
&gt; 
&gt; And WTF::Condition relies on C++11 threading primitives, hence my initial proposal to dub it &quot;Cxx11&quot; event loop.

Personally, &quot;WTF&quot;, &quot;Generic&quot; or &quot;PlatformIndependent&quot; seems good names to me.
Currently, WTF::Condition relies on C++11 threading primitives. But I think it is implementation details of the WTF::Condition.
If we change WTF::Condition to use non C++11 threading primitives, the run loop still relies on WTF::Condition, but the loop should not be called as C++11 loop.

So I think directly dependent primitives by the run loop is important; in this case, that is WTF::Condition. That&apos;s why I suggested &quot;WTF&quot;.
But personally, I think &quot;Generic&quot; is also a good name. The run loop depends on the platform-independent part, so it is &quot;generic&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184350</commentid>
    <comment_count>64</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-16 08:02:43 -0700</bug_when>
    <thetext>I prefer &quot;Generic&quot; but I&apos;d be fine with &quot;WTF&quot; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184804</commentid>
    <comment_count>65</comment_count>
      <attachid>276552</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-18 13:51:43 -0700</bug_when>
    <thetext>Comment on attachment 276552
Patch

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

&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:84
&gt; +    bool isActive()

This function really ought to be const. Are you having trouble with using the lock in a const function? You should be able to make m_isActiveLock mutable, right?

&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:214
&gt; +void RunLoop::wakeUp(const LockHolder&amp;)

The unused parameter is to ensure the lock is always held when the function is called?

&gt; Source/WTF/wtf/glib/WorkQueueGLib.cpp:33
&gt; +#include &lt;wtf/glib/GRefPtr.h&gt;

Adding this include can&apos;t be right, because this file hasn&apos;t been modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184842</commentid>
    <comment_count>66</comment_count>
      <attachid>276552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-18 15:48:36 -0700</bug_when>
    <thetext>Comment on attachment 276552
Patch

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

Thanks!

&gt;&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:84
&gt;&gt; +    bool isActive()
&gt; 
&gt; This function really ought to be const. Are you having trouble with using the lock in a const function? You should be able to make m_isActiveLock mutable, right?

Or, I think std::atomic&lt;bool&gt; is good here. Changing.

&gt;&gt; Source/WTF/wtf/generic/RunLoopGeneric.cpp:214
&gt;&gt; +void RunLoop::wakeUp(const LockHolder&amp;)
&gt; 
&gt; The unused parameter is to ensure the lock is always held when the function is called?

Yup. This is a common idiom and it is used in JSC (ConcurrentJITLocker).

&gt;&gt; Source/WTF/wtf/glib/WorkQueueGLib.cpp:33
&gt;&gt; +#include &lt;wtf/glib/GRefPtr.h&gt;
&gt; 
&gt; Adding this include can&apos;t be right, because this file hasn&apos;t been modified.

Ah, thanks. Dropping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1184845</commentid>
    <comment_count>67</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-18 15:59:22 -0700</bug_when>
    <thetext>Committed r199694: &lt;http://trac.webkit.org/changeset/199694&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275915</attachid>
            <date>2016-04-07 12:34:36 -0700</date>
            <delta_ts>2016-04-08 09:42:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160408043438.patch</filename>
            <type>text/plain</type>
            <size>35336</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
Y2E2YmVlNzMzODYwM2UyNGVhZWQ3NmZhZjU4ZDk3MzE0ZDUzOTJjLi5iNGI4YTllYjQzZjgwNTNi
OTgzYjIwNTY4ZjhlZjkyOWFjZTA4OWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxNi0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBn
bGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoRGVsYXllZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChEZWxheWVk
RGlzcGF0Y2hlcjo6c3RhcnQpOgorICAgICAgICAoRGVsYXllZERpc3BhdGNoZXI6OnNldEdsb2Jh
bE9iamVjdCk6CisgICAgICAgIChEZWxheWVkRGlzcGF0Y2hlcjo6c2V0Q2FsbGJhY2spOgorICAg
ICAgICAoRGVsYXllZERpc3BhdGNoZXI6OmNhbGxiYWNrKToKKyAgICAgICAgKERlbGF5ZWREaXNw
YXRjaGVyOjphcHBlbmRBcmd1bWVudCk6CisgICAgICAgIChEZWxheWVkRGlzcGF0Y2hlcjo6RGVs
YXllZERpc3BhdGNoZXIpOgorICAgICAgICAoRGVsYXllZERpc3BhdGNoZXI6OnRpbWVyRmlyZWQp
OgorICAgICAgICAoZnVuY3Rpb25TZXRUaW1lb3V0KToKKyAgICAgICAgKHJ1bkpTQyk6CisgICAg
ICAgIChqc2NtYWluKToKKwogMjAxNi0wNC0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVSW50MzJUb051bWJlciBzaG91bGQgYmUgTm9k
ZU11c3RHZW5lcmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCAzMGFiMDY5NDE2MmJmNzE0MjQ4OWE3MGUzNzViOTY5NjQ5ZDRh
N2IxLi5lYzBkMjM2YmFhYWJjNzk0ZGI5ZjUwMTQ5OGNhZTEyMGU3NmZhMDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDE2LTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGds
aWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5oOgorICAgICAg
ICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNw
cDoKKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6
OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9u
b25lL1J1bkxvb3BOb25lLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6
OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjppc0FjdGl2ZSk6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZGVhY3RpdmF0ZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6c2NoZWR1bGVkVGltZVBvaW50KToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s6OkVhcmxpZXN0RGVhZGxpbmVGaXJzdDo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6On5SdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUp
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFz
ZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpU
aW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNw
cDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0
Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToKKwogMjAxNi0wNC0wNiAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2
ZSBhIHNpbXBsZSB3YXkgb2YgZ2F0aGVyaW5nIElDIHN0YXRpc3RpY3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKaW5kZXggMjI1YWQzNGI4YThiZjFhZDBhYmZhNGZhZjNkYzg2MjliOTk0NDZmZi4uODM1OTY0
MjI2NGU5Y2UzYmRlZTY2ZjlhZjFlNDY5OTc2NTU4Nzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
QEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Q2hpY2tlbi5oIgogI2luY2x1ZGUgIlN0YWNrVmlzaXRvci5oIgorI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3VwZXJTYW1wbGVyLmgi
CkBAIC02MTcsNiArNjE4LDcgQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFJvb3QqIHJvb3QpCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25QbGF0Zm9ybVN1cHBvcnRzU2FtcGxpbmdQcm9maWxlcihFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2Vu
ZXJhdGVIZWFwU25hcHNob3QoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblNldFRpbWVvdXQoRXhlY1N0YXRlKik7CiAjaWYgRU5BQkxFKFNB
TVBMSU5HX1BST0ZJTEVSKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbXBsaW5nUHJvZmlsZXJTdGFja1RyYWNlcyhF
eGVjU3RhdGUqKTsKQEAgLTgxOCw2ICs4MjAsNyBAQCBjbGFzcyBHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNHbG9iYWxPYmplY3QgewogCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicGxhdGZvcm1T
dXBwb3J0c1NhbXBsaW5nUHJvZmlsZXIiLCBmdW5jdGlvblBsYXRmb3JtU3VwcG9ydHNTYW1wbGlu
Z1Byb2ZpbGVyLCAwKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJnZW5lcmF0ZUhlYXBTbmFw
c2hvdCIsIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3QsIDApOworICAgICAgICBhZGRGdW5j
dGlvbih2bSwgInNldFRpbWVvdXQiLCBmdW5jdGlvblNldFRpbWVvdXQsIDApOwogI2lmIEVOQUJM
RShTQU1QTElOR19QUk9GSUxFUikKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJzdGFydFNhbXBs
aW5nUHJvZmlsZXIiLCBmdW5jdGlvblN0YXJ0U2FtcGxpbmdQcm9maWxlciwgMCk7CiAgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAic2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzIiwgZnVuY3Rpb25T
YW1wbGluZ1Byb2ZpbGVyU3RhY2tUcmFjZXMsIDApOwpAQCAtMTc3MCw2ICsxNzczLDEwMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2VuZXJhdGVIZWFwU25hcHNob3Qo
RXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2NsYXNzIERlbGF5ZWRE
aXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERlbGF5ZWREaXNwYXRjaGVy
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxEZWxheWVkRGlzcGF0Y2hlcj4gY3JlYXRl
KFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERl
bGF5ZWREaXNwYXRjaGVyKHJ1bkxvb3ApKTsKKyAgICB9CisKKyAgICB2b2lkIHN0YXJ0KHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSkKKyAgICB7CisgICAgICAgIHJlZigpOworICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdChkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8g
MTAwMC4wKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEdsb2JhbE9iamVjdChWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgeworICAgICAgICBtX2dsb2JhbE9iamVjdC5z
ZXQodm0sIGdsb2JhbE9iamVjdCk7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxsYmFjayhWTSYg
dm0sIEpTVmFsdWUgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2NhbGxiYWNrLnNldCh2bSwg
Y2FsbGJhY2spOworICAgIH0KKworICAgIEpTVmFsdWUgY2FsbGJhY2soKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRBcmd1
bWVudChWTSYgdm0sIEpTVmFsdWUgYXJndW1lbnQpCisgICAgeworICAgICAgICBtX2FyZ3VtZW50
cy5hcHBlbmQoU3Ryb25nPFVua25vd24+KHZtLCBhcmd1bWVudCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBEZWxheWVkRGlzcGF0Y2hlcihSdW5Mb29wJiBydW5Mb29wKQorICAgICAgICA6IG1f
cnVuTG9vcChydW5Mb29wKQorICAgICAgICAsIG1fdGltZXIocnVuTG9vcCwgdGhpcywgJkRlbGF5
ZWREaXNwYXRjaGVyOjp0aW1lckZpcmVkKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHRpbWVy
RmlyZWQoKQorICAgIHsKKyAgICAgICAgUmVmUHRyPERlbGF5ZWREaXNwYXRjaGVyPiBwcm90ZWN0
KHRoaXMpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjpjdXJyZW50KCkuaXNNYWlu
KCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3J1bkxvb3AuaXNNYWluKCkpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVCgmUnVuTG9vcDo6Y3VycmVudCgpID09ICZtX3J1bkxvb3ApOworICAg
ICAgICBtX3J1bkxvb3AuZGlzcGF0Y2goW3Byb3RlY3RdIHsKKyAgICAgICAgICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHByb3RlY3QtPm1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgICAg
ICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6Y3VycmVudCgpLmlzTWFpbigpKTsKKyAgICAgICAgICAgIEpTVmFsdWUg
Y2FsbGJhY2sgPSBwcm90ZWN0LT5tX2NhbGxiYWNrLmdldCgpOworICAgICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2Fs
bERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZTo6Tm9uZSk7CisKKyAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVmZXJlbmNlIDogcHJvdGVjdC0+bV9h
cmd1bWVudHMpCisgICAgICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChyZWZlcmVuY2UuZ2V0
KCkpOworCisgICAgICAgICAgICBKU0M6OmNhbGwoZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBj
YWxsRGF0YSwganNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKKyAgICAgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigp
OworICAgICAgICB9KTsKKyAgICAgICAgZGVyZWYoKTsKKyAgICB9CisKKyAgICBSdW5Mb29wJiBt
X3J1bkxvb3A7CisgICAgUnVuTG9vcDo6VGltZXI8RGVsYXllZERpc3BhdGNoZXI+IG1fdGltZXI7
CisgICAgU3Ryb25nPEpTR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKKyAgICBTdHJvbmc8
VW5rbm93bj4gbV9jYWxsYmFjazsKKyAgICBWZWN0b3I8U3Ryb25nPFVua25vd24+PiBtX2FyZ3Vt
ZW50czsKK307CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TZXRUaW1l
b3V0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
VmFsdWUgY2FsbGJhY2sgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIWNhbGxiYWNrLmlz
RnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjKSk7CisKKyAgICBkb3VibGUgZGVsYXlNaWxsaVNlY29uZHMgPSBleGVjLT5hcmd1bWVu
dCgxKS50b051bWJlcihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBSZWZQdHI8
RGVsYXllZERpc3BhdGNoZXI+IGRpc3BhdGNoZXIgPSBEZWxheWVkRGlzcGF0Y2hlcjo6Y3JlYXRl
KFJ1bkxvb3A6OmN1cnJlbnQoKSk7CisgICAgZGlzcGF0Y2hlci0+c2V0R2xvYmFsT2JqZWN0KHZt
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOworICAgIGRpc3BhdGNoZXItPnNldENhbGxi
YWNrKHZtLCBjYWxsYmFjayk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMjsgaSA8IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKTsgKytpKQorICAgICAgICBkaXNwYXRjaGVyLT5hcHBlbmRBcmd1bWVudCh2
bSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworCisgICAgZGlzcGF0Y2hlci0+c3RhcnQo
c3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3Rk
OjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZSwgc3RkOjptaWxsaT4oZGVsYXlNaWxsaVNlY29uZHMp
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogI2lm
IEVOQUJMRShTQU1QTElOR19QUk9GSUxFUikKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25TdGFydFNhbXBsaW5nUHJvZmlsZXIoRXhlY1N0YXRlKiBleGVjKQogewpAQCAtMjE1
Myw3ICsyMjUwLDExIEBAIHN0YXRpYyBpbnQgTkVWRVJfSU5MSU5FIHJ1bkpTQyhWTSogdm0sIENv
bW1hbmRMaW5lIG9wdGlvbnMpCiAgICAgICAgIHZtLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFByb2ZpbGVyOjpEYXRhYmFzZT4oKnZtKTsKIAogICAgIEdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUoKnZtLCBHbG9iYWxPYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZSgqdm0sIGpzTnVsbCgpKSwgb3B0aW9ucy5tX2FyZ3VtZW50cyk7
Ci0gICAgYm9vbCBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
Lm1fc2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUpOworICAgIGJvb2wg
c3VjY2VzcyA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0gewor
ICAgICAgICBzdWNjZXNzID0gcnVuV2l0aFNjcmlwdHMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLm1f
c2NyaXB0cywgb3B0aW9ucy5tX2R1bXAsIG9wdGlvbnMubV9tb2R1bGUpOworICAgIH0pOworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW4oKTsKICAgICBpZiAob3B0aW9ucy5tX2ludGVyYWN0aXZl
ICYmIHN1Y2Nlc3MpCiAgICAgICAgIHJ1bkludGVyYWN0aXZlKGdsb2JhbE9iamVjdCk7CiAKQEAg
LTIyMDEsNiArMjMwMiw3IEBAIGludCBqc2NtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAjZW5kaWYKICAgICBKU0M6OmluaXRpYWxp
emVUaHJlYWRpbmcoKTsKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIAog
ICAgIFZNKiB2bSA9ICZWTTo6Y3JlYXRlKExhcmdlSGVhcCkubGVha1JlZigpOwogICAgIGludCBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaAppbmRleCBkZDNkYzFkZGMzMTI5YmQ4OGUxYWExNTEwNDlkOTM0MTIx
MzQyMWIzLi43ZWI2ZTdhMDEwYWIwNGQzNWFmZjEzZmY3MDE3NTdhYmVjMTgxMTNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1fRUZMIDEKICNl
bGlmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjZGVmaW5lIFdURl9QTEFURk9STV9HVEsgMQor
I2VsaWYgZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCisjZGVmaW5lIFdURl9QTEFURk9STV9K
U0NPTkxZIDEKICNlbGlmIE9TKE1BQ19PU19YKQogI2RlZmluZSBXVEZfUExBVEZPUk1fTUFDIDEK
ICNlbGlmIE9TKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBmYWViOWIxZmZhMjVmY2FiYWU5MWRmODczMGFi
Y2U0MzI0Yjg5YTdmLi41YjU5YjE5Y2U2NjdjY2U0NjE1ZWExZDhiMzUyMGRkZjYwODJmZmI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWZuZGVmIFJ1bkxvb3BfaAogI2RlZmluZSBS
dW5Mb29wX2gKIAorI2luY2x1ZGUgPHF1ZXVlPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KQEAgLTExMiw2ICsxMTQsOSBAQCBjbGFzcyBS
dW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgICAgIEdSZWZQdHI8R1Nv
dXJjZT4gbV9zb3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAg
ICAgICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07Cisj
ZWxzZQorICAgICAgICBjbGFzcyBTY2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQdHI8U2NoZWR1
bGVkVGFzaz4gbV9zY2hlZHVsZWRUYXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTY5LDYgKzE3
NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAg
R1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8
R01haW5Mb29wPj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsK
KyNlbHNlCitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGl0ZXJh
dGUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hy
b25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKworcHJpdmF0ZToKKyAg
ICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRlLAorICAgICAgICBEcmFpbgor
ICAgIH07CisKKyAgICB2b2lkIHNjaGVkdWxlKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+KTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPik7CisgICAgdm9pZCB3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYp
OworICAgIHZvaWQgc2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzaz4pOworICAgIHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKKworICAgIGVudW0gY2xhc3MgU3Rh
dHVzIHsKKyAgICAgICAgUGVuZGluZywKKyAgICAgICAgQ2xlYXIsCisgICAgICAgIFN0b3BwaW5n
LAorICAgICAgICBTdG9wCisgICAgfTsKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0
aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZl
Y3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAg
VmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNl
IH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4
NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uMzQ2MTBkYTFlMGMxMTk4ZWU4N2M5ZGYwMjUzODQyYWVhZTli
NjNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0o
RUZMKQogI2luY2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9X
b3JrSXRlbVdpbi5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3
NiwxMCBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVy
IHsKICNpZiBQTEFURk9STShFRkwpCiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxl
cihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tl
dEV2ZW50SGFuZGxlcihpbnQpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9v
cCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBk
aXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNo
UXVldWU7IH0KKyNlbHNlCisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICpt
X3J1bkxvb3A7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA0LDEzICsxMDMsNiBAQCBjbGFz
cyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogI2lmIFBM
QVRGT1JNKEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwot
I2VsaWYgVVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsK
LSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRp
b24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7
Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRp
b24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHN0
YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBt
X2Rpc3BhdGNoUXVldWU7CkBAIC0xMjQsNiArMTE2LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5h
bCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQ
dHI8SGFuZGxlV29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVl
OworI2Vsc2UKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExv
Y2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBM
b2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dv
cmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBk
M2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9u
ZS5jcHAKaW5kZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMjE4
MTY4NzhiY2I1NDIzNjYyNTA2YTJiMDI4YmQwYjcxYTdiZDY4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9u
ZS9NYWluVGhyZWFkTm9uZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgog
CiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMzQsNiArMzYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWlu
VGhyZWFkUGxhdGZvcm0oKQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5U
aHJlYWQoKQogeworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L25vbmUvUnVuTG9vcE5vbmUuY3BwCmluZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1
M2ZlNzhlNTYzNmYuLjhhMjFkMmM4ODU1N2Y5ZWExYmRmZTc2ZWZlNmU3ZjAzNTAyYzkzMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1Pgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjkgKzI5LDIzNSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRU
YXNrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsKK1dURl9N
QUtFX05PTkNPUFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIExhbWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNyZWF0ZShM
YW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3YXJkPExh
bWJkYT4obGFtYmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxhbWJkYSwg
ZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0aW9uKHN0
ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2YWwoc3Rk
OjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpj
aHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lzUmVwZWF0
aW5nKHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOworICAgIH0K
KworICAgIGJvb2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsKKyAgICAgICAg
aWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlm
ICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1
cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mdW5jdGlvbiAhPSBu
dWxscHRyOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBt
X2Z1bmN0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1l
X3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSZWFkeVRpbWUo
KQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgPSBDb25kaXRpb246OkNsb2Nr
Ojpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5jb3VudCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2ludCArPSBtX2ZpcmVJbnRlcnZh
bDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3REZWFkbGluZUZpcnN0IHsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25zdCBS
ZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGxocy0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpOwor
ICAgICAgICB9CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
bV9mdW5jdGlvbjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2NoZWR1bGVk
VGltZVBvaW50OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWw7
CisgICAgYm9vbCBtX2lzUmVwZWF0aW5nOworfTsKKwogUnVuTG9vcDo6UnVuTG9vcCgpCiB7CiB9
CiAKIFJ1bkxvb3A6On5SdW5Mb29wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKyAgICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90aWZ5T25l
KCk7CisgICAgbV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3ZvaWQgUnVu
TG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1
bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1
czo6UGVuZGluZzsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2sp
OworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3ApOworICAgIH0K
KworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJlZDsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKworICAgICAgICAgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6SXRl
cmF0ZSkgeworICAgICAgICAgICAgICAgIC8vIEFsbCB0aGUgcXVldWVkIHRhc2tzIGFuZCB0aW1l
cnMgYXJlIGNvbnN1bWVkLiBTdG9wIHRoZSBydW4gbG9vcC4KKyAgICAgICAgICAgICAgICBpZiAo
bV9zY2hlZHVsZXMuaXNFbXB0eSgpICYmIG1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAg
ICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVwVW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0
aW1lX3BvaW50OjptYXgoKTsKKyAgICAgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hl
ZHVsZWRUaW1lUG9pbnQoKTsKKworICAgICAgICAgICAgYm9vbCBjb25kaXRpb25TYXRpc2ZpZWQg
PSBtX3JlYWR5VG9SdW4ud2FpdFVudGlsKG1fbG9vcExvY2ssIHNsZWVwVW50aWwsIFsmXSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBT
dGF0dXM6OlBlbmRpbmcgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmIChjb25kaXRpb25TYXRpc2ZpZWQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5n
IHx8IG1fc2h1dGRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6U3RvcDsKKyAgICAgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OkNsZWFyOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xv
Y2s6Om5vdygpOworICAgICAgICAgICAgd2hpbGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVz
dCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGVhcmxpZXN0LT5z
Y2hlZHVsZWRUaW1lUG9pbnQoKSA+IG5vdykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVk
dWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRsaW5lRmly
c3QoKSk7CisgICAgICAgICAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAg
ICAgICAgICAgIGZpcmVkLmFwcGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGls
ZSAoIWZpcmVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzaz4gdGFzayA9IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRh
c2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhl
IHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3
aWxsIHF1ZXJ5IHRoZSB0aW1lcidzIHRpbWUgcG9pbnQgaW4gdGhlIGhlYWQgb2YgdGhlIG5leHQg
bG9vcCwgd2UgZG8gbm90IGNhbGwgd2FrZVVwIGhlcmUuCisgICAgICAgICAgICAgICAgc2NoZWR1
bGUodGFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJmb3JtV29y
aygpOworICAgIH0KIH0KIAogdm9pZCBSdW5Mb29wOjpydW4oKQogeworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6OkRyYWluKTsKK30KKwordm9pZCBSdW5Mb29wOjppdGVy
YXRlKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpJdGVyYXRl
KTsKIH0KIAogdm9pZCBSdW5Mb29wOjpzdG9wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKyAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdGF0dXMqIHN0YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBpZiAo
KnN0YXR1cyA9PSBTdGF0dXM6OlN0b3ApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgqc3Rh
dHVzICE9IFN0YXR1czo6U3RvcHBpbmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3Rv
cHBpbmc7CisgICAgICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3Zv
aWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKQoreworICAgIGlmIChtX21haW5M
b29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoU3RhdHVzKiBzdGF0
dXMgOiBtX21haW5Mb29wcykgeworICAgICAgICBpZiAoKnN0YXR1cyA9PSBTdGF0dXM6OlN0b3Bw
aW5nIHx8ICpzdGF0dXMgPT0gU3RhdHVzOjpTdG9wKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICpzdGF0dXMgPSBTdGF0dXM6OlBlbmRpbmc7CisgICAgfQorICAgIG1fcmVhZHlUb1J1
bi5ub3RpZnlPbmUoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAg
IHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKGNvbnN0IExvY2tI
b2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAgIG1f
c2NoZWR1bGVzLmFwcGVuZCh0YXNrKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5i
ZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJs
aWVzdERlYWRsaW5lRmlyc3QoKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworfQorCit2b2lkIFJ1
bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+
IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1
bGUobG9ja2VyLCB0YXNrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29w
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExv
Y2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2VyLCBU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rpb25dIHsKKyAgICAgICAgZnVu
Y3Rpb24oKTsKKyAgICB9LCBkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8gMTAwMC4w
LCByZXBlYXRpbmcpKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAogUnVuTG9vcDo6VGltZXJC
YXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29w
KQorICAgICwgbV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCiB7CiB9CiAKQEAgLTU5LDE3ICsyNjYs
MjYgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQogeworICAgIHN0b3Ao
KTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNdIHsK
KyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBtX3J1
bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKIH0KIAogdm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3AoKQogeworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsKKyAg
ICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1bGVk
VGFzayA9IG51bGxwdHI7CisgICAgfQogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNB
Y3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zY2hlZHVs
ZWRUYXNrOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1
ZU5vbmUuY3BwCmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYu
LjRhMjVjODkzOTI3ZjU1NjU2ZDU1OTZjOTJiZjhhZWEzNWFjODM4YzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
bm9uZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMSw1ICsxLDkgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIw
MTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIxICsyOSw2MCBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hh
ciosIFR5cGUsIFFPUykKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5h
bWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0
IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKIHsKKyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsK
KyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAo
c2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3Ry
aW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVk
aW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0
KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVh
ZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBbdGhpc10geworICAg
ICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJl
bnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25l
KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICAgICAgeworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0
ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXgpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KCkKIHsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9v
cENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9vcCkgeworICAgICAgICAgICAg
bV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRp
b24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFk
KG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOworICAg
IH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
CiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJv
dGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5jdGlvbl0g
eyBmdW5jdGlvbigpOyB9KTsKIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCit2b2lkIFdvcmtR
dWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlz
cGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uXSB7IGZ1bmN0aW9uKCk7IH0pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNl
L2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTky
MzE5YjZlMWRlOTg3ZjhjYzAuLjViYmJhM2Y2Y2MyNDIzNWNjNDIyYzYwOTRmZWIzMjVkMjYyNDEx
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTgsNiArOCw4IEBAIHNldChQUk9K
RUNUX1ZFUlNJT04gJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9LiR7UFJPSkVDVF9WRVJTSU9OX01J
Tk9SfS4ke1BST0pFQ1RfCiAKIFdFQktJVF9PUFRJT05fQkVHSU4oKQogV0VCS0lUX09QVElPTl9E
RUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUg
YXMgYSBzdGF0aWMgbGlicmFyeS4iIFBVQkxJQyBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfSklUIFBVQkxJQyBPTikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9TQU1QTElOR19QUk9GSUxFUiBQVUJMSUMgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0VORCgpCiAKQEAgLTE2LDE5ICsxOCwxNiBAQCBzZXQoQUxMX0VWRU5UTE9PUF9UWVBF
UwogICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBzZXQoREVGQVVM
VF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0aXZl
IE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9U
WVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiTm9uZSIp
CiAKIHNldChFVkVOVExPT1BfVFlQRSAke0RFRkFVTFRfRVZFTlRMT09QX1RZUEV9IENBQ0hFIFNU
UklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3Jp
cHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRMT09QX1RZUEVTfSkiKQogCiBzZXQoRU5BQkxFX1dF
QkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQyIE9G
RikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFCTEVfQVBJX1RFU1RTIE9OKQor
CithZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX189MSkKIAogaWYgKFdURl9DUFVf
WDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9V
RElTODYgMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA1NjY3ODU0OWVlZDcxZjEyYzE1NDY0ZmY0ODk0Mzc1MzdmODJmNGM1Li4yZmFkYWY2MDAy
YWNlZTFlZjViNmM0NjZiYjM3ZGRjZmJmNGU2ZDU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTYtMDQtMDcgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHld
IEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOiBBZGRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ub25lL21haW4uY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcC4KKyAgICAgICAgKG1haW4pOgorCiAy
MDE2LTA0LTA2ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2tAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCBVcGRhdGUgbXkgcHJpbWFyeSBlbWFpbCBhZGRyZXNzIGFuZCBleHBlcnRp
c2UuCmRpZmYgLS1naXQgYS9Ub29scy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDA0MGI5OTJmMTBmNmEzMzU5MjI1NWJiY2UzOGQ5MTM4ZjNjNTQyODAuLmJmODk2
NGQwZTZlYjZkMTU2NTI2YTNjZjgwZDliNDM1MTc4NDY5ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CkBAIC0yNSw2ICsyNSwxMCBA
QCBlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiR1RLIikKICAgICBpZiAoRU5BQkxFX01JTklC
Uk9XU0VSKQogICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL2d0aykKICAgICBl
bmRpZiAoKQorZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkpTQ09ubHkiKQorICAgIGlmIChF
TkFCTEVfQVBJX1RFU1RTKQorICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KFRlc3RXZWJLaXRBUEkp
CisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChXSU4zMikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQ3NTYwYzNiZjUyODQ5YmYwYWFj
NzA3ZjEwMDdlMzgyNjI3ODc0YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMTYgQEAKK3NldChURVNUV0VCS0lU
QVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJF
Q1RPUll9L1Rlc3RXZWJLaXRBUEkiKQorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZX1dURiAiJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0v
V1RGIikKKworaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgICAke0RFUklWRURfU09VUkNFU19ESVJ9
L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgIiR7V1RGX0RJUn0vaWN1IgorKQorCitzZXQodGVzdF9t
YWluX1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9ub25lL21haW4uY3BwCispCisK
K2xpc3QoQVBQRU5EIFRlc3RXVEZfU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L25v
bmUvUGxhdGZvcm1VdGlsaXRpZXNOb25lLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9SdW5Mb29wLmNwcAorKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGll
cy5oCmluZGV4IDc1ODNlNGVlMDc3ZTNlODgzZTZhNTdkYjVkMWI4OWVjNDc5NDI5NGIuLjJlMjRh
OWFlZDA0MjgyZmJiYTgyYzhjOGE4M2Y2NDU2ODJhNDc2NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIFBsYXRmb3Jt
VXRpbGl0aWVzX2gKICNkZWZpbmUgUGxhdGZvcm1VdGlsaXRpZXNfaAogCisjaWYgIVBMQVRGT1JN
KEpTQ09OTFkpCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVT
RShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApp
bmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li5lMDE3MmQ5Mzgy
YzBlN2JlOGEzNTZlODcyNWFhZmQxYWI5NjE3NTZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsMTkgQEAKICAgICBVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3AsIE5lc3RlZFJ1bkxvb3ApCit7Cisg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5p
c2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAg
ICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgICAgIHRlc3RG
aW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5p
c2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29uZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNi
YzllMGE5YjExNmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLjQ5NTgzMTAzN2E4OGI0NGZiZTQ5OWI3
OWM0ZjMwZTFiMDU5YzI5NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmln
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTEgQEAK
ICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtRXhwb3J0TWFjcm9zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmICFQTEFURk9STShKU0NPTkxZKQorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNlbmRpZgogCiAjaWYgZGVm
aW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCkBAIC02Myw3ICs2Niw3IEBACiAKICNpbmNs
dWRlIDxzdGRpbnQuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYm
ICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQorI2lmICFQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICFQTEFURk9STShKU0NPTkxZKSAmJiAh
KFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKICNpbmNsdWRl
IDxXZWJLaXQvV2ViS2l0Ml9DLmg+CiAjZW5kaWYKIApAQCAtODksNiArOTIsNiBAQAogI2VuZGlm
CiAjZW5kaWYKIAotI2lmICFQTEFURk9STShJT1MpCisjaWYgIVBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKEpTQ09OTFkpCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvUGxhdGZvcm1VdGlsaXRpZXNOb25lLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmJmYjg2ODhlMThjNzY3Yzk5YjZmMjJmMjcxNDlkOGIyZmM2Y2Q0NGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvUGxhdGZvcm1VdGlsaXRpZXNOb25l
LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRp
bCB7CisKK3ZvaWQgcnVuKGJvb2wqIGRvbmUpCit7CisgICAgd2hpbGUgKCEqZG9uZSkKKyAgICAg
ICAgV1RGOjpSdW5Mb29wOjppdGVyYXRlKCk7Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29u
ZHMpCit7CisgICAgV1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRp
bAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9ub25lL21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ub25lL21haW4uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5YjdlZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBUZXN0V2Vi
S2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KSA/IEVY
SVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCA4NGYxYzA5ZDMyOWMyZWFiZjQ4MGE0NDM1ODRhZGQ2ZWFlNjRlYjFlLi40
ZDlhMDY4MmRlYjE2OWY4M2Y3NzJkMTUxMzM4YTkxOWYxNTA5NWZjIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMDcgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIElt
cGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
SlNDT25seS5jbWFrZToKKwogMjAxNi0wNC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBEdW1wUmVuZGVyVHJlZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276008</attachid>
            <date>2016-04-08 09:42:34 -0700</date>
            <delta_ts>2016-04-08 10:24:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160409014238.patch</filename>
            <type>text/plain</type>
            <size>28654</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwZTY3NGY3MTlmMWU2NjNhMWViOTEz
ZmU5ODgzYjFjMzE4NDVjZGIuLmZjYTQ4YmI5ZDJmNGZhODkwMTMxZDk0MjdiNDdhOWVlNWE2OGNk
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNTYgQEAKIDIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuCisgICAgICAgIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVu
ZGVuY2llcyBleGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVIQorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgICogd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwOgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpT
Y2hlZHVsZWRUYXNrKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpmaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJh
c2U6OlNjaGVkdWxlZFRhc2s6OnNjaGVkdWxlZFRpbWVQb2ludCk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRs
aW5lRmlyc3Q6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6CisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisKKzIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gRW5hYmxlIENvbmN1cnJlbnQg
SklUIGJ5IGRlZmF1bHQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NjM0MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAxNjc5YjM1NmU0ZDI0NDZlNWZlYzE1YmNm
YmMxOWE2YzIxYmI0OGUzLi5iYjQ1NWMwYjVjYTM4NzQ1ZjUzNTA4NGU2YTE3ZTYwMTI4YzJhNDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1f
RUZMIDEKICNlbGlmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9HVEsgMQorI2VsaWYgZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCisjZGVmaW5lIFdURl9Q
TEFURk9STV9KU0NPTkxZIDEKICNlbGlmIE9TKE1BQ19PU19YKQogI2RlZmluZSBXVEZfUExBVEZP
Uk1fTUFDIDEKICNlbGlmIE9TKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxv
b3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBmYWViOWIxZmZhMjVmY2FiYWU5
MWRmODczMGFiY2U0MzI0Yjg5YTdmLi5lNjdhNTY5MTM1OWVkMGQ4YWY2MjBlZGEwMDJkY2RkNGZm
MTQzY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIFJ1bkxvb3BfaAog
I2RlZmluZSBSdW5Mb29wX2gKIAorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KQEAgLTExMiw2ICsxMTMsOSBAQCBjbGFzcyBSdW5Mb29wIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisjZWxzZQorICAg
ICAgICBjbGFzcyBTY2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQdHI8U2NoZWR1bGVkVGFzaz4g
bV9zY2hlZHVsZWRUYXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTY5LDYgKzE3MywzNSBAQCBj
bGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgR1JlZlB0cjxH
TWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8R01haW5Mb29w
Pj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKKyNlbHNlCitw
dWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGl0ZXJhdGUoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKworcHJpdmF0ZToKKyAgICBlbnVtIGNs
YXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRlLAorICAgICAgICBEcmFpbgorICAgIH07CisK
KyAgICB2b2lkIHNjaGVkdWxlKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAg
ICB2b2lkIHNjaGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisgICAgdm9pZCB3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHZv
aWQgc2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOwor
ICAgIHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKKworICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAg
ICAgICAgUGVuZGluZywKKyAgICAgICAgQ2xlYXIsCisgICAgICAgIFN0b3BwaW5nLAorICAgICAg
ICBTdG9wCisgICAgfTsKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVh
ZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0
YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3
YjU0OTcyYTg5Zi4uMzQ2MTBkYTFlMGMxMTk4ZWU4N2M5ZGYwMjUzODQyYWVhZTliNjNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKQEAgLTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdp
bi5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3NiwxMCBAQCBj
bGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICNpZiBQ
TEFURk9STShFRkwpCiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFu
ZGxlcihpbnQpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBkaXNwYXRjaF9x
dWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0K
KyNlbHNlCisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7
IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA0LDEzICsxMDMsNiBAQCBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogI2lmIFBMQVRGT1JNKEVG
TCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNF
KEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2Nr
IG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0
aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9j
ayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJt
aW5hdGVSdW5Mb29wQ29uZGl0aW9uOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHN0YXRpYyB2b2lk
IGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNo
UXVldWU7CkBAIC0xMjQsNiArMTE2LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxl
V29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2Vsc2UK
KyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0
aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1
bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdM
aWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBkM2IxYTEuLmUy
MTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRo
cmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKaW5k
ZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMjE4MTY4NzhiY2I1
NDIzNjYyNTA2YTJiMDI4YmQwYjcxYTdiZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
bm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhy
ZWFkTm9uZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IEtv
bnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApAQCAtMzQsNiArMzYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQog
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlz
cGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVu
TG9vcE5vbmUuY3BwCmluZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYz
NmYuLjhhMjFkMmM4ODU1N2Y5ZWExYmRmZTc2ZWZlNmU3ZjAzNTAyYzkzMmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L25vbmUvUnVuTG9vcE5vbmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjkgKzI5LDIzNSBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsKK1dURl9NQUtFX05PTkNP
UFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
bWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNyZWF0ZShMYW1iZGEmJiBs
YW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3YXJkPExhbWJkYT4obGFt
YmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGlu
dGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0aW9uKHN0ZDo6Zm9yd2Fy
ZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2YWwoc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lzUmVwZWF0aW5nKHJlcGVh
dGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOworICAgIH0KKworICAgIGJv
b2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsKKyAgICAgICAgaWYgKCFpc0Fj
dGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghbV9pc1Jl
cGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFk
eVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mdW5jdGlvbiAhPSBudWxscHRyOwor
ICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBtX2Z1bmN0aW9u
ID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNj
aGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zY2hlZHVs
ZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSZWFkeVRpbWUoKQorICAgIHsK
KyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsK
KyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5jb3VudCgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2ludCArPSBtX2ZpcmVJbnRlcnZhbDsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgRWFybGllc3REZWFkbGluZUZpcnN0IHsKKyAgICAgICAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8U2No
ZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxocy0+c2No
ZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpOworICAgICAgICB9
CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9mdW5jdGlv
bjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2NoZWR1bGVkVGltZVBvaW50
OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWw7CisgICAgYm9v
bCBtX2lzUmVwZWF0aW5nOworfTsKKwogUnVuTG9vcDo6UnVuTG9vcCgpCiB7CiB9CiAKIFJ1bkxv
b3A6On5SdW5Mb29wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAg
ICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7CisgICAg
bV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVu
SW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxvb3A6OmN1
cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6UGVuZGlu
ZzsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgICAg
ICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3ApOworICAgIH0KKworICAgIERl
cXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJlZDsKKyAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKworICAgICAgICAgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6SXRlcmF0ZSkgewor
ICAgICAgICAgICAgICAgIC8vIEFsbCB0aGUgcXVldWVkIHRhc2tzIGFuZCB0aW1lcnMgYXJlIGNv
bnN1bWVkLiBTdG9wIHRoZSBydW4gbG9vcC4KKyAgICAgICAgICAgICAgICBpZiAobV9zY2hlZHVs
ZXMuaXNFbXB0eSgpICYmIG1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBp
ZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9zdG9w
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDb25kaXRpb246OkNs
b2NrOjp0aW1lX3BvaW50IHNsZWVwVW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50
OjptYXgoKTsKKyAgICAgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hlZHVsZWRUaW1l
UG9pbnQoKTsKKworICAgICAgICAgICAgYm9vbCBjb25kaXRpb25TYXRpc2ZpZWQgPSBtX3JlYWR5
VG9SdW4ud2FpdFVudGlsKG1fbG9vcExvY2ssIHNsZWVwVW50aWwsIFsmXSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlBl
bmRpbmcgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIGlmIChjb25kaXRpb25TYXRpc2ZpZWQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1
dGRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6
U3RvcDsKKyAgICAgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXR1c09m
VGhpc0xvb3AgPSBTdGF0dXM6OkNsZWFyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBD
b25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygp
OworICAgICAgICAgICAgd2hpbGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2No
ZWR1bGVzLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGVhcmxpZXN0LT5zY2hlZHVsZWRU
aW1lUG9pbnQoKSA+IG5vdykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQo
KSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRsaW5lRmlyc3QoKSk7Cisg
ICAgICAgICAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAg
IGZpcmVkLmFwcGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVk
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
az4gdGFzayA9IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2stPmZpcmVk
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRpbWVyIHJl
cXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5
IHRoZSB0aW1lcidzIHRpbWUgcG9pbnQgaW4gdGhlIGhlYWQgb2YgdGhlIG5leHQgbG9vcCwgd2Ug
ZG8gbm90IGNhbGwgd2FrZVVwIGhlcmUuCisgICAgICAgICAgICAgICAgc2NoZWR1bGUodGFzayk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJmb3JtV29yaygpOworICAg
IH0KIH0KIAogdm9pZCBSdW5Mb29wOjpydW4oKQogeworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5y
dW5JbXBsKFJ1bk1vZGU6OkRyYWluKTsKK30KKwordm9pZCBSdW5Mb29wOjppdGVyYXRlKCkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpJdGVyYXRlKTsKIH0KIAog
dm9pZCBSdW5Mb29wOjpzdG9wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2Nr
KTsKKyAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBTdGF0dXMqIHN0YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBpZiAoKnN0YXR1cyA9
PSBTdGF0dXM6OlN0b3ApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgqc3RhdHVzICE9IFN0
YXR1czo6U3RvcHBpbmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7Cisg
ICAgICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9v
cDo6d2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKQoreworICAgIGlmIChtX21haW5Mb29wcy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoU3RhdHVzKiBzdGF0dXMgOiBtX21h
aW5Mb29wcykgeworICAgICAgICBpZiAoKnN0YXR1cyA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8ICpz
dGF0dXMgPT0gU3RhdHVzOjpTdG9wKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICpz
dGF0dXMgPSBTdGF0dXM6OlBlbmRpbmc7CisgICAgfQorICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlP
bmUoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHdha2VVcChs
b2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBS
ZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAgIG1fc2NoZWR1bGVz
LmFwcGVuZCh0YXNrKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBt
X3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRs
aW5lRmlyc3QoKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworfQorCit2b2lkIFJ1bkxvb3A6OnNj
aGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9ja2Vy
LCB0YXNrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpkaXNwYXRj
aEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAg
IGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6
OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsK
KyAgICB9LCBkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8gMTAwMC4wLCByZXBlYXRp
bmcpKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1l
ckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgICwg
bV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCiB7CiB9CiAKQEAgLTU5LDE3ICsyNjYsMjYgQEAgdm9p
ZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFy
dChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQogeworICAgIHN0b3AoKTsKKyAgICBt
X3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNdIHsKKyAgICAgICAg
ZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBtX3J1bkxvb3Auc2No
ZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3AoKQogeworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsKKyAgICAgICAgbV9z
Y2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1bGVkVGFzayA9IG51
bGxwdHI7CisgICAgfQogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBj
b25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zY2hlZHVsZWRUYXNrOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUv
V29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3Bw
CmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjRhMjVjODkz
OTI3ZjU1NjU2ZDU1OTZjOTJiZjhhZWEzNWFjODM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9uZS9Xb3Jr
UXVldWVOb25lLmNwcApAQCAtMSw1ICsxLDkgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
S29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3Jv
bGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIxICsyOSw2MCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciosIFR5cGUs
IFFPUykKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9
IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUsIFR5cGUsIFFPUykKIHsKKyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXpl
X3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBu
b3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUg
KyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWRO
YW1lTGltaXQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxT
dHVkaW9UaHJlYWROYW1lTGltaXQpOworCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFs
aXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0
ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBbdGhpc10geworICAgICAgICB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAg
ICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAg
ICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVu
TG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5p
dGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXgpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKKyAg
ICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlv
bk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29w
LT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdCht
X3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1
ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOworICAgIH0KIH0KIAot
dm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCiB7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlz
KTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5jdGlvbl0geyBmdW5jdGlv
bigpOyB9KTsKIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCit2b2lkIFdvcmtRdWV1ZTo6ZGlz
cGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBmdW5jdGlvbikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBSZWZQ
dHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRl
cihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uXSB7IGZ1bmN0aW9uKCk7IH0pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09w
dGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRl
OTg3ZjhjYzAuLmEwYjRkOTQ0MTE4NzhhMTYxOGU3ZDQ3NmFiYWI4NmYxZjY5YmVkYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTE2LDE5ICsxNiwxNiBAQCBzZXQoQUxMX0VWRU5U
TE9PUF9UWVBFUwogICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBz
ZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBV
c2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VW
RU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQ
RSAiTm9uZSIpCiAKIHNldChFVkVOVExPT1BfVFlQRSAke0RFRkFVTFRfRVZFTlRMT09QX1RZUEV9
IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGlu
IEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRMT09QX1RZUEVTfSkiKQogCiBzZXQo
RU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0KEVOQUJMRV9X
RUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFCTEVfQVBJX1RF
U1RTIE9OKQorCithZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX189MSkKIAogaWYg
KFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFVTRV9VRElTODYgMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2NGIwODYzN2IzMDFkZDVhNzI0YmI3ZjI1MmI4N2NhNTY1M2Y3YjQ5Li4y
ZjE2OWRiMzQ2YzBhM2I1ZGRjZTJmNWY2NWMxMzk5OWE4NDJiMjk1IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYt
MDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVGVzdFdU
RiB0byBKU0NPbmx5IHBvcnQgdG8gdGVzdCBXb3JrUXVldWUgYW5kIFJ1bkxvb3AuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlND
T25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9j
b25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL25vbmUvUGxhdGZvcm1VdGlsaXRpZXNO
b25lLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbm9uZS9tYWlu
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAu
CisgICAgICAgIChtYWluKToKKwogMjAxNi0wNC0wNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIHN0eWxlYm90IHNob3VsZCBrbm93IGFib3V0IFRlc3RX
ZWJLaXRBUEkgRmVhdHVyZURlZmluZXMueGNjb25maWcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggMDQwYjk5MmYxMGY2YTMzNTky
MjU1YmJjZTM4ZDkxMzhmM2M1NDI4MC4uYmY4OTY0ZDBlNmViNmQxNTY1MjZhM2NmODBkOWI0MzUx
Nzg0NjlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvQ01h
a2VMaXN0cy50eHQKQEAgLTI1LDYgKzI1LDEwIEBAIGVsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFM
ICJHVEsiKQogICAgIGlmIChFTkFCTEVfTUlOSUJST1dTRVIpCiAgICAgICAgIGFkZF9zdWJkaXJl
Y3RvcnkoTWluaUJyb3dzZXIvZ3RrKQogICAgIGVuZGlmICgpCitlbHNlaWYgKCIke1BPUlR9IiBT
VFJFUVVBTCAiSlNDT25seSIpCisgICAgaWYgKEVOQUJMRV9BUElfVEVTVFMpCisgICAgICAgIGFk
ZF9zdWJkaXJlY3RvcnkoVGVzdFdlYktpdEFQSSkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAog
aWYgKFdJTjMyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09u
bHkuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZDc1NjBjM2JmNTI4NDliZjBhYWM3MDdmMTAwN2UzODI2Mjc4NzRhCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAg
LTAsMCArMSwxNiBAQAorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
ICIke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vVGVzdFdlYktpdEFQSSIpCitzZXQo
VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfV1RGICIke1RFU1RXRUJLSVRB
UElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9XVEYiKQorCitpbmNsdWRlX2RpcmVjdG9yaWVz
KAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAiJHtX
VEZfRElSfS9pY3UiCispCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L25vbmUvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VT
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3Bw
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNl
NmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uMmUyNGE5YWVkMDQyODJmYmJhODJjOGM4YTgzZjY0NTY4
MmE0NzY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGll
cy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYs
OCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9y
bVV0aWxpdGllc19oCiAKKyNpZiAhUExBVEZPUk0oSlNDT05MWSkKICNpbmNsdWRlIDxXZWJLaXQv
V0tOYXRpdmVFdmVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2VuZGlm
CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0
MTNlMDg3MWMzZWE0MDY4MTcuLmUwMTcyZDkzODJjMGU3YmU4YTM1NmU4NzI1YWFmZDFhYjk2MTc1
NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0
ICs1NCwxOSBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZf
UnVuTG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbJl0geworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7
CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6
OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2OTI2
MzAxNi4uNDk1ODMxMDM3YTg4YjQ0ZmJlNDk5Yjc5YzRmMzBlMWIwNTljMjk1NyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMSBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAj
ZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+
CisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgJiYgX19BUFBMRV9f
CiAKQEAgLTYzLDcgKzY2LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogCi0jaWYgIVBMQVRG
T1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShHVEspICYmICFkZWZpbmVk
KEJVSUxESU5HX1dFQktJVDJfXykpCisjaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJ
TikgJiYgIVBMQVRGT1JNKEpTQ09OTFkpICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChC
VUlMRElOR19XRUJLSVQyX18pKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNlbmRp
ZgogCkBAIC04OSw2ICs5Miw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElP
UykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSlNDT05MWSkKICNkZWZpbmUgV0tf
SEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9u
ZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ub25lL1Bs
YXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiODY4OGUxOGM3NjdjOTliNmYy
MmYyNzE0OWQ4YjJmYzZjZDQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBydW4oYm9vbCogZG9uZSkK
K3sKKyAgICB3aGlsZSAoISpkb25lKQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsK
K30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6OnNsZWVwKHNlY29u
ZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRiNzkzMjlm
ZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvbm9uZS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2lu
Z2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwor
fQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDkzOTI1ODMwNmE3NDI5
ODA4MjcyNGRlOWE4Yjc4ZGQ3YjY4ZWU1ZjIuLjRmNTY2YmYyZGUwZWIyMGVjMTUwN2NlY2U0MTFm
NmVmYTU4MWM0YzMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNi0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBn
bGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgorCiAyMDE2LTA0LTA3
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IEVOQUJMRShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgZ3VhcmRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276010</attachid>
            <date>2016-04-08 10:24:45 -0700</date>
            <delta_ts>2016-04-11 05:55:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160409022449.patch</filename>
            <type>text/plain</type>
            <size>29043</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwZTY3NGY3MTlmMWU2NjNhMWViOTEz
ZmU5ODgzYjFjMzE4NDVjZGIuLmZjYTQ4YmI5ZDJmNGZhODkwMTMxZDk0MjdiNDdhOWVlNWE2OGNk
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsNTYgQEAKIDIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuCisgICAgICAgIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVu
ZGVuY2llcyBleGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVIQorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgICogd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwOgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpT
Y2hlZHVsZWRUYXNrKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpmaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJh
c2U6OlNjaGVkdWxlZFRhc2s6OnNjaGVkdWxlZFRpbWVQb2ludCk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRs
aW5lRmlyc3Q6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6CisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisKKzIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gRW5hYmxlIENvbmN1cnJlbnQg
SklUIGJ5IGRlZmF1bHQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NjM0MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAxNjc5YjM1NmU0ZDI0NDZlNWZlYzE1YmNm
YmMxOWE2YzIxYmI0OGUzLi5iYjQ1NWMwYjVjYTM4NzQ1ZjUzNTA4NGU2YTE3ZTYwMTI4YzJhNDgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKQEAgLTQ0Myw2ICs0NDMsOCBAQAogI2RlZmluZSBXVEZfUExBVEZPUk1f
RUZMIDEKICNlbGlmIGRlZmluZWQoQlVJTERJTkdfR1RLX18pCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9HVEsgMQorI2VsaWYgZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCisjZGVmaW5lIFdURl9Q
TEFURk9STV9KU0NPTkxZIDEKICNlbGlmIE9TKE1BQ19PU19YKQogI2RlZmluZSBXVEZfUExBVEZP
Uk1fTUFDIDEKICNlbGlmIE9TKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxv
b3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAppbmRleCBmYWViOWIxZmZhMjVmY2FiYWU5
MWRmODczMGFiY2U0MzI0Yjg5YTdmLi5lNjdhNTY5MTM1OWVkMGQ4YWY2MjBlZGEwMDJkY2RkNGZm
MTQzY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIFJ1bkxvb3BfaAog
I2RlZmluZSBSdW5Mb29wX2gKIAorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9G
dW5jdGlvbkRpc3BhdGNoZXIuaD4KQEAgLTExMiw2ICsxMTMsOSBAQCBjbGFzcyBSdW5Mb29wIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisjZWxzZQorICAg
ICAgICBjbGFzcyBTY2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQdHI8U2NoZWR1bGVkVGFzaz4g
bV9zY2hlZHVsZWRUYXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTY5LDYgKzE3MywzNSBAQCBj
bGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgR1JlZlB0cjxH
TWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8R01haW5Mb29w
Pj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKKyNlbHNlCitw
dWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGl0ZXJhdGUoKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKworcHJpdmF0ZToKKyAgICBlbnVtIGNs
YXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRlLAorICAgICAgICBEcmFpbgorICAgIH07CisK
KyAgICB2b2lkIHNjaGVkdWxlKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAg
ICB2b2lkIHNjaGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisgICAgdm9pZCB3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHZv
aWQgc2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOwor
ICAgIHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKKworICAgIGVudW0gY2xhc3MgU3RhdHVzIHsKKyAg
ICAgICAgUGVuZGluZywKKyAgICAgICAgQ2xlYXIsCisgICAgICAgIFN0b3BwaW5nLAorICAgICAg
ICBTdG9wCisgICAgfTsKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVh
ZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0
YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3
YjU0OTcyYTg5Zi4uMzQ2MTBkYTFlMGMxMTk4ZWU4N2M5ZGYwMjUzODQyYWVhZTliNjNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYv
V29ya1F1ZXVlLmgKQEAgLTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0oRUZMKQogI2lu
Y2x1ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdp
bi5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3NiwxMCBAQCBj
bGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICNpZiBQ
TEFURk9STShFRkwpCiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFu
ZGxlcihpbnQpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBkaXNwYXRjaF9x
dWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0K
KyNlbHNlCisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7
IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTA0LDEzICsxMDMsNiBAQCBjbGFzcyBXb3JrUXVl
dWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogI2lmIFBMQVRGT1JNKEVG
TCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNF
KEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2Nr
IG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0
aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9j
ayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJt
aW5hdGVSdW5Mb29wQ29uZGl0aW9uOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHN0YXRpYyB2b2lk
IGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNo
UXVldWU7CkBAIC0xMjQsNiArMTE2LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxl
V29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2Vsc2UK
KyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0
aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1
bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdM
aWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBkM2IxYTEuLmUy
MTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRo
cmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKaW5k
ZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMjE4MTY4NzhiY2I1
NDIzNjYyNTA2YTJiMDI4YmQwYjcxYTdiZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
bm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhy
ZWFkTm9uZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IEtv
bnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApAQCAtMzQsNiArMzYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQogCiB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQog
eworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlz
cGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVu
TG9vcE5vbmUuY3BwCmluZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYz
NmYuLjA3ZTFkYTZmY2JiYWUxMDIyYzQ3YzgyN2JkZDRiNzQ2ZDA4MmUzYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L25vbmUvUnVuTG9vcE5vbmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMjkgKzI5LDIzOSBAQAogCiBuYW1lc3Bh
Y2UgV1RGIHsKIAorY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsKK1dURl9NQUtFX05PTkNP
UFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
bWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNyZWF0ZShMYW1iZGEmJiBs
YW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3YXJkPExhbWJkYT4obGFt
YmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGlu
dGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0aW9uKHN0ZDo6Zm9yd2Fy
ZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2YWwoc3RkOjpjaHJvbm86
OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1
cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lzUmVwZWF0aW5nKHJlcGVh
dGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOworICAgIH0KKworICAgIGJv
b2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsKKyAgICAgICAgaWYgKCFpc0Fj
dGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICghbV9pc1Jl
cGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFk
eVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBpc0FjdGl2
ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7Cisg
ICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgp
CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAg
ICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBDb25kaXRpb246OkNsb2NrOjp0
aW1lX3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVSZWFkeVRp
bWUoKQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgPSBDb25kaXRpb246OkNs
b2NrOjpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5jb3VudCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2ludCArPSBtX2ZpcmVJbnRl
cnZhbDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3REZWFkbGluZUZpcnN0IHsKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25z
dCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGxocy0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgp
OworICAgICAgICB9CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gbV9mdW5jdGlvbjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2NoZWR1
bGVkVGltZVBvaW50OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2
YWw7CisgICAgTG9jayBtX2lzQWN0aXZlTG9jazsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0cnVl
IH07CisgICAgYm9vbCBtX2lzUmVwZWF0aW5nOworfTsKKwogUnVuTG9vcDo6UnVuTG9vcCgpCiB7
CiB9CiAKIFJ1bkxvb3A6On5SdW5Mb29wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xv
b3BMb2NrKTsKKyAgICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90aWZ5
T25lKCk7CisgICAgbV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3ZvaWQg
UnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0g
JlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0
YXR1czo6UGVuZGluZzsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExv
Y2spOworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3ApOworICAg
IH0KKworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJlZDsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvb3BMb2NrKTsKKworICAgICAgICAgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6
SXRlcmF0ZSkgeworICAgICAgICAgICAgICAgIC8vIEFsbCB0aGUgcXVldWVkIHRhc2tzIGFuZCB0
aW1lcnMgYXJlIGNvbnN1bWVkLiBTdG9wIHRoZSBydW4gbG9vcC4KKyAgICAgICAgICAgICAgICBp
ZiAobV9zY2hlZHVsZXMuaXNFbXB0eSgpICYmIG1fZnVuY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAgICAgICAg
ICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBD
b25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVwVW50aWwgPSBDb25kaXRpb246OkNsb2Nr
Ojp0aW1lX3BvaW50OjptYXgoKTsKKyAgICAgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgIHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5z
Y2hlZHVsZWRUaW1lUG9pbnQoKTsKKworICAgICAgICAgICAgYm9vbCBjb25kaXRpb25TYXRpc2Zp
ZWQgPSBtX3JlYWR5VG9SdW4ud2FpdFVudGlsKG1fbG9vcExvY2ssIHNsZWVwVW50aWwsIFsmXSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwgc3RhdHVzT2ZUaGlzTG9vcCA9
PSBTdGF0dXM6OlBlbmRpbmcgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5n
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmIChjb25kaXRpb25TYXRpc2ZpZWQp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3Bw
aW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzT2ZUaGlzTG9v
cCA9IFN0YXR1czo6U3RvcDsKKyAgICAgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3Zl
TGFzdCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OkNsZWFyOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6
Q2xvY2s6Om5vdygpOworICAgICAgICAgICAgd2hpbGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJs
aWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGVhcmxpZXN0
LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IG5vdykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3Nj
aGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRsaW5l
Rmlyc3QoKSk7CisgICAgICAgICAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAg
ICAgICAgICAgICAgIGZpcmVkLmFwcGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3
aGlsZSAoIWZpcmVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYg
KHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2Ug
dGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3
ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcidzIHRpbWUgcG9pbnQgaW4gdGhlIGhlYWQgb2YgdGhlIG5l
eHQgbG9vcCwgd2UgZG8gbm90IGNhbGwgd2FrZVVwIGhlcmUuCisgICAgICAgICAgICAgICAgc2No
ZWR1bGUodGFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJmb3Jt
V29yaygpOworICAgIH0KIH0KIAogdm9pZCBSdW5Mb29wOjpydW4oKQogeworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6OkRyYWluKTsKK30KKwordm9pZCBSdW5Mb29wOjpp
dGVyYXRlKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpJdGVy
YXRlKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpzdG9wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKyAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBTdGF0dXMqIHN0YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBp
ZiAoKnN0YXR1cyA9PSBTdGF0dXM6OlN0b3ApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgq
c3RhdHVzICE9IFN0YXR1czo6U3RvcHBpbmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6
U3RvcHBpbmc7CisgICAgICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisK
K3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKQoreworICAgIGlmIChtX21h
aW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoU3RhdHVzKiBz
dGF0dXMgOiBtX21haW5Mb29wcykgeworICAgICAgICBpZiAoKnN0YXR1cyA9PSBTdGF0dXM6OlN0
b3BwaW5nIHx8ICpzdGF0dXMgPT0gU3RhdHVzOjpTdG9wKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICpzdGF0dXMgPSBTdGF0dXM6OlBlbmRpbmc7CisgICAgfQorICAgIG1fcmVhZHlU
b1J1bi5ub3RpZnlPbmUoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwor
ICAgIHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKGNvbnN0IExv
Y2tIb2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAg
IG1fc2NoZWR1bGVzLmFwcGVuZCh0YXNrKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxl
cy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpF
YXJsaWVzdERlYWRsaW5lRmlyc3QoKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVm
UHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworfQorCit2b2lk
IFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2No
ZWR1bGUobG9ja2VyLCB0YXNrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9v
cExvY2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2Vy
LCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rpb25dIHsKKyAgICAgICAg
ZnVuY3Rpb24oKTsKKyAgICB9LCBkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8gMTAw
MC4wLCByZXBlYXRpbmcpKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKIH0KIAogUnVuTG9vcDo6VGlt
ZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5M
b29wKQorICAgICwgbV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCiB7CiB9CiAKQEAgLTU5LDE3ICsy
NzAsMjYgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQogeworICAgIHN0
b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNd
IHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBt
X3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKIH0KIAogdm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQogeworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsK
KyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1
bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQogfQogCiBib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9zY2hl
ZHVsZWRUYXNrOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtR
dWV1ZU5vbmUuY3BwCmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgz
ZjYuLjRhMjVjODkzOTI3ZjU1NjU2ZDU1OTZjOTJiZjhhZWEzNWFjODM4YzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMSw1ICsxLDkgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMp
IDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIxICsyOSw2MCBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3Qg
Y2hhciosIFR5cGUsIFFPUykKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVh
ZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNv
bnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKIHsKKyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1l
KTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBp
ZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vi
c3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxT
dHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJp
Z2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRo
cmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBbdGhpc10gewor
ICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5M
b29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1
cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5
T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICAgICAgewor
ICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9u
TXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1f
dGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0p
OworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5M
b29wQ29uZGl0aW9uTXV0ZXgpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKCkKIHsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVu
TG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9vcCkgeworICAgICAgICAg
ICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhy
ZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOwor
ICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rp
b24pCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4g
cHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5jdGlv
bl0geyBmdW5jdGlvbigpOyB9KTsKIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIo
c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCit2b2lkIFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+
ZGlzcGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uXSB7IGZ1bmN0aW9uKCk7IH0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291
cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThk
OTkyMzE5YjZlMWRlOTg3ZjhjYzAuLmEwYjRkOTQ0MTE4NzhhMTYxOGU3ZDQ3NmFiYWI4NmYxZjY5
YmVkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysg
Yi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTE2LDE5ICsxNiwxNiBAQCBz
ZXQoQUxMX0VWRU5UTE9PUF9UWVBFUwogICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBB
UFBMRSkKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0g
ICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNl
dChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9F
VkVOVExPT1BfVFlQRSAiTm9uZSIpCiAKIHNldChFVkVOVExPT1BfVFlQRSAke0RFRkFVTFRfRVZF
TlRMT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0
byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRMT09QX1RZUEVT
fSkiKQogCiBzZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQog
c2V0KEVOQUJMRV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChF
TkFCTEVfQVBJX1RFU1RTIE9OKQorCithZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZ
X189MSkKIAogaWYgKFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9VRElTODYgMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NGIwODYzN2IzMDFkZDVhNzI0YmI3ZjI1MmI4N2Nh
NTY1M2Y3YjQ5Li4yZjE2OWRiMzQ2YzBhM2I1ZGRjZTJmNWY2NWMxMzk5OWE4NDJiMjk1IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBk
ZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgVGVzdFdURiB0byBKU0NPbmx5IHBvcnQgdG8gdGVzdCBXb3JrUXVldWUgYW5kIFJ1bkxv
b3AuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1
bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL25vbmUvUGxhdGZv
cm1VdGlsaXRpZXNOb25lLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWlu
VGhyZWFkTm9uZS5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvbm9uZS9tYWluLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhy
ZWFkTm9uZS5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxNi0wNC0wNyAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIHN0eWxlYm90IHNob3VsZCBrbm93
IGFib3V0IFRlc3RXZWJLaXRBUEkgRmVhdHVyZURlZmluZXMueGNjb25maWcKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggMDQwYjk5
MmYxMGY2YTMzNTkyMjU1YmJjZTM4ZDkxMzhmM2M1NDI4MC4uYmY4OTY0ZDBlNmViNmQxNTY1MjZh
M2NmODBkOWI0MzUxNzg0NjlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysr
IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKQEAgLTI1LDYgKzI1LDEwIEBAIGVsc2VpZiAoIiR7UE9S
VH0iIFNUUkVRVUFMICJHVEsiKQogICAgIGlmIChFTkFCTEVfTUlOSUJST1dTRVIpCiAgICAgICAg
IGFkZF9zdWJkaXJlY3RvcnkoTWluaUJyb3dzZXIvZ3RrKQogICAgIGVuZGlmICgpCitlbHNlaWYg
KCIke1BPUlR9IiBTVFJFUVVBTCAiSlNDT25seSIpCisgICAgaWYgKEVOQUJMRV9BUElfVEVTVFMp
CisgICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoVGVzdFdlYktpdEFQSSkKKyAgICBlbmRpZiAoKQog
ZW5kaWYgKCkKIAogaWYgKFdJTjMyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25s
eS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZDc1NjBjM2JmNTI4NDliZjBhYWM3MDdmMTAwN2UzODI2Mjc4
NzRhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09u
bHkuY21ha2UKQEAgLTAsMCArMSwxNiBAQAorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQ
VVRfRElSRUNUT1JZICIke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vVGVzdFdlYktp
dEFQSSIpCitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfV1RGICIk
e1RFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9XVEYiKQorCitpbmNsdWRl
X2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRl
cnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L25vbmUvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVz
dFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vbm9uZS9QbGF0Zm9ybVV0aWxp
dGllc05vbmUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3Au
Y3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0
ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uMmUyNGE5YWVkMDQyODJmYmJhODJj
OGM4YTgzZjY0NTY4MmE0NzY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2Rl
ZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZiAhUExBVEZPUk0oSlNDT05MWSkKICNpbmNs
dWRlIDxXZWJLaXQvV0tOYXRpdmVFdmVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0
ci5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4IGU3ZTNkOWY5OTNl
ZTc5YTQ2N2QwZTk0MTNlMDg3MWMzZWE0MDY4MTcuLmUwMTcyZDkzODJjMGU3YmU4YTM1NmU4NzI1
YWFmZDFhYjk2MTc1NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1J1bkxvb3AuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3Au
Y3BwCkBAIC01NCw0ICs1NCwxOSBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0K
IAorVEVTVChXVEZfUnVuTG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
KyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9KTsK
KworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJk
MzFhMDY0NmQ2OTI2MzAxNi4uNDk1ODMxMDM3YTg4YjQ0ZmJlNDk5Yjc5YzRmMzBlMWIwNTljMjk1
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMSBAQAogI2luY2x1ZGUgImNtYWtl
Y29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNy
b3MuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhw
b3J0TWFjcm9zLmg+CisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUV4cG9ydE1hY3Jvcy5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykg
JiYgX19BUFBMRV9fCiAKQEAgLTYzLDcgKzY2LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgog
Ci0jaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShHVEsp
ICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJVDJfXykpCisjaWYgIVBMQVRGT1JNKElPUykgJiYg
IVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEpTQ09OTFkpICYmICEoUExBVEZPUk0oR1RLKSAm
JiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQy
X0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5Miw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSlNDT05MWSkK
ICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiODY4OGUx
OGM3NjdjOTliNmYyMmYyNzE0OWQ4YjJmYzZjZDQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKwor
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBydW4o
Ym9vbCogZG9uZSkKK3sKKyAgICB3aGlsZSAoISpkb25lKQorICAgICAgICBXVEY6OlJ1bkxvb3A6
Oml0ZXJhdGUoKTsKK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6
OnNsZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJi
MTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29u
dHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDogRVhJ
VF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDkz
OTI1ODMwNmE3NDI5ODA4MjcyNGRlOWE4Yjc4ZGQ3YjY4ZWU1ZjIuLmNiOGRkN2EzMTA4ZWM2NGZm
N2ZlOWRkOGYxN2E4ZTBkMjA4YWQ4NTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wNC0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3Ag
YW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgor
CisyMDE2LTA0LTA4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5k
ZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBT
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2U6CisKIDIwMTYtMDQtMDcgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFKEVO
QUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSBndWFyZHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276142</attachid>
            <date>2016-04-11 05:56:01 -0700</date>
            <delta_ts>2016-04-11 06:01:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160411215609.patch</filename>
            <type>text/plain</type>
            <size>30267</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwZTY3NGY3MTlmMWU2NjNhMWViOTEz
ZmU5ODgzYjFjMzE4NDVjZGIuLjMwZDZjMzRiN2Q0MmUyYzQwOTg3NjcxMDdjZWJiMjExNmExYTRk
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTYtMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuCisgICAgICAgIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVu
ZGVuY2llcyBleGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVIQorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgICogd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwOgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpT
Y2hlZHVsZWRUYXNrKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpmaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6c2NoZWR1bGVkVGltZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0RGVhZGxpbmVGaXJzdDo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6CisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisKIDIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gRW5hYmxlIENvbmN1cnJlbnQg
SklUIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDE2NzliMzU2ZTRkMjQ0NmU1ZmVjMTViY2Zi
YzE5YTZjMjFiYjQ4ZTMuLmJiNDU1YzBiNWNhMzg3NDVmNTM1MDg0ZTZhMTdlNjAxMjhjMmE0ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaApAQCAtNDQzLDYgKzQ0Myw4IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9F
RkwgMQogI2VsaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JN
X0dUSyAxCisjZWxpZiBkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNkZWZpbmUgV1RGX1BM
QVRGT1JNX0pTQ09OTFkgMQogI2VsaWYgT1MoTUFDX09TX1gpCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9NQUMgMQogI2VsaWYgT1MoSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkx
ZGY4NzMwYWJjZTQzMjRiODlhN2YuLjI5NjAyYjdlMDQ1ODZlZjhlZWU3YmQ5ZTIzODNhODgzMGFk
MGQ1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAj
ZGVmaW5lIFJ1bkxvb3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oPgpAQCAtMTEyLDYgKzExMyw5IEBAIGNsYXNzIFJ1bkxvb3AgOiBw
dWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Nv
dXJjZTsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAgICAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbCB7IDAgfTsKKyNlbHNlCisgICAg
ICAgIGNsYXNzIFNjaGVkdWxlZFRhc2s7CisgICAgICAgIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBt
X3NjaGVkdWxlZFRhc2s7CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNjksNiArMTczLDM0IEBAIGNs
YXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBHUmVmUHRyPEdN
YWluQ29udGV4dD4gbV9tYWluQ29udGV4dDsKICAgICBWZWN0b3I8R1JlZlB0cjxHTWFpbkxvb3A+
PiBtX21haW5Mb29wczsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOworI2Vsc2UKK3B1
YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworCitwcml2YXRlOgorICAgIGVudW0gY2xh
c3MgUnVuTW9kZSB7CisgICAgICAgIEl0ZXJhdGUsCisgICAgICAgIERyYWluCisgICAgfTsKKwor
ICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOworICAg
IHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9sZGVyJik7CisgICAgdm9p
ZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7Cisg
ICAgdm9pZCBydW5JbXBsKFJ1bk1vZGUpOworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAg
ICAgICBQZW5kaW5nLAorICAgICAgICBDbGVhciwKKyAgICAgICAgU3RvcHBpbmcsCisgICAgfTsK
KyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBD
b25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxv
b3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uMzQ2
MTBkYTFlMGMxMTk4ZWU4N2M5ZGYwMjUzODQyYWVhZTliNjNhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAg
LTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPERpc3BhdGNo
UXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgorI2Vsc2UKKyNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3NiwxMCBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICNpZiBQTEFURk9STShFRkwpCiAg
ICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2Vs
aWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1
bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNo
UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbHNlCisgICAgUnVu
TG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbmRpZgogCiBw
cml2YXRlOgpAQCAtMTA0LDEzICsxMDMsNiBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBSZWZQdHI8
RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgVGhy
ZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1
bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVuTG9vcENv
bmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1
bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29u
ZGl0aW9uOwogI2VsaWYgT1MoREFSV0lOKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlv
bih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7CkBAIC0xMjQs
NiArMTE2LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3Bh
dGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+PiBtX2hh
bmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2Vsc2UKKyAgICBUaHJlYWRJZGVu
dGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENv
bmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
OworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENv
bmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVl
R0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYz
MmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBkM2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3
OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIv
V29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGli
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwIGIv
U291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKaW5kZXggZTNjYjZiYTY1MzIy
ZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMjE4MTY4NzhiY2I1NDIzNjYyNTA2YTJiMDI4
YmQwYjcxYTdiZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFk
Tm9uZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZl
diA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNSw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNYWlu
VGhyZWFkLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAt
MzQsNiArMzYsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQogCiB2b2lk
IHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQogeworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNG
cm9tTWFpblRocmVhZCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25l
L1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCmlu
ZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYuLjgxNzIwODE3NTU2
YTFiM2Y4M2Q4Y2I2NzQ5YmU1Y2MxZjUxOTI4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5v
bmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFu
dGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsMjkgKzI5LDIzOCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xh
c3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKFNjaGVkdWxl
ZFRhc2spOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBzdGF0
aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNyZWF0ZShMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBp
bnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSwgaW50ZXJ2YWws
IHJlcGVhdGluZykpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIExhbWJkYT4KKyAg
ICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJl
cGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0aW9uKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJk
YSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4o
aW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lzUmVwZWF0aW5nKHJlcGVhdGluZykKKyAgICB7Cisg
ICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOworICAgIH0KKworICAgIGJvb2wgZmlyZWQoKQorICAg
IHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIG1fZnVuY3Rpb24oKTsKKworICAgICAgICBpZiAoIW1faXNSZXBlYXRpbmcpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7Cisg
ICAgICAgIHJldHVybiBpc0FjdGl2ZSgpOworICAgIH0KKworICAgIENvbmRpdGlvbjo6Q2xvY2s6
OnRpbWVfcG9pbnQgc2NoZWR1bGVkVGltZVBvaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVJlYWR5
VGltZSgpCisgICAgeworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2ludCA9IENvbmRpdGlvbjo6
Q2xvY2s6Om5vdygpOworICAgICAgICBpZiAoIW1fZmlyZUludGVydmFsLmNvdW50KCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50ICs9IG1fZmlyZUlu
dGVydmFsOworICAgIH0KKworICAgIHN0cnVjdCBFYXJsaWVzdERlYWRsaW5lRmlyc3QgeworICAg
ICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNv
bnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50
KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIHJldHVybiBt
X2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1faXNBY3RpdmUg
PSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1f
ZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRp
bWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOwor
ICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKIFJ1bkxvb3A6OlJ1bkxvb3AoKQogewogfQog
CiBSdW5Mb29wOjp+UnVuTG9vcCgpCiB7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9j
ayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgp
OworICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExvY2spOworfQorCit2b2lkIFJ1bkxv
b3A6OnJ1bkltcGwoUnVuTW9kZSBydW5Nb2RlKQoreworICAgIEFTU0VSVCh0aGlzID09ICZSdW5M
b29wOjpjdXJyZW50KCkpOworCisgICAgU3RhdHVzIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6
OlBlbmRpbmc7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsK
KyAgICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisK
KyAgICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWQ7CisgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb29wTG9jayk7CisKKyAgICAgICAgICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6OkRyYWlu
KSB7CisgICAgICAgICAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVu
dGlsID0gQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgICAgICAg
ICAgaWYgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHNsZWVw
VW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hlZHVsZWRUaW1lUG9pbnQoKTsKKworICAg
ICAgICAgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29wTG9jaywgc2xlZXBVbnRp
bCwgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwgc3RhdHVz
T2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlBlbmRpbmcgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0
dXM6OlN0b3BwaW5nOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1
dGRvd24pIHsKKyAgICAgICAgICAgICAgICBtX21haW5Mb29wcy5yZW1vdmVMYXN0KCk7CisgICAg
ICAgICAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OkNs
ZWFyOworICAgICAgICAgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6SXRlcmF0ZSkKKyAgICAg
ICAgICAgICAgICBzdGF0dXNPZlRoaXNMb29wID0gU3RhdHVzOjpTdG9wcGluZzsKKworICAgICAg
ICAgICAgLy8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgICAgICAgICBDb25kaXRpb246OkNs
b2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygpOworICAgICAgICAg
ICAgd2hpbGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0
KCk7CisgICAgICAgICAgICAgICAgaWYgKGVhcmxpZXN0LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+
IG5vdykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgc3RkOjpw
b3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNl
OjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdERlYWRsaW5lRmlyc3QoKSk7CisgICAgICAgICAgICAg
ICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgIGZpcmVkLmFwcGVu
ZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBEaXNw
YXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVkLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZp
cmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2stPmZpcmVkKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVh
dGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMn
IHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAgICAgICAgICAgICAgICAvLyB3ZSBkbyBu
b3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAgICAgICAgIHNjaGVkdWxlKHRhc2spOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9
CiB9CiAKIHZvaWQgUnVuTG9vcDo6cnVuKCkKIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVu
SW1wbChSdW5Nb2RlOjpEcmFpbik7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8v
IFJ1bkxvb3Agb3BlcmF0aW9ucyBhcmUgdGhyZWFkLXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2Fu
IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgb2YgdGhlIFJ1bkxvb3AncyB0aHJlYWQuCisvLyBGb3Ig
ZXhhbXBsZSwgV29ya1F1ZXVlOjp7ZGlzcGF0Y2gsIGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9w
ZXJhdGlvbnMgb2YgdGhlIFdvcmtRdWV1ZSB0aHJlYWQncyBSdW5Mb29wCisvLyBmcm9tIHRoZSBj
YWxsZXIncyB0aHJlYWQuCisKIHZvaWQgUnVuTG9vcDo6c3RvcCgpCiB7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU3RhdHVzKiBzdGF0dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7
CisgICAgaWYgKCpzdGF0dXMgIT0gU3RhdHVzOjpTdG9wcGluZykgeworICAgICAgICAqc3RhdHVz
ID0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOwor
ICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpCit7Cisg
ICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChTdGF0dXMqIHN0YXR1cyA6IG1fbWFpbkxvb3BzKSB7CisgICAgICAgIGlmICgqc3RhdHVzID09
IFN0YXR1czo6U3RvcHBpbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgKnN0YXR1
cyA9IFN0YXR1czo6UGVuZGluZzsKKyAgICB9CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgp
OwogfQogCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVwKGxvY2tl
cik7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0
cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgbV9zY2hlZHVsZXMuYXBw
ZW5kKHRhc2spOworICAgIHN0ZDo6cHVzaF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1fc2No
ZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0RGVhZGxpbmVG
aXJzdCgpKTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2sp
OworICAgIHNjaGVkdWxlKGxvY2tlciwgdGFzayk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRh
c2spOworICAgIHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
ZnVuY3Rpb24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9v
bCByZXBlYXRpbmcgPSBmYWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6Y3JlYXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAg
IH0sIGRlbGF5LmNvdW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykp
OworICAgIHdha2VVcChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93
biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBz
aG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5
LCBUaW1lckJhc2Ugb3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFk
cyB0aGF0IGRvIG5vdCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBz
aG91bGQgbm90IG9wZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhl
IHNhbWUgdG8gdGhlIFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCiBS
dW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9y
dW5Mb29wKHJ1bkxvb3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKIHsKIH0KIApA
QCAtNTksMTcgKzI2OSwyNiBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAgICAgc3RvcCgpOwog
fQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29sKQordm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcp
CiB7CisgICAgc3RvcCgpOworICAgIG1fc2NoZWR1bGVkVGFzayA9IFNjaGVkdWxlZFRhc2s6OmNy
ZWF0ZShbdGhpc10geworICAgICAgICBmaXJlZCgpOworICAgIH0sIGludGVydmFsLCByZXBlYXRp
bmcpOworICAgIG1fcnVuTG9vcC5zY2hlZHVsZUFuZFdha2VVcChtX3NjaGVkdWxlZFRhc2spOwog
fQogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCiB7CisgICAgaWYgKG1fc2NoZWR1
bGVkVGFzaykgeworICAgICAgICBtX3NjaGVkdWxlZFRhc2stPmRlYWN0aXZhdGUoKTsKKyAgICAg
ICAgbV9zY2hlZHVsZWRUYXNrID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIGJvb2wgUnVuTG9vcDo6
VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBtX3NjaGVkdWxlZFRhc2s7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKaW5kZXggMmE2ZDY3NThkNzk2N2IzNjU2NzQ1Y2Y4Mzdl
NzMwZTEwNjYwODNmNi4uOTg4MzkxMDc3ZTUzMDA4ZmUxZGRlMWY4MTY3ODk5YTRiM2FjMjA3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCkBAIC0xLDUgKzEsOSBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4
LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENv
cHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMjEgKzI5LDY0IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlh
bGl6ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQorc3RhdGljIGNvbnN0IHNpemVfdCBrVmlzdWFs
U3R1ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
aXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQogeworICAgIFN0cmluZyB0aHJl
YWROYW1lKG5hbWUpOworICAgIHNpemVfdCBzaXplID0gdGhyZWFkTmFtZS5yZXZlcnNlRmluZCgn
LicpOworICAgIGlmIChzaXplICE9IG5vdEZvdW5kKQorICAgICAgICB0aHJlYWROYW1lID0gdGhy
ZWFkTmFtZS5zdWJzdHJpbmcoc2l6ZSArIDEpOworICAgIGlmICh0aHJlYWROYW1lLmxlbmd0aCgp
ID4ga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRo
cmVhZE5hbWUucmlnaHQoa1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCk7CisKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUuYXNjaWkoKS5kYXRhKCks
IFt0aGlzXSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5p
dGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSAm
UnVuTG9vcDo6Y3VycmVudCgpOworICAgICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOwor
ICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAg
ICAgICAgICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAg
ICB9CisgICAgfSk7CisgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5p
dGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CiB9CiAKIHZvaWQgV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUoKQogeworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICBpZiAobV9ydW5Mb29wKSB7
CisgICAgICAgICAgICBtX3J1bkxvb3AtPnN0b3AoKTsKKyAgICAgICAgICAgIG1fdGVybWluYXRl
UnVuTG9vcENvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgeworICAgICAg
ICBkZXRhY2hUaHJlYWQobV93b3JrUXVldWVUaHJlYWQpOworICAgICAgICBtX3dvcmtRdWV1ZVRo
cmVhZCA9IDA7CisgICAgfQogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBmdW5jdGlvbikKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBSZWZQdHI8
V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3Byb3Rl
Y3QsIGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7CiB9CiAKLXZvaWQg
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+KQordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVj
dCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoQWZ0ZXIoZGVsYXksIFtwcm90ZWN0LCBm
dW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNK
U0NPbmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRlOTg3Zjhj
YzAuLmEwYjRkOTQ0MTE4NzhhMTYxOGU3ZDQ3NmFiYWI4NmYxZjY5YmVkYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0
aW9uc0pTQ09ubHkuY21ha2UKQEAgLTE2LDE5ICsxNiwxNiBAQCBzZXQoQUxMX0VWRU5UTE9PUF9U
WVBFUwogICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBzZXQoREVG
QVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0
aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VWRU5UTE9P
UF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiTm9u
ZSIpCiAKIHNldChFVkVOVExPT1BfVFlQRSAke0RFRkFVTFRfRVZFTlRMT09QX1RZUEV9IENBQ0hF
IFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFT
Y3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRMT09QX1RZUEVTfSkiKQogCiBzZXQoRU5BQkxF
X1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQy
IE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFCTEVfQVBJX1RFU1RTIE9O
KQorCithZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX189MSkKIAogaWYgKFdURl9D
UFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9VRElTODYgMSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA2NGIwODYzN2IzMDFkZDVhNzI0YmI3ZjI1MmI4N2NhNTY1M2Y3YjQ5Li45YjMwYWRm
Mzc3N2IyNmMzZjg4N2FiN2Q2YjcwMjVmZjZhYmY3MGU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDQtMTEg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09u
bHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgVGVzdFdURiB0byBK
U0NPbmx5IHBvcnQgdG8gdGVzdCBXb3JrUXVldWUgYW5kIFJ1bkxvb3AuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL25vbmUvUGxhdGZvcm1VdGlsaXRpZXNOb25lLmNw
cDogQ29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvbm9uZS9tYWluLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAuCisgICAg
ICAgIChtYWluKToKKwogMjAxNi0wNC0wNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIHN0eWxlYm90IHNob3VsZCBrbm93IGFib3V0IFRlc3RXZWJLaXRB
UEkgRmVhdHVyZURlZmluZXMueGNjb25maWcKZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggMDQwYjk5MmYxMGY2YTMzNTkyMjU1YmJj
ZTM4ZDkxMzhmM2M1NDI4MC4uYmY4OTY0ZDBlNmViNmQxNTY1MjZhM2NmODBkOWI0MzUxNzg0Njlk
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvQ01ha2VMaXN0
cy50eHQKQEAgLTI1LDYgKzI1LDEwIEBAIGVsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJHVEsi
KQogICAgIGlmIChFTkFCTEVfTUlOSUJST1dTRVIpCiAgICAgICAgIGFkZF9zdWJkaXJlY3Rvcnko
TWluaUJyb3dzZXIvZ3RrKQogICAgIGVuZGlmICgpCitlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVB
TCAiSlNDT25seSIpCisgICAgaWYgKEVOQUJMRV9BUElfVEVTVFMpCisgICAgICAgIGFkZF9zdWJk
aXJlY3RvcnkoVGVzdFdlYktpdEFQSSkKKyAgICBlbmRpZiAoKQogZW5kaWYgKCkKIAogaWYgKFdJ
TjMyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZDc1NjBjM2JmNTI4NDliZjBhYWM3MDdmMTAwN2UzODI2Mjc4NzRhCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTAsMCAr
MSwxNiBAQAorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NN
QUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vVGVzdFdlYktpdEFQSSIpCitzZXQoVEVTVFdF
QktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfV1RGICIke1RFU1RXRUJLSVRBUElfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9XVEYiKQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAiJHtXVEZfRElS
fS9pY3UiCispCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L25vbmUvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwCisgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2Ri
NWQxYjg5ZWM0Nzk0Mjk0Yi4uMmUyNGE5YWVkMDQyODJmYmJhODJjOGM4YTgzZjY0NTY4MmE0NzY2
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYs
MTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxp
dGllc19oCiAKKyNpZiAhUExBVEZPUk0oSlNDT05MWSkKICNpbmNsdWRlIDxXZWJLaXQvV0tOYXRp
dmVFdmVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2VuZGlmCiAjaW5j
bHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0MTNlMDg3
MWMzZWE0MDY4MTcuLjIyOTYzODY4ZjA2YzY5MzRhM2VmNmIxNjQ5N2YwOGYwZmM0NTBiOWYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0ICs1NCw4
MSBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZfUnVuTG9v
cCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
Jl0geworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAg
ICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigm
dGVzdEZpbmlzaGVkKTsKK30KKworVEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQorewor
ICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0Rmlu
aXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29w
OjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1l
cihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2
ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkK
KyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV90ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVk
VGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRPbmVTaG90KDAu
MSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKK1RFU1Qo
V1RGX1J1bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNs
YXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisg
ICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVu
dCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0Rmlu
aXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lk
IGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA+IDEwKQorICAg
ICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKKyAgICAgICAgYm9vbCYgbV90
ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVy
KHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMDEpOworICAg
ICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAppbmRleCAyYTYyNTgzYmM5ZTBhOWIxMTZl
ZTAwYmQzMWEwNjQ2ZDY5MjYzMDE2Li40OTU4MzEwMzdhODhiNDRmYmU0OTliNzljNGYzMGUxYjA1
OWMyOTU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKQEAgLTI3LDggKzI3LDExIEBACiAjaW5jbHVkZSAi
Y21ha2Vjb25maWcuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNFeHBvcnRNYWNyb3MuaD4KKyNpZiAhUExBVEZPUk0oSlNDT05MWSkKKyNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBM
RV9fKSAmJiBfX0FQUExFX18KIApAQCAtNjMsNyArNjYsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50
Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JN
KEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9T
KSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhUExBVEZPUk0oSlNDT05MWSkgJiYgIShQTEFURk9STShH
VEspICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJVDJfXykpCiAjaW5jbHVkZSA8V2ViS2l0L1dl
YktpdDJfQy5oPgogI2VuZGlmCiAKQEAgLTg5LDYgKzkyLDYgQEAKICNlbmRpZgogI2VuZGlmCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShKU0NP
TkxZKQogI2RlZmluZSBXS19IQVZFX0NfU1BJIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL25vbmUvUGxhdGZvcm1VdGlsaXRpZXNOb25lLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmI4
Njg4ZTE4Yzc2N2M5OWI2ZjIyZjI3MTQ5ZDhiMmZjNmNkNDRlCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAKQEAgLTAs
MCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lk
IHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpCisgICAgICAgIFdURjo6UnVu
TG9vcDo6aXRlcmF0ZSgpOworfQorCit2b2lkIHNsZWVwKGRvdWJsZSBzZWNvbmRzKQoreworICAg
IFdURjo6c2xlZXAoc2Vjb25kcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9u
ZS9tYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9tYWluLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMmIxMmNmNGI3OTMyOWZmMGFmZWI5ZjE4YjAyZTY5YzcxOWI3ZWU4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ub25lL21haW4uY3BwCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdHNDb250cm9sbGVyLmgiCisKK2ludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gVGVzdFdlYktpdEFQSTo6VGVz
dHNDb250cm9sbGVyOjpzaW5nbGV0b24oKS5ydW4oYXJnYywgYXJndikgPyBFWElUX1NVQ0NFU1Mg
OiBFWElUX0ZBSUxVUkU7Cit9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggOTM5MjU4MzA2YTc0Mjk4MDgyNzI0ZGU5YThiNzhkZDdiNjhlZTVmMi4uYzgwNzg3NzQzNWI0
YTc4OTQzNzIyMmE3MzU1NDUxY2U5N2IxYTg0NiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTA0LTExICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVu
TG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21h
a2U6CisKIDIwMTYtMDQtMDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgRU5BQkxFKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFYKSBndWFyZHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276143</attachid>
            <date>2016-04-11 06:01:24 -0700</date>
            <delta_ts>2016-04-11 07:27:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160411220132.patch</filename>
            <type>text/plain</type>
            <size>30280</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwZTY3NGY3MTlmMWU2NjNhMWViOTEz
ZmU5ODgzYjFjMzE4NDVjZGIuLjMwZDZjMzRiN2Q0MmUyYzQwOTg3NjcxMDdjZWJiMjExNmExYTRk
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTYtMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuCisgICAgICAgIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVu
ZGVuY2llcyBleGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVIQorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgICogd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwOgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpT
Y2hlZHVsZWRUYXNrKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpmaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6c2NoZWR1bGVkVGltZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0RGVhZGxpbmVGaXJzdDo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6CisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisKIDIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gRW5hYmxlIENvbmN1cnJlbnQg
SklUIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDE2NzliMzU2ZTRkMjQ0NmU1ZmVjMTViY2Zi
YzE5YTZjMjFiYjQ4ZTMuLmJiNDU1YzBiNWNhMzg3NDVmNTM1MDg0ZTZhMTdlNjAxMjhjMmE0ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaApAQCAtNDQzLDYgKzQ0Myw4IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9F
RkwgMQogI2VsaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JN
X0dUSyAxCisjZWxpZiBkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNkZWZpbmUgV1RGX1BM
QVRGT1JNX0pTQ09OTFkgMQogI2VsaWYgT1MoTUFDX09TX1gpCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9NQUMgMQogI2VsaWYgT1MoSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkx
ZGY4NzMwYWJjZTQzMjRiODlhN2YuLjI5NjAyYjdlMDQ1ODZlZjhlZWU3YmQ5ZTIzODNhODgzMGFk
MGQ1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAj
ZGVmaW5lIFJ1bkxvb3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oPgpAQCAtMTEyLDYgKzExMyw5IEBAIGNsYXNzIFJ1bkxvb3AgOiBw
dWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Nv
dXJjZTsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAgICAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbCB7IDAgfTsKKyNlbHNlCisgICAg
ICAgIGNsYXNzIFNjaGVkdWxlZFRhc2s7CisgICAgICAgIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBt
X3NjaGVkdWxlZFRhc2s7CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNjksNiArMTczLDM0IEBAIGNs
YXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBHUmVmUHRyPEdN
YWluQ29udGV4dD4gbV9tYWluQ29udGV4dDsKICAgICBWZWN0b3I8R1JlZlB0cjxHTWFpbkxvb3A+
PiBtX21haW5Mb29wczsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOworI2Vsc2UKK3B1
YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworCitwcml2YXRlOgorICAgIGVudW0gY2xh
c3MgUnVuTW9kZSB7CisgICAgICAgIEl0ZXJhdGUsCisgICAgICAgIERyYWluCisgICAgfTsKKwor
ICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOworICAg
IHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9sZGVyJik7CisgICAgdm9p
ZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7Cisg
ICAgdm9pZCBydW5JbXBsKFJ1bk1vZGUpOworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAg
ICAgICBQZW5kaW5nLAorICAgICAgICBDbGVhciwKKyAgICAgICAgU3RvcHBpbmcsCisgICAgfTsK
KyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBD
b25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxv
b3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uOTZk
MGU5ZDBkZGJkZjI4MjgzNTk3ZWUyZGZkZGIzNDExZTY4YzNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAg
LTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPERpc3BhdGNo
UXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgorI2Vsc2UKKyNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3NiwxMCBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICNpZiBQTEFURk9STShFRkwpCiAg
ICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2Vs
aWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1
bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNo
UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmICFPUyhXSU5E
T1dTKQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEwNCwxMyArMTAzLDYgQEAgY2xhc3MgV29ya1F1ZXVl
IGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICNpZiBQTEFURk9STShFRkwp
CiAgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShH
TElCKQotICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBt
X2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sg
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWlu
YXRlUnVuTG9vcENvbmRpdGlvbjsKICNlbGlmIE9TKERBUldJTikKICAgICBzdGF0aWMgdm9pZCBl
eGVjdXRlRnVuY3Rpb24odm9pZCopOwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1
ZXVlOwpAQCAtMTI0LDYgKzExNiwxMyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdv
cmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbHNlCisg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKKyAgICBMb2NrIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVu
TG9vcENvbmRpdGlvbjsKKyAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisgICAgTG9jayBtX3Rlcm1p
bmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5M
b29wQ29uZGl0aW9uOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL1dvcmtRdWV1ZUdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGli
LmNwcAppbmRleCA2MzJmZjQwNTE0OTNhNmFkMDhkMTBiNmQzOTI3YjY4ZjQwZDNiMWExLi5lMjE5
NTgxYjA4OTA4YzY1Nzk0Zjc0ZDFiMGZmZjMwMDQyODIzMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
V29ya1F1ZXVlR0xpYi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPGdsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJl
YWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCmluZGV4
IGUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjIxODE2ODc4YmNiNTQy
MzY2MjUwNmEyYjAyOGJkMGI3MWE3YmQ2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVh
ZE5vbmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBLb25z
dGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTWFpblRocmVhZC5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAogbmFtZXNwYWNl
IFdURiB7CiAKQEAgLTM0LDYgKzM2LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRm
b3JtKCkKIAogdm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKIHsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxv
b3BOb25lLmNwcAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4ZTU2MzZm
Li44MTcyMDgxNzU1NmExYjNmODNkOGNiNjc0OWJlNWNjMWY1MTkyOGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1J1bkxvb3BOb25lLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI5ICsyOSwyMzggQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKK2NsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CitXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY2hlZHVsZWRUYXNrKTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYW1i
ZGE+CisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTGFtYmRhJiYgbGFt
YmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZWRUYXNrKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJk
YSksIGludGVydmFsLCByZXBlYXRpbmcpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYW1iZGE+CisgICAgU2NoZWR1bGVkVGFzayhMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRl
cnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgICAgIDogbV9mdW5jdGlvbihzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpKQorICAgICAgICAsIG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbjxkb3VibGU+KGludGVydmFsKSkpCisgICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRp
bmcpCisgICAgeworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICB9CisKKyAgICBib29s
IGZpcmVkKCkKKyAgICB7CisgICAgICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CisKKyAgICAgICAgaWYgKCFtX2lz
UmVwZWF0aW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVwZGF0ZVJl
YWR5VGltZSgpOworICAgICAgICByZXR1cm4gaXNBY3RpdmUoKTsKKyAgICB9CisKKyAgICBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9p
ZCB1cGRhdGVSZWFkeVRpbWUoKQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQg
PSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5j
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2lu
dCArPSBtX2ZpcmVJbnRlcnZhbDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3REZWFkbGlu
ZUZpcnN0IHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRU
YXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGxocy0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNjaGVk
dWxlZFRpbWVQb2ludCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIGJvb2wgaXNBY3RpdmUo
KQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2ZUxvY2spOworICAg
ICAgICByZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICB9CisKKyAgICB2b2lkIGRlYWN0aXZhdGUoKQor
ICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2ZUxvY2spOworICAgICAg
ICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQg
bV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2Zp
cmVJbnRlcnZhbDsKKyAgICBMb2NrIG1faXNBY3RpdmVMb2NrOworICAgIGJvb2wgbV9pc0FjdGl2
ZSB7IHRydWUgfTsKKyAgICBib29sIG1faXNSZXBlYXRpbmc7Cit9OworCiBSdW5Mb29wOjpSdW5M
b29wKCkKIHsKIH0KIAogUnVuTG9vcDo6flJ1bkxvb3AoKQogeworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9vcExvY2spOworICAgIG1fc2h1dGRvd24gPSB0cnVlOworICAgIG1fcmVhZHlUb1J1
bi5ub3RpZnlPbmUoKTsKKyAgICBtX3N0b3BDb25kaXRpb24ud2FpdChtX2xvb3BMb2NrKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkKK3sKKyAgICBBU1NFUlQo
dGhpcyA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIFN0YXR1cyBzdGF0dXNPZlRoaXNM
b29wID0gU3RhdHVzOjpQZW5kaW5nOworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb29wTG9jayk7CisgICAgICAgIG1fbWFpbkxvb3BzLmFwcGVuZCgmc3RhdHVzT2ZUaGlzTG9v
cCk7CisgICAgfQorCisgICAgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+
IGZpcmVkOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworCisgICAgICAgICAgICBpZiAocnVuTW9kZSA9PSBS
dW5Nb2RlOjpEcmFpbikgeworICAgICAgICAgICAgICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVf
cG9pbnQgc2xlZXBVbnRpbCA9IENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQ6Om1heCgpOwor
ICAgICAgICAgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICBzbGVlcFVudGlsID0gbV9zY2hlZHVsZXMuZmlyc3QoKS0+c2NoZWR1bGVkVGltZVBv
aW50KCk7CisKKyAgICAgICAgICAgICAgICBtX3JlYWR5VG9SdW4ud2FpdFVudGlsKG1fbG9vcExv
Y2ssIHNsZWVwVW50aWwsIFsmXSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX3NodXRk
b3duIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpQZW5kaW5nIHx8IHN0YXR1c09mVGhp
c0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9w
cGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgICAgICAgICAgbV9tYWluTG9vcHMucmVtb3Zl
TGFzdCgpOworICAgICAgICAgICAgICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgICAgIG1fc3RvcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0dXNPZlRoaXNMb29w
ID0gU3RhdHVzOjpDbGVhcjsKKyAgICAgICAgICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6Okl0
ZXJhdGUpCisgICAgICAgICAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6U3RvcHBp
bmc7CisKKyAgICAgICAgICAgIC8vIENoZWNrIGV4cGlyZWQgdGltZXJzLgorICAgICAgICAgICAg
Q29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3co
KTsKKyAgICAgICAgICAgIHdoaWxlICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gZWFybGllc3QgPSBtX3Nj
aGVkdWxlcy5maXJzdCgpOworICAgICAgICAgICAgICAgIGlmIChlYXJsaWVzdC0+c2NoZWR1bGVk
VGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIHN0ZDo6cG9wX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5k
KCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3REZWFkbGluZUZpcnN0KCkpOwor
ICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAg
ICBmaXJlZC5hcHBlbmQoZWFybGllc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgLy8gRGlzcGF0Y2ggc2NoZWR1bGVkIHRpbWVycy4KKyAgICAgICAgd2hpbGUgKCFmaXJl
ZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IHRhc2sgPSBmaXJlZC50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgIGlmICh0YXNrLT5maXJl
ZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzY2hlZHVsZSBiZWNhdXNlIHRoZSB0aW1lciBy
ZXF1aXJlcyByZXBlYXRpbmcuCisgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugd2lsbCBxdWVy
eSB0aGUgdGltZXJzJyB0aW1lIHBvaW50cyBiZWZvcmUgc2xlZXBpbmcsCisgICAgICAgICAgICAg
ICAgLy8gd2UgZG8gbm90IGNhbGwgd2FrZVVwKCkgaGVyZS4KKyAgICAgICAgICAgICAgICBzY2hl
ZHVsZSh0YXNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHBlcmZvcm1X
b3JrKCk7CisgICAgfQogfQogCiB2b2lkIFJ1bkxvb3A6OnJ1bigpCiB7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOwogfQogCit2b2lkIFJ1bkxvb3A6Oml0
ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6Okl0ZXJh
dGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZlLiBUaGVzZSBv
cGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5Mb29wJ3MgdGhy
ZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNwYXRjaEFmdGVy
fSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3MgUnVuTG9vcAor
Ly8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCiB2b2lkIFJ1bkxvb3A6OnN0b3AoKQogewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21haW5Mb29wcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVzID0gbV9tYWlu
TG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBpbmcpIHsKKyAg
ICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVhZHlUb1J1bi5u
b3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0IExvY2tI
b2xkZXImKQoreworICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvciAoU3RhdHVzKiBzdGF0dXMgOiBtX21haW5Mb29wcykgeworICAgICAgICBp
ZiAoKnN0YXR1cyA9PSBTdGF0dXM6OlN0b3BwaW5nKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICpzdGF0dXMgPSBTdGF0dXM6OlBlbmRpbmc7CisgICAgfQorICAgIG1fcmVhZHlUb1J1
bi5ub3RpZnlPbmUoKTsKIH0KIAogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAg
IHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKGNvbnN0IExvY2tI
b2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAgIG1f
c2NoZWR1bGVzLmFwcGVuZCh0YXNrKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5i
ZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJs
aWVzdERlYWRsaW5lRmlyc3QoKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOwogfQogCit2b2lkIFJ1
bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+
IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1
bGUobG9ja2VyLCB0YXNrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29w
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExv
Y2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2VyLCBU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rpb25dIHsKKyAgICAgICAgZnVu
Y3Rpb24oKTsKKyAgICB9LCBkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8gMTAwMC4w
LCByZXBlYXRpbmcpKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKworLy8gU2luY2UgUnVuTG9v
cCBkb2VzIG5vdCBvd24gdGhlIHJlZ2lzdGVyZWQgVGltZXJCYXNlLAorLy8gVGltZXJCYXNlIGFu
ZCBpdHMgb3duZXIgc2hvdWxkIG1hbmFnZSB0aGVzZSBsaWZldGltZS4KKy8vCisvLyBBbmQgbW9y
ZSBpbXBvcnRhbnRseSwgVGltZXJCYXNlIG9wZXJhdGlvbnMgYXJlIG5vdCB0aHJlYWQtc2FmZS4K
Ky8vIFNvIHRocmVhZHMgdGhhdCBkbyBub3QgYmVsb25nIHRvIHRoZSBTY2hlZHVsZWRUYXNrJ3Mg
UnVuTG9vcAorLy8gc2hvdWxkIG5vdCBvcGVyYXRlIHRoZSBSdW5Mb29wOjpUaW1lckJhc2UuCisv
LyBUaGlzIGlzIHRoZSBzYW1lIHRvIHRoZSBSdW5Mb29wV2luLCB3aGljaCBpcyBSdW5Mb29wIGZv
ciBXaW5kb3dzLgogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9v
cCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgICwgbV9zY2hlZHVsZWRUYXNrKG51bGxw
dHIpCiB7CiB9CiAKQEAgLTU5LDE3ICsyNjksMjYgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQog
ICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwg
Ym9vbCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJv
b2wgcmVwZWF0aW5nKQogeworICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hl
ZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRl
cnZhbCwgcmVwZWF0aW5nKTsKKyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hl
ZHVsZWRUYXNrKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQogeworICAg
IGlmIChtX3NjaGVkdWxlZFRhc2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2
YXRlKCk7CisgICAgICAgIG1fc2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQogfQogCiBi
b29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gbV9zY2hlZHVsZWRUYXNrOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCmluZGV4IDJhNmQ2NzU4ZDc5Njdi
MzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjk4ODM5MTA3N2U1MzAwOGZlMWRkZTFmODE2Nzg5
OWE0YjNhYzIwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9u
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMSw1
ICsxLDkgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxh
bm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1
LDIxICsyOSw2NCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXZvaWQgV29ya1F1ZXVlOjpw
bGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciosIFR5cGUsIFFPUykKK3N0YXRpYyBjb25zdCBz
aXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKIHsKKyAg
ICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUu
cmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhy
ZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFk
TmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRo
cmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQp
OworCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFz
Y2lpKCkuZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAg
bV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6
ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5M
b29wLT5ydW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRp
b24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwogfQogCiB2b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKKyAgICB7CisgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYg
KG1fcnVuTG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAg
ICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJl
YWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAg
bV93b3JrUXVldWVUaHJlYWQgPSAwOworICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRp
c3BhdGNoKFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0p
OwogfQogCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFm
dGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJlZlB0cjxXb3Jr
UXVldWU+IHByb3RlY3QodGhpcyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5
LCBbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5MjMx
OWI2ZTFkZTk4N2Y4Y2MwLi5hMGI0ZDk0NDExODc4YTE2MThlN2Q0NzZhYmFiODZmMWY2OWJlZGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0xNiwxOSArMTYsMTYgQEAgc2V0KEFM
TF9FVkVOVExPT1BfVFlQRVMKICAgICBOb25lCiApCiAKLWlmIChVTklYIEFORCBOT1QgQVBQTEUp
Ci0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIkdMaWIiKQotZWxzZSAoKQotICAgICMg
VE9ETzogVXNlIG5hdGl2ZSBNYWMgYW5kIFdpbiBpbXBsZW1lbnRhdGlvbnMKLSAgICBzZXQoREVG
QVVMVF9FVkVOVExPT1BfVFlQRSAiTm9uZSIpCi1lbmRpZiAoKQorc2V0KERFRkFVTFRfRVZFTlRM
T09QX1RZUEUgIk5vbmUiKQogCiBzZXQoRVZFTlRMT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UTE9P
UF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUg
dXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxMX0VWRU5UTE9PUF9UWVBFU30pIikK
IAogc2V0KEVOQUJMRV9XRUJDT1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChF
TkFCTEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxF
X0FQSV9URVNUUyBPTikKKworYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fPTEp
CiAKIGlmIChXVEZfQ1BVX1g4NiBPUiBXVEZfQ1BVX1g4Nl82NCkKICAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfVURJUzg2IDEpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNjRiMDg2MzdiMzAxZGQ1YTcyNGJiN2YyNTJiODdjYTU2NTNm
N2I0OS4uOWIzMGFkZjM3NzdiMjZjM2Y4ODdhYjdkNmI3MDI1ZmY2YWJmNzBlNiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBA
CisyMDE2LTA0LTExICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5k
ZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3QgV29ya1F1ZXVlIGFuZCBSdW5Mb29wLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29w
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29uZmlnLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ub25lL1BsYXRmb3JtVXRp
bGl0aWVzTm9uZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVh
ZE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL25v
bmUvbWFpbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5v
bmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMDcgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBzdHlsZWJvdCBzaG91bGQga25vdyBhYm91
dCBUZXN0V2ViS2l0QVBJIEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmRpZmYgLS1naXQgYS9Ub29s
cy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IDA0MGI5OTJmMTBm
NmEzMzU5MjI1NWJiY2UzOGQ5MTM4ZjNjNTQyODAuLmJmODk2NGQwZTZlYjZkMTU2NTI2YTNjZjgw
ZDliNDM1MTc4NDY5ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL0NNYWtlTGlzdHMudHh0CkBAIC0yNSw2ICsyNSwxMCBAQCBlbHNlaWYgKCIke1BPUlR9IiBT
VFJFUVVBTCAiR1RLIikKICAgICBpZiAoRU5BQkxFX01JTklCUk9XU0VSKQogICAgICAgICBhZGRf
c3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL2d0aykKICAgICBlbmRpZiAoKQorZWxzZWlmICgiJHtQ
T1JUfSIgU1RSRVFVQUwgIkpTQ09ubHkiKQorICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAg
ICAgICBhZGRfc3ViZGlyZWN0b3J5KFRlc3RXZWJLaXRBUEkpCisgICAgZW5kaWYgKCkKIGVuZGlm
ICgpCiAKIGlmIChXSU4zMikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmQ3NTYwYzNiZjUyODQ5YmYwYWFjNzA3ZjEwMDdlMzgyNjI3ODc0YQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCkBAIC0wLDAgKzEsMTYgQEAKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJ
UkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEki
KQorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZX1dURiAiJHtURVNU
V0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV1RGIikKKworaW5jbHVkZV9kaXJl
Y3RvcmllcygKKyAgICAke0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisg
ICAgIiR7V1RGX0RJUn0vaWN1IgorKQorCitzZXQodGVzdF9tYWluX1NPVVJDRVMKKyAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9ub25lL21haW4uY3BwCispCisKK2xpc3QoQVBQRU5EIFRlc3RXVEZf
U09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L25vbmUvUGxhdGZvcm1VdGlsaXRpZXNO
b25lLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAor
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IDc1ODNlNGVlMDc3
ZTNlODgzZTZhNTdkYjVkMWI4OWVjNDc5NDI5NGIuLjJlMjRhOWFlZDA0MjgyZmJiYTgyYzhjOGE4
M2Y2NDU2ODJhNDc2NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1V
dGlsaXRpZXMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIFBsYXRmb3JtVXRpbGl0aWVzX2gKICNkZWZpbmUg
UGxhdGZvcm1VdGlsaXRpZXNfaAogCisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCiAjaW5jbHVkZSA8
V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4K
KyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0
NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li4yMjk2Mzg2OGYwNmM2OTM0YTNlZjZiMTY0OTdmMDhm
MGZjNDUwYjlmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5M
b29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApA
QCAtNTQsNCArNTQsODEgQEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RF
U1QoV1RGX1J1bkxvb3AsIE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6
ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAg
ICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAg
ICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNo
b3RUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAg
IGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBw
dWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAg
ICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29w
OjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRU
aW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAg
ICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0
YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAg
fQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5Mb29w
Ojppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFs
c2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVy
aXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVz
dEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1
bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAg
ICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21fY291
bnQgPiAxMCkKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAg
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAg
ICAgIGJvb2wmIG1fdGVzdEZpbmlzaGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2
ZWRUaW1lciB0aW1lcih0ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGlu
ZygwLjAxKTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4
M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2OTI2MzAxNi4uNDk1ODMxMDM3YTg4YjQ0ZmJlNDk5
Yjc5YzRmMzBlMWIwNTljMjk1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25m
aWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMSBA
QAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oPgorI2VuZGlmCiAKICNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgJiYgX19BUFBMRV9fCiAKQEAgLTYzLDcgKzY2LDcgQEAKIAogI2lu
Y2x1ZGUgPHN0ZGludC5oPgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikg
JiYgIShQTEFURk9STShHVEspICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJVDJfXykpCisjaWYg
IVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEpTQ09OTFkpICYm
ICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQogI2luY2x1
ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5Miw2IEBACiAjZW5k
aWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oSlNDT05MWSkKICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmZiODY4OGUxOGM3NjdjOTliNmYyMmYyNzE0OWQ4YjJmYzZjZDQ0ZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05v
bmUuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBV
dGlsIHsKKwordm9pZCBydW4oYm9vbCogZG9uZSkKK3sKKyAgICB3aGlsZSAoISpkb25lKQorICAg
ICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsKK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vj
b25kcykKK3sKKyAgICBXVEY6OnNsZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBV
dGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9tYWluLmNwcApAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5o
IgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RX
ZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8g
RVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDkzOTI1ODMwNmE3NDI5ODA4MjcyNGRlOWE4Yjc4ZGQ3YjY4ZWU1ZjIu
LmM4MDc4Nzc0MzViNGE3ODk0MzcyMjJhNzM1NTQ1MWNlOTdiMWE4NDYgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0g
SW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlv
bnNKU0NPbmx5LmNtYWtlOgorCiAyMDE2LTA0LTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRShFTkFCTEVfRVM2X0NMQVNTX1NZ
TlRBWCkgZ3VhcmRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276149</attachid>
            <date>2016-04-11 07:27:53 -0700</date>
            <delta_ts>2016-04-12 09:59:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160411232801.patch</filename>
            <type>text/plain</type>
            <size>30265</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDUwZTY3NGY3MTlmMWU2NjNhMWViOTEz
ZmU5ODgzYjFjMzE4NDVjZGIuLjMwZDZjMzRiN2Q0MmUyYzQwOTg3NjcxMDdjZWJiMjExNmExYTRk
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTYtMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuCisgICAgICAgIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVu
ZGVuY2llcyBleGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVIQorCisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvV29ya1F1ZXVl
Lmg6CisgICAgICAgICogd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHA6CisgICAgICAgICogd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwOgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNo
RnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpT
Y2hlZHVsZWRUYXNrKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrOjpmaXJlZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6c2NoZWR1bGVkVGltZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0RGVhZGxpbmVGaXJzdDo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSk6CisgICAgICAgICogd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHA6CisgICAgICAgIChXb3Jr
UXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSk6CisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcik6CisKIDIwMTYtMDQtMDggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gRW5hYmxlIENvbmN1cnJlbnQg
SklUIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDE2NzliMzU2ZTRkMjQ0NmU1ZmVjMTViY2Zi
YzE5YTZjMjFiYjQ4ZTMuLmJiNDU1YzBiNWNhMzg3NDVmNTM1MDg0ZTZhMTdlNjAxMjhjMmE0ODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaApAQCAtNDQzLDYgKzQ0Myw4IEBACiAjZGVmaW5lIFdURl9QTEFURk9STV9F
RkwgMQogI2VsaWYgZGVmaW5lZChCVUlMRElOR19HVEtfXykKICNkZWZpbmUgV1RGX1BMQVRGT1JN
X0dUSyAxCisjZWxpZiBkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNkZWZpbmUgV1RGX1BM
QVRGT1JNX0pTQ09OTFkgMQogI2VsaWYgT1MoTUFDX09TX1gpCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9NQUMgMQogI2VsaWYgT1MoSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9v
cC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkx
ZGY4NzMwYWJjZTQzMjRiODlhN2YuLjI5NjAyYjdlMDQ1ODZlZjhlZWU3YmQ5ZTIzODNhODgzMGFk
MGQ1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAj
ZGVmaW5lIFJ1bkxvb3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1
bmN0aW9uRGlzcGF0Y2hlci5oPgpAQCAtMTEyLDYgKzExMyw5IEBAIGNsYXNzIFJ1bkxvb3AgOiBw
dWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Nv
dXJjZTsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAgICAgc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbCB7IDAgfTsKKyNlbHNlCisgICAg
ICAgIGNsYXNzIFNjaGVkdWxlZFRhc2s7CisgICAgICAgIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBt
X3NjaGVkdWxlZFRhc2s7CiAjZW5kaWYKICAgICB9OwogCkBAIC0xNjksNiArMTczLDM0IEBAIGNs
YXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBHUmVmUHRyPEdN
YWluQ29udGV4dD4gbV9tYWluQ29udGV4dDsKICAgICBWZWN0b3I8R1JlZlB0cjxHTWFpbkxvb3A+
PiBtX21haW5Mb29wczsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOworI2Vsc2UKK3B1
YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworCitwcml2YXRlOgorICAgIGVudW0gY2xh
c3MgUnVuTW9kZSB7CisgICAgICAgIEl0ZXJhdGUsCisgICAgICAgIERyYWluCisgICAgfTsKKwor
ICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOworICAg
IHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9sZGVyJik7CisgICAgdm9p
ZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7Cisg
ICAgdm9pZCBydW5JbXBsKFJ1bk1vZGUpOworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgeworICAg
ICAgICBQZW5kaW5nLAorICAgICAgICBDbGVhciwKKyAgICAgICAgU3RvcHBpbmcsCisgICAgfTsK
KyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBD
b25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxv
b3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uOTZk
MGU5ZDBkZGJkZjI4MjgzNTk3ZWUyZGZkZGIzNDExZTY4YzNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAg
LTQwLDE0ICs0MCwxMyBAQAogCiAjaWYgUExBVEZPUk0oRUZMKQogI2luY2x1ZGUgPERpc3BhdGNo
UXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
LSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNlbGlmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgorI2Vsc2UKKyNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNlbmRp
ZgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTc3LDEwICs3NiwxMCBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICNpZiBQTEFURk9STShFRkwpCiAg
ICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2Vs
aWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1
bkxvb3A7IH0KICNlbGlmIE9TKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNo
UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmICFPUyhXSU5E
T1dTKQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEwNCwxMyArMTAzLDYgQEAgY2xhc3MgV29ya1F1ZXVl
IGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICNpZiBQTEFURk9STShFRkwp
CiAgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShH
TElCKQotICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBt
X2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sg
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWlu
YXRlUnVuTG9vcENvbmRpdGlvbjsKICNlbGlmIE9TKERBUldJTikKICAgICBzdGF0aWMgdm9pZCBl
eGVjdXRlRnVuY3Rpb24odm9pZCopOwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1
ZXVlOwpAQCAtMTI0LDYgKzExNiwxMyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdv
cmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbHNlCisg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKKyAgICBMb2NrIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVu
TG9vcENvbmRpdGlvbjsKKyAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisgICAgTG9jayBtX3Rlcm1p
bmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5M
b29wQ29uZGl0aW9uOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
bGliL1dvcmtRdWV1ZUdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGli
LmNwcAppbmRleCA2MzJmZjQwNTE0OTNhNmFkMDhkMTBiNmQzOTI3YjY4ZjQwZDNiMWExLi5lMjE5
NTgxYjA4OTA4YzY1Nzk0Zjc0ZDFiMGZmZjMwMDQyODIzMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
V29ya1F1ZXVlR0xpYi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPGdsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJl
YWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCmluZGV4
IGUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjIxODE2ODc4YmNiNTQy
MzY2MjUwNmEyYjAyOGJkMGI3MWE3YmQ2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVh
ZE5vbmUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBLb25z
dGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTWFpblRocmVhZC5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKIAogbmFtZXNwYWNl
IFdURiB7CiAKQEAgLTM0LDYgKzM2LDcgQEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRm
b3JtKCkKIAogdm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKIHsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxv
b3BOb25lLmNwcAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4ZTU2MzZm
Li44YzQ4Mjk0OTJkYWJjZThhODQ5NTgxNDUxZmUxMjQ1ODIyZTE0OWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1J1bkxvb3BOb25lLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDI5ICsyOSwyMzggQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKK2NsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CitXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY2hlZHVsZWRUYXNrKTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYW1i
ZGE+CisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTGFtYmRhJiYgbGFt
YmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZWRUYXNrKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJk
YSksIGludGVydmFsLCByZXBlYXRpbmcpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYW1iZGE+CisgICAgU2NoZWR1bGVkVGFzayhMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRl
cnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgICAgIDogbV9mdW5jdGlvbihzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpKQorICAgICAgICAsIG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbjxkb3VibGU+KGludGVydmFsKSkpCisgICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRp
bmcpCisgICAgeworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICB9CisKKyAgICBib29s
IGZpcmVkKCkKKyAgICB7CisgICAgICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CisKKyAgICAgICAgaWYgKCFtX2lz
UmVwZWF0aW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVwZGF0ZVJl
YWR5VGltZSgpOworICAgICAgICByZXR1cm4gaXNBY3RpdmUoKTsKKyAgICB9CisKKyAgICBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9p
ZCB1cGRhdGVSZWFkeVRpbWUoKQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQg
PSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5j
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2lu
dCArPSBtX2ZpcmVJbnRlcnZhbDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3RTY2hlZHVs
ZSB7CisgICAgICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4m
IGxocywgY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiByaHMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBsaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gcmhzLT5zY2hlZHVsZWRU
aW1lUG9pbnQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBib29sIGlzQWN0aXZlKCkKKyAg
ICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAg
cmV0dXJuIG1faXNBY3RpdmU7CisgICAgfQorCisgICAgdm9pZCBkZWFjdGl2YXRlKCkKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAgbV9p
c0FjdGl2ZSA9IGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gbV9mdW5jdGlvbjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2No
ZWR1bGVkVGltZVBvaW50OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50
ZXJ2YWw7CisgICAgTG9jayBtX2lzQWN0aXZlTG9jazsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0
cnVlIH07CisgICAgYm9vbCBtX2lzUmVwZWF0aW5nOworfTsKKwogUnVuTG9vcDo6UnVuTG9vcCgp
CiB7CiB9CiAKIFJ1bkxvb3A6On5SdW5Mb29wKCkKIHsKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKyAgICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90
aWZ5T25lKCk7CisgICAgbV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMg
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6UGVuZGluZzsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9v
cExvY2spOworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3ApOwor
ICAgIH0KKworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJl
ZDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvb3BMb2NrKTsKKworICAgICAgICAgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9k
ZTo6RHJhaW4pIHsKKyAgICAgICAgICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50
IHNsZWVwVW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50OjptYXgoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAg
ICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCktPnNjaGVkdWxlZFRpbWVQb2ludCgp
OworCisgICAgICAgICAgICAgICAgbV9yZWFkeVRvUnVuLndhaXRVbnRpbChtX2xvb3BMb2NrLCBz
bGVlcFVudGlsLCBbJl0geworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9zaHV0ZG93biB8
fCBzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1czo6UGVuZGluZyB8fCBzdGF0dXNPZlRoaXNMb29w
ID09IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1czo6U3RvcHBpbmcg
fHwgbV9zaHV0ZG93bikgeworICAgICAgICAgICAgICAgIG1fbWFpbkxvb3BzLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgICAgICAgICBtX3N0b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0
YXR1czo6Q2xlYXI7CisgICAgICAgICAgICBpZiAocnVuTW9kZSA9PSBSdW5Nb2RlOjpJdGVyYXRl
KQorICAgICAgICAgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3BwaW5nOwor
CisgICAgICAgICAgICAvLyBDaGVjayBleHBpcmVkIHRpbWVycy4KKyAgICAgICAgICAgIENvbmRp
dGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgbm93ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7Cisg
ICAgICAgICAgICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVs
ZXMuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoZWFybGllc3QtPnNjaGVkdWxlZFRpbWVQ
b2ludCgpID4gbm93KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1fc2NoZWR1bGVzLmVuZCgpLCBU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGUoKSk7CisgICAgICAgICAg
ICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgIGZpcmVkLmFw
cGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBE
aXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVkLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9
IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2stPmZpcmVkKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRpbWVyIHJlcXVpcmVzIHJl
cGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1l
cnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAgICAgICAgICAgICAgICAvLyB3ZSBk
byBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAgICAgICAgIHNjaGVkdWxlKHRhc2sp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcGVyZm9ybVdvcmsoKTsKKyAg
ICB9CiB9CiAKIHZvaWQgUnVuTG9vcDo6cnVuKCkKIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
cnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisK
Ky8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBhcmUgdGhyZWFkLXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMg
Y2FuIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgb2YgdGhlIFJ1bkxvb3AncyB0aHJlYWQuCisvLyBG
b3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7ZGlzcGF0Y2gsIGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhl
IG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtRdWV1ZSB0aHJlYWQncyBSdW5Mb29wCisvLyBmcm9tIHRo
ZSBjYWxsZXIncyB0aHJlYWQuCisKIHZvaWQgUnVuTG9vcDo6c3RvcCgpCiB7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU3RhdHVzKiBzdGF0dXMgPSBtX21haW5Mb29wcy5sYXN0
KCk7CisgICAgaWYgKCpzdGF0dXMgIT0gU3RhdHVzOjpTdG9wcGluZykgeworICAgICAgICAqc3Rh
dHVzID0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgp
OworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpCit7
CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChTdGF0dXMqIHN0YXR1cyA6IG1fbWFpbkxvb3BzKSB7CisgICAgICAgIGlmICgqc3RhdHVz
ID09IFN0YXR1czo6U3RvcHBpbmcpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgKnN0
YXR1cyA9IFN0YXR1czo6UGVuZGluZzsKKyAgICB9CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9u
ZSgpOwogfQogCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVwKGxv
Y2tlcik7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJl
ZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgbV9zY2hlZHVsZXMu
YXBwZW5kKHRhc2spOworICAgIHN0ZDo6cHVzaF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1f
c2NoZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1
bGUoKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsK
KyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOwogfQogCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxl
QW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCB0YXNr
KTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVy
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1
bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGJvb2wg
cmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9
LCBkZWxheS5jb3VudCgpIC8gMTAwMC4wIC8gMTAwMC4wIC8gMTAwMC4wLCByZXBlYXRpbmcpKTsK
KyAgICB3YWtlVXAobG9ja2VyKTsKK30KKworLy8gU2luY2UgUnVuTG9vcCBkb2VzIG5vdCBvd24g
dGhlIHJlZ2lzdGVyZWQgVGltZXJCYXNlLAorLy8gVGltZXJCYXNlIGFuZCBpdHMgb3duZXIgc2hv
dWxkIG1hbmFnZSB0aGVzZSBsaWZldGltZS4KKy8vCisvLyBBbmQgbW9yZSBpbXBvcnRhbnRseSwg
VGltZXJCYXNlIG9wZXJhdGlvbnMgYXJlIG5vdCB0aHJlYWQtc2FmZS4KKy8vIFNvIHRocmVhZHMg
dGhhdCBkbyBub3QgYmVsb25nIHRvIHRoZSBTY2hlZHVsZWRUYXNrJ3MgUnVuTG9vcAorLy8gc2hv
dWxkIG5vdCBvcGVyYXRlIHRoZSBSdW5Mb29wOjpUaW1lckJhc2UuCisvLyBUaGlzIGlzIHRoZSBz
YW1lIHRvIHRoZSBSdW5Mb29wV2luLCB3aGljaCBpcyBSdW5Mb29wIGZvciBXaW5kb3dzLgogUnVu
TG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVu
TG9vcChydW5Mb29wKQorICAgICwgbV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCiB7CiB9CiAKQEAg
LTU5LDE3ICsyNjksMjYgQEAgdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogICAgIHN0b3AoKTsKIH0K
IAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9vbCkKK3ZvaWQgUnVu
TG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQog
eworICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVh
dGUoW3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5n
KTsKKyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKIH0K
IAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQogeworICAgIGlmIChtX3NjaGVkdWxl
ZFRhc2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAg
IG1fc2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQogfQogCiBib29sIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gbV9zY2hlZHVsZWRUYXNrOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1dvcmtRdWV1ZU5vbmUuY3BwCmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTcz
MGUxMDY2MDgzZjYuLjk4ODM5MTA3N2U1MzAwOGZlMWRkZTFmODE2Nzg5OWE0YjNhYzIwN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcApAQCAtMSw1ICsxLDkgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5y
dT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5
cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDIxICsyOSw2NCBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxp
emUoY29uc3QgY2hhciosIFR5cGUsIFFPUykKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0
dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0
aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKIHsKKyAgICBTdHJpbmcgdGhyZWFk
TmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4n
KTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVh
ZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+
IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJl
YWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dv
cmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBb
dGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRp
YWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1
bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRp
b24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAg
ICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAg
fQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRp
YWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1JbnZhbGlkYXRlKCkKIHsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9vcCkgewor
ICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1
bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAg
ZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJl
YWQgPSAwOworICAgIH0KIH0KIAotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gZnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgUmVmUHRyPFdv
cmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0
LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOwogfQogCi12b2lkIFdv
cmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPikKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25v
OjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3Qo
dGhpcyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbcHJvdGVjdCwgZnVu
Y3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5MjMxOWI2ZTFkZTk4N2Y4Y2Mw
Li5hMGI0ZDk0NDExODc4YTE2MThlN2Q0NzZhYmFiODZmMWY2OWJlZGJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlv
bnNKU0NPbmx5LmNtYWtlCkBAIC0xNiwxOSArMTYsMTYgQEAgc2V0KEFMTF9FVkVOVExPT1BfVFlQ
RVMKICAgICBOb25lCiApCiAKLWlmIChVTklYIEFORCBOT1QgQVBQTEUpCi0gICAgc2V0KERFRkFV
TFRfRVZFTlRMT09QX1RZUEUgIkdMaWIiKQotZWxzZSAoKQotICAgICMgVE9ETzogVXNlIG5hdGl2
ZSBNYWMgYW5kIFdpbiBpbXBsZW1lbnRhdGlvbnMKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1Bf
VFlQRSAiTm9uZSIpCi1lbmRpZiAoKQorc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIk5vbmUi
KQogCiBzZXQoRVZFTlRMT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBT
VFJJTkcgIkltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2Ny
aXB0Q29yZSAob25lIG9mICR7QUxMX0VWRU5UTE9PUF9UWVBFU30pIikKIAogc2V0KEVOQUJMRV9X
RUJDT1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VCS0lUMiBP
RkYpCi1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPTikK
KworYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fPTEpCiAKIGlmIChXVEZfQ1BV
X1g4NiBPUiBXVEZfQ1BVX1g4Nl82NCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
VURJUzg2IDEpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNjRiMDg2MzdiMzAxZGQ1YTcyNGJiN2YyNTJiODdjYTU2NTNmN2I0OS4uOWIzMGFkZjM3
NzdiMjZjM2Y4ODdhYjdkNmI3MDI1ZmY2YWJmNzBlNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA0LTExICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5
XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFRlc3RXVEYgdG8gSlND
T25seSBwb3J0IHRvIHRlc3QgV29ya1F1ZXVlIGFuZCBSdW5Mb29wLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21h
a2U6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwLgorICAgICAg
ICAobWFpbik6CisKIDIwMTYtMDQtMDcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KIAogICAgICAgICBzdHlsZWJvdCBzaG91bGQga25vdyBhYm91dCBUZXN0V2ViS2l0QVBJ
IEZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmRpZmYgLS1naXQgYS9Ub29scy9DTWFrZUxpc3RzLnR4
dCBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IDA0MGI5OTJmMTBmNmEzMzU5MjI1NWJiY2Uz
OGQ5MTM4ZjNjNTQyODAuLmJmODk2NGQwZTZlYjZkMTU2NTI2YTNjZjgwZDliNDM1MTc4NDY5ZDYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NNYWtlTGlzdHMu
dHh0CkBAIC0yNSw2ICsyNSwxMCBAQCBlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiR1RLIikK
ICAgICBpZiAoRU5BQkxFX01JTklCUk9XU0VSKQogICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KE1p
bmlCcm93c2VyL2d0aykKICAgICBlbmRpZiAoKQorZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwg
IkpTQ09ubHkiKQorICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAgICAgICBhZGRfc3ViZGly
ZWN0b3J5KFRlc3RXZWJLaXRBUEkpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChXSU4z
MikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmQ3NTYwYzNiZjUyODQ5YmYwYWFjNzA3ZjEwMDdlMzgyNjI3ODc0YQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEs
MTYgQEAKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFL
RV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkiKQorc2V0KFRFU1RXRUJL
SVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZX1dURiAiJHtURVNUV0VCS0lUQVBJX1JVTlRJ
TUVfT1VUUFVUX0RJUkVDVE9SWX0vV1RGIikKKworaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgICAk
e0RFUklWRURfU09VUkNFU19ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCisgICAgIiR7V1RGX0RJUn0v
aWN1IgorKQorCitzZXQodGVzdF9tYWluX1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9ub25lL21haW4uY3BwCispCisKK2xpc3QoQVBQRU5EIFRlc3RXVEZfU09VUkNFUworICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L25vbmUvUGxhdGZvcm1VdGlsaXRpZXNOb25lLmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IDc1ODNlNGVlMDc3ZTNlODgzZTZhNTdkYjVk
MWI4OWVjNDc5NDI5NGIuLjJlMjRhOWFlZDA0MjgyZmJiYTgyYzhjOGE4M2Y2NDU2ODJhNDc2NmUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTI2LDggKzI2LDEw
IEBACiAjaWZuZGVmIFBsYXRmb3JtVXRpbGl0aWVzX2gKICNkZWZpbmUgUGxhdGZvcm1VdGlsaXRp
ZXNfaAogCisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZl
RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFj
M2VhNDA2ODE3Li4yMjk2Mzg2OGYwNmM2OTM0YTNlZjZiMTY0OTdmMDhmMGZjNDUwYjlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsODEg
QEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3As
IE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZd
IHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAg
ICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1lcikKK3sKKyAg
ICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlz
aGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6
VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIo
Ym9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVk
VGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisg
ICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
dGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Ym9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRp
bWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgwLjEp
OworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCitURVNUKFdU
Rl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFz
cyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7Cisg
ICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAg
ICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlz
aGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBm
aXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21fY291bnQgPiAxMCkKKyAgICAg
ICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgICAgIGJvb2wmIG1fdGVz
dEZpbmlzaGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1lcih0
ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGluZygwLjAxKTsKKyAgICAg
ICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUw
MGJkMzFhMDY0NmQ2OTI2MzAxNi4uNDk1ODMxMDM3YTg4YjQ0ZmJlNDk5Yjc5YzRmMzBlMWIwNTlj
Mjk1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMSBAQAogI2luY2x1ZGUgImNt
YWtlY29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxydW50aW1lL0pT
RXhwb3J0TWFjcm9zLmg+CisjaWYgIVBMQVRGT1JNKEpTQ09OTFkpCisjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oPgorI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVBQTEVf
XykgJiYgX19BUFBMRV9fCiAKQEAgLTYzLDcgKzY2LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5o
PgogCi0jaWYgIVBMQVRGT1JNKElPUykgJiYgIVBMQVRGT1JNKFdJTikgJiYgIShQTEFURk9STShH
VEspICYmICFkZWZpbmVkKEJVSUxESU5HX1dFQktJVDJfXykpCisjaWYgIVBMQVRGT1JNKElPUykg
JiYgIVBMQVRGT1JNKFdJTikgJiYgIVBMQVRGT1JNKEpTQ09OTFkpICYmICEoUExBVEZPUk0oR1RL
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQogI2luY2x1ZGUgPFdlYktpdC9XZWJL
aXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5Miw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oSlNDT05M
WSkKICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9ub25lL1BsYXRmb3JtVXRpbGl0aWVzTm9uZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZiODY4
OGUxOGM3NjdjOTliNmYyMmYyNzE0OWQ4YjJmYzZjZDQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9QbGF0Zm9ybVV0aWxpdGllc05vbmUuY3BwCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBy
dW4oYm9vbCogZG9uZSkKK3sKKyAgICB3aGlsZSAoISpkb25lKQorICAgICAgICBXVEY6OlJ1bkxv
b3A6Oml0ZXJhdGUoKTsKK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBX
VEY6OnNsZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUv
bWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL25vbmUvbWFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjJiMTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbm9uZS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3Rz
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDog
RVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IDkzOTI1ODMwNmE3NDI5ODA4MjcyNGRlOWE4Yjc4ZGQ3YjY4ZWU1ZjIuLmM4MDc4Nzc0MzViNGE3
ODk0MzcyMjJhNzM1NTQ1MWNlOTdiMWE4NDYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxv
b3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtl
OgorCiAyMDE2LTA0LTA3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIEVOQUJMRShFTkFCTEVfRVM2X0NMQVNTX1NZTlRBWCkgZ3VhcmRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276242</attachid>
            <date>2016-04-12 09:59:16 -0700</date>
            <delta_ts>2016-04-12 11:00:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413015925.patch</filename>
            <type>text/plain</type>
            <size>56840</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQyM2Y5ODdhNjQxYTgxNWZkYmQ2ZTQ0ZmFlYWQwM2I3ZDdiYjZh
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTcgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICBBbmQgd2UgbW92ZSBzb21lIHBsYXRmb3JtLXNw
ZWNpZmljIGNvZGUgaW4gV29ya1F1ZXVlR0xpYiB0byBSdW5Mb29wR0xpYiBhbmQKKyAgICAgICAg
bWFrZSBXb3JrUXVldWVHTGliIHBsYXRmb3JtIGluZGVwZW5kZW50LgorCisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2dsaWIvUnVuTG9vcEdMaWIu
Y3BwOgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6RGlzcGF0Y2hBZnRlckNv
bnRleHQpOgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6ZGlzcGF0Y2gpOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdURjo6V29ya1F1ZXVlOjpw
bGF0Zm9ybUluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OnBs
YXRmb3JtSW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OldvcmtRdWV1ZTo6ZGlz
cGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6RGlz
cGF0Y2hBZnRlckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVy
Q29udGV4dDo6fkRpc3BhdGNoQWZ0ZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
RGlzcGF0Y2hBZnRlckNvbnRleHQ6OmRpc3BhdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9N
YWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25z
T25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnN0b3ApOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVO
b25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvcGxhdGZvcm1pbmRlcGVu
ZGVudC9NYWluVGhyZWFkUGxhdGZvcm1JbmRlcGVuZGVudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAgICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hG
dW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9wbGF0Zm9ybWluZGVwZW5kZW50
L1J1bkxvb3BQbGF0Zm9ybUluZGVwZW5kZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpTY2hlZHVsZWRUYXNrKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpmaXJlZCk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6c2NoZWR1bGVkVGlt
ZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
Ojp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGU6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmlzQWN0aXZlKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpkZWFjdGl2YXRlKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6On5S
dW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpzY2hlZHVsZUFuZFdha2VVcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZl
KToKKyAgICAgICAgKiB3dGYvcGxhdGZvcm1pbmRlcGVuZGVudC9Xb3JrUXVldWVQbGF0Zm9ybUlu
ZGVwZW5kZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlh
bGl6ZSk6CisgICAgICAgIChXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSk6CisgICAgICAg
IChXb3JrUXVldWU6OmRpc3BhdGNoKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
cik6CisKIDIwMTYtMDQtMDUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgY29tcGlsZSB0aW1lIGRlZmluZSBmb3IgU0VQQVJBVEVEX0hFQVAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCmluZGV4IGE4ZDJjYTU2MDE2YmZiZWNjMzkzZjYzZGUzOWUzMDJlNGQwMzNjYTkuLjFhYmVm
N2JmYmEyNTIzNmE3YTQxYzFmYjA0YmI5MTk0YWYwODY4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTE0
Miw0ICsxMTQyLDM5IEBACiAjZW5kaWYKICNlbmRpZgogCisKKy8qID09PT0gRVZFTlRfTE9PUCBo
YW5kbGVzIHdoYXQgb2ZmZXJzIHRoZSBldmVudCBsb29wIGFic3RyYWN0aW9uIHRvIFdlYktpdC4K
KyAqIEZvciBleGFtcGxlLCBHVEsgcG9ydCBpbiBPU1gsIGl0cyBwbGF0Zm9ybSBpcyBHVEssIE9T
IGlzIERBUldJTiBhbmQgRVZFTlRfTE9PUCBpcyBHTElCLgorICovCisjZGVmaW5lIEVWRU5UX0xP
T1AoV1RGX0ZFQVRVUkUpIChkZWZpbmVkIFdURl9FVkVOVF9MT09QXyMjV1RGX0ZFQVRVUkUgICYm
IFdURl9FVkVOVF9MT09QXyMjV1RGX0ZFQVRVUkUpCisKKyNpZiAhZGVmaW5lZChXVEZfREVGQVVM
VF9FVkVOVF9MT09QKQorI2RlZmluZSBXVEZfREVGQVVMVF9FVkVOVF9MT09QIDEKKyNlbmRpZgor
CisjaWYgV1RGX0RFRkFVTFRfRVZFTlRfTE9PUAorI2lmIFBMQVRGT1JNKFdJTikKKy8qIFVzZSBX
aW5kb3dzIG1lc3NhZ2UgcHVtcCBhYnN0cmFjdGlvbi4KKyAqIEV2ZW4gaWYgdGhlIHBvcnQgaXMg
QXBwbGVXaW4sIHdlIHVzZSB0aGUgV2luZG93cyBtZXNzYWdlIHB1bXAgc3lzdGVtIGZvciB0aGUg
ZXZlbnQgbG9vcC4KKyAqIFNvIHRoYXQsIEVWRU5UX0xPT1AoV0lORE9XUykgJiYgVVNFKENGKSBj
YW4gYmUgdHJ1ZS4KKyAqIEFuZCBQTEFURk9STShXSU4pLCBQTEFURk9STShFRkwpIGFuZCBQTEFU
Rk9STShHVEspIGFyZSBleGNsdXNpdmUuIElmIHRoZSBwb3J0IGlzIEdUSywKKyAqIFBMQVRGT1JN
KFdJTikgc2hvdWxkIGJlIGZhbHNlLiBBbmQgaW4gdGhhdCBjYXNlLCBHTElCJ3MgZXZlbnQgbG9v
cCBpcyB1c2VkLgorICovCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX1dJTkRPV1MgMQorI2VsaWYg
UExBVEZPUk0oQ09DT0EpCisvKiBPU1ggYW5kIElPUy4gVXNlIENvcmVGb3VuZGF0aW9uICYgR0NE
IGFic3RyYWN0aW9uLiAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9DT0NPQSAxCisjZWxpZiBQ
TEFURk9STShFRkwpCisvKiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24g
ZXZlbnQgbG9vcCBhYnN0cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0Uo
R0xJQikgY2FuIGJlIHRydWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNl
bGlmIFVTRShHTElCKQorLyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmlt
YXJpbHkgR1RLIHBvcnQgdXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAx
CisjZWxzZQorI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9QTEFURk9STV9JTkRFUEVOREVOVCAxCisj
ZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1HVEsuY21ha2UKaW5kZXggY2M3ZGY3YzllYzBkYWVkY2Y4OGMwMGQxM2FmNDkzYzFkZTVlNjIy
MC4uY2MwODRiNjYwYjk4Y2RhZmVhZjAwZDE4ZTRkNTE3ZTE3YzRmZjY3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTYsNyArNiw4IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAg
ICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCiAgICAgZ2xp
Yi9SdW5Mb29wR0xpYi5jcHAKLSAgICBnbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisKKyAgICBwbGF0
Zm9ybWluZGVwZW5kZW50L1dvcmtRdWV1ZVBsYXRmb3JtSW5kZXBlbmRlbnQuY3BwCiApCiAKIGxp
c3QoQVBQRU5EIFdURl9MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtSlNDT25seS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpp
bmRleCAxYWFlNDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li44ZDQ3NGVjMjUz
MWFiNGZiYzRiNWVlMWRlMmQzNzU2ZjVmNzgxNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NP
bmx5LmNtYWtlCkBAIC0xLDkgKzEsMTIgQEAKLWlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUg
U1RSRVFVQUwgImdsaWIiKQorbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKKyAgICBwbGF0Zm9ybWlu
ZGVwZW5kZW50L1dvcmtRdWV1ZVBsYXRmb3JtSW5kZXBlbmRlbnQuY3BwCispCisKK2lmIChMT1dF
UkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICBsaXN0KEFQUEVORCBX
VEZfU09VUkNFUwogICAgICAgICBnbGliL0dSZWZQdHIuY3BwCiAgICAgICAgIGdsaWIvTWFpblRo
cmVhZEdMaWIuY3BwCiAgICAgICAgIGdsaWIvUnVuTG9vcEdMaWIuY3BwCi0gICAgICAgIGdsaWIv
V29ya1F1ZXVlR0xpYi5jcHAKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1RGX1NZU1RFTV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CkBAIC0xNSw5ICsx
OCw4IEBAIGlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAg
ICkKIGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgICAgICBub25lL01h
aW5UaHJlYWROb25lLmNwcAotICAgICAgICBub25lL1J1bkxvb3BOb25lLmNwcAotICAgICAgICBu
b25lL1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgICAgIHBsYXRmb3JtaW5kZXBlbmRlbnQvTWFpblRo
cmVhZFBsYXRmb3JtSW5kZXBlbmRlbnQuY3BwCisgICAgICAgIHBsYXRmb3JtaW5kZXBlbmRlbnQv
UnVuTG9vcFBsYXRmb3JtSW5kZXBlbmRlbnQuY3BwCiAgICAgKQogZW5kaWYgKCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5o
CmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQzMjRiODlhN2YuLmFiNGQzZWYy
MWQyNjZiMmQwYjViY2VmMzMxNDBkZTI1OWJhYThmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxvb3BfaAogCisjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgpAQCAtMzUsMTEg
KzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICNpbmNsdWRl
IDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBF
VkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPHd0Zi9lZmwvVW5p
cXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwyMiBAQCBjbGFzcyBSdW5Mb29wIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdha2VVcCgpOwogCi0jaWYgUExB
VEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChDT0NPQSkKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCBydW5Gb3JEdXJhdGlvbihkb3VibGUgZHVyYXRpb24pOwogI2VuZGlmCiAKLSNpZiBV
U0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIEdNYWluQ29udGV4dCogbWFpbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBtX21haW5Db250ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAorI2lmIEVWRU5UX0xPT1AoUExBVEZP
Uk1fSU5ERVBFTkRFTlQpCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGl0ZXJh
dGUoKTsKKyNlbmRpZgorCisjaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKFBMQVRG
T1JNX0lOREVQRU5ERU5UKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0
ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworI2Vu
ZGlmCisKICAgICBjbGFzcyBUaW1lckJhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9v
cDsKICAgICBwdWJsaWM6CkBAIC04Nyw3ICs5Niw3IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMg
RnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7
CiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIp
CiAgICAgICAgIHZvaWQgc2V0UHJpb3JpdHkoaW50KTsKICNlbmRpZgogCkBAIC05NiwyMiArMTA1
LDI1IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAg
ICAgICBSdW5Mb29wJiBtX3J1bkxvb3A7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgRVZFTlRf
TE9PUChXSU5ET1dTKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCB1
aW50NjRfdCBJRCk7CiAgICAgICAgIHVpbnQ2NF90IG1fSUQ7CiAgICAgICAgIGJvb2wgbV9pc1Jl
cGVhdGluZzsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChDT0NPQSkK
ICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCop
OwogICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQ
TEFURk9STShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wg
dGltZXJGaXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAg
ICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRf
TE9PUChHTElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVm
UHRyPEdTb3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxz
ZSB9OwogICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsg
MCB9OworI2VsaWYgRVZFTlRfTE9PUChQTEFURk9STV9JTkRFUEVOREVOVCkKKyAgICAgICAgY2xh
c3MgU2NoZWR1bGVkVGFzazsKKyAgICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1
bGVkVGFzazsKICNlbmRpZgogICAgIH07CiAKQEAgLTE0NCw3ICsxNTYsNyBAQCBjbGFzcyBSdW5M
b29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1
ZXVlTG9jazsKICAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVl
dWU7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0
YXRpYyBib29sIHJlZ2lzdGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRp
YyBMUkVTVUxUIENBTExCQUNLIFJ1bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBB
UkFNKTsKICAgICBMUkVTVUxUIHduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOwpAQCAtMTUyLDEyICsxNjQsMTIgQEAgY2xhc3MgUnVu
TG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PHVpbnQ2NF90LCBUaW1lckJhc2UqPiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRp
bWVyczsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChDT0NPQSkKICAg
ICBzdGF0aWMgdm9pZCBwZXJmb3JtV29yayh2b2lkKik7CiAgICAgUmV0YWluUHRyPENGUnVuTG9v
cFJlZj4gbV9ydW5Mb29wOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVu
TG9vcFNvdXJjZTsKICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0jZWxpZiBQTEFURk9STShFRkwp
CisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICBNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVu
aXF1ZVB0cjxFY29yZV9QaXBlPiBtX3BpcGU7CiAKQEAgLTE2NSwxMCArMTc3LDMzIEBAIGNsYXNz
IFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBib29sIG1fd2FrZVVw
RXZlbnRSZXF1ZXN0ZWQ7CiAKICAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRh
LCB2b2lkKiwgdW5zaWduZWQpOwotI2VsaWYgVVNFKEdMSUIpCisjZWxpZiBFVkVOVF9MT09QKEdM
SUIpCiAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9y
PEdSZWZQdHI8R01haW5Mb29wPj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBt
X3NvdXJjZTsKKyNlbGlmIEVWRU5UX0xPT1AoUExBVEZPUk1fSU5ERVBFTkRFTlQpCisgICAgZW51
bSBjbGFzcyBSdW5Nb2RlIHsKKyAgICAgICAgSXRlcmF0ZSwKKyAgICAgICAgRHJhaW4KKyAgICB9
OworCisgICAgdm9pZCBzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7
CisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4pOworICAgIHZvaWQgd2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKTsKKyAg
ICB2b2lkIHNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+
KTsKKyAgICB2b2lkIHJ1bkltcGwoUnVuTW9kZSk7CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7
CisgICAgICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIExvY2sgbV9s
b29wTG9jazsKKyAgICBDb25kaXRpb24gbV9yZWFkeVRvUnVuOworICAgIENvbmRpdGlvbiBtX3N0
b3BDb25kaXRpb247CisgICAgVmVjdG9yPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+
PiBtX3NjaGVkdWxlczsKKyAgICBWZWN0b3I8U3RhdHVzKj4gbV9tYWluTG9vcHM7CisgICAgYm9v
bCBtX3NodXRkb3duIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcGVuZGluZ1Rhc2tzIHsgZmFsc2Ug
fTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBkMjY3NWMxZWRlMDA5Yzk1ZjQ1Njg0
MjQ1NzllYzdiNTQ5NzJhODlmLi45ZjgzNzg3MGI4NDk3Mzc1ZDFmYzQ2NjI2YzViMmFjZmFjMDc4
OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtMzQsMjIgKzM0LDI1IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBPUyhEQVJXSU4p
ICYmICFQTEFURk9STShHVEspCisjaWYgRVZFTlRfTE9PUChDT0NPQSkKICNpbmNsdWRlIDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChFRkwpCiAjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2VsaWYgVVNFKEdMSUIp
Ci0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2VsaWYgT1MoV0lORE9XUykKKyNlbmRpZgor
CisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1XaW4uaD4KICNl
bmRpZgogCisjaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKFBMQVRGT1JNX0lOREVQ
RU5ERU5UKQorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBXb3JrUXVldWUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKQEAgLTc0LDEzICs3NywxMyBAQCBjbGFzcyBX
b3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlv
bnMsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoc2l6ZV90IGluZGV4KT4mKTsKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICAgICB2b2lkIHJlZ2lzdGVyU29ja2V0
RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBSdW5M
b29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQotI2VsaWYgT1MoREFS
V0lOKQorI2VsaWYgRVZFTlRfTE9PUChDT0NPQSkKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3Bh
dGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIEVWRU5U
X0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChQTEFURk9STV9JTkRFUEVOREVOVCkKKyAgICBSdW5M
b29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKIHBy
aXZhdGU6CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNo
YXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAot
I2lmIE9TKFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lk
IENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldh
aXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBj
b250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5B
UEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIg
QEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAg
ICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJh
Y2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVO
VF9MT09QKEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwot
I2VsaWYgVVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsK
LSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRp
b24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7
Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRp
b24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYg
RVZFTlRfTE9PUChDT0NPQSkKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCop
OwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgT1MoV0lORE9X
UykKKyNlbGlmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICB2b2xhdGlsZSBMT05HIG1faXNXb3Jr
VGhyZWFkUmVnaXN0ZXJlZDsKIAogICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CkBAIC0x
MjQsNiArMTIwLDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+PiBt
X2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2VsaWYgRVZFTlRfTE9PUChH
TElCKSB8fCBFVkVOVF9MT09QKFBMQVRGT1JNX0lOREVQRU5ERU5UKQorICAgIFRocmVhZElkZW50
aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7CisgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29u
ZGl0aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247
CisgICAgUnVuTG9vcCogbV9ydW5Mb29wOworICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29u
ZGl0aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xp
Yi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAppbmRleCA2M2MwMzE4
NTQxODExMWI1YWJkM2MyZTVlZGQwNDMxMGZkNWIyNGExLi5kMTVmZDI4YTkyYjVkMjE2Njg4MjQy
YTQ3NWJlZGMxNmNkNmU4ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxv
b3BHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcApAQCAt
MTIxLDYgKzEyMSwzNyBAQCB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiAgICAgZ19zb3VyY2Vfc2V0
X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkpOwogfQog
CitjbGFzcyBEaXNwYXRjaEFmdGVyQ29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgRGlzcGF0Y2hBZnRlckNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGZ1bmN0aW9uKQorICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisg
ICAgeworICAgIH0KKworICAgIHZvaWQgZGlzcGF0Y2goKQorICAgIHsKKyAgICAgICAgbV9mdW5j
dGlvbigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9m
dW5jdGlvbjsKK307CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6
bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sK
KyAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0R1JlZihnX3RpbWVvdXRfc291cmNl
X25ldyhzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
PihkdXJhdGlvbikuY291bnQoKSkpOworICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQo
KSwgIltXZWJLaXRdIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIiKTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlz
cGF0Y2hBZnRlckNvbnRleHQ+KFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBnX3NvdXJjZV9zZXRf
Y2FsbGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4g
eworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQo
c3RhdGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkpOworICAgICAgICBj
b250ZXh0LT5kaXNwYXRjaCgpOworICAgICAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICAg
IH0sIGNvbnRleHQucmVsZWFzZSgpLCBudWxscHRyKTsKKyAgICBnX3NvdXJjZV9hdHRhY2goc291
cmNlLmdldCgpLCBtYWluQ29udGV4dCgpKTsKK30KKwogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1l
ckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQogICAgICwg
bV9zb3VyY2UoYWRvcHRHUmVmKGdfc291cmNlX25ldygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywg
c2l6ZW9mKEdTb3VyY2UpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMyZmY0MDUxNDkzYTZhZDA4ZDEwYjZkMzkyN2I2
OGY0MGQzYjFhMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHksIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXb3JrUXVldWUuaCIKLQotI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1Ro
cmVhZE5hbWVMaW1pdCA9IDMxOwotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXpl
KGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKLXsKLSAgICAvLyBUaGlzIG5hbWUgY2FuIGJl
IGNvbS5hcHBsZS5XZWJLaXQuUHJvY2Vzc0xhdW5jaGVyIG9yIGNvbS5hcHBsZS5Db3JlSVBDLlJl
Y2VpdmVRdWV1ZS4KLSAgICAvLyBXZSBhcmUgdXNpbmcgdGhvc2UgbmFtZXMgZm9yIHRoZSB0aHJl
YWQgbmFtZSwgYnV0IGJvdGggYXJlIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMsCi0gICAgLy8g
d2hpY2ggaXMgdGhlIGxpbWl0IG9mIFZpc3VhbCBTdHVkaW8gZm9yIHRocmVhZCBuYW1lcy4KLSAg
ICAvLyBXaGVuIGxvZyBpcyBlbmFibGVkIGNyZWF0ZVRocmVhZCgpIHdpbGwgYXNzZXJ0IGluc3Rl
YWQgb2YgdHJ1bmNhdGUgdGhlIG5hbWUsIHNvIHdlIG5lZWQKLSAgICAvLyB0byBtYWtlIHN1cmUg
d2UgZG9uJ3QgdXNlIGEgbmFtZSBsb25nZXIgdGhhbiAzMSBjaGFyYWN0ZXJzLgotICAgIGNvbnN0
IGNoYXIqIHRocmVhZE5hbWUgPSBnX3N0cnJzdHIobmFtZSwgIi4iKTsKLSAgICBpZiAodGhyZWFk
TmFtZSkKLSAgICAgICAgdGhyZWFkTmFtZSsrOwotICAgIGVsc2UKLSAgICAgICAgdGhyZWFkTmFt
ZSA9IG5hbWU7Ci0gICAgaWYgKHN0cmxlbih0aHJlYWROYW1lKSA+IGtWaXN1YWxTdHVkaW9UaHJl
YWROYW1lTGltaXQpCi0gICAgICAgIHRocmVhZE5hbWUgKz0gc3RybGVuKHRocmVhZE5hbWUpIC0g
a1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdDsKLQotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
aW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7Ci0gICAgbV93b3JrUXVldWVUaHJlYWQg
PSBjcmVhdGVUaHJlYWQodGhyZWFkTmFtZSwgW3RoaXNdIHsKLSAgICAgICAgewotICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
LSAgICAgICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7Ci0gICAgICAgICAg
ICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIG1fcnVuTG9vcC0+cnVuKCk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKLSAgICAgICAgICAg
IG1fcnVuTG9vcCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb24ubm90aWZ5T25lKCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uLndhaXQobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
LX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCi17Ci0gICAgewotICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7
Ci0gICAgICAgIGlmIChtX3J1bkxvb3ApIHsKLSAgICAgICAgICAgIG1fcnVuTG9vcC0+c3RvcCgp
OwotICAgICAgICAgICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1f
d29ya1F1ZXVlVGhyZWFkKSB7Ci0gICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVh
ZCk7Ci0gICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKLSAgICB9Ci19Ci0KLXZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uKQotewotICAg
IFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX3J1bkxvb3AtPmRpc3Bh
dGNoKFtwcm90ZWN0b3IsIGZ1bmN0aW9uXSB7IGZ1bmN0aW9uKCk7IH0pOwotfQotCi1jbGFzcyBE
aXNwYXRjaEFmdGVyQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNvbnRleHQoV29ya1F1ZXVlJiBxdWV1ZSwgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbikKLSAgICAgICAgOiBtX3F1ZXVlKCZxdWV1ZSkKLSAgICAg
ICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB+
RGlzcGF0Y2hBZnRlckNvbnRleHQoKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3BhdGNo
KCkKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
UmVmUHRyPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLSAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1f
ZnVuY3Rpb247Ci19OwotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9u
bzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24p
Ci17Ci0gICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdSZWYoZ190aW1lb3V0X3Nv
dXJjZV9uZXcoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcz4oZHVyYXRpb24pLmNvdW50KCkpKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2Uu
Z2V0KCksICJbV2ViS2l0XSBXb3JrUXVldWUgZGlzcGF0Y2hBZnRlciIpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1
ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oKnRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKTsKLSAgICBn
X3NvdXJjZV9zZXRfY2FsbGJhY2soc291cmNlLmdldCgpLCBbXShncG9pbnRlciB1c2VyRGF0YSkg
LT4gZ2Jvb2xlYW4gewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRl
eHQ+IGNvbnRleHQoc3RhdGljX2Nhc3Q8RGlzcGF0Y2hBZnRlckNvbnRleHQqPih1c2VyRGF0YSkp
OwotICAgICAgICBjb250ZXh0LT5kaXNwYXRjaCgpOwotICAgICAgICByZXR1cm4gR19TT1VSQ0Vf
UkVNT1ZFOwotICAgIH0sIGNvbnRleHQucmVsZWFzZSgpLCBudWxscHRyKTsKLSAgICBnX3NvdXJj
ZV9hdHRhY2goc291cmNlLmdldCgpLCBtX3J1bkxvb3AtPm1haW5Db250ZXh0KCkpOwotfQotCi19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlM2NiNmJhNjUzMjJkNjBmODEyNDgyNjhmNTZjZTYyMzliNGEyZDQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFu
ZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgotCi1uYW1lc3BhY2UgV1RG
IHsKLQotdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKLXsKLX0KLQotdm9pZCBz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKLXsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9ub25lL1J1bkxvb3BOb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1
NWNmZDU2ZTU5NWMwYmVhMDEyZmE1OWZhOTUzZmU3OGU1NjM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BO
b25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlJ1bkxvb3AuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLVJ1bkxvb3A6OlJ1bkxv
b3AoKQotewotfQotCi1SdW5Mb29wOjp+UnVuTG9vcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6
cnVuKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpzdG9wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29w
Ojp3YWtlVXAoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1SdW5Mb29wOjpU
aW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQotICAgIDogbV9ydW5Mb29wKHJ1
bkxvb3ApCi17Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCi17Ci0gICAg
c3RvcCgpOwotfQotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29s
KQotewotfQotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCi17Ci19Ci0KLWJvb2wg
UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTZkNjc1OGQ3OTY3YjM2NTY3NDVj
ZjgzN2U3MzBlMTA2NjA4M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50
aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVl
dWUuaCIKLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwg
VHlwZSwgUU9TKQotewotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkK
LXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikK
LXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3Bh
dGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wbGF0Zm9ybWluZGVwZW5kZW50L01haW5UaHJlYWRQbGF0Zm9ybUluZGVwZW5kZW50LmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3BsYXRmb3JtaW5kZXBlbmRlbnQvTWFpblRocmVhZFBsYXRmb3Jt
SW5kZXBlbmRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4YjJiYTNjZmIzZWE2OGFhNGZi
NDQ4N2E0OWJlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF0Zm9ybWlu
ZGVwZW5kZW50L01haW5UaHJlYWRQbGF0Zm9ybUluZGVwZW5kZW50LmNwcApAQCAtMCwwICsxLDQz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxl
bkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgorCisjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgaW5pdGlhbGl6
ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCit7Cit9CisKK3ZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0
aW9uc09uTWFpblRocmVhZCgpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPihkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXRmb3JtaW5kZXBlbmRlbnQvUnVuTG9v
cFBsYXRmb3JtSW5kZXBlbmRlbnQuY3BwIGIvU291cmNlL1dURi93dGYvcGxhdGZvcm1pbmRlcGVu
ZGVudC9SdW5Mb29wUGxhdGZvcm1JbmRlcGVuZGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU2Zjk5NGVk
ODJhNmQwNDMwZmVhNjZiOGQ1YzBhNzg1ODdkZGM4OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3BsYXRmb3JtaW5kZXBlbmRlbnQvUnVuTG9vcFBsYXRmb3JtSW5kZXBlbmRlbnQu
Y3BwCkBAIC0wLDAgKzEsMjg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50
aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVu
TG9vcC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+
IHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+
IGNyZWF0ZShMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpm
b3J3YXJkPExhbWJkYT4obGFtYmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYm
IGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1
bmN0aW9uKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50
ZXJ2YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25k
cz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBt
X2lzUmVwZWF0aW5nKHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgp
OworICAgIH0KKworICAgIGJvb2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsK
KworICAgICAgICBpZiAoIW1faXNSZXBlYXRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgICAgIHJldHVybiBpc0FjdGl2ZSgp
OworICAgIH0KKworICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgc2NoZWR1bGVkVGlt
ZVBvaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjaGVkdWxlZFRpbWVQb2lu
dDsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpCisgICAgeworICAgICAgICBt
X3NjaGVkdWxlZFRpbWVQb2ludCA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygpOworICAgICAgICBp
ZiAoIW1fZmlyZUludGVydmFsLmNvdW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fc2NoZWR1bGVkVGltZVBvaW50ICs9IG1fZmlyZUludGVydmFsOworICAgIH0KKworICAgIHN0
cnVjdCBFYXJsaWVzdFNjaGVkdWxlIHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJl
ZlB0cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJo
cykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxocy0+c2NoZWR1bGVkVGltZVBvaW50
KCkgPiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpOworICAgICAgICB9CisgICAgfTsKKworICAg
IGJvb2wgaXNBY3RpdmUoKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0Fj
dGl2ZUxvY2spOworICAgICAgICByZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICB9CisKKyAgICB2b2lk
IGRlYWN0aXZhdGUoKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2
ZUxvY2spOworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIENvbmRpdGlvbjo6Q2xv
Y2s6OnRpbWVfcG9pbnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgc3RkOjpjaHJvbm86Om1p
Y3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbDsKKyAgICBMb2NrIG1faXNBY3RpdmVMb2NrOworICAg
IGJvb2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKKyAgICBib29sIG1faXNSZXBlYXRpbmc7Cit9Owor
CitSdW5Mb29wOjpSdW5Mb29wKCkKK3sKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQoreworICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIG1fc2h1dGRvd24gPSB0cnVlOwor
ICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICBtX3N0b3BDb25kaXRpb24ud2FpdCht
X2xvb3BMb2NrKTsKK30KKwordm9pZCBSdW5Mb29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkK
K3sKKyAgICBBU1NFUlQodGhpcyA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIFN0YXR1
cyBzdGF0dXNPZlRoaXNMb29wID0gU3RhdHVzOjpDbGVhcjsKKyAgICB7CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0
YXR1c09mVGhpc0xvb3ApOworICAgIH0KKworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+PiBmaXJlZDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB7CisgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKworICAgICAgICAgICAgaWYg
KHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsKKyAgICAgICAgICAgICAgICBDb25kaXRpb246
OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVwVW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0aW1lX3Bv
aW50OjptYXgoKTsKKyAgICAgICAgICAgICAgICBpZiAoIW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCktPnNj
aGVkdWxlZFRpbWVQb2ludCgpOworCisgICAgICAgICAgICAgICAgbV9yZWFkeVRvUnVuLndhaXRV
bnRpbChtX2xvb3BMb2NrLCBzbGVlcFVudGlsLCBbJl0geworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9zaHV0ZG93biB8fCBtX3BlbmRpbmdUYXNrcyB8fCBzdGF0dXNPZlRoaXNMb29wID09
IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1czo6U3RvcHBpbmcgfHwg
bV9zaHV0ZG93bikgeworICAgICAgICAgICAgICAgIG1fbWFpbkxvb3BzLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgICAgICBtX3N0b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9wZW5kaW5nVGFza3MgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6Okl0ZXJhdGUpCisgICAgICAgICAg
ICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6U3RvcHBpbmc7CisKKyAgICAgICAgICAg
IC8vIENoZWNrIGV4cGlyZWQgdGltZXJzLgorICAgICAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6
dGltZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICAgICAgICAgIHdo
aWxlICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgUmVmUHRyPFRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gZWFybGllc3QgPSBtX3NjaGVkdWxlcy5maXJzdCgpOwor
ICAgICAgICAgICAgICAgIGlmIChlYXJsaWVzdC0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiBub3cp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHN0ZDo6cG9wX2hl
YXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjaGVk
dWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgZmlyZWQuYXBwZW5kKGVhcmxpZXN0
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIERpc3BhdGNoIHNjaGVk
dWxlZCB0aW1lcnMuCisgICAgICAgIHdoaWxlICghZmlyZWQuaXNFbXB0eSgpKSB7CisgICAgICAg
ICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrID0gZmlyZWQudGFrZUZp
cnN0KCk7CisgICAgICAgICAgICBpZiAodGFzay0+ZmlyZWQoKSkgeworICAgICAgICAgICAgICAg
IC8vIFJlc2NoZWR1bGUgYmVjYXVzZSB0aGUgdGltZXIgcmVxdWlyZXMgcmVwZWF0aW5nLgorICAg
ICAgICAgICAgICAgIC8vIFNpbmNlIHdlIHdpbGwgcXVlcnkgdGhlIHRpbWVycycgdGltZSBwb2lu
dHMgYmVmb3JlIHNsZWVwaW5nLAorICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBjYWxsIHdh
a2VVcCgpIGhlcmUuCisgICAgICAgICAgICAgICAgc2NoZWR1bGUodGFzayk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJmb3JtV29yaygpOworICAgIH0KK30KKwordm9p
ZCBSdW5Mb29wOjpydW4oKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1v
ZGU6OkRyYWluKTsKK30KKwordm9pZCBSdW5Mb29wOjppdGVyYXRlKCkKK3sKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpJdGVyYXRlKTsKK30KKworLy8gUnVuTG9vcCBv
cGVyYXRpb25zIGFyZSB0aHJlYWQtc2FmZS4gVGhlc2Ugb3BlcmF0aW9ucyBjYW4gYmUgY2FsbGVk
IGZyb20gb3V0c2lkZSBvZiB0aGUgUnVuTG9vcCdzIHRocmVhZC4KKy8vIEZvciBleGFtcGxlLCBX
b3JrUXVldWU6OntkaXNwYXRjaCwgZGlzcGF0Y2hBZnRlcn0gY2FsbCB0aGUgb3BlcmF0aW9ucyBv
ZiB0aGUgV29ya1F1ZXVlIHRocmVhZCdzIFJ1bkxvb3AKKy8vIGZyb20gdGhlIGNhbGxlcidzIHRo
cmVhZC4KKwordm9pZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKyAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdGF0dXMqIHN0YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBpZiAo
KnN0YXR1cyAhPSBTdGF0dXM6OlN0b3BwaW5nKSB7CisgICAgICAgICpzdGF0dXMgPSBTdGF0dXM6
OlN0b3BwaW5nOworICAgICAgICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7CisgICAgfQorfQor
Cit2b2lkIFJ1bkxvb3A6Ondha2VVcChjb25zdCBMb2NrSG9sZGVyJikKK3sKKyAgICBpZiAobV9t
YWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9wZW5kaW5nVGFza3Mg
PSB0cnVlOworICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKK30KKwordm9pZCBSdW5Mb29w
Ojp3YWtlVXAoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHdh
a2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKGNvbnN0IExvY2tIb2xk
ZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQoreworICAgIG1fc2No
ZWR1bGVzLmFwcGVuZCh0YXNrKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5iZWdp
bigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVz
dFNjaGVkdWxlKCkpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKFJlZlB0cjxUaW1lckJh
c2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29w
TG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCB0YXNrKTsKK30KKwordm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrKQor
eworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVkdWxlKGxvY2tl
ciwgdGFzayk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0
Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPiBmdW5jdGlvbikKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAg
ICBib29sIHJlcGVhdGluZyA9IGZhbHNlOworICAgIHNjaGVkdWxlKGxvY2tlciwgVGltZXJCYXNl
OjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW2Z1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7
CisgICAgfSwgZGVsYXkuY291bnQoKSAvIDEwMDAuMCAvIDEwMDAuMCAvIDEwMDAuMCwgcmVwZWF0
aW5nKSk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKKy8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBu
b3Qgb3duIHRoZSByZWdpc3RlcmVkIFRpbWVyQmFzZSwKKy8vIFRpbWVyQmFzZSBhbmQgaXRzIG93
bmVyIHNob3VsZCBtYW5hZ2UgdGhlc2UgbGlmZXRpbWUuCisvLworLy8gQW5kIG1vcmUgaW1wb3J0
YW50bHksIFRpbWVyQmFzZSBvcGVyYXRpb25zIGFyZSBub3QgdGhyZWFkLXNhZmUuCisvLyBTbyB0
aHJlYWRzIHRoYXQgZG8gbm90IGJlbG9uZyB0byB0aGUgU2NoZWR1bGVkVGFzaydzIFJ1bkxvb3AK
Ky8vIHNob3VsZCBub3Qgb3BlcmF0ZSB0aGUgUnVuTG9vcDo6VGltZXJCYXNlLgorLy8gVGhpcyBp
cyB0aGUgc2FtZSB0byB0aGUgUnVuTG9vcFdpbiwgd2hpY2ggaXMgUnVuTG9vcCBmb3IgV2luZG93
cy4KK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAg
OiBtX3J1bkxvb3AocnVuTG9vcCkKKyAgICAsIG1fc2NoZWR1bGVkVGFzayhudWxscHRyKQorewor
fQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9vbCBy
ZXBlYXRpbmcpCit7CisgICAgc3RvcCgpOworICAgIG1fc2NoZWR1bGVkVGFzayA9IFNjaGVkdWxl
ZFRhc2s6OmNyZWF0ZShbdGhpc10geworICAgICAgICBmaXJlZCgpOworICAgIH0sIGludGVydmFs
LCByZXBlYXRpbmcpOworICAgIG1fcnVuTG9vcC5zY2hlZHVsZUFuZFdha2VVcChtX3NjaGVkdWxl
ZFRhc2spOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYg
KG1fc2NoZWR1bGVkVGFzaykgeworICAgICAgICBtX3NjaGVkdWxlZFRhc2stPmRlYWN0aXZhdGUo
KTsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wg
UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2No
ZWR1bGVkVGFzazsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9wbGF0Zm9ybWluZGVwZW5kZW50L1dvcmtRdWV1ZVBsYXRmb3JtSW5kZXBlbmRlbnQu
Y3BwIGIvU291cmNlL1dURi93dGYvcGxhdGZvcm1pbmRlcGVuZGVudC9Xb3JrUXVldWVQbGF0Zm9y
bUluZGVwZW5kZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWI2YzRiNWEwOGYwZjNmNDkxMzgxMWQ1YTIz
YzE3OWYwMjI3OGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvcGxhdGZvcm1p
bmRlcGVuZGVudC9Xb3JrUXVldWVQbGF0Zm9ybUluZGVwZW5kZW50LmNwcApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxl
bkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9y
dGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IHNpemVfdCBrVmlzdWFsU3R1
ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRp
YWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQoreworICAgIC8vIFRoaXMgbmFtZSBj
YW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNoZXIgb3IgY29tLmFwcGxlLkNvcmVJ
UEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2luZyB0aG9zZSBuYW1lcyBmb3IgdGhl
IHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRoYW4gMzEgY2hhcmFjdGVycywKKyAg
ICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0dWRpbyBmb3IgdGhyZWFkIG5hbWVz
LgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRlVGhyZWFkKCkgd2lsbCBhc3NlcnQg
aW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2UgbmVlZAorICAgIC8vIHRvIG1ha2Ug
c3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMuCisgICAg
U3RyaW5nIHRocmVhZE5hbWUobmFtZSk7CisgICAgc2l6ZV90IHNpemUgPSB0aHJlYWROYW1lLnJl
dmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKHNpemUgIT0gbm90Rm91bmQpCisgICAgICAgIHRocmVh
ZE5hbWUgPSB0aHJlYWROYW1lLnN1YnN0cmluZyhzaXplICsgMSk7CisgICAgaWYgKHRocmVhZE5h
bWUubGVuZ3RoKCkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KQorICAgICAgICB0aHJl
YWROYW1lID0gdGhyZWFkTmFtZS5yaWdodChrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KTsK
KworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRl
eCk7CisgICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQodGhyZWFkTmFtZS5hc2Np
aSgpLmRhdGEoKSwgW3RoaXNdIHsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAgIG1f
cnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisgICAgICAgICAgICBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9CisgICAgICAgIG1fcnVuTG9v
cC0+cnVuKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAgIG1fcnVuTG9vcCA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25l
KCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
LndhaXQobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIGlmICht
X3J1bkxvb3ApIHsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+c3RvcCgpOworICAgICAgICAgICAg
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5j
dGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0
KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1
bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pT
Q09ubHkuY21ha2UKaW5kZXggNGQ1Njc3ZWU3ZTJjNjZlY2JhOGQ5OTIzMTliNmUxZGU5ODdmOGNj
MC4uMDcyZGFlYTFiYWVlZmJjYWE3OTFlNmZkMTY5MmQ4MWNmYjRjNDMwYSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRp
b25zSlNDT25seS5jbWFrZQpAQCAtMTEsMjQgKzExLDE5IEBAIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9TVEFUSUNfSlNDICJXaGV0aGVyIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIGEg
c3RhCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQVUJM
SUMgT04pCiBXRUJLSVRfT1BUSU9OX0VORCgpCiAKLXNldChBTExfRVZFTlRMT09QX1RZUEVTCitz
ZXQoQUxMX0VWRU5UX0xPT1BfVFlQRVMKICAgICBHTGliCiAgICAgTm9uZQogKQogCi1pZiAoVU5J
WCBBTkQgTk9UIEFQUExFKQotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJHTGliIikK
LWVsc2UgKCkKLSAgICAjIFRPRE86IFVzZSBuYXRpdmUgTWFjIGFuZCBXaW4gaW1wbGVtZW50YXRp
b25zCi0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIk5vbmUiKQotZW5kaWYgKCkKK3Nl
dChERUZBVUxUX0VWRU5UX0xPT1BfVFlQRSAiTm9uZSIpCiAKLXNldChFVkVOVExPT1BfVFlQRSAk
e0RFRkFVTFRfRVZFTlRMT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2Yg
ZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZF
TlRMT09QX1RZUEVTfSkiKQorc2V0KEVWRU5UX0xPT1BfVFlQRSAke0RFRkFVTFRfRVZFTlRfTE9P
UF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUg
dXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxMX0VWRU5UX0xPT1BfVFlQRVN9KSIp
CiAKIHNldChFTkFCTEVfV0VCQ09SRSBPRkYpCiBzZXQoRU5BQkxFX1dFQktJVCBPRkYpCiBzZXQo
RU5BQkxFX1dFQktJVDIgT0ZGKQotc2V0KEVOQUJMRV9BUElfVEVTVFMgT0ZGKQorc2V0KEVOQUJM
RV9BUElfVEVTVFMgT04pCiAKIGlmIChXVEZfQ1BVX1g4NiBPUiBXVEZfQ1BVX1g4Nl82NCkKICAg
ICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVURJUzg2IDEpCkBAIC0zOCwxMCArMzMsMTIg
QEAgaWYgKEVOQUJMRV9TVEFUSUNfSlNDKQogICAgIHNldChKYXZhU2NyaXB0Q29yZV9MSUJSQVJZ
X1RZUEUgU1RBVElDKQogZW5kaWYgKCkKIAotc3RyaW5nKFRPTE9XRVIgJHtFVkVOVExPT1BfVFlQ
RX0gTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFKQotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCitzdHJpbmcoVE9MT1dFUiAke0VWRU5UX0xPT1BfVFlQRX0gTE9X
RVJDQVNFX0VWRU5UX0xPT1BfVFlQRSkKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNU
UkVRVUFMICJnbGliIikKICAgICBmaW5kX3BhY2thZ2UoR0xJQiAyLjM2IFJFUVVJUkVEIENPTVBP
TkVOVFMgZ2lvIGdvYmplY3QpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dMSUIg
MSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfRVZFTlRfTE9PUF9HTElCIDEpCisg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0RFRkFVTFRfRVZFTlRfTE9PUCAwKQogZW5k
aWYgKCkKIAogIyBGcm9tIE9wdGlvbnNHVEsuY21ha2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzNmZhNjNiZjFmNzM1MzU2MDYxNzQ5ZGI0OTY3
MGRmZjlhZjEzODRlLi44NWY2MWE5NDYxZjdhYzIwNDcwMTA1YzM0ZWUyY2M3MjViNzM0ZmRmIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjYgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xp
YiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgVGVzdFdURiB0byBKU0NPbmx5IHBvcnQgdG8gdGVzdCBXb3JrUXVldWUgYW5kIFJ1
bkxvb3AuCisgICAgICAgIFBsYXRmb3JtIHNwZWNpZmljIG9uZXMgbG9jYXRlIHVuZGVyIGpzY29u
bHkgZGlyZWN0b3J5IHNpbmNlCisgICAgICAgIGl0IGlzIG5vdCBgcGxhdGZvcm1pbmRlcGVuZGVu
dGAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1
bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxh
dGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25v
bmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25l
L1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMTEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBN
aW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlhZWI4MzNj
Y2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYzNTlk
NDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxp
c3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkdU
SyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRpcmVjdG9y
eShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNUUkVR
VUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAgYWRkX3N1
YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAo
V0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMCww
ICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3NldChURVNU
V0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQSV9S
VU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3NhcnkgYmVj
YXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdl
YktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0byBpbmNs
dWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEphdmFTY3Jp
cHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitpbmNsdWRl
X2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRl
cnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9U
WVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorICAg
ICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0ZXN0X21h
aW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAKKykK
KworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
anNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0
Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMyYTJlMGUwZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYg
UGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZiAh
ZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUg
PHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2Vh
NDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4OWRjMzhhYTIxYWY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsODQgQEAK
ICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3AsIE5l
c3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisK
KyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsK
KyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RG
aW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1lcikKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGlt
ZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9v
bCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGlt
ZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAg
ICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdGVz
dEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsK
KyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVy
LnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cisg
ICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0g
ZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8
RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYg
dGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+
KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAg
ICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21f
Y291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAgICAgICBib29sJiBt
X3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIgdGlt
ZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7Cisg
ICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmln
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNiYzllMGE5YjEx
NmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2FiNGNkYWEyZDk0Mjc0N2E3OTRmYWVm
OGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRl
ICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhw
b3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhw
b3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExF
X18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAhUExB
VEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0o
V0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkg
JiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQy
X0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChCVUlMRElOR19K
U0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4ZjhkZTc5OGU5ZDRiODMwYjczNzMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGls
aXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZFTlRfTE9PUChHTElCKQorI2luY2x1
ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lkIHJ1bihib29s
KiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpIHsKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisg
ICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5Mb29wOjpjdXJyZW50KCkubWFpbkNv
bnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RGOjpSdW5Mb29wOjppdGVyYXRlKCk7
CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpCit7CisgICAg
V1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nv
bmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5YjdlZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBUZXN0V2ViS2l0
QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KSA/IEVYSVRf
U1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBjNzg5MTM2NDM2MjNmOTcyLi5lZWQ0
Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxl
bWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIHRoZSB0aGVtaW5nIGNvZGUgZm9y
IEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276246</attachid>
            <date>2016-04-12 11:00:07 -0700</date>
            <delta_ts>2016-04-12 11:07:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413030016.patch</filename>
            <type>text/plain</type>
            <size>48167</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQzMWM1MmEwNzYxZmQzMjQzNDk1ODY0NDljNTVmY2YxMjFkZDFi
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXRlcmF0ZSk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnNjaGVkdWxlQW5kV2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUp
OgorICAgICAgICAqIHd0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwOgorICAgICAgICAqIHd0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcDoKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOiBEZWxldGVk
LgorICAgICAgICAqIHd0Zi9ub25lL1J1bkxvb3BOb25lLmNwcDoKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6UnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6On5SdW5Mb29w
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
Ondha2VVcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGlt
ZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp+VGlt
ZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFy
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOiBEZWxl
dGVkLgorICAgICAgICAqIHd0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwOgorICAgICAgICAoV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVl
OjpwbGF0Zm9ybUludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNw
YXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxl
dGVkLgorCiAyMDE2LTA0LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGNvbXBpbGUgdGltZSBkZWZpbmUgZm9yIFNFUEFSQVRFRF9IRUFQCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAppbmRleCBhOGQyY2E1NjAxNmJmYmVjYzM5M2Y2M2RlMzllMzAyZTRkMDMzY2E5Li44NGEy
NzcwOTBjYmJhNjIwYTUyZTk2Y2VhNTk5ZGFkYmM1OGViNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEx
NDIsNCArMTE0MiwzOSBAQAogI2VuZGlmCiAjZW5kaWYKIAorCisvKiA9PT09IEVWRU5UX0xPT1Ag
aGFuZGxlcyB3aGF0IG9mZmVycyB0aGUgZXZlbnQgbG9vcCBhYnN0cmFjdGlvbiB0byBXZWJLaXQu
CisgKiBGb3IgZXhhbXBsZSwgR1RLIHBvcnQgaW4gT1NYLCBpdHMgcGxhdGZvcm0gaXMgR1RLLCBP
UyBpcyBEQVJXSU4gYW5kIEVWRU5UX0xPT1AgaXMgR0xJQi4KKyAqLworI2RlZmluZSBFVkVOVF9M
T09QKFdURl9GRUFUVVJFKSAoZGVmaW5lZCBXVEZfRVZFTlRfTE9PUF8jI1dURl9GRUFUVVJFICAm
JiBXVEZfRVZFTlRfTE9PUF8jI1dURl9GRUFUVVJFKQorCisjaWYgIWRlZmluZWQoV1RGX0RFRkFV
TFRfRVZFTlRfTE9PUCkKKyNkZWZpbmUgV1RGX0RFRkFVTFRfRVZFTlRfTE9PUCAxCisjZW5kaWYK
KworI2lmIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AKKyNpZiBQTEFURk9STShXSU4pCisvKiBVc2Ug
V2luZG93cyBtZXNzYWdlIHB1bXAgYWJzdHJhY3Rpb24uCisgKiBFdmVuIGlmIHRoZSBwb3J0IGlz
IEFwcGxlV2luLCB3ZSB1c2UgdGhlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIHN5c3RlbSBmb3IgdGhl
IGV2ZW50IGxvb3AuCisgKiBTbyB0aGF0LCBFVkVOVF9MT09QKFdJTkRPV1MpICYmIFVTRShDRikg
Y2FuIGJlIHRydWUuCisgKiBBbmQgUExBVEZPUk0oV0lOKSwgUExBVEZPUk0oRUZMKSBhbmQgUExB
VEZPUk0oR1RLKSBhcmUgZXhjbHVzaXZlLiBJZiB0aGUgcG9ydCBpcyBHVEssCisgKiBQTEFURk9S
TShXSU4pIHNob3VsZCBiZSBmYWxzZS4gQW5kIGluIHRoYXQgY2FzZSwgR0xJQidzIGV2ZW50IGxv
b3AgaXMgdXNlZC4KKyAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9XSU5ET1dTIDEKKyNlbGlm
IFBMQVRGT1JNKENPQ09BKQorLyogT1NYIGFuZCBJT1MuIFVzZSBDb3JlRm91bmRhdGlvbiAmIEdD
RCBhYnN0cmFjdGlvbi4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfREFSV0lOIDEKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKy8qIEVGTCBwb3J0IHVzZXMgR0xJQi4gQnV0IGl0IHVzZXMgaXRzIG93
biBldmVudCBsb29wIGFic3RyYWN0aW9uLgorICogVGh1cywgRVZFTlRfTE9PUChFRkwpICYmIFVT
RShHTElCKSBjYW4gYmUgdHJ1ZS4KKyAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9FRkwgMQor
I2VsaWYgVVNFKEdMSUIpCisvKiBVc2UgR0xJQidzIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24uIFBy
aW1hcmlseSBHVEsgcG9ydCB1c2VzIGl0LiAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9HTElC
IDEKKyNlbHNlCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0NYWDExIDEKKyNlbmRpZgorI2VuZGlm
CisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5
LmNtYWtlCmluZGV4IDFhYWU0NmUwMTlhMjRkYzcxMTI3ODM2ODEwOWNlY2E0NmE0MjVjNjkuLmQy
NDllNzVlZTg2ZTdhMTg3N2RjNjViY2U0OWU1YzM4ZWIyZTY5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTEsNCArMSw0IEBACi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9P
UF9UWVBFIFNUUkVRVUFMICJnbGliIikKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNU
UkVRVUFMICJnbGliIikKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBnbGli
L0dSZWZQdHIuY3BwCiAgICAgICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCkBAIC0xNSw5ICsx
NSw5IEBAIGlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAg
ICkKIGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgICAgICBub25lL01h
aW5UaHJlYWROb25lLmNwcAotICAgICAgICBub25lL1J1bkxvb3BOb25lLmNwcAotICAgICAgICBu
b25lL1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgICAgIGN4eDExL01haW5UaHJlYWRDeHgxMS5jcHAK
KyAgICAgICAgY3h4MTEvUnVuTG9vcEN4eDExLmNwcAorICAgICAgICBjeHgxMS9Xb3JrUXVldWVD
eHgxMS5jcHAKICAgICApCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggZmFlYjliMWZmYTI1ZmNh
YmFlOTFkZjg3MzBhYmNlNDMyNGI4OWE3Zi4uYjZjMWNjZThkOGYzNjg1N2EwN2UxYzIwOGI3MzZj
NTVmODlkOTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmbmRlZiBSdW5Mb29w
X2gKICNkZWZpbmUgUnVuTG9vcF9oCiAKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CkBAIC0zNSwxMSArMzYsMTEgQEAKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgVVNFKEdM
SUIpCisjaWYgRVZFTlRfTE9PUChHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogI2luY2x1
ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4KICNlbmRpZgpA
QCAtNjQsMTQgKzY1LDE5IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRj
aGVyIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgd2FrZVVwKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFVkVO
VF9MT09QKERBUldJTikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlv
bihkb3VibGUgZHVyYXRpb24pOwogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEdNYWlu
Q29udGV4dCogbWFpbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX21haW5Db250ZXh0LmdldCgp
OyB9CiAjZW5kaWYKIAorI2lmIEVWRU5UX0xPT1AoQ1hYMTEpCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGl0ZXJhdGUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KTsKKyNlbmRpZgorCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFJ1bkxvb3A7CiAgICAgcHVibGljOgpAQCAtODcsNyArOTMsNyBAQCBjbGFzcyBSdW5Mb29w
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZp
cmVkKCkgPSAwOwogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgICAgICB2b2lkIHNldFByaW9yaXR5KGludCk7CiAjZW5kaWYKIApAQCAt
OTYsMjIgKzEwMiwyNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hl
ciB7CiAKICAgICAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwogCi0jaWYgUExBVEZPUk0oV0lOKQor
I2lmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChS
dW5Mb29wKiwgdWludDY0X3QgSUQpOwogICAgICAgICB1aW50NjRfdCBtX0lEOwogICAgICAgICBi
b29sIG1faXNSZXBlYXRpbmc7Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKKyNlbGlmIEVWRU5UX0xP
T1AoREFSV0lOKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1l
cjsKLSNlbGlmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIEVWRU5UX0xPT1AoRUZMKQogICAgICAgICBz
dGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEpOwogICAgICAgICBFY29yZV9UaW1lciog
bV90aW1lcjsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwotI2VsaWYgVVNFKEdMSUIpCisj
ZWxpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAg
ICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVh
dGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJl
SW50ZXJ2YWwgeyAwIH07CisjZWxpZiBFVkVOVF9MT09QKENYWDExKQorICAgICAgICBjbGFzcyBT
Y2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gbV9zY2hlZHVsZWRU
YXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTQ0LDcgKzE1Myw3IEBAIGNsYXNzIFJ1bkxvb3Ag
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVM
b2NrOwogICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsK
IAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAgc3RhdGlj
IGJvb2wgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0NsYXNzKCk7CiAgICAgc3RhdGljIExS
RVNVTFQgQ0FMTEJBQ0sgUnVuTG9vcFduZFByb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0p
OwogICAgIExSRVNVTFQgd25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSk7CkBAIC0xNTIsMTIgKzE2MSwxMiBAQCBjbGFzcyBSdW5Mb29w
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFRpbWVyQmFzZSo+IFRpbWVyTWFwOwogICAgIFRpbWVyTWFwIG1fYWN0aXZlVGltZXJz
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBz
dGF0aWMgdm9pZCBwZXJmb3JtV29yayh2b2lkKik7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJl
Zj4gbV9ydW5Mb29wOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9v
cFNvdXJjZTsKICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0jZWxpZiBQTEFURk9STShFRkwpCisj
ZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICBNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVuaXF1
ZVB0cjxFY29yZV9QaXBlPiBtX3BpcGU7CiAKQEAgLTE2NSwxMCArMTc0LDMzIEBAIGNsYXNzIFJ1
bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBib29sIG1fd2FrZVVwRXZl
bnRSZXF1ZXN0ZWQ7CiAKICAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2
b2lkKiwgdW5zaWduZWQpOwotI2VsaWYgVVNFKEdMSUIpCisjZWxpZiBFVkVOVF9MT09QKEdMSUIp
CiAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdS
ZWZQdHI8R01haW5Mb29wPj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Nv
dXJjZTsKKyNlbGlmIEVWRU5UX0xPT1AoQ1hYMTEpCisgICAgZW51bSBjbGFzcyBSdW5Nb2RlIHsK
KyAgICAgICAgSXRlcmF0ZSwKKyAgICAgICAgRHJhaW4KKyAgICB9OworCisgICAgdm9pZCBzY2hl
ZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7CisgICAgdm9pZCBzY2hlZHVs
ZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOwor
ICAgIHZvaWQgd2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICB2b2lkIHNjaGVkdWxlQW5k
V2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHJ1bklt
cGwoUnVuTW9kZSk7CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIENsZWFyLAor
ICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIExvY2sgbV9sb29wTG9jazsKKyAgICBDb25k
aXRpb24gbV9yZWFkeVRvUnVuOworICAgIENvbmRpdGlvbiBtX3N0b3BDb25kaXRpb247CisgICAg
VmVjdG9yPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBtX3NjaGVkdWxlczsKKyAg
ICBWZWN0b3I8U3RhdHVzKj4gbV9tYWluTG9vcHM7CisgICAgYm9vbCBtX3NodXRkb3duIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcGVuZGluZ1Rhc2tzIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaAppbmRleCBkMjY3NWMxZWRlMDA5Yzk1ZjQ1Njg0MjQ1NzllYzdiNTQ5NzJhODlm
Li4zMTc3MzYxZjc3YjdkM2VlYzM0ZDg1Y2FkMDE5ZmE5NzEyNzU4MGY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzQsMjIgKzM0LDI1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEsp
CisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogI2luY2x1
ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9D
b25kaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KLSNlbGlmIE9TKFdJTkRPV1MpCisjZW5kaWYKKworI2lmIEVWRU5UX0xPT1Ao
V0lORE9XUykKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtV2luLmg+CiAjZW5kaWYKIAorI2lmIEVWRU5U
X0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsK
IAogY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBA
IC03NCwxMyArNzcsMTMgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3Vy
cmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNp
emVfdCBpbmRleCk+Jik7CiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChFRkwp
CiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwot
I2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICpt
X3J1bkxvb3A7IH0KLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQog
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGF0Y2hRdWV1ZTsgfQorI2VsaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKENYWDEx
KQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTg5LDcgKzkyLDcgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxp
ZGF0ZSgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAg
c3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVB
TiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxi
YWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGlj
IERXT1JEIFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CkBAIC0xMDIs
MTkgKzEwNSwxMiBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNw
YXRjaGVyIHsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJv
eUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZM
KQorI2lmIEVWRU5UX0xPT1AoRUZMKQogICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rpc3Bh
dGNoUXVldWU7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1
ZXVlVGhyZWFkOwotICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4Owot
ICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOwotICAgIFJ1bkxvb3Aq
IG1fcnVuTG9vcDsKLSAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4Owot
ICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247Ci0jZWxpZiBPUyhEQVJX
SU4pCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVu
Y3Rpb24odm9pZCopOwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2Vs
aWYgT1MoV0lORE9XUykKKyNlbGlmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICB2b2xhdGlsZSBM
T05HIG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZDsKIAogICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1
ZUxvY2s7CkBAIC0xMjQsNiArMTIwLDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxl
V29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2VsaWYg
RVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKENYWDExKQorICAgIFRocmVhZElkZW50aWZp
ZXIgbV93b3JrUXVldWVUaHJlYWQ7CisgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247Cisg
ICAgUnVuTG9vcCogbV9ydW5Mb29wOworICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvTWFpblRocmVhZEN4
eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzg0OWM2OTUxZThiMmJhM2NmYjNlYTY4YWE0ZmI0NDg3YTQ5YmUwOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYg
PGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIK
KworI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGlu
aXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQoreworfQorCit2b2lkIHNjaGVkdWxlRGlzcGF0
Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEu
Y3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NTZmOTk0ZWQ4MmE2ZDA0MzBmZWE2NmI4ZDVjMGE3ODU4N2RkYzg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcApAQCAtMCwwICsxLDI4OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5A
eWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CitXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY2hlZHVsZWRUYXNrKTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYW1i
ZGE+CisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTGFtYmRhJiYgbGFt
YmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZWRUYXNrKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJk
YSksIGludGVydmFsLCByZXBlYXRpbmcpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYW1iZGE+CisgICAgU2NoZWR1bGVkVGFzayhMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRl
cnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgICAgIDogbV9mdW5jdGlvbihzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpKQorICAgICAgICAsIG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbjxkb3VibGU+KGludGVydmFsKSkpCisgICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRp
bmcpCisgICAgeworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICB9CisKKyAgICBib29s
IGZpcmVkKCkKKyAgICB7CisgICAgICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CisKKyAgICAgICAgaWYgKCFtX2lz
UmVwZWF0aW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVwZGF0ZVJl
YWR5VGltZSgpOworICAgICAgICByZXR1cm4gaXNBY3RpdmUoKTsKKyAgICB9CisKKyAgICBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9p
ZCB1cGRhdGVSZWFkeVRpbWUoKQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQg
PSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5j
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2lu
dCArPSBtX2ZpcmVJbnRlcnZhbDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3RTY2hlZHVs
ZSB7CisgICAgICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4m
IGxocywgY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiByaHMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBsaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gcmhzLT5zY2hlZHVsZWRU
aW1lUG9pbnQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBib29sIGlzQWN0aXZlKCkKKyAg
ICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAg
cmV0dXJuIG1faXNBY3RpdmU7CisgICAgfQorCisgICAgdm9pZCBkZWFjdGl2YXRlKCkKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAgbV9p
c0FjdGl2ZSA9IGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gbV9mdW5jdGlvbjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2No
ZWR1bGVkVGltZVBvaW50OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50
ZXJ2YWw7CisgICAgTG9jayBtX2lzQWN0aXZlTG9jazsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0
cnVlIH07CisgICAgYm9vbCBtX2lzUmVwZWF0aW5nOworfTsKKworUnVuTG9vcDo6UnVuTG9vcCgp
Cit7Cit9CisKK1J1bkxvb3A6On5SdW5Mb29wKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKyAgICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90
aWZ5T25lKCk7CisgICAgbV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMg
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6Q2xlYXI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKyAgICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAg
ICB9CisKKyAgICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWQ7
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb29wTG9jayk7CisKKyAgICAgICAgICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6
OkRyYWluKSB7CisgICAgICAgICAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBz
bGVlcFVudGlsID0gQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hlZHVsZWRUaW1lUG9pbnQoKTsK
KworICAgICAgICAgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29wTG9jaywgc2xl
ZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwg
bV9wZW5kaW5nVGFza3MgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3Rh
dHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAg
ICAgICAgICAgICBtX21haW5Mb29wcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgaWYg
KG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zdG9wQ29uZGl0
aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fcGVuZGluZ1Rhc2tzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAocnVu
TW9kZSA9PSBSdW5Nb2RlOjpJdGVyYXRlKQorICAgICAgICAgICAgICAgIHN0YXR1c09mVGhpc0xv
b3AgPSBTdGF0dXM6OlN0b3BwaW5nOworCisgICAgICAgICAgICAvLyBDaGVjayBleHBpcmVkIHRp
bWVycy4KKyAgICAgICAgICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgbm93ID0gQ29u
ZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgICAgICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVsZXMuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZWFybGllc3QtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gbm93KQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2lu
KCksIG1fc2NoZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0
U2NoZWR1bGUoKSk7CisgICAgICAgICAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOwor
ICAgICAgICAgICAgICAgIGZpcmVkLmFwcGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAg
ICB3aGlsZSAoIWZpcmVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAg
aWYgKHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1
c2UgdGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywK
KyAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAg
ICAgICAgICAgIHNjaGVkdWxlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwo
UnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBhcmUgdGhyZWFk
LXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgb2YgdGhl
IFJ1bkxvb3AncyB0aHJlYWQuCisvLyBGb3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7ZGlzcGF0Y2gs
IGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtRdWV1ZSB0aHJl
YWQncyBSdW5Mb29wCisvLyBmcm9tIHRoZSBjYWxsZXIncyB0aHJlYWQuCisKK3ZvaWQgUnVuTG9v
cDo6c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgaWYg
KG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RhdHVzKiBz
dGF0dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7CisgICAgaWYgKCpzdGF0dXMgIT0gU3RhdHVzOjpT
dG9wcGluZykgeworICAgICAgICAqc3RhdHVzID0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAg
bV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjp3YWtl
VXAoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3JlYWR5
VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBlbmQodGFzayk7
CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5k
KCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0
YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVkdWxl
KGxvY2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVm
UHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworICAgIHdha2VV
cChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBlYXRpbmcgPSBm
YWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRlbGF5LmNvdW50
KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAgIHdha2VVcChs
b2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJl
ZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRo
ZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJhc2Ugb3Bl
cmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0IGRvIG5vdCBi
ZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQgbm90IG9wZXJh
dGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhlIFJ1
bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29wOjpUaW1lckJh
c2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1bkxvb3Ap
CisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9vcDo6VGltZXJC
YXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQoreworICAgIHN0
b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNd
IHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBt
X3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30KKwordm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsK
KyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1
bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2s7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1
ZXVlQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVhZDQ5MTI5YTlmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2
ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qg
a1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBTdHJp
bmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFt
ZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5s
ZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5h
bWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
KyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCku
ZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5M
b29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5y
dW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2Fp
dChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVu
TG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25N
dXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsK
KyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3Jr
UXVldWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBw
cm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3Byb3RlY3QsIGZ1bmN0aW9u
XSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhp
cyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbcHJvdGVjdCwgZnVuY3Rp
b25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dv
cmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBk
M2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9u
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzY2I2YmE2NTMyMmQ2MGY4MTI0
ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0
YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNYWlu
VGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFk
UGxhdGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5U
aHJlYWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxv
b3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4
ZTU2MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFu
bnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVuTG9vcC5oIgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17Ci19Ci0KLVJ1bkxvb3A6On5SdW5Mb29w
KCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQotewotfQotCi12b2lkIFJ1bkxvb3A6OnN0
b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgpCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1
bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsKLX0KLQotUnVuTG9vcDo6VGltZXJC
YXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9X
b3JrUXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBRT1MpCi17Ci19Ci0KLXZvaWQgV29ya1F1
ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29u
ZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5
MjMxOWI2ZTFkZTk4N2Y4Y2MwLi4wNzJkYWVhMWJhZWVmYmNhYTc5MWU2ZmQxNjkyZDgxY2ZiNGM0
MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0xMSwyNCArMTEsMTkgQEAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2
YVNjcmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fRU5EKCkKIAotc2V0KEFMTF9F
VkVOVExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9PUF9UWVBFUwogICAgIEdMaWIKICAgICBO
b25lCiApCiAKLWlmIChVTklYIEFORCBOT1QgQVBQTEUpCi0gICAgc2V0KERFRkFVTFRfRVZFTlRM
T09QX1RZUEUgIkdMaWIiKQotZWxzZSAoKQotICAgICMgVE9ETzogVXNlIG5hdGl2ZSBNYWMgYW5k
IFdpbiBpbXBsZW1lbnRhdGlvbnMKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiTm9u
ZSIpCi1lbmRpZiAoKQorc2V0KERFRkFVTFRfRVZFTlRfTE9PUF9UWVBFICJOb25lIikKIAotc2V0
KEVWRU5UTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVExPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJ
bXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUg
KG9uZSBvZiAke0FMTF9FVkVOVExPT1BfVFlQRVN9KSIpCitzZXQoRVZFTlRfTE9PUF9UWVBFICR7
REVGQVVMVF9FVkVOVF9MT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2Yg
ZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZF
TlRfTE9PUF9UWVBFU30pIikKIAogc2V0KEVOQUJMRV9XRUJDT1JFIE9GRikKIHNldChFTkFCTEVf
V0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5BQkxFX0FQSV9URVNU
UyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPTikKIAogaWYgKFdURl9DUFVfWDg2IE9SIFdU
Rl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9VRElTODYgMSkK
QEAgLTM4LDEwICszMywxMiBAQCBpZiAoRU5BQkxFX1NUQVRJQ19KU0MpCiAgICAgc2V0KEphdmFT
Y3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBlbmRpZiAoKQogCi1zdHJpbmcoVE9MT1dF
UiAke0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUpCi1pZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKK3N0cmluZyhUT0xPV0VSICR7RVZF
TlRfTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFKQoraWYgKExPV0VSQ0FTRV9F
VkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGZpbmRfcGFja2FnZShHTElCIDIu
MzYgUkVRVUlSRUQgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkKICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9FVkVO
VF9MT09QX0dMSUIgMSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfREVGQVVMVF9F
VkVOVF9MT09QIDApCiBlbmRpZiAoKQogCiAjIEZyb20gT3B0aW9uc0dUSy5jbWFrZQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM2ZmE2M2JmMWY3
MzUzNTYwNjE3NDlkYjQ5NjcwZGZmOWFmMTM4NGUuLjc5MGUxNzk0Zjk5NzFmNzRjYTQ5ZGZhZjVj
YzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxv
b3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBUZXN0V1RGIHRvIEpTQ09ubHkgcG9ydCB0byB0ZXN0
IFdvcmtRdWV1ZSBhbmQgUnVuTG9vcC4KKyAgICAgICAgUGxhdGZvcm0gc3BlY2lmaWMgb25lcyBs
b2NhdGUgdW5kZXIganNjb25seSBkaXJlY3Rvcnkgc2luY2UKKyAgICAgICAgaXQgaXMgbm90IGBj
eHgxMWAgKFNpbmNlIGl0IGluY2x1ZGVzIHRoZSBHTElCIGV2ZW50IGxvb3AgY2FzZSkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
SlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGls
aXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9v
cE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pz
Y29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1
ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMTEgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBNaW5pQnJvd3Nl
ciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlhZWI4MzNjY2ZkYTViNjJl
NTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYzNTlkNDNjIDEwMDY0
NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApA
QCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkdUSyIpCiAgICAg
aWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJv
d3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJKU0NP
bmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAgYWRkX3N1YmRpcmVjdG9y
eShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAoV0lOMzIpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZTNj
Yzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDI3IEBA
CitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3NldChURVNUV0VCS0lUQVBJ
X1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQSV9SVU5USU1FX09V
VFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBKU0NP
bmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuCisj
IFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0byBpbmNsdWRlIFdlYktp
dCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEphdmFTY3JpcHRDb3JlLgor
YWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitpbmNsdWRlX2RpcmVjdG9y
aWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAi
JHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVR
VUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorICAgICAgICAke0dM
SUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0ZXN0X21haW5fU09VUkNF
UworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAKKykKKworbGlzdChB
UFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9Q
bGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
LmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uOWFhM2Yz
MDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMyYTJlMGUwZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
UGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1V
dGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZiAhZGVmaW5lZChC
VUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4K
IAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5M
b29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li40
NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4OWRjMzhhYTIxYWY3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsODQgQEAKICAgICBVdGls
OjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3AsIE5lc3RlZFJ1bkxv
b3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29s
IHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
Jl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAg
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4o
JnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7
Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1lcikKK3sKKyAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7
CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZl
ZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZp
bmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAs
IG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAg
RGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25l
U2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQor
CitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0
aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisK
KyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRp
bWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlz
aGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6
OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1f
dGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21fY291bnQgPT0g
MTApIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgc3RvcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAgICAgICBib29sJiBtX3Rlc3RGaW5p
c2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIgdGltZXIodGVzdEZp
bmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7CisgICAgICAgIFV0
aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNiYzllMGE5YjExNmVlMDBiZDMx
YTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2FiNGNkYWEyZDk0Mjc0N2E3OTRmYWVmOGVhNmFmM2Eg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRlICJjbWFrZWNv
bmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9z
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmICFkZWZpbmVkKEJV
SUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9z
Lmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExFX18KIApAQCAt
NjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9T
KSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJ
TkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAh
KFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNl
bmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JN
KElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18p
CiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4ZjhkZTc5OGU5ZDRiODMwYjczNzMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NP
bmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZFTlRfTE9PUChHTElCKQorI2luY2x1ZGUgPGdsaWIu
aD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQor
eworICAgIHdoaWxlICghKmRvbmUpIHsKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisgICAgICAgIGdf
bWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5Mb29wOjpjdXJyZW50KCkubWFpbkNvbnRleHQoKSwg
ZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RGOjpSdW5Mb29wOjppdGVyYXRlKCk7CisjZW5kaWYK
KyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpCit7CisgICAgV1RGOjpzbGVl
cChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
YjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5YjdlZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKQEAgLTAsMCArMSwzMiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBUZXN0V2ViS2l0QVBJOjpUZXN0
c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KSA/IEVYSVRfU1VDQ0VTUyA6
IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBjNzg5MTM2NDM2MjNmOTcyLi5lZWQ0Y2NlYTNlNjM1
ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5M
b29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFr
ZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIHRoZSB0aGVtaW5nIGNvZGUgZm9yIEdUSysgMy4y
MAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276247</attachid>
            <date>2016-04-12 11:07:46 -0700</date>
            <delta_ts>2016-04-12 11:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413030755.patch</filename>
            <type>text/plain</type>
            <size>48179</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQzMWM1MmEwNzYxZmQzMjQzNDk1ODY0NDljNTVmY2YxMjFkZDFi
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6cnVuKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXRlcmF0ZSk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnNjaGVkdWxlQW5kV2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUp
OgorICAgICAgICAqIHd0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAg
ICAgIChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwOgorICAgICAgICAqIHd0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcDoKKyAg
ICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOiBEZWxldGVk
LgorICAgICAgICAqIHd0Zi9ub25lL1J1bkxvb3BOb25lLmNwcDoKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6UnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6On5SdW5Mb29w
KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
Ondha2VVcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGlt
ZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp+VGlt
ZXJCYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFy
dCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOiBEZWxl
dGVkLgorICAgICAgICAqIHd0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwOgorICAgICAgICAoV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVl
OjpwbGF0Zm9ybUludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNw
YXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxl
dGVkLgorCiAyMDE2LTA0LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIGNvbXBpbGUgdGltZSBkZWZpbmUgZm9yIFNFUEFSQVRFRF9IRUFQCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAppbmRleCBhOGQyY2E1NjAxNmJmYmVjYzM5M2Y2M2RlMzllMzAyZTRkMDMzY2E5Li44NGEy
NzcwOTBjYmJhNjIwYTUyZTk2Y2VhNTk5ZGFkYmM1OGViNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEx
NDIsNCArMTE0MiwzOSBAQAogI2VuZGlmCiAjZW5kaWYKIAorCisvKiA9PT09IEVWRU5UX0xPT1Ag
aGFuZGxlcyB3aGF0IG9mZmVycyB0aGUgZXZlbnQgbG9vcCBhYnN0cmFjdGlvbiB0byBXZWJLaXQu
CisgKiBGb3IgZXhhbXBsZSwgR1RLIHBvcnQgaW4gT1NYLCBpdHMgcGxhdGZvcm0gaXMgR1RLLCBP
UyBpcyBEQVJXSU4gYW5kIEVWRU5UX0xPT1AgaXMgR0xJQi4KKyAqLworI2RlZmluZSBFVkVOVF9M
T09QKFdURl9GRUFUVVJFKSAoZGVmaW5lZCBXVEZfRVZFTlRfTE9PUF8jI1dURl9GRUFUVVJFICAm
JiBXVEZfRVZFTlRfTE9PUF8jI1dURl9GRUFUVVJFKQorCisjaWYgIWRlZmluZWQoV1RGX0RFRkFV
TFRfRVZFTlRfTE9PUCkKKyNkZWZpbmUgV1RGX0RFRkFVTFRfRVZFTlRfTE9PUCAxCisjZW5kaWYK
KworI2lmIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AKKyNpZiBQTEFURk9STShXSU4pCisvKiBVc2Ug
V2luZG93cyBtZXNzYWdlIHB1bXAgYWJzdHJhY3Rpb24uCisgKiBFdmVuIGlmIHRoZSBwb3J0IGlz
IEFwcGxlV2luLCB3ZSB1c2UgdGhlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIHN5c3RlbSBmb3IgdGhl
IGV2ZW50IGxvb3AuCisgKiBTbyB0aGF0LCBFVkVOVF9MT09QKFdJTkRPV1MpICYmIFVTRShDRikg
Y2FuIGJlIHRydWUuCisgKiBBbmQgUExBVEZPUk0oV0lOKSwgUExBVEZPUk0oRUZMKSBhbmQgUExB
VEZPUk0oR1RLKSBhcmUgZXhjbHVzaXZlLiBJZiB0aGUgcG9ydCBpcyBHVEssCisgKiBQTEFURk9S
TShXSU4pIHNob3VsZCBiZSBmYWxzZS4gQW5kIGluIHRoYXQgY2FzZSwgR0xJQidzIGV2ZW50IGxv
b3AgaXMgdXNlZC4KKyAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9XSU5ET1dTIDEKKyNlbGlm
IFBMQVRGT1JNKENPQ09BKQorLyogT1NYIGFuZCBJT1MuIFVzZSBDb3JlRm91bmRhdGlvbiAmIEdD
RCBhYnN0cmFjdGlvbi4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfREFSV0lOIDEKKyNlbGlm
IFBMQVRGT1JNKEVGTCkKKy8qIEVGTCBwb3J0IHVzZXMgR0xJQi4gQnV0IGl0IHVzZXMgaXRzIG93
biBldmVudCBsb29wIGFic3RyYWN0aW9uLgorICogVGh1cywgRVZFTlRfTE9PUChFRkwpICYmIFVT
RShHTElCKSBjYW4gYmUgdHJ1ZS4KKyAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9FRkwgMQor
I2VsaWYgVVNFKEdMSUIpCisvKiBVc2UgR0xJQidzIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24uIFBy
aW1hcmlseSBHVEsgcG9ydCB1c2VzIGl0LiAqLworI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9HTElC
IDEKKyNlbHNlCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0NYWDExIDEKKyNlbmRpZgorI2VuZGlm
CisKICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5
LmNtYWtlCmluZGV4IDFhYWU0NmUwMTlhMjRkYzcxMTI3ODM2ODEwOWNlY2E0NmE0MjVjNjkuLmQy
NDllNzVlZTg2ZTdhMTg3N2RjNjViY2U0OWU1YzM4ZWIyZTY5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUpTQ09ubHkuY21ha2UKQEAgLTEsNCArMSw0IEBACi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9P
UF9UWVBFIFNUUkVRVUFMICJnbGliIikKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNU
UkVRVUFMICJnbGliIikKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBnbGli
L0dSZWZQdHIuY3BwCiAgICAgICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCkBAIC0xNSw5ICsx
NSw5IEBAIGlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAg
ICkKIGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgICAgICBub25lL01h
aW5UaHJlYWROb25lLmNwcAotICAgICAgICBub25lL1J1bkxvb3BOb25lLmNwcAotICAgICAgICBu
b25lL1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgICAgIGN4eDExL01haW5UaHJlYWRDeHgxMS5jcHAK
KyAgICAgICAgY3h4MTEvUnVuTG9vcEN4eDExLmNwcAorICAgICAgICBjeHgxMS9Xb3JrUXVldWVD
eHgxMS5jcHAKICAgICApCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggZmFlYjliMWZmYTI1ZmNh
YmFlOTFkZjg3MzBhYmNlNDMyNGI4OWE3Zi4uYjZjMWNjZThkOGYzNjg1N2EwN2UxYzIwOGI3MzZj
NTVmODlkOTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmbmRlZiBSdW5Mb29w
X2gKICNkZWZpbmUgUnVuTG9vcF9oCiAKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CkBAIC0zNSwxMSArMzYsMTEgQEAKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgVVNFKEdM
SUIpCisjaWYgRVZFTlRfTE9PUChHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogI2luY2x1
ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4KICNlbmRpZgpA
QCAtNjQsMTQgKzY1LDE5IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRj
aGVyIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgd2FrZVVwKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBFVkVO
VF9MT09QKERBUldJTikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlv
bihkb3VibGUgZHVyYXRpb24pOwogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEdNYWlu
Q29udGV4dCogbWFpbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX21haW5Db250ZXh0LmdldCgp
OyB9CiAjZW5kaWYKIAorI2lmIEVWRU5UX0xPT1AoQ1hYMTEpCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyB2b2lkIGl0ZXJhdGUoKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KTsKKyNlbmRpZgorCiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFJ1bkxvb3A7CiAgICAgcHVibGljOgpAQCAtODcsNyArOTMsNyBAQCBjbGFzcyBSdW5Mb29w
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGZp
cmVkKCkgPSAwOwogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgICAgICB2b2lkIHNldFByaW9yaXR5KGludCk7CiAjZW5kaWYKIApAQCAt
OTYsMjIgKzEwMiwyNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hl
ciB7CiAKICAgICAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwogCi0jaWYgUExBVEZPUk0oV0lOKQor
I2lmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChS
dW5Mb29wKiwgdWludDY0X3QgSUQpOwogICAgICAgICB1aW50NjRfdCBtX0lEOwogICAgICAgICBi
b29sIG1faXNSZXBlYXRpbmc7Ci0jZWxpZiBQTEFURk9STShDT0NPQSkKKyNlbGlmIEVWRU5UX0xP
T1AoREFSV0lOKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVy
UmVmLCB2b2lkKik7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1l
cjsKLSNlbGlmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIEVWRU5UX0xPT1AoRUZMKQogICAgICAgICBz
dGF0aWMgYm9vbCB0aW1lckZpcmVkKHZvaWQqIGRhdGEpOwogICAgICAgICBFY29yZV9UaW1lciog
bV90aW1lcjsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwotI2VsaWYgVVNFKEdMSUIpCisj
ZWxpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAg
ICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVh
dGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJl
SW50ZXJ2YWwgeyAwIH07CisjZWxpZiBFVkVOVF9MT09QKENYWDExKQorICAgICAgICBjbGFzcyBT
Y2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gbV9zY2hlZHVsZWRU
YXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAtMTQ0LDcgKzE1Myw3IEBAIGNsYXNzIFJ1bkxvb3Ag
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVM
b2NrOwogICAgIERlcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsK
IAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAgc3RhdGlj
IGJvb2wgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0NsYXNzKCk7CiAgICAgc3RhdGljIExS
RVNVTFQgQ0FMTEJBQ0sgUnVuTG9vcFduZFByb2MoSFdORCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0p
OwogICAgIExSRVNVTFQgd25kUHJvYyhIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSk7CkBAIC0xNTIsMTIgKzE2MSwxMiBAQCBjbGFzcyBSdW5Mb29w
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFRpbWVyQmFzZSo+IFRpbWVyTWFwOwogICAgIFRpbWVyTWFwIG1fYWN0aXZlVGltZXJz
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBz
dGF0aWMgdm9pZCBwZXJmb3JtV29yayh2b2lkKik7CiAgICAgUmV0YWluUHRyPENGUnVuTG9vcFJl
Zj4gbV9ydW5Mb29wOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9v
cFNvdXJjZTsKICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0jZWxpZiBQTEFURk9STShFRkwpCisj
ZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICBNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVuaXF1
ZVB0cjxFY29yZV9QaXBlPiBtX3BpcGU7CiAKQEAgLTE2NSwxMCArMTc0LDMzIEBAIGNsYXNzIFJ1
bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBib29sIG1fd2FrZVVwRXZl
bnRSZXF1ZXN0ZWQ7CiAKICAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2
b2lkKiwgdW5zaWduZWQpOwotI2VsaWYgVVNFKEdMSUIpCisjZWxpZiBFVkVOVF9MT09QKEdMSUIp
CiAgICAgR1JlZlB0cjxHTWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdS
ZWZQdHI8R01haW5Mb29wPj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3Nv
dXJjZTsKKyNlbGlmIEVWRU5UX0xPT1AoQ1hYMTEpCisgICAgZW51bSBjbGFzcyBSdW5Nb2RlIHsK
KyAgICAgICAgSXRlcmF0ZSwKKyAgICAgICAgRHJhaW4KKyAgICB9OworCisgICAgdm9pZCBzY2hl
ZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7CisgICAgdm9pZCBzY2hlZHVs
ZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOwor
ICAgIHZvaWQgd2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICB2b2lkIHNjaGVkdWxlQW5k
V2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHJ1bklt
cGwoUnVuTW9kZSk7CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIENsZWFyLAor
ICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIExvY2sgbV9sb29wTG9jazsKKyAgICBDb25k
aXRpb24gbV9yZWFkeVRvUnVuOworICAgIENvbmRpdGlvbiBtX3N0b3BDb25kaXRpb247CisgICAg
VmVjdG9yPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBtX3NjaGVkdWxlczsKKyAg
ICBWZWN0b3I8U3RhdHVzKj4gbV9tYWluTG9vcHM7CisgICAgYm9vbCBtX3NodXRkb3duIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fcGVuZGluZ1Rhc2tzIHsgZmFsc2UgfTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9X
b3JrUXVldWUuaAppbmRleCBkMjY3NWMxZWRlMDA5Yzk1ZjQ1Njg0MjQ1NzllYzdiNTQ5NzJhODlm
Li4zMTc3MzYxZjc3YjdkM2VlYzM0ZDg1Y2FkMDE5ZmE5NzEyNzU4MGY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUu
aApAQCAtMzQsMjIgKzM0LDI1IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBPUyhEQVJXSU4pICYmICFQTEFURk9STShHVEsp
CisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4K
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogI2luY2x1
ZGUgPERpc3BhdGNoUXVldWVFZmwuaD4KLSNlbGlmIFVTRShHTElCKQotI2luY2x1ZGUgPHd0Zi9D
b25kaXRpb24uaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KLSNlbGlmIE9TKFdJTkRPV1MpCisjZW5kaWYKKworI2lmIEVWRU5UX0xPT1Ao
V0lORE9XUykKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvd2luL1dvcmtJdGVtV2luLmg+CiAjZW5kaWYKIAorI2lmIEVWRU5U
X0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsK
IAogY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBA
IC03NCwxMyArNzcsMTMgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3Vy
cmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNp
emVfdCBpbmRleCk+Jik7CiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChFRkwp
CiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwot
I2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICpt
X3J1bkxvb3A7IH0KLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQog
ICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
cGF0Y2hRdWV1ZTsgfQorI2VsaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKENYWDEx
KQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTg5LDcgKzkyLDcgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxp
emUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKICAgICB2b2lkIHBsYXRmb3JtSW52YWxp
ZGF0ZSgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAg
c3RhdGljIHZvaWQgQ0FMTEJBQ0sgaGFuZGxlQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVB
TiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyB0aW1lckNhbGxi
YWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGlj
IERXT1JEIFdJTkFQSSB3b3JrVGhyZWFkQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CkBAIC0xMDIs
MTkgKzEwNSwxMiBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNw
YXRjaGVyIHsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHVucmVnaXN0ZXJXYWl0QW5kRGVzdHJv
eUl0ZW1DYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZM
KQorI2lmIEVWRU5UX0xPT1AoRUZMKQogICAgIFJlZlB0cjxEaXNwYXRjaFF1ZXVlPiBtX2Rpc3Bh
dGNoUXVldWU7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1
ZXVlVGhyZWFkOwotICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4Owot
ICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOwotICAgIFJ1bkxvb3Aq
IG1fcnVuTG9vcDsKLSAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4Owot
ICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247Ci0jZWxpZiBPUyhEQVJX
SU4pCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVu
Y3Rpb24odm9pZCopOwogICAgIGRpc3BhdGNoX3F1ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2Vs
aWYgT1MoV0lORE9XUykKKyNlbGlmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICB2b2xhdGlsZSBM
T05HIG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZDsKIAogICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1
ZUxvY2s7CkBAIC0xMjQsNiArMTIwLDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1Ymxp
YyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hNYXA8SEFORExFLCBSZWZQdHI8SGFuZGxl
V29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5ETEUgbV90aW1lclF1ZXVlOworI2VsaWYg
RVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKENYWDExKQorICAgIFRocmVhZElkZW50aWZp
ZXIgbV93b3JrUXVldWVUaHJlYWQ7CisgICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247Cisg
ICAgUnVuTG9vcCogbV9ydW5Mb29wOworICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKICNl
bmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvTWFpblRocmVhZEN4
eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzg0OWM2OTUxZThiMmJhM2NmYjNlYTY4YWE0ZmI0NDg3YTQ5YmUwOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYg
PGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIK
KworI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIGlu
aXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQoreworfQorCit2b2lkIHNjaGVkdWxlRGlzcGF0
Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4oZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCkp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEu
Y3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NTZmOTk0ZWQ4MmE2ZDA0MzBmZWE2NmI4ZDVjMGE3ODU4N2RkYzg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcApAQCAtMCwwICsxLDI4OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5A
eWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKworbmFtZXNwYWNl
IFdURiB7CisKK2NsYXNzIFJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzayA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTY2hlZHVsZWRUYXNrPiB7CitXVEZfTUFLRV9OT05DT1BZ
QUJMRShTY2hlZHVsZWRUYXNrKTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMYW1i
ZGE+CisgICAgc3RhdGljIFJlZlB0cjxTY2hlZHVsZWRUYXNrPiBjcmVhdGUoTGFtYmRhJiYgbGFt
YmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTY2hlZHVsZWRUYXNrKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJk
YSksIGludGVydmFsLCByZXBlYXRpbmcpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYW1iZGE+CisgICAgU2NoZWR1bGVkVGFzayhMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRl
cnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgICAgIDogbV9mdW5jdGlvbihzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpKQorICAgICAgICAsIG1fZmlyZUludGVydmFsKHN0ZDo6Y2hyb25vOjpk
dXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+KHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbjxkb3VibGU+KGludGVydmFsKSkpCisgICAgICAgICwgbV9pc1JlcGVhdGluZyhyZXBlYXRp
bmcpCisgICAgeworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICB9CisKKyAgICBib29s
IGZpcmVkKCkKKyAgICB7CisgICAgICAgIGlmICghaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICBtX2Z1bmN0aW9uKCk7CisKKyAgICAgICAgaWYgKCFtX2lz
UmVwZWF0aW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHVwZGF0ZVJl
YWR5VGltZSgpOworICAgICAgICByZXR1cm4gaXNBY3RpdmUoKTsKKyAgICB9CisKKyAgICBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNjaGVkdWxlZFRpbWVQb2ludCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgfQorCisgICAgdm9p
ZCB1cGRhdGVSZWFkeVRpbWUoKQorICAgIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQg
PSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICAgICAgaWYgKCFtX2ZpcmVJbnRlcnZhbC5j
b3VudCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3NjaGVkdWxlZFRpbWVQb2lu
dCArPSBtX2ZpcmVJbnRlcnZhbDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgRWFybGllc3RTY2hlZHVs
ZSB7CisgICAgICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4m
IGxocywgY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiByaHMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBsaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gcmhzLT5zY2hlZHVsZWRU
aW1lUG9pbnQoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBib29sIGlzQWN0aXZlKCkKKyAg
ICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAg
cmV0dXJuIG1faXNBY3RpdmU7CisgICAgfQorCisgICAgdm9pZCBkZWFjdGl2YXRlKCkKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faXNBY3RpdmVMb2NrKTsKKyAgICAgICAgbV9p
c0FjdGl2ZSA9IGZhbHNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gbV9mdW5jdGlvbjsKKyAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG1fc2No
ZWR1bGVkVGltZVBvaW50OworICAgIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50
ZXJ2YWw7CisgICAgTG9jayBtX2lzQWN0aXZlTG9jazsKKyAgICBib29sIG1faXNBY3RpdmUgeyB0
cnVlIH07CisgICAgYm9vbCBtX2lzUmVwZWF0aW5nOworfTsKKworUnVuTG9vcDo6UnVuTG9vcCgp
Cit7Cit9CisKK1J1bkxvb3A6On5SdW5Mb29wKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKyAgICBtX3NodXRkb3duID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90
aWZ5T25lKCk7CisgICAgbV9zdG9wQ29uZGl0aW9uLndhaXQobV9sb29wTG9jayk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMg
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6Q2xlYXI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKyAgICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAg
ICB9CisKKyAgICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWQ7
CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb29wTG9jayk7CisKKyAgICAgICAgICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6
OkRyYWluKSB7CisgICAgICAgICAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBz
bGVlcFVudGlsID0gQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAg
IHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hlZHVsZWRUaW1lUG9pbnQoKTsK
KworICAgICAgICAgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29wTG9jaywgc2xl
ZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2h1dGRvd24gfHwg
bV9wZW5kaW5nVGFza3MgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nOwor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3Rh
dHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAg
ICAgICAgICAgICBtX21haW5Mb29wcy5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgaWYg
KG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9zdG9wQ29uZGl0
aW9uLm5vdGlmeU9uZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fcGVuZGluZ1Rhc2tzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAocnVu
TW9kZSA9PSBSdW5Nb2RlOjpJdGVyYXRlKQorICAgICAgICAgICAgICAgIHN0YXR1c09mVGhpc0xv
b3AgPSBTdGF0dXM6OlN0b3BwaW5nOworCisgICAgICAgICAgICAvLyBDaGVjayBleHBpcmVkIHRp
bWVycy4KKyAgICAgICAgICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgbm93ID0gQ29u
ZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgICAgICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlz
RW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVsZXMuZmlyc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAo
ZWFybGllc3QtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gbm93KQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2lu
KCksIG1fc2NoZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0
U2NoZWR1bGUoKSk7CisgICAgICAgICAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOwor
ICAgICAgICAgICAgICAgIGZpcmVkLmFwcGVuZChlYXJsaWVzdCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAg
ICB3aGlsZSAoIWZpcmVkLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZpcmVkLnRha2VGaXJzdCgpOworICAgICAgICAgICAg
aWYgKHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1
c2UgdGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywK
KyAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAg
ICAgICAgICAgIHNjaGVkdWxlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwo
UnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBhcmUgdGhyZWFk
LXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgb2YgdGhl
IFJ1bkxvb3AncyB0aHJlYWQuCisvLyBGb3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7ZGlzcGF0Y2gs
IGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtRdWV1ZSB0aHJl
YWQncyBSdW5Mb29wCisvLyBmcm9tIHRoZSBjYWxsZXIncyB0aHJlYWQuCisKK3ZvaWQgUnVuTG9v
cDo6c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgaWYg
KG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RhdHVzKiBz
dGF0dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7CisgICAgaWYgKCpzdGF0dXMgIT0gU3RhdHVzOjpT
dG9wcGluZykgeworICAgICAgICAqc3RhdHVzID0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAg
bV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjp3YWtl
VXAoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3JlYWR5
VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBlbmQodGFzayk7
CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5k
KCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0
YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVkdWxl
KGxvY2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVm
UHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworICAgIHdha2VV
cChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBlYXRpbmcgPSBm
YWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3Jl
YXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRlbGF5LmNvdW50
KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAgIHdha2VVcChs
b2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJl
ZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRo
ZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJhc2Ugb3Bl
cmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0IGRvIG5vdCBi
ZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQgbm90IG9wZXJh
dGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhlIFJ1
bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29wOjpUaW1lckJh
c2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1bkxvb3Ap
CisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9vcDo6VGltZXJC
YXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQoreworICAgIHN0
b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNd
IHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBt
X3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30KKwordm9pZCBS
dW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsK
KyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1
bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2s7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1
ZXVlQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVhZDQ5MTI5YTlmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2
ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEg
Uy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qg
a1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBTdHJp
bmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJz
ZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFt
ZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5s
ZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5h
bWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
KyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCku
ZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5M
b29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5y
dW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2Fp
dChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVu
TG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25N
dXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsK
KyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3Jr
UXVldWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBw
cm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3Byb3RlY3QsIGZ1bmN0aW9u
XSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhp
cyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbcHJvdGVjdCwgZnVuY3Rp
b25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dv
cmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBk
M2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9u
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzY2I2YmE2NTMyMmQ2MGY4MTI0
ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0
YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNYWlu
VGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFk
UGxhdGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5U
aHJlYWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxv
b3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4
ZTU2MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFu
bnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVuTG9vcC5oIgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17Ci19Ci0KLVJ1bkxvb3A6On5SdW5Mb29w
KCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQotewotfQotCi12b2lkIFJ1bkxvb3A6OnN0
b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgpCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1
bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsKLX0KLQotUnVuTG9vcDo6VGltZXJC
YXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9X
b3JrUXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBRT1MpCi17Ci19Ci0KLXZvaWQgV29ya1F1
ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0
Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
fQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29u
ZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5
MjMxOWI2ZTFkZTk4N2Y4Y2MwLi4xNjVjYTNjNzE2MTM2ZjBhOTY1ZmVjMjI5YTE4ZDI3YzQ1NWYx
MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0xMSwyNCArMTEsMTkgQEAgV0VC
S0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2
YVNjcmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fRU5EKCkKIAotc2V0KEFMTF9F
VkVOVExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9PUF9UWVBFUworICAgIEN4eDExCiAgICAg
R0xpYgotICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBzZXQoREVG
QVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0
aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VWRU5UTE9P
UF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVF9MT09QX1RZUEUgIkN4
eDExIikKIAotc2V0KEVWRU5UTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVExPT1BfVFlQRX0gQ0FD
SEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2
YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVExPT1BfVFlQRVN9KSIpCitzZXQoRVZFTlRf
TE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVF9MT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVt
ZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUg
b2YgJHtBTExfRVZFTlRfTE9PUF9UWVBFU30pIikKIAogc2V0KEVOQUJMRV9XRUJDT1JFIE9GRikK
IHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5B
QkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPTikKIAogaWYgKFdURl9D
UFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9VRElTODYgMSkKQEAgLTM4LDEwICszMywxMiBAQCBpZiAoRU5BQkxFX1NUQVRJQ19KU0MpCiAg
ICAgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBlbmRpZiAoKQogCi1z
dHJpbmcoVE9MT1dFUiAke0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUp
Ci1pZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKK3N0cmluZyhU
T0xPV0VSICR7RVZFTlRfTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFKQoraWYg
KExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGZpbmRfcGFj
a2FnZShHTElCIDIuMzYgUkVRVUlSRUQgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkKICAgICBTRVRf
QU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JV
SUxEKFdURl9FVkVOVF9MT09QX0dMSUIgMSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChX
VEZfREVGQVVMVF9FVkVOVF9MT09QIDApCiBlbmRpZiAoKQogCiAjIEZyb20gT3B0aW9uc0dUSy5j
bWFrZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDM2ZmE2M2JmMWY3MzUzNTYwNjE3NDlkYjQ5NjcwZGZmOWFmMTM4NGUuLjc5MGUxNzk0Zjk5NzFm
NzRjYTQ5ZGZhZjVjYzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wNC0xMiAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1w
bGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBUZXN0V1RGIHRvIEpTQ09ubHkg
cG9ydCB0byB0ZXN0IFdvcmtRdWV1ZSBhbmQgUnVuTG9vcC4KKyAgICAgICAgUGxhdGZvcm0gc3Bl
Y2lmaWMgb25lcyBsb2NhdGUgdW5kZXIganNjb25seSBkaXJlY3Rvcnkgc2luY2UKKyAgICAgICAg
aXQgaXMgbm90IGBjeHgxMWAgKFNpbmNlIGl0IGluY2x1ZGVzIHRoZSBHTElCIGV2ZW50IGxvb3Ag
Y2FzZSkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1J1bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkv
UGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3Rm
L25vbmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9u
b25lL1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMTEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWls
ZCBNaW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VM
aXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlhZWI4
MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYz
NTlkNDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFr
ZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwg
IkdUSyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRpcmVj
dG9yeShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNU
UkVRVUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAgYWRk
X3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBp
ZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAt
MCwwICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkg
IiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3NldChU
RVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQ
SV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3Nhcnkg
YmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5k
IFdlYktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0byBp
bmNsdWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEphdmFT
Y3JpcHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitpbmNs
dWRlX2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hl
YWRlcnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9P
UF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQor
ICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0ZXN0
X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAK
KykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0
Mjk0Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMyYTJlMGUwZCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5k
ZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNp
ZiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZl
RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFj
M2VhNDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4OWRjMzhhYTIxYWY3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsODQg
QEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3As
IE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZd
IHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAg
ICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1lcikKK3sKKyAg
ICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlz
aGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6
VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIo
Ym9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVk
VGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisg
ICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
dGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAg
IHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRp
bWVyLnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7
CisgICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGlt
ZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9v
bCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGlt
ZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAg
ICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgr
K21fY291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAgICAgICBib29s
JiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIg
dGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7
CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29u
ZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNiYzllMGE5
YjExNmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2FiNGNkYWEyZDk0Mjc0N2E3OTRm
YWVmOGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNs
dWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lm
ICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
RXhwb3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQ
UExFX18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAh
UExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRl
ZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZP
Uk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9f
KSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdlYktpdC9XZWJL
aXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0j
aWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChCVUlMRElO
R19KU0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHku
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4ZjhkZTc5OGU5ZDRiODMwYjczNzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1V
dGlsaXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZFTlRfTE9PUChHTElCKQorI2lu
Y2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lkIHJ1bihi
b29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpIHsKKyNpZiBFVkVOVF9MT09QKEdMSUIp
CisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5Mb29wOjpjdXJyZW50KCkubWFp
bkNvbnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RGOjpSdW5Mb29wOjppdGVyYXRl
KCk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpCit7Cisg
ICAgV1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9q
c2Nvbmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5YjdlZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKQEAgLTAs
MCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIK
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBUZXN0V2Vi
S2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KSA/IEVY
SVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBjNzg5MTM2NDM2MjNmOTcyLi5l
ZWQ0Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3IDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMTIgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIElt
cGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
SlNDT25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIHRoZSB0aGVtaW5nIGNvZGUg
Zm9yIEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276248</attachid>
            <date>2016-04-12 11:30:00 -0700</date>
            <delta_ts>2016-04-12 11:30:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413033009.patch</filename>
            <type>text/plain</type>
            <size>50969</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjU5N2FlODZlMmYyNWQ2NjMyODc1ZWRhNjM0ZGIyMzY3OTg1ZjI4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDE2LTA0LTEyICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9v
cCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIG1pc3NpbmcgUnVuTG9vcCBhbmQgV29ya1F1ZXVlIHBs
YXRmb3JtIGNvZGUgZm9yIEpTQ09ubHkgcG9ydC4KKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9u
IGRvZXMgbm90IHVzZSBwbGF0Zm9ybSBzcGVjaWZpYyB0aGluZ3MuIEluc3RlYWQsIHdlCisgICAg
ICAgIGltcGxlbWVudCB0aGVtIG9uIFdURiBmcmFtZXdvcms7IHVzaW5nIGNvbmRpdGlvbiB2YXJp
YWJsZXMgdG8gY29uc3RydWN0CisgICAgICAgIHRoZSBydW4gbG9vcCBhbmQgdGltZXJzLgorCisg
ICAgICAgIFNpbmNlIHRoZSBmYWxsYmFjayBpcyBpbXBsZW1lbnRlZCwgaXQgaXMgbm90IG5lY2Vz
c2FyeSBmb3IgSlNDT25seSBwb3J0CisgICAgICAgIHRvIGRlcGVuZCBvbiBnbGliJ3MgUnVuTG9v
cCBhYnN0cmFjdGlvbi4gU28gdGhpcyBwYXRjaCByZW1vdmVzIGl0cworICAgICAgICBkZXBlbmRl
bmN5LiBBcyBhIHJlc3VsdCwgbm93LCBKU0NPbmx5IHBvcnQgcmVtb3ZlcyBkZXBlbmRlbmNpZXMg
ZXhjZXB0IGZvciB0aGUgc3lzdGVtIElDVS4KKworICAgICAgICBXZSBjbGVhbiB1cCBldmVudCBs
b29wIGlmZGVmcyBieSBpbnRyb2R1Y2luZyBFVkVOVF9MT09QKCkgV1RGIFBsYXRmb3JtIG1hY3Jv
LgorICAgICAgICBJdHMgRVZFTlRfTE9PUChUWVBFKSBpcyBleGNsdXNpdmUgdG8gZWFjaCBvdGhl
ci4gU28gZnJvbSBub3csIHdlIGRvIG5vdCBuZWVkIHRvIHRha2UgY2FyZQorICAgICAgICBvZiB0
aGUgb3JkZXIgb2YgaWYtZGVmcyBmb3IgdGhlIGV2ZW50IGxvb3BzLiAoRm9yIGV4YW1wbGUsIFVT
RShHTElCKSBzaG91bGQgaGF2ZSBsZWFkIGJlZm9yZQorICAgICAgICBPUyhEQVJXSU4pIGluIFdv
cmtRdWV1ZS5oIGZvciBXZWJLaXRHVEsgb24gRGFyd2luLikKKyAgICAgICAgRVZFTlRfTE9PUCBk
ZXRlcm1pbmF0aW9uIGlzIGRvbmUgaW4gUGxhdGZvcm0uaC4gVGhpcyBmb2xsb3dzIHRoZSBzdHls
ZSBvZiBXVEYgUExBVEZPUk0uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOgorICAgICAgICAqIHd0Zi9SdW5Mb29wLmg6Cisg
ICAgICAgICogd3RmL1dvcmtRdWV1ZS5oOgorICAgICAgICAqIHd0Zi9jeHgxMS9NYWluVGhyZWFk
Q3h4MTEuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9u
ZS5jcHAuCisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOgorICAg
ICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKiB3dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpTY2hlZHVsZWRUYXNrKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpmaXJlZCk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6c2NoZWR1bGVkVGlt
ZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
Ojp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGU6Om9wZXJhdG9yKCkpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmlzQWN0aXZlKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpkZWFjdGl2YXRlKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6On5S
dW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpzdG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpzY2hlZHVsZUFuZFdha2VVcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZl
KToKKyAgICAgICAgKiB3dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6
cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAg
ICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3Jr
UXVldWVHTGliLmNwcDoKKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6Cisg
ICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OlJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9v
cCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29w
Ojp3YWtlVXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRp
bWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRp
bWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rh
cnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1
ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlz
cGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVs
ZXRlZC4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYv
V29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcC4KKyAgICAg
ICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAgICAgIChXVEY6OnNj
aGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAgICAqIHd0Zi9jeHgx
MS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1lUG9pbnQpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OnVwZGF0ZVJlYWR5
VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6
RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1bkxvb3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzdG9wKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpU
aW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6
flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYvY3h4MTEvV29ya1F1
ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFs
aXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAg
KFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVy
KToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAgICAgICAgKiB3dGYv
bm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVu
Y3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9SdW5Mb29w
Tm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnN0b3ApOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvbm9uZS9Xb3Jr
UXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV29y
a1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0wNSAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21waWxlIHRpbWUgZGVm
aW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNhNTYwMTZiZmJlY2Mz
OTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5NmNlYTU5OWRhZGJj
NThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZlcnMgdGhlIGV2ZW50
IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUsIEdUSyBwb3J0IGlu
IE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBFVkVOVF9MT09QIGlz
IEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RG
X0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVS
RSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisjZGVmaW5lIFdURl9E
RUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVMVF9FVkVOVF9MT09Q
CisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIGFic3RyYWN0
aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNlIHRoZSBXaW5kb3dz
IG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICogU28gdGhhdCwgRVZF
TlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICogQW5kIFBMQVRGT1JN
KFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4Y2x1c2l2ZS4gSWYg
dGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUgZmFsc2UuIEFuZCBp
biB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8KKyNkZWZpbmUgV1RG
X0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkKKy8qIE9TWCBhbmQg
SU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICovCisjZGVmaW5lIFdU
Rl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisvKiBFRkwgcG9ydCB1
c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0cmFjdGlvbi4KKyAq
IFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRydWUuCisgKi8KKyNk
ZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQorLyogVXNlIEdMSUIn
cyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQgdXNlcyBpdC4gKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmluZSBXVEZfRVZFTlRf
TE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2gg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFlNDZlMDE5YTI0ZGM3
MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4NzdkYzY1YmNlNDllNWMz
OGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0xLDQgKzEs
NCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCitpZiAo
TE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBF
TkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgICAgICBnbGliL01h
aW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJDQVNFX0VWRU5UTE9P
UF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAgbGlzdChBUFBFTkQg
V1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKLSAgICAgICAgbm9u
ZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorICAgICAg
ICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1bkxvb3BDeHgxMS5j
cHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQogZW5kaWYgKCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVu
TG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQzMjRiODlhN2YuLjFk
NzZiMzJmNmE0OGIwM2E5MGMxMTdkMDg4YmZiY2E1M2E4MDhiODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxvb3BfaAogCisjaW5j
bHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgpAQCAt
MzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkK
KyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPHd0Zi9l
ZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBAQCBjbGFzcyBSdW5M
b29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdha2VVcCgpOwogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKTsKICNlbmRpZgog
Ci0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChHTElCKQog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09Q
KENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpdGVyYXRlKCk7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwogICAgIGNsYXNzIFRp
bWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAgIHB1YmxpYzoKQEAg
LTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lmIFVTRShHTElCKSAm
JiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAgICAgdm9pZCBzZXRQ
cmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAgY2xhc3MgUnVuTG9v
cCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1bkxvb3AmIG1fcnVu
TG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90IElEKTsKICAgICAg
ICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwotI2VsaWYgUExB
VEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAgICAgc3RhdGljIHZv
aWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAgICAgICBSZXRhaW5Q
dHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9STShFRkwpCisjZWxp
ZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJGaXJlZCh2b2lkKiBk
YXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAgIGJvb2wgbV9pc1Jl
cGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgICAg
ICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291
cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9OwogICAgICAgICBzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9OworI2VsaWYgRVZFTlRf
TE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAgICAgICAgUmVmUHRy
PFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAgIH07CiAKQEAgLTE0
NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7
CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgRVZF
TlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVuTG9vcE1lc3NhZ2VX
aW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1bkxvb3BXbmRQcm9j
KEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHduZFByb2MoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOwpAQCAtMTUy
LDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIg
ewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2UqPiBUaW1lck1hcDsK
ICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2Vs
aWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybVdvcmsodm9pZCop
OwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8
Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50IG1fbmVzdGluZ0xl
dmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgTXV0
ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4gbV9waXBlOwogCkBA
IC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0
Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAgICAgc3RhdGljIHZv
aWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsKLSNlbGlmIFVTRShH
TElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBt
X21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+IG1fbWFpbkxvb3Bz
OwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVOVF9MT09QKENYWDEx
KQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOwor
ICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9sZGVyJik7CisgICAg
dm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7
CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRlLAorICAgICAgICBE
cmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIENsZWFyLAor
ICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIE5FVkVSX0lOTElORSB2b2lkIHJ1bkltcGwo
UnVuTW9kZSk7CisgICAgQUxXQVlTX0lOTElORSBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwg
U3RhdHVzJiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAg
ICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25k
aXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3Bz
OworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNr
cyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAw
OWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNlZWMzNGQ4NWNhZDAx
OWZhOTcxMjc1ODBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysr
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYg
T1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogI2lu
Y2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkK
KyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZWxp
ZiBVU0UoR0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxpZiBPUyhXSU5ET1dT
KQorI2VuZGlmCisKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRl
bVdpbi5oPgogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoQ1hY
MTEpCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBAIGNsYXNzIFdvcmtR
dWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywg
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYgUExBVEZP
Uk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVu
dEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVucmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQotICAgIFJ1bkxvb3Am
IHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBPUyhEQVJXSU4p
CisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNo
UXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIEVWRU5UX0xP
T1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29u
c3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04OSw3ICs5
Miw3IEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIg
ewogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFP
Uyk7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9TKFdJTkRPV1MpCisj
aWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNh
bGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3Rh
dGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRp
bWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxi
YWNrKHZvaWQqIGNvbnRleHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVl
IGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJ
TkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7
CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICAgICBS
ZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKEdMSUIpCi0g
ICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2NrIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVu
TG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9jayBtX3Rlcm1p
bmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5M
b29wQ29uZGl0aW9uOwotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4p
CiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBkaXNwYXRjaF9x
dWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxpZiBFVkVOVF9M
T09QKFdJTkRPV1MpCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQ7
CiAKICAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYgKzEyMCwxMyBAQCBj
bGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBI
YXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAg
SEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9P
UChDWFgxMSkKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExv
Y2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBM
b2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgx
MS9NYWluVGhyZWFkQ3h4MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4YjJiYTNjZmIzZWE2
OGFhNGZiNDQ4N2E0OWJlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgx
MS9NYWluVGhyZWFkQ3h4MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgor
CituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkK
K3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3Bh
dGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1
bkxvb3BDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2ZjhkMmExYmY2M2Q5N2ViNzJiZmQ2MzA2OWY1
NDVhNzRlYzBjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxv
b3BDeHgxMS5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
S29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1
bGVkVGFzaz4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1
bGVkVGFzaz4gY3JlYXRlKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJl
cGVhdGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFz
ayhzdGQ6OmZvcndhcmQ8TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2so
TGFtYmRhJiYgbGFtYmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAg
ICA6IG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBt
X2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAg
ICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVh
ZHlUaW1lKCk7CisgICAgfQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAo
IWlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5j
dGlvbigpOworCisgICAgICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlz
QWN0aXZlKCk7CisgICAgfQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hl
ZHVsZWRUaW1lUG9pbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVk
VGltZVBvaW50OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7Cisg
ICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7Cisg
ICAgICAgIGlmICghbV9maXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQor
CisgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCko
Y29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRU
YXNrPiYgcmhzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRU
aW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKwor
ICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNo
cm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxv
Y2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGlu
ZzsKK307CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgp
Cit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9
IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIG1fc3RvcENvbmRpdGlv
bi53YWl0KG1fbG9vcExvY2spOworfQorCitib29sIFJ1bkxvb3A6OnBvcHVsYXRlVGFza3MoUnVu
TW9kZSBydW5Nb2RlLCBTdGF0dXMmIHN0YXR1c09mVGhpc0xvb3AsIERlcXVlPFJlZlB0cjxUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYgZmlyZWRUaW1lcnMpCit7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb29wTG9jayk7CisKKyAgICBpZiAocnVuTW9kZSA9PSBSdW5Nb2RlOjpEcmFpbikg
eworICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVwVW50aWwgPSBDb25k
aXRpb246OkNsb2NrOjp0aW1lX3BvaW50OjptYXgoKTsKKyAgICAgICAgaWYgKCFtX3NjaGVkdWxl
cy5pc0VtcHR5KCkpCisgICAgICAgICAgICBzbGVlcFVudGlsID0gbV9zY2hlZHVsZXMuZmlyc3Qo
KS0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisKKyAgICAgICAgbV9yZWFkeVRvUnVuLndhaXRVbnRp
bChtX2xvb3BMb2NrLCBzbGVlcFVudGlsLCBbJl0geworICAgICAgICAgICAgcmV0dXJuIG1fc2h1
dGRvd24gfHwgbV9wZW5kaW5nVGFza3MgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0
b3BwaW5nOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVzT2ZUaGlzTG9vcCA9
PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAgICAgbV9tYWluTG9vcHMu
cmVtb3ZlTGFzdCgpOworICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIG1fcGVuZGluZ1Rhc2tzID0gZmFsc2U7CisgICAgaWYgKHJ1bk1vZGUgPT0g
UnVuTW9kZTo6SXRlcmF0ZSkKKyAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6U3Rv
cHBpbmc7CisKKyAgICAvLyBDaGVjayBleHBpcmVkIHRpbWVycy4KKyAgICBDb25kaXRpb246OkNs
b2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygpOworICAgIHdoaWxl
ICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVsZXMuZmlyc3QoKTsKKyAgICAgICAgaWYg
KGVhcmxpZXN0LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IG5vdykKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1fc2NoZWR1bGVz
LmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGUoKSk7Cisg
ICAgICAgIG1fc2NoZWR1bGVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgZmlyZWRUaW1lcnMuYXBw
ZW5kKGVhcmxpZXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSdW5M
b29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkKK3sKKyAgICBBU1NFUlQodGhpcyA9PSAmUnVu
TG9vcDo6Y3VycmVudCgpKTsKKworICAgIFN0YXR1cyBzdGF0dXNPZlRoaXNMb29wID0gU3RhdHVz
OjpDbGVhcjsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwor
ICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3ApOworICAgIH0KKwor
ICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBmaXJlZFRpbWVyczsK
KyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoIXBvcHVsYXRlVGFza3MocnVuTW9kZSwg
c3RhdHVzT2ZUaGlzTG9vcCwgZmlyZWRUaW1lcnMpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIC8vIERpc3BhdGNoIHNjaGVkdWxlZCB0aW1lcnMuCisgICAgICAgIHdoaWxlICghZmly
ZWRUaW1lcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPiB0YXNrID0gZmlyZWRUaW1lcnMudGFrZUZpcnN0KCk7CisgICAgICAgICAgICBp
ZiAodGFzay0+ZmlyZWQoKSkgeworICAgICAgICAgICAgICAgIC8vIFJlc2NoZWR1bGUgYmVjYXVz
ZSB0aGUgdGltZXIgcmVxdWlyZXMgcmVwZWF0aW5nLgorICAgICAgICAgICAgICAgIC8vIFNpbmNl
IHdlIHdpbGwgcXVlcnkgdGhlIHRpbWVycycgdGltZSBwb2ludHMgYmVmb3JlIHNsZWVwaW5nLAor
ICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBjYWxsIHdha2VVcCgpIGhlcmUuCisgICAgICAg
ICAgICAgICAgc2NoZWR1bGUodGFzayk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuKCkKK3sKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7Cit9CisKK3ZvaWQg
UnVuTG9vcDo6aXRlcmF0ZSgpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVu
TW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBhcmUgdGhyZWFkLXNh
ZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgb2YgdGhlIFJ1
bkxvb3AncyB0aHJlYWQuCisvLyBGb3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7ZGlzcGF0Y2gsIGRp
c3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtRdWV1ZSB0aHJlYWQn
cyBSdW5Mb29wCisvLyBmcm9tIHRoZSBjYWxsZXIncyB0aHJlYWQuCisKK3ZvaWQgUnVuTG9vcDo6
c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgaWYgKG1f
bWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RhdHVzKiBzdGF0
dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7CisgICAgaWYgKCpzdGF0dXMgIT0gU3RhdHVzOjpTdG9w
cGluZykgeworICAgICAgICAqc3RhdHVzID0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAgbV9y
ZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjp3YWtlVXAo
Y29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9S
dW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9p
ZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBlbmQodGFzayk7Cisg
ICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCks
IFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKK30KKwordm9p
ZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNr
KQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVkdWxlKGxv
Y2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworICAgIHdha2VVcChs
b2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5h
bm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBlYXRpbmcgPSBmYWxz
ZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRl
KFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRlbGF5LmNvdW50KCkg
LyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAgIHdha2VVcChsb2Nr
ZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJlZCBU
aW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRoZXNl
IGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJhc2Ugb3BlcmF0
aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0IGRvIG5vdCBiZWxv
bmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQgbm90IG9wZXJhdGUg
dGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhlIFJ1bkxv
b3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCisg
ICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9vcDo6VGltZXJCYXNl
Ojp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQoreworICAgIHN0b3Ao
KTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3RoaXNdIHsK
KyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAgICBtX3J1
bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30KKwordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxlZFRhc2spIHsKKyAg
ICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2NoZWR1bGVk
VGFzayA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNB
Y3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2s7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVl
Q3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVhZDQ5MTI5YTlmNGUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKQEAgLTAs
MCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYg
PGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zp
c3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZv
cm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sKKyAgICBTdHJpbmcg
dGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZp
bmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9
IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5n
dGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAgIHRocmVhZE5hbWUg
PSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpOworCisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAg
ICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0
YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29w
ID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BD
b25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4o
KTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVS
dW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdCht
X2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6
cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2Vy
KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9v
cCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1p
bmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRl
eCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAg
ICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVl
dWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90
ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3Byb3RlY3QsIGZ1bmN0aW9uXSB7
CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7
CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbcHJvdGVjdCwgZnVuY3Rpb25d
IHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBkM2Ix
YTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8
Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUv
TWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2
OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50
aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJNYWluVGhy
ZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxh
dGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJl
YWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BO
b25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4ZTU2
MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVs
ZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVuTG9vcC5oIgotCi1uYW1lc3BhY2Ug
V1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17Ci19Ci0KLVJ1bkxvb3A6On5SdW5Mb29wKCkK
LXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQotewotfQotCi12b2lkIFJ1bkxvb3A6OnN0b3Ao
KQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxv
b3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsKLX0KLQotUnVuTG9vcDo6VGltZXJCYXNl
Ojp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNl
OjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3Jr
UXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBRT1MpCi17Ci19Ci0KLXZvaWQgV29ya1F1ZXVl
OjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2go
c3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5MjMx
OWI2ZTFkZTk4N2Y4Y2MwLi4xNjVjYTNjNzE2MTM2ZjBhOTY1ZmVjMjI5YTE4ZDI3YzQ1NWYxMThm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0xMSwyNCArMTEsMTkgQEAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2YVNj
cmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fRU5EKCkKIAotc2V0KEFMTF9FVkVO
VExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9PUF9UWVBFUworICAgIEN4eDExCiAgICAgR0xp
YgotICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBzZXQoREVGQVVM
VF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0aXZl
IE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9U
WVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVF9MT09QX1RZUEUgIkN4eDEx
IikKIAotc2V0KEVWRU5UTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVExPT1BfVFlQRX0gQ0FDSEUg
U1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNj
cmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVExPT1BfVFlQRVN9KSIpCitzZXQoRVZFTlRfTE9P
UF9UWVBFICR7REVGQVVMVF9FVkVOVF9MT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50
YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2Yg
JHtBTExfRVZFTlRfTE9PUF9UWVBFU30pIikKIAogc2V0KEVOQUJMRV9XRUJDT1JFIE9GRikKIHNl
dChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5BQkxF
X0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPTikKIAogaWYgKFdURl9DUFVf
WDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9V
RElTODYgMSkKQEAgLTM4LDEwICszMywxMiBAQCBpZiAoRU5BQkxFX1NUQVRJQ19KU0MpCiAgICAg
c2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBlbmRpZiAoKQogCi1zdHJp
bmcoVE9MT1dFUiAke0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUpCi1p
ZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKK3N0cmluZyhUT0xP
V0VSICR7RVZFTlRfTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFKQoraWYgKExP
V0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGZpbmRfcGFja2Fn
ZShHTElCIDIuMzYgUkVRVUlSRUQgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkKICAgICBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFdURl9FVkVOVF9MT09QX0dMSUIgMSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZf
REVGQVVMVF9FVkVOVF9MT09QIDApCiBlbmRpZiAoKQogCiAjIEZyb20gT3B0aW9uc0dUSy5jbWFr
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM2
ZmE2M2JmMWY3MzUzNTYwNjE3NDlkYjQ5NjcwZGZmOWFmMTM4NGUuLjc5MGUxNzk0Zjk5NzFmNzRj
YTQ5ZGZhZjVjYzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVt
ZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBUZXN0V1RGIHRvIEpTQ09ubHkgcG9y
dCB0byB0ZXN0IFdvcmtRdWV1ZSBhbmQgUnVuTG9vcC4KKyAgICAgICAgUGxhdGZvcm0gc3BlY2lm
aWMgb25lcyBsb2NhdGUgdW5kZXIganNjb25seSBkaXJlY3Rvcnkgc2luY2UKKyAgICAgICAgaXQg
aXMgbm90IGBjeHgxMWAgKFNpbmNlIGl0IGluY2x1ZGVzIHRoZSBHTElCIGV2ZW50IGxvb3AgY2Fz
ZSkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1
bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxh
dGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25v
bmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25l
L1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMTEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBN
aW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlhZWI4MzNj
Y2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYzNTlk
NDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxp
c3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkdU
SyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRpcmVjdG9y
eShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNUUkVR
VUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAgYWRkX3N1
YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAo
V0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMCww
ICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3NldChURVNU
V0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQSV9S
VU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3NhcnkgYmVj
YXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdl
YktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0byBpbmNs
dWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEphdmFTY3Jp
cHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitpbmNsdWRl
X2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRl
cnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9U
WVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorICAg
ICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0ZXN0X21h
aW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAKKykK
KworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
anNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0
Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMyYTJlMGUwZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYg
UGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZiAh
ZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUg
PHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2Vh
NDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4OWRjMzhhYTIxYWY3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsODQgQEAK
ICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3AsIE5l
c3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisK
KyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsK
KyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RG
aW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1lcikKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGlt
ZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9v
bCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGlt
ZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAg
ICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdGVz
dEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsK
KyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVy
LnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cisg
ICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0g
ZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8
RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYg
dGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+
KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAg
ICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21f
Y291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAgICAgICBib29sJiBt
X3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIgdGlt
ZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7Cisg
ICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmln
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNiYzllMGE5YjEx
NmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2FiNGNkYWEyZDk0Mjc0N2E3OTRmYWVm
OGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRl
ICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhw
b3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmICFk
ZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhw
b3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExF
X18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAhUExB
VEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0o
V0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkg
JiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQy
X0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYg
IVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChCVUlMRElOR19K
U0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4ZjhkZTc5OGU5ZDRiODMwYjczNzMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGls
aXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZFTlRfTE9PUChHTElCKQorI2luY2x1
ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lkIHJ1bihib29s
KiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpIHsKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisg
ICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5Mb29wOjpjdXJyZW50KCkubWFpbkNv
bnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RGOjpSdW5Mb29wOjppdGVyYXRlKCk7
CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpCit7CisgICAg
V1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nv
bmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5YjdlZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVybiBUZXN0V2ViS2l0
QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBhcmd2KSA/IEVYSVRf
U1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBjNzg5MTM2NDM2MjNmOTcyLi5lZWQ0
Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxl
bWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIHRoZSB0aGVtaW5nIGNvZGUgZm9y
IEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276249</attachid>
            <date>2016-04-12 11:30:56 -0700</date>
            <delta_ts>2016-04-12 11:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413033105.patch</filename>
            <type>text/plain</type>
            <size>48359</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjFkNzZiMzJmNmE0OGIwM2E5MGMxMTdkMDg4YmZiY2E1M2E4MDhiODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9s
ZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRl
LAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAg
ICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIE5FVkVSX0lOTElORSB2
b2lkIHJ1bkltcGwoUnVuTW9kZSk7CisgICAgQUxXQVlTX0lOTElORSBib29sIHBvcHVsYXRlVGFz
a3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
az4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1
bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+
IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXgg
ZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNl
ZWMzNGQ4NWNhZDAxOWZhOTcxMjc1ODBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwy
NSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1Ao
REFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVl
RWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxp
ZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVW
RU5UX0xPT1AoQ1hYMTEpCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBA
IGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3Qg
aXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwog
Ci0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2
b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQot
ICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxp
ZiBPUyhEQVJXSU4pCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1
ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNl
bGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9T
KFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExC
QUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJl
ZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0
LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29y
a1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xh
c3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3Rh
dGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9p
ZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09Q
KEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYg
VVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBM
b2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9p
bml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAg
TG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRf
TE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAg
ICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisj
ZWxpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVh
ZFJlZ2lzdGVyZWQ7CiAKICAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYg
KzEyMCwxMyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRj
aGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5k
bGVzOwogCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikg
fHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhy
ZWFkOworICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENv
bmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVu
TG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENv
bmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4
YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5y
dT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWlu
VGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE2ZjhkMmExYmY2M2Q5N2Vi
NzJiZmQ2MzA2OWY1NDVhNzRlYzBjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFz
ayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBS
ZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVy
dmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVw
ZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNj
aGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkK
KyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRl
cnZhbCkpKQorICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAg
ICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgfQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgewor
ICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgbV9mdW5jdGlvbigpOworCisgICAgICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAg
ICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAgfQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2NoZWR1bGVkVGltZVBvaW50OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1l
KCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9j
azo6bm93KCk7CisgICAgICAgIGlmICghbV9maXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2
YWw7CisgICAgfQorCisgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0
cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhz
LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZl
OworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247
CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsK
KyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sg
bV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29w
Ojp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAg
bV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIG1f
c3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExvY2spOworfQorCitib29sIFJ1bkxvb3A6OnBvcHVs
YXRlVGFza3MoUnVuTW9kZSBydW5Nb2RlLCBTdGF0dXMmIHN0YXR1c09mVGhpc0xvb3AsIERlcXVl
PFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYgZmlyZWRUaW1lcnMpCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisKKyAgICBpZiAocnVuTW9kZSA9PSBSdW5N
b2RlOjpEcmFpbikgeworICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVw
VW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50OjptYXgoKTsKKyAgICAgICAgaWYg
KCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBzbGVlcFVudGlsID0gbV9zY2hl
ZHVsZXMuZmlyc3QoKS0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisKKyAgICAgICAgbV9yZWFkeVRv
UnVuLndhaXRVbnRpbChtX2xvb3BMb2NrLCBzbGVlcFVudGlsLCBbJl0geworICAgICAgICAgICAg
cmV0dXJuIG1fc2h1dGRvd24gfHwgbV9wZW5kaW5nVGFza3MgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9
PSBTdGF0dXM6OlN0b3BwaW5nOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVz
T2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAgICAg
bV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fcGVuZGluZ1Rhc2tzID0gZmFsc2U7CisgICAgaWYg
KHJ1bk1vZGUgPT0gUnVuTW9kZTo6SXRlcmF0ZSkKKyAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6U3RvcHBpbmc7CisKKyAgICAvLyBDaGVjayBleHBpcmVkIHRpbWVycy4KKyAgICBD
b25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygp
OworICAgIHdoaWxlICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVsZXMuZmlyc3QoKTsK
KyAgICAgICAgaWYgKGVhcmxpZXN0LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IG5vdykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCks
IG1fc2NoZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2No
ZWR1bGUoKSk7CisgICAgICAgIG1fc2NoZWR1bGVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgZmly
ZWRUaW1lcnMuYXBwZW5kKGVhcmxpZXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBSdW5Mb29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkKK3sKKyAgICBBU1NFUlQo
dGhpcyA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIFN0YXR1cyBzdGF0dXNPZlRoaXNM
b29wID0gU3RhdHVzOjpDbGVhcjsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9vcExvY2spOworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3Ap
OworICAgIH0KKworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBm
aXJlZFRpbWVyczsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoIXBvcHVsYXRlVGFz
a3MocnVuTW9kZSwgc3RhdHVzT2ZUaGlzTG9vcCwgZmlyZWRUaW1lcnMpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIC8vIERpc3BhdGNoIHNjaGVkdWxlZCB0aW1lcnMuCisgICAgICAg
IHdoaWxlICghZmlyZWRUaW1lcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrID0gZmlyZWRUaW1lcnMudGFrZUZpcnN0KCk7Cisg
ICAgICAgICAgICBpZiAodGFzay0+ZmlyZWQoKSkgeworICAgICAgICAgICAgICAgIC8vIFJlc2No
ZWR1bGUgYmVjYXVzZSB0aGUgdGltZXIgcmVxdWlyZXMgcmVwZWF0aW5nLgorICAgICAgICAgICAg
ICAgIC8vIFNpbmNlIHdlIHdpbGwgcXVlcnkgdGhlIHRpbWVycycgdGltZSBwb2ludHMgYmVmb3Jl
IHNsZWVwaW5nLAorICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBjYWxsIHdha2VVcCgpIGhl
cmUuCisgICAgICAgICAgICAgICAgc2NoZWR1bGUodGFzayk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6
cnVuKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7
Cit9CisKK3ZvaWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LnJ1bkltcGwoUnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBh
cmUgdGhyZWFkLXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIG91dHNp
ZGUgb2YgdGhlIFJ1bkxvb3AncyB0aHJlYWQuCisvLyBGb3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7
ZGlzcGF0Y2gsIGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtR
dWV1ZSB0aHJlYWQncyBSdW5Mb29wCisvLyBmcm9tIHRoZSBjYWxsZXIncyB0aHJlYWQuCisKK3Zv
aWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7
CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U3RhdHVzKiBzdGF0dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7CisgICAgaWYgKCpzdGF0dXMgIT0g
U3RhdHVzOjpTdG9wcGluZykgeworICAgICAgICAqc3RhdHVzID0gU3RhdHVzOjpTdG9wcGluZzsK
KyAgICAgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIH0KK30KKwordm9pZCBSdW5M
b29wOjp3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAg
ICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkK
K3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2Vy
KTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBl
bmQodGFzayk7CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hl
ZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgp
KTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrPiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAg
IHNjaGVkdWxlKGxvY2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRX
YWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOwor
ICAgIHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rp
b24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBl
YXRpbmcgPSBmYWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzazo6Y3JlYXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRl
bGF5LmNvdW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAg
IHdha2VVcChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUg
cmVnaXN0ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQg
bWFuYWdlIHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1l
ckJhc2Ugb3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0
IGRvIG5vdCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQg
bm90IG9wZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUg
dG8gdGhlIFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29w
OjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29w
KHJ1bkxvb3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9v
cDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVu
TG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQor
eworICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVh
dGUoW3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5n
KTsKKyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxl
ZFRhc2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAg
IG1fc2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2s7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4
MTEvV29ya1F1ZXVlQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVhZDQ5MTI5YTlm
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgx
MS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFu
dGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rvcm9sYSBNb2Jp
bGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtR
dWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0YXRpYyBjb25z
dCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2b2lkIFdvcmtR
dWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUykKK3sK
KyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHRocmVhZE5h
bWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkKKyAgICAgICAg
dGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAgICBpZiAodGhy
ZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQpCisgICAgICAg
IHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGlt
aXQpOworCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlv
bk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0aHJlYWROYW1l
LmFzY2lpKCkuZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAg
ICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAgIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICAgICAgbV9y
dW5Mb29wLT5ydW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29w
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi5ub3Rp
ZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworfQorCit2b2lk
IFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7CisgICAgICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAg
aWYgKG1fcnVuTG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7CisgICAgICAg
ICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0ZVJ1bkxvb3BD
b25kaXRpb25NdXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93b3JrUXVldWVU
aHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFkKTsKKyAgICAg
ICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29y
a1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2goW3Byb3RlY3Qs
IGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHBy
b3RlY3QodGhpcyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5LCBbcHJvdGVj
dCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQwOGQxMGI2ZDM5
MjdiNjhmNDBkM2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAwNDI4MjMyYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9n
bGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9NYWlu
VGhyZWFkTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzY2I2YmE2NTMy
MmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJNYWluVGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIGluaXRpYWxpemVN
YWluVGhyZWFkUGxhdGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlv
bnNPbk1haW5UaHJlYWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBiZWEwMTJmYTU5
ZmE5NTNmZTc4ZTU2MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRv
a2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVuTG9vcC5oIgot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17Ci19Ci0KLVJ1bkxvb3A6
On5SdW5Mb29wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQotewotfQotCi12b2lkIFJ1
bkxvb3A6OnN0b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgpCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1
bkxvb3AmIHJ1bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsKLX0KLQotUnVuTG9v
cDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0KLXZvaWQgUnVu
TG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19Ci0KLXZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6Omlz
QWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2MDgzZjYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlh
bmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lkIFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBRT1MpCi17Ci19Ci0KLXZv
aWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQotCi12b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6
bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2NzdlZTdlMmM2
NmVjYmE4ZDk5MjMxOWI2ZTFkZTk4N2Y4Y2MwLi4xNjVjYTNjNzE2MTM2ZjBhOTY1ZmVjMjI5YTE4
ZDI3YzQ1NWYxMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0xMSwyNCArMTEs
MTkgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldoZXRoZXIgdG8g
YnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fRU5EKCkKIAot
c2V0KEFMTF9FVkVOVExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9PUF9UWVBFUworICAgIEN4
eDExCiAgICAgR0xpYgotICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAg
ICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RP
OiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxU
X0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVF9MT09Q
X1RZUEUgIkN4eDExIikKIAotc2V0KEVWRU5UTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVExPT1Bf
VFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVz
ZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVExPT1BfVFlQRVN9KSIpCitz
ZXQoRVZFTlRfTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVF9MT09QX1RZUEV9IENBQ0hFIFNUUklO
RyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRD
b3JlIChvbmUgb2YgJHtBTExfRVZFTlRfTE9PUF9UWVBFU30pIikKIAogc2V0KEVOQUJMRV9XRUJD
T1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VCS0lUMiBPRkYp
Ci1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNUUyBPTikKIAog
aWYgKFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9VRElTODYgMSkKQEAgLTM4LDEwICszMywxMiBAQCBpZiAoRU5BQkxFX1NUQVRJ
Q19KU0MpCiAgICAgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBlbmRp
ZiAoKQogCi1zdHJpbmcoVE9MT1dFUiAke0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRM
T09QX1RZUEUpCi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikK
K3N0cmluZyhUT0xPV0VSICR7RVZFTlRfTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRfTE9PUF9U
WVBFKQoraWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAg
IGZpbmRfcGFja2FnZShHTElCIDIuMzYgUkVRVUlSRUQgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkK
ICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFdURl9FVkVOVF9MT09QX0dMSUIgMSkKKyAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChXVEZfREVGQVVMVF9FVkVOVF9MT09QIDApCiBlbmRpZiAoKQogCiAjIEZyb20gT3B0
aW9uc0dUSy5jbWFrZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDM2ZmE2M2JmMWY3MzUzNTYwNjE3NDlkYjQ5NjcwZGZmOWFmMTM4NGUuLjc5MGUx
Nzk0Zjk5NzFmNzRjYTQ5ZGZhZjVjYzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNi0wNC0x
MiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlND
T25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBUZXN0V1RGIHRv
IEpTQ09ubHkgcG9ydCB0byB0ZXN0IFdvcmtRdWV1ZSBhbmQgUnVuTG9vcC4KKyAgICAgICAgUGxh
dGZvcm0gc3BlY2lmaWMgb25lcyBsb2NhdGUgdW5kZXIganNjb25seSBkaXJlY3Rvcnkgc2luY2UK
KyAgICAgICAgaXQgaXMgbm90IGBjeHgxMWAgKFNpbmNlIGl0IGluY2x1ZGVzIHRoZSBHTElCIGV2
ZW50IGxvb3AgY2FzZSkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6CisKIDIwMTYt
MDQtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBCdWlsZCBNaW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2Ri
ODY1NTlhZWI4MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYx
YTAxMGMwNzYzNTlkNDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9U
b29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIg
U1RSRVFVQUwgIkdUSyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRk
X3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7
UE9SVH0iIFNUUkVRVUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAg
ICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRp
ZiAoKQogCiBpZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtSlNDT25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZQpAQCAtMCwwICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9E
SVJFQ1RPUlkgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJ
IikKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVT
VFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBu
ZWNlc3NhcnkgYmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBX
ZWJLaXQgYW5kIFdlYktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFn
IG5vdCB0byBpbmNsdWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYg
YW5kIEphdmFTY3JpcHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9f
KQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9y
d2FyZGluZ0hlYWRlcnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0Vf
RVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVz
KFNZU1RFTQorICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisK
K3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkv
bWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQx
Yjg5ZWM0Nzk0Mjk0Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMyYTJlMGUwZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAg
QEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGll
c19oCiAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0
L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRp
ZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5
NDEzZTA4NzFjM2VhNDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4OWRjMzhhYTIx
YWY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQs
NCArNTQsODQgQEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAKK1RFU1QoV1RG
X1J1bkxvb3AsIE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5S
dW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goWyZdIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0p
OworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisKKyAgICBVdGls
OjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9uZVNob3RUaW1l
cikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wg
dGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMg
UnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJp
dmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1l
cjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6
ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3AoKTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAg
fTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7Cisg
ICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RG
aW5pc2hlZCk7CisgICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRpbmdUaW1lcikK
K3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVz
dEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBwdWJsaWMgUnVu
TG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBEZXJpdmVk
VGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29wOjpUaW1lcjxE
ZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRUaW1lcjo6Zmly
ZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICgrK21fY291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAgICBtX3Rlc3RGaW5pc2hl
ZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsgMCB9OworICAg
ICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJp
dmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRSZXBlYXRp
bmcoMC4wMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29uZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1
ODNiYzllMGE5YjExNmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2FiNGNkYWEyZDk0
Mjc0N2E3OTRmYWVmOGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29u
ZmlnLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAg
QEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jv
cy5oPgorI2lmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9f
KSAmJiBfX0FQUExFX18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+
CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdU
SykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAm
JiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdf
V0VCS0lUMl9fKSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdl
YktpdC9XZWJLaXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNl
bmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19KU0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNK
U0NPbmx5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGll
c0pTQ09ubHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4ZjhkZTc5OGU5ZDRi
ODMwYjczNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkv
UGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZFTlRfTE9PUChH
TElCKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Cisj
ZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2
b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpIHsKKyNpZiBFVkVOVF9M
T09QKEdMSUIpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5Mb29wOjpjdXJy
ZW50KCkubWFpbkNvbnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RGOjpSdW5Mb29w
OjppdGVyYXRlKCk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29u
ZHMpCit7CisgICAgV1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVXRp
bAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9qc2Nvbmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21h
aW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJlNjljNzE5Yjdl
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5j
cHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXN0c0NvbnRy
b2xsZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIHJldHVy
biBUZXN0V2ViS2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1bihhcmdjLCBh
cmd2KSA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdpdCBhL0NoYW5n
ZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBjNzg5MTM2NDM2
MjNmOTcyLi5lZWQ0Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3IDEwMDY0NAot
LS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMDQt
MTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pT
Q09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zSlNDT25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIHRoZSB0aGVt
aW5nIGNvZGUgZm9yIEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276251</attachid>
            <date>2016-04-12 11:39:12 -0700</date>
            <delta_ts>2016-04-12 11:42:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413033921.patch</filename>
            <type>text/plain</type>
            <size>48388</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjFkNzZiMzJmNmE0OGIwM2E5MGMxMTdkMDg4YmZiY2E1M2E4MDhiODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9s
ZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRl
LAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAg
ICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIE5FVkVSX0lOTElORSB2
b2lkIHJ1bkltcGwoUnVuTW9kZSk7CisgICAgQUxXQVlTX0lOTElORSBib29sIHBvcHVsYXRlVGFz
a3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
az4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1
bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+
IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXgg
ZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNl
ZWMzNGQ4NWNhZDAxOWZhOTcxMjc1ODBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29y
a1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwy
NSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Zy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1Ao
REFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVl
RWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxp
ZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVW
RU5UX0xPT1AoQ1hYMTEpCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1
ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBA
IGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3Qg
aXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwog
Ci0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0
ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2
b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQot
ICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxp
ZiBPUyhEQVJXSU4pCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1
ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNl
bGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBy
dW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5h
bWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBwbGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9T
KFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExC
QUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJl
ZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0
LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29y
a1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xh
c3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3Rh
dGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9p
ZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09Q
KEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hRdWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYg
VVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBM
b2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9p
bml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKLSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAg
TG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRf
TE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAg
ICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisj
ZWxpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVh
ZFJlZ2lzdGVyZWQ7CiAKICAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYg
KzEyMCwxMyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRj
aGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5k
bGVzOwogCiAgICAgSEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikg
fHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhy
ZWFkOworICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENv
bmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVu
TG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENv
bmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4eDExL01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4
YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5y
dT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWlu
VGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEvUnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBhODZjMWM0ZWIwMmI4ZGQ5
YmVkMmRhOWM1MDZjZDNkOTg1NmY0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKQEAgLTAsMCArMSwyOTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFz
ayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBS
ZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVy
dmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVw
ZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNj
aGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkK
KyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRl
cnZhbCkpKQorICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAg
ICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgfQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgewor
ICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgbV9mdW5jdGlvbigpOworCisgICAgICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAg
ICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAgfQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fc2NoZWR1bGVkVGltZVBvaW50OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1l
KCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9j
azo6bm93KCk7CisgICAgICAgIGlmICghbV9maXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2
YWw7CisgICAgfQorCisgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0
cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhz
LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZl
OworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247
CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsK
KyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sg
bV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wg
bV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29w
Ojp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAg
bV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIG1f
c3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExvY2spOworfQorCitib29sIFJ1bkxvb3A6OnBvcHVs
YXRlVGFza3MoUnVuTW9kZSBydW5Nb2RlLCBTdGF0dXMmIHN0YXR1c09mVGhpc0xvb3AsIERlcXVl
PFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYgZmlyZWRUaW1lcnMpCit7CisgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisKKyAgICBpZiAocnVuTW9kZSA9PSBSdW5N
b2RlOjpEcmFpbikgeworICAgICAgICBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IHNsZWVw
VW50aWwgPSBDb25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50OjptYXgoKTsKKyAgICAgICAgaWYg
KCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBzbGVlcFVudGlsID0gbV9zY2hl
ZHVsZXMuZmlyc3QoKS0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisKKyAgICAgICAgbV9yZWFkeVRv
UnVuLndhaXRVbnRpbChtX2xvb3BMb2NrLCBzbGVlcFVudGlsLCBbJl0geworICAgICAgICAgICAg
cmV0dXJuIG1fc2h1dGRvd24gfHwgbV9wZW5kaW5nVGFza3MgfHwgc3RhdHVzT2ZUaGlzTG9vcCA9
PSBTdGF0dXM6OlN0b3BwaW5nOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoc3RhdHVz
T2ZUaGlzTG9vcCA9PSBTdGF0dXM6OlN0b3BwaW5nIHx8IG1fc2h1dGRvd24pIHsKKyAgICAgICAg
bV9tYWluTG9vcHMucmVtb3ZlTGFzdCgpOworICAgICAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgbV9zdG9wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fcGVuZGluZ1Rhc2tzID0gZmFsc2U7CisgICAgaWYg
KHJ1bk1vZGUgPT0gUnVuTW9kZTo6SXRlcmF0ZSkKKyAgICAgICAgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6U3RvcHBpbmc7CisKKyAgICAvLyBDaGVjayBleHBpcmVkIHRpbWVycy4KKyAgICBD
b25kaXRpb246OkNsb2NrOjp0aW1lX3BvaW50IG5vdyA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygp
OworICAgIHdoaWxlICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IGVhcmxpZXN0ID0gbV9zY2hlZHVsZXMuZmlyc3QoKTsK
KyAgICAgICAgaWYgKGVhcmxpZXN0LT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IG5vdykKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBzdGQ6OnBvcF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCks
IG1fc2NoZWR1bGVzLmVuZCgpLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2No
ZWR1bGUoKSk7CisgICAgICAgIG1fc2NoZWR1bGVzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgZmly
ZWRUaW1lcnMuYXBwZW5kKGVhcmxpZXN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBSdW5Mb29wOjpydW5JbXBsKFJ1bk1vZGUgcnVuTW9kZSkKK3sKKyAgICBBU1NFUlQo
dGhpcyA9PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKKworICAgIFN0YXR1cyBzdGF0dXNPZlRoaXNM
b29wID0gU3RhdHVzOjpDbGVhcjsKKyAgICB7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9vcExvY2spOworICAgICAgICBtX21haW5Mb29wcy5hcHBlbmQoJnN0YXR1c09mVGhpc0xvb3Ap
OworICAgIH0KKworICAgIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiBm
aXJlZFRpbWVyczsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBpZiAoIXBvcHVsYXRlVGFz
a3MocnVuTW9kZSwgc3RhdHVzT2ZUaGlzTG9vcCwgZmlyZWRUaW1lcnMpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIC8vIERpc3BhdGNoIHNjaGVkdWxlZCB0aW1lcnMuCisgICAgICAg
IHdoaWxlICghZmlyZWRUaW1lcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBSZWZQdHI8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiB0YXNrID0gZmlyZWRUaW1lcnMudGFrZUZpcnN0KCk7Cisg
ICAgICAgICAgICBpZiAodGFzay0+ZmlyZWQoKSkgeworICAgICAgICAgICAgICAgIC8vIFJlc2No
ZWR1bGUgYmVjYXVzZSB0aGUgdGltZXIgcmVxdWlyZXMgcmVwZWF0aW5nLgorICAgICAgICAgICAg
ICAgIC8vIFNpbmNlIHdlIHdpbGwgcXVlcnkgdGhlIHRpbWVycycgdGltZSBwb2ludHMgYmVmb3Jl
IHNsZWVwaW5nLAorICAgICAgICAgICAgICAgIC8vIHdlIGRvIG5vdCBjYWxsIHdha2VVcCgpIGhl
cmUuCisgICAgICAgICAgICAgICAgc2NoZWR1bGUodGFzayk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcGVyZm9ybVdvcmsoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6
cnVuKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChSdW5Nb2RlOjpEcmFpbik7
Cit9CisKK3ZvaWQgUnVuTG9vcDo6aXRlcmF0ZSgpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LnJ1bkltcGwoUnVuTW9kZTo6SXRlcmF0ZSk7Cit9CisKKy8vIFJ1bkxvb3Agb3BlcmF0aW9ucyBh
cmUgdGhyZWFkLXNhZmUuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIG91dHNp
ZGUgb2YgdGhlIFJ1bkxvb3AncyB0aHJlYWQuCisvLyBGb3IgZXhhbXBsZSwgV29ya1F1ZXVlOjp7
ZGlzcGF0Y2gsIGRpc3BhdGNoQWZ0ZXJ9IGNhbGwgdGhlIG9wZXJhdGlvbnMgb2YgdGhlIFdvcmtR
dWV1ZSB0aHJlYWQncyBSdW5Mb29wCisvLyBmcm9tIHRoZSBjYWxsZXIncyB0aHJlYWQuCisKK3Zv
aWQgUnVuTG9vcDo6c3RvcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7
CisgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U3RhdHVzKiBzdGF0dXMgPSBtX21haW5Mb29wcy5sYXN0KCk7CisgICAgaWYgKCpzdGF0dXMgIT0g
U3RhdHVzOjpTdG9wcGluZykgeworICAgICAgICAqc3RhdHVzID0gU3RhdHVzOjpTdG9wcGluZzsK
KyAgICAgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIH0KK30KKwordm9pZCBSdW5M
b29wOjp3YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgaWYgKG1fbWFpbkxvb3BzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAg
ICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkK
K3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2Vy
KTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBl
bmQodGFzayk7CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hl
ZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgp
KTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrPiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAg
IHNjaGVkdWxlKGxvY2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRX
YWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOwor
ICAgIHdha2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rp
b24pCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBl
YXRpbmcgPSBmYWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzazo6Y3JlYXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRl
bGF5LmNvdW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAg
IHdha2VVcChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUg
cmVnaXN0ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQg
bWFuYWdlIHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1l
ckJhc2Ugb3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0
IGRvIG5vdCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQg
bm90IG9wZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUg
dG8gdGhlIFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29w
OjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29w
KHJ1bkxvb3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9v
cDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVu
TG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQor
eworICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVh
dGUoW3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5n
KTsKKyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxl
ZFRhc2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAg
IG1fc2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgICAgIG1fcnVuTG9vcC53YWtlVXAoKTsK
KyAgICB9Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiZjA5ZGZj
Y2RmY2Q4ZTJlMjk3MzhiYTM0NWFkNDkxMjlhOWY0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2N4eDExL1dvcmtRdWV1ZUN4eDExLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgu
cnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29w
eXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IHNpemVfdCBrVmlzdWFsU3R1ZGlvVGhyZWFk
TmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29u
c3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQoreworICAgIFN0cmluZyB0aHJlYWROYW1lKG5hbWUp
OworICAgIHNpemVfdCBzaXplID0gdGhyZWFkTmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlm
IChzaXplICE9IG5vdEZvdW5kKQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFtZS5zdWJz
dHJpbmcoc2l6ZSArIDEpOworICAgIGlmICh0aHJlYWROYW1lLmxlbmd0aCgpID4ga1Zpc3VhbFN0
dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUucmln
aHQoa1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCk7CisKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgIG1fd29ya1F1ZXVlVGhy
ZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUuYXNjaWkoKS5kYXRhKCksIFt0aGlzXSB7Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3Vy
cmVudCgpOworICAgICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKKyAgICAgICAgfQorICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOworICAgICAgICB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25N
dXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgICAgICAgICAgbV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9CisgICAgfSk7
CisgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRh
dGUoKQoreworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5M
b29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICBpZiAobV9ydW5Mb29wKSB7CisgICAgICAgICAg
ICBtX3J1bkxvb3AtPnN0b3AoKTsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRp
dGlvbi53YWl0KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgeworICAgICAgICBkZXRhY2hUaHJl
YWQobV93b3JrUXVldWVUaHJlYWQpOworICAgICAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IDA7Cisg
ICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CisgICAg
bV9ydW5Mb29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rp
b24oKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpj
aHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24p
Cit7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3At
PmRpc3BhdGNoQWZ0ZXIoZGVsYXksIFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5j
dGlvbigpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9Xb3Jr
UXVldWVHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKaW5k
ZXggNjMyZmY0MDUxNDkzYTZhZDA4ZDEwYjZkMzkyN2I2OGY0MGQzYjFhMS4uZTIxOTU4MWIwODkw
OGM2NTc5NGY3NGQxYjBmZmYzMDA0MjgyMzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Z2xpYi9Xb3JrUXVldWVHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1
ZUdMaWIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51
bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCi17Ci19Ci0K
LXZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci19Ci0KLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwIGIvU291cmNl
L1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9S
dW5Mb29wTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJSdW5Mb29wLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29w
OjpSdW5Mb29wKCkKLXsKLX0KLQotUnVuTG9vcDo6flJ1bkxvb3AoKQotewotfQotCi12b2lkIFJ1
bkxvb3A6OnJ1bigpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6c3RvcCgpCi17Ci19Ci0KLXZvaWQg
UnVuTG9vcDo6d2FrZVVwKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUnVu
TG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKLSAgICA6IG1fcnVu
TG9vcChydW5Mb29wKQotewotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQot
ewotICAgIHN0b3AoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJs
ZSwgYm9vbCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQotewotfQot
Ci1ib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVl
dWVOb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2ZDY3NThkNzk2N2Iz
NjU2NzQ1Y2Y4MzdlNzMwZTEwNjYwODNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBL
b25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V29ya1F1ZXVlLmgiCi0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3Qg
Y2hhciosIFR5cGUsIFFPUykKLXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxp
ZGF0ZSgpCi17Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVl
OjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NP
bmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRlOTg3ZjhjYzAu
LjE2NWNhM2M3MTYxMzZmMGE5NjVmZWMyMjlhMThkMjdjNDU1ZjExOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9u
c0pTQ09ubHkuY21ha2UKQEAgLTExLDI0ICsxMSwxOSBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfU1RBVElDX0pTQyAiV2hldGhlciB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBhIHN0
YQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQgUFVCTElD
IE9OKQogV0VCS0lUX09QVElPTl9FTkQoKQogCi1zZXQoQUxMX0VWRU5UTE9PUF9UWVBFUworc2V0
KEFMTF9FVkVOVF9MT09QX1RZUEVTCisgICAgQ3h4MTEKICAgICBHTGliCi0gICAgTm9uZQogKQog
Ci1pZiAoVU5JWCBBTkQgTk9UIEFQUExFKQotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBF
ICJHTGliIikKLWVsc2UgKCkKLSAgICAjIFRPRE86IFVzZSBuYXRpdmUgTWFjIGFuZCBXaW4gaW1w
bGVtZW50YXRpb25zCi0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIk5vbmUiKQotZW5k
aWYgKCkKK3NldChERUZBVUxUX0VWRU5UX0xPT1BfVFlQRSAiQ3h4MTEiKQogCi1zZXQoRVZFTlRM
T09QX1RZUEUgJHtERUZBVUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVu
dGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9m
ICR7QUxMX0VWRU5UTE9PUF9UWVBFU30pIikKK3NldChFVkVOVF9MT09QX1RZUEUgJHtERUZBVUxU
X0VWRU5UX0xPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBs
b29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVF9MT09Q
X1RZUEVTfSkiKQogCiBzZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQg
T0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikK
K3NldChFTkFCTEVfQVBJX1RFU1RTIE9OKQogCiBpZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9Y
ODZfNjQpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VESVM4NiAxKQpAQCAtMzgs
MTAgKzMzLDEyIEBAIGlmIChFTkFCTEVfU1RBVElDX0pTQykKICAgICBzZXQoSmF2YVNjcmlwdENv
cmVfTElCUkFSWV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKLXN0cmluZyhUT0xPV0VSICR7RVZF
TlRMT09QX1RZUEV9IExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSkKLWlmIChMT1dFUkNBU0VfRVZF
TlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQorc3RyaW5nKFRPTE9XRVIgJHtFVkVOVF9MT09Q
X1RZUEV9IExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xP
T1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFV
SVJFRCBDT01QT05FTlRTIGdpbyBnb2JqZWN0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxE
KFVTRV9HTElCIDEpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0VWRU5UX0xPT1Bf
R0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VWRU5UX0xP
T1AgMCkKIGVuZGlmICgpCiAKICMgRnJvbSBPcHRpb25zR1RLLmNtYWtlCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzZmYTYzYmYxZjczNTM1NjA2
MTc0OWRiNDk2NzBkZmY5YWYxMzg0ZS4uNzkwZTE3OTRmOTk3MWY3NGNhNDlkZmFmNWNjNjY5MTdi
OTZlYWEzNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTEyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQg
cmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3QgV29ya1F1
ZXVlIGFuZCBSdW5Mb29wLgorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxvY2F0ZSB1
bmRlciBqc2Nvbmx5IGRpcmVjdG9yeSBzaW5jZQorICAgICAgICBpdCBpcyBub3QgYGN4eDExYCAo
U2luY2UgaXQgaW5jbHVkZXMgdGhlIEdMSUIgZXZlbnQgbG9vcCBjYXNlKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5
LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVz
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZp
Zy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pT
Q09ubHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5j
cHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9t
YWluLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5j
cHAuCisgICAgICAgIChtYWluKToKKwogMjAxNi0wNC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIE1pbmlCcm93c2VyIHdpdGgg
Q01ha2Ugb24gTWFjCmRpZmYgLS1naXQgYS9Ub29scy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NN
YWtlTGlzdHMudHh0CmluZGV4IGZhZThiNjFjZGI4NjU1OWFlYjgzM2NjZmRhNWI2MmU1MGNiOWJi
MWUuLjAzNjRhYTk1OWYxYmM3NmJjOTM2MDc2ZjFhMDEwYzA3NjM1OWQ0M2MgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CkBAIC0yNyw2
ICsyNywxMCBAQCBlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiR1RLIikKICAgICBpZiAoRU5B
QkxFX01JTklCUk9XU0VSKQogICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL2d0
aykKICAgICBlbmRpZiAoKQorZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkpTQ09ubHkiKQor
ICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KFRlc3RX
ZWJLaXRBUEkpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChXSU4zMikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdlM2NjNzVlMTBj
OWRlOWIwOWUyYTdkYTE5YzM0MjQ2ZmFiMTgwZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMjcgQEAKK3NldChU
RVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09V
VFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkiKQorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElN
RV9PVVRQVVRfRElSRUNUT1JZX1dURiAiJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJ
UkVDVE9SWX0vV1RGIikKKworIyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEpTQ09ubHkgcG9y
dCBkb2VzIG5vdCBzdXBwb3J0IFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4KKyMgVG8gYnVp
bGQgVGVzdFdURiwgd2UgbmVlZCB0aGlzIGZsYWcgbm90IHRvIGluY2x1ZGUgV2ViS2l0IHJlbGF0
ZWQgaGVhZGVycyBleGNlcHQKKyMgZm9yIFdURiBhbmQgSmF2YVNjcmlwdENvcmUuCithZGRfZGVm
aW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX18pCisKK2luY2x1ZGVfZGlyZWN0b3JpZXMoCisg
ICAgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycworICAgICIke1dURl9E
SVJ9L2ljdSIKKykKKworaWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImds
aWIiKQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNCisgICAgICAgICR7R0xJQl9JTkNM
VURFX0RJUlN9CisgICAgKQorZW5kaWYgKCkKKworc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCisgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9tYWluLmNwcAorKQorCitsaXN0KEFQUEVORCBU
ZXN0V1RGX1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9qc2Nvbmx5L1BsYXRmb3Jt
VXRpbGl0aWVzSlNDT25seS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
UnVuTG9vcC5jcHAKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1V
dGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRl
eCA3NTgzZTRlZTA3N2UzZTg4M2U2YTU3ZGI1ZDFiODllYzQ3OTQyOTRiLi45YWEzZjMwNzFkMjFh
OWNiMDYxNjUxNzQ1MjgwYTAwMzJhMmUwZTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVV0aWxpdGllcy5oCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBQbGF0Zm9ybVV0aWxpdGll
c19oCiAjZGVmaW5lIFBsYXRmb3JtVXRpbGl0aWVzX2gKIAorI2lmICFkZWZpbmVkKEJVSUxESU5H
X0pTQ09OTFlfXykKICNpbmNsdWRlIDxXZWJLaXQvV0tOYXRpdmVFdmVudC5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS1JldGFpblB0ci5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYg
VVNFKEZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3Bw
CmluZGV4IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0MTNlMDg3MWMzZWE0MDY4MTcuLjQ1ZGUwODU1
YWU5OTVjYWUwZTM2ODJjNzhlZjg5ZGMzOGFhMjFhZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0ICs1NCw4NCBAQAogICAgIFV0aWw6OnJ1bigm
dGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZfUnVuTG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sK
KyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZp
bmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7Cisg
ICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICAgICAgdGVz
dEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZp
bmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKwor
VEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAg
IGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQp
CisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0
RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVl
OworICAgICAgICAgICAgc3RvcCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVk
VGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRPbmVTaG90KDAu
MSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKK1RFU1Qo
V1RGX1J1bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVN
YWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNs
YXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisg
ICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVu
dCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0Rmlu
aXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lk
IGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA9PSAxMCkgewor
ICAgICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBz
dG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgICAgIGJvb2wmIG1fdGVzdEZpbmlzaGVkOwor
ICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1lcih0ZXN0RmluaXNoZWQp
OworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGluZygwLjAxKTsKKyAgICAgICAgVXRpbDo6cnVu
KCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2
OTI2MzAxNi4uYjNjMDVjYzc3YWI0Y2RhYTJkOTQyNzQ3YTc5NGZhZWY4ZWE2YWYzYSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgi
CiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdf
SlNDT05MWV9fKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNl
bmRpZgogCiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCkBAIC02Myw3ICs2
NSw3IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmICFQ
TEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJL
SVQyX18pKQorI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZP
Uk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKSAmJiAhZGVmaW5lZChCVUlM
RElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgogI2VuZGlmCiAK
QEAgLTg5LDYgKzkxLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQor
I2lmICFQTEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKICNkZWZp
bmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVl
MjRiODk2Yjc5OWJlOTNhZDhmOGRlNzk4ZTlkNGI4MzBiNzM3MwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3Bw
CkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CisKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2lu
Y2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3ZvaWQgcnVuKGJvb2wqIGRvbmUpCit7CisgICAg
d2hpbGUgKCEqZG9uZSkgeworI2lmIEVWRU5UX0xPT1AoR0xJQikKKyAgICAgICAgZ19tYWluX2Nv
bnRleHRfaXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJlbnQoKS5tYWluQ29udGV4dCgpLCBmYWxzZSk7
CisjZWxzZQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsKKyNlbmRpZgorICAgIH0K
K30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6OnNsZWVwKHNlY29u
ZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRi
NzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJv
bGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9G
QUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGM3MDRj
N2RhYzkzMTgxZDQxYjE0YzhjMGM3ODkxMzY0MzYyM2Y5NzIuLmVlZDRjY2VhM2U2MzVkOWM3Yjlj
ZmQzMDA2MjdmZGM2ZTFiYzUxODcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5k
IHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgorCiAy
MDE2LTA0LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBSZXdvcmsgdGhlIHRoZW1pbmcgY29kZSBmb3IgR1RLKyAzLjIwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276253</attachid>
            <date>2016-04-12 11:42:54 -0700</date>
            <delta_ts>2016-04-12 11:47:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413034303.patch</filename>
            <type>text/plain</type>
            <size>48368</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjI3YTE3MjE1ODRjY2VkZDVmOWNkOWE3YjdhOWNkODkzMWQ0YmU0NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9s
ZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRl
LAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAg
ICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIHZvaWQgcnVuSW1wbChS
dW5Nb2RlKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8
UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExv
Y2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29u
ZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9z
Y2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9z
aHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5
ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNlZWMzNGQ4NWNhZDAxOWZhOTcxMjc1ODBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAh
UExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09Q
KEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNp
ZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlm
CiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoQ1hYMTEpCisjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVW
RU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQotICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBPUyhEQVJXSU4pCisjZWxpZiBFVkVOVF9M
T09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZF
TlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1f
cnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdv
cmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9TKFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChX
SU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJB
Q0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
OwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hR
dWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRp
ZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsK
LSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwot
I2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZv
aWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0
Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAg
ICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQ7CiAKICAgICBNdXRleCBt
X3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYgKzEyMCwxMyBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwg
UmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJR
dWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBU
aHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0aWFsaXpl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BD
b25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4eDEx
L01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJl
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3Rh
bnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
YWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJv
bU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEv
UnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTgxZjNmM2Q2ZDQxOGJhMTFmNDNjZmZmMzA5MDY3ZjdhYTkxZmY5MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKQEAg
LTAsMCArMSwyOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2th
dmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgi
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxl
ZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRl
KExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRh
LCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24o
c3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChz
dGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6
OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAsIG1faXNSZXBl
YXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAg
fQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAg
ICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAg
fQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBvaW50OworICAg
IH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1
bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgIGlmICghbV9m
aXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hl
ZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAgc3RydWN0IEVh
cmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNj
aGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJo
cy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBp
c0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9j
ayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3Rp
dmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7
CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBt
X2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxv
b3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9y
ZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExv
Y2spOworfQorCitpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1vZGUgcnVu
TW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
bG9vcExvY2spOworCisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsKKyAgICAg
ICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGlsID0gQ29uZGl0aW9uOjpD
bG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0
eSgpKQorICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCktPnNjaGVk
dWxlZFRpbWVQb2ludCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29w
TG9jaywgc2xlZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NodXRkb3duIHx8
IG1fcGVuZGluZ1Rhc2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZzsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVz
OjpTdG9wcGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFpbkxvb3BzLnJlbW92ZUxh
c3QoKTsKKyAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1f
c3RvcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBtX3BlbmRpbmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6
Okl0ZXJhdGUpCisgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3BwaW5nOwor
CisgICAgLy8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICB3aGlsZSAoIW1fc2No
ZWR1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRU
YXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgIGlmIChlYXJsaWVz
dC0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwg
VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworICAgICAgICBt
X3NjaGVkdWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGltZXJzLmFwcGVuZChlYXJs
aWVzdCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVu
SW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxvb3A6OmN1
cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6Q2xlYXI7
CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICAgICAg
bV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisKKyAgICBEZXF1
ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7CisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1bk1vZGUsIHN0YXR1c09m
VGhpc0xvb3AsIGZpcmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVkVGltZXJz
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
az4gdGFzayA9IGZpcmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2st
PmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRp
bWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxs
IHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAgICAgICAg
ICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAgICAgICAg
IHNjaGVkdWxlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBlcmZv
cm1Xb3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOworfQorCit2b2lkIFJ1bkxvb3A6
Oml0ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6Okl0
ZXJhdGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZlLiBUaGVz
ZSBvcGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5Mb29wJ3Mg
dGhyZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNwYXRjaEFm
dGVyfSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3MgUnVuTG9v
cAorLy8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQor
eworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21haW5Mb29w
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVzID0gbV9t
YWluTG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBpbmcpIHsK
KyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVhZHlUb1J1
bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0IExv
Y2tIb2xkZXImKQoreworICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3BlbmRpbmdUYXNrcyA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlm
eU9uZSgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7CisgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxl
ZFRhc2s+IHRhc2spCit7CisgICAgbV9zY2hlZHVsZXMuYXBwZW5kKHRhc2spOworICAgIHN0ZDo6
cHVzaF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1fc2NoZWR1bGVzLmVuZCgpLCBUaW1lckJh
c2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGUoKSk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6c2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRh
c2spOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJh
c2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29w
TG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCB0YXNrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsK
K30KKwordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25k
cyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAg
c2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbZnVuY3Rp
b25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9LCBkZWxheS5jb3VudCgpIC8gMTAwMC4w
IC8gMTAwMC4wIC8gMTAwMC4wLCByZXBlYXRpbmcpKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30K
KworLy8gU2luY2UgUnVuTG9vcCBkb2VzIG5vdCBvd24gdGhlIHJlZ2lzdGVyZWQgVGltZXJCYXNl
LAorLy8gVGltZXJCYXNlIGFuZCBpdHMgb3duZXIgc2hvdWxkIG1hbmFnZSB0aGVzZSBsaWZldGlt
ZS4KKy8vCisvLyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgVGltZXJCYXNlIG9wZXJhdGlvbnMgYXJl
IG5vdCB0aHJlYWQtc2FmZS4KKy8vIFNvIHRocmVhZHMgdGhhdCBkbyBub3QgYmVsb25nIHRvIHRo
ZSBTY2hlZHVsZWRUYXNrJ3MgUnVuTG9vcAorLy8gc2hvdWxkIG5vdCBvcGVyYXRlIHRoZSBSdW5M
b29wOjpUaW1lckJhc2UuCisvLyBUaGlzIGlzIHRoZSBzYW1lIHRvIHRoZSBSdW5Mb29wV2luLCB3
aGljaCBpcyBSdW5Mb29wIGZvciBXaW5kb3dzLgorUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UoUnVuTG9vcCYgcnVuTG9vcCkKKyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAgICwgbV9z
Y2hlZHVsZWRUYXNrKG51bGxwdHIpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVy
QmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rh
cnQoZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKK3sKKyAgICBzdG9wKCk7CisgICAg
bV9zY2hlZHVsZWRUYXNrID0gU2NoZWR1bGVkVGFzazo6Y3JlYXRlKFt0aGlzXSB7CisgICAgICAg
IGZpcmVkKCk7CisgICAgfSwgaW50ZXJ2YWwsIHJlcGVhdGluZyk7CisgICAgbV9ydW5Mb29wLnNj
aGVkdWxlQW5kV2FrZVVwKG1fc2NoZWR1bGVkVGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBpZiAobV9zY2hlZHVsZWRUYXNrKSB7CisgICAgICAgIG1f
c2NoZWR1bGVkVGFzay0+ZGVhY3RpdmF0ZSgpOworICAgICAgICBtX3NjaGVkdWxlZFRhc2sgPSBu
dWxscHRyOworICAgICAgICBtX3J1bkxvb3Aud2FrZVVwKCk7CisgICAgfQorfQorCitib29sIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVk
dWxlZFRhc2s7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvV29y
a1F1ZXVlQ3h4MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVh
ZDQ5MTI5YTlmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3Jr
UXVldWVDeHgxMS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0
YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2
b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUs
IFFPUykKK3sKKyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qgc2l6ZSA9
IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RGb3VuZCkK
KyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAxKTsKKyAg
ICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQp
CisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVkaW9UaHJl
YWROYW1lTGltaXQpOworCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9v
cENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRocmVhZCh0
aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAgICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwor
ICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAgICAgICAg
IG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAg
ICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICAgICAg
bV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlhbGl6ZVJ1
bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOwor
fQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
KyAgICAgICAgaWYgKG1fcnVuTG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5zdG9wKCk7
CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rlcm1pbmF0
ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobV93
b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVlVGhyZWFk
KTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9pZCBXb3Jr
UXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBS
ZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2go
W3Byb3RlY3QsIGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBk
ZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3Jr
UXVldWU+IHByb3RlY3QodGhpcyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVyKGRlbGF5
LCBbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5M2E2YWQw
OGQxMGI2ZDM5MjdiNjhmNDBkM2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIwZmZmMzAw
NDI4MjMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dURi93dGYv
bm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
Y2I2YmE2NTMyMmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhy
ZWFkTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12b2lkIGlu
aXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxlRGlzcGF0
Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9v
cE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZlNTk1YzBi
ZWEwMTJmYTU5ZmE5NTNmZTc4ZTU2MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25z
dGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUnVu
TG9vcC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17Ci19Ci0K
LVJ1bkxvb3A6On5SdW5Mb29wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQotewotfQot
Ci12b2lkIFJ1bkxvb3A6OnN0b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VVcCgpCi17
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6VGlt
ZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKLXsKLX0K
LQotUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7Ci19Ci0K
LXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19Ci0KLXZv
aWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29wOjpUaW1l
ckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVO
b25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTczMGUxMDY2
MDgzZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxh
bm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgotCi12b2lk
IFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBRT1MpCi17
Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQotCi12b2lk
IFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlND
T25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRleCA0ZDU2
NzdlZTdlMmM2NmVjYmE4ZDk5MjMxOWI2ZTFkZTk4N2Y4Y2MwLi4xNjVjYTNjNzE2MTM2ZjBhOTY1
ZmVjMjI5YTE4ZDI3YzQ1NWYxMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pT
Q09ubHkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCkBAIC0x
MSwyNCArMTEsMTkgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19KU0MgIldo
ZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05f
RU5EKCkKIAotc2V0KEFMTF9FVkVOVExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9PUF9UWVBF
UworICAgIEN4eDExCiAgICAgR0xpYgotICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5EIE5PVCBB
UFBMRSkKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0g
ICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNl
dChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9F
VkVOVF9MT09QX1RZUEUgIkN4eDExIikKIAotc2V0KEVWRU5UTE9PUF9UWVBFICR7REVGQVVMVF9F
VkVOVExPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29w
IHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVExPT1BfVFlQ
RVN9KSIpCitzZXQoRVZFTlRfTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVF9MT09QX1RZUEV9IENB
Q0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2VkIGluIEph
dmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRfTE9PUF9UWVBFU30pIikKIAogc2V0KEVO
QUJMRV9XRUJDT1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFCTEVfV0VC
S0lUMiBPRkYpCi1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQSV9URVNU
UyBPTikKIAogaWYgKFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNFVF9BTkRf
RVhQT1NFX1RPX0JVSUxEKFVTRV9VRElTODYgMSkKQEAgLTM4LDEwICszMywxMiBAQCBpZiAoRU5B
QkxFX1NUQVRJQ19KU0MpCiAgICAgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTVEFU
SUMpCiBlbmRpZiAoKQogCi1zdHJpbmcoVE9MT1dFUiAke0VWRU5UTE9PUF9UWVBFfSBMT1dFUkNB
U0VfRVZFTlRMT09QX1RZUEUpCi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFM
ICJnbGliIikKK3N0cmluZyhUT0xPV0VSICR7RVZFTlRfTE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZF
TlRfTE9PUF9UWVBFKQoraWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImds
aWIiKQogICAgIGZpbmRfcGFja2FnZShHTElCIDIuMzYgUkVRVUlSRUQgQ09NUE9ORU5UUyBnaW8g
Z29iamVjdCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR0xJQiAxKQorICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9FVkVOVF9MT09QX0dMSUIgMSkKKyAgICBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChXVEZfREVGQVVMVF9FVkVOVF9MT09QIDApCiBlbmRpZiAoKQogCiAj
IEZyb20gT3B0aW9uc0dUSy5jbWFrZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDM2ZmE2M2JmMWY3MzUzNTYwNjE3NDlkYjQ5NjcwZGZmOWFmMTM4
NGUuLjc5MGUxNzk0Zjk5NzFmNzRjYTQ5ZGZhZjVjYzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAg
ICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVu
Y3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcw
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBU
ZXN0V1RGIHRvIEpTQ09ubHkgcG9ydCB0byB0ZXN0IFdvcmtRdWV1ZSBhbmQgUnVuTG9vcC4KKyAg
ICAgICAgUGxhdGZvcm0gc3BlY2lmaWMgb25lcyBsb2NhdGUgdW5kZXIganNjb25seSBkaXJlY3Rv
cnkgc2luY2UKKyAgICAgICAgaXQgaXMgbm90IGBjeHgxMWAgKFNpbmNlIGl0IGluY2x1ZGVzIHRo
ZSBHTElCIGV2ZW50IGxvb3AgY2FzZSkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQuCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVw
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAobWFpbik6
CisKIDIwMTYtMDQtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBCdWlsZCBNaW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBm
YWU4YjYxY2RiODY1NTlhZWI4MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZi
YzkzNjA3NmYxYTAxMGMwNzYzNTlkNDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4
dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgi
JHtQT1JUfSIgU1RSRVFVQUwgIkdUSyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAg
ICAgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vs
c2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9U
RVNUUykKKyAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlm
ICgpCiBlbmRpZiAoKQogCiBpZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1K
U0NPbmx5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0
NmZhYjE4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
SlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1F
X09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0
V2ViS2l0QVBJIikKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9X
VEYgIiR7VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMg
VGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBX
ZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQg
dGhpcyBmbGFnIG5vdCB0byBpbmNsdWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0Cisj
IGZvciBXVEYgYW5kIEphdmFTY3JpcHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdf
SlNDT05MWV9fKQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VT
X0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChM
T1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2Rp
cmVjdG9yaWVzKFNZU1RFTQorICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2Vu
ZGlmICgpCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L2pzY29ubHkvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3Bw
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNl
NmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4MGEwMDMy
YTJlMGUwZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGll
cy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYs
OCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9y
bVV0aWxpdGllc19oCiAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIu
aD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3
OWE0NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgyYzc4ZWY4
OWRjMzhhYTIxYWY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
dW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNw
cApAQCAtNTQsNCArNTQsODQgQEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CiAK
K1RFU1QoV1RGX1J1bkxvb3AsIE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Cisg
ICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfSk7CisK
KyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIE9u
ZVNob3RUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKwor
ICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIg
OiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAg
ICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5M
b29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2
ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hl
ZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0b3Ao
KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNo
ZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5p
c2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBVdGlsOjpy
dW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBSZXBlYXRp
bmdUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAg
IGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGltZXIgOiBw
dWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgorICAgICAg
ICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBSdW5Mb29w
OjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRlcml2ZWRU
aW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5pc2hlZCkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICgrK21fY291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAgICBtX3Rl
c3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2NvdW50IHsg
MCB9OworICAgICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAg
ICAgICBEZXJpdmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3Rh
cnRSZXBlYXRpbmcoMC4wMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29uZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmlu
ZGV4IDJhNjI1ODNiYzllMGE5YjExNmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1Y2M3N2Fi
NGNkYWEyZDk0Mjc0N2E3OTRmYWVmOGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29uZmlnLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcs
OCArMjcsMTAgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4
cG9ydE1hY3Jvcy5oPgorI2lmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRlZmluZWQo
X19BUFBMRV9fKSAmJiBfX0FQUExFX18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5jbHVkZSA8
c3RkaW50Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBM
QVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAhUExBVEZP
Uk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQo
QlVJTERJTkdfV0VCS0lUMl9fKSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2IEBACiAj
ZW5kaWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0oSU9TKSAm
JiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19TUEkgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1V
dGlsaXRpZXNKU0NPbmx5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9y
bVV0aWxpdGllc0pTQ09ubHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkzYWQ4Zjhk
ZTc5OGU5ZDRiODMwYjczNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisjaWYgRVZF
TlRfTE9PUChHTElCKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVm
UHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNwYWNlIFV0
aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUpIHsKKyNp
ZiBFVkVOVF9MT09QKEdMSUIpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihSdW5M
b29wOjpjdXJyZW50KCkubWFpbkNvbnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAgICAgV1RG
OjpSdW5Mb29wOjppdGVyYXRlKCk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91
YmxlIHNlY29uZHMpCit7CisgICAgV1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9q
c2Nvbmx5L21haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlmMThiMDJl
NjljNzE5YjdlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29u
bHkvbWFpbi5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJU
ZXN0c0NvbnRyb2xsZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorewor
ICAgIHJldHVybiBUZXN0V2ViS2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJ1
bihhcmdjLCBhcmd2KSA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIxNGM4YzBj
Nzg5MTM2NDM2MjNmOTcyLi5lZWQ0Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUxYmM1MTg3
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRl
bmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3Jr
IHRoZSB0aGVtaW5nIGNvZGUgZm9yIEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276254</attachid>
            <date>2016-04-12 11:47:07 -0700</date>
            <delta_ts>2016-04-12 11:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413034716.patch</filename>
            <type>text/plain</type>
            <size>48488</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjI3YTE3MjE1ODRjY2VkZDVmOWNkOWE3YjdhOWNkODkzMWQ0YmU0NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9s
ZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRl
LAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAg
ICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIHZvaWQgcnVuSW1wbChS
dW5Nb2RlKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8
UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExv
Y2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29u
ZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9z
Y2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9z
aHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5
ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNlZWMzNGQ4NWNhZDAxOWZhOTcxMjc1ODBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAh
UExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09Q
KEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNp
ZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlm
CiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoQ1hYMTEpCisjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVW
RU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQotICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBPUyhEQVJXSU4pCisjZWxpZiBFVkVOVF9M
T09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZF
TlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1f
cnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdv
cmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9TKFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChX
SU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJB
Q0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
OwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hR
dWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRp
ZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsK
LSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwot
I2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZv
aWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0
Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAg
ICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQ7CiAKICAgICBNdXRleCBt
X3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYgKzEyMCwxMyBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwg
UmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJR
dWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBU
aHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0aWFsaXpl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BD
b25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4eDEx
L01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJl
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3Rh
bnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
YWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJv
bU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEv
UnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTU5OTZhOGNkNzE2ZTZmMTA2MjBkYzExZDNlMGFkMTczOWNjYjQ5MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKQEAg
LTAsMCArMSwyOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2th
dmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgi
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxl
ZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRl
KExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRh
LCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24o
c3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChz
dGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6
OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAsIG1faXNSZXBl
YXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAg
fQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAg
ICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAg
fQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBvaW50OworICAg
IH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1
bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgIGlmICghbV9m
aXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hl
ZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAgc3RydWN0IEVh
cmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNj
aGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJo
cy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBp
c0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9j
ayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3Rp
dmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7
CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBt
X2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxv
b3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9y
ZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworCisgICAgLy8gSGVyZSBpcyBydW5uaW5nIG1haW4gbG9v
cHMuIFdhaXQgdW50aWwgYWxsIHRoZSBtYWluIGxvb3BzIGFyZSBkZXN0cm95ZWQuCisgICAgaWYg
KCFtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1f
bG9vcExvY2spOworfQorCitpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1v
ZGUgcnVuTW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9vcExvY2spOworCisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsK
KyAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGlsID0gQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9zY2hlZHVsZXMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCkt
PnNjaGVkdWxlZFRpbWVQb2ludCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwo
bV9sb29wTG9jaywgc2xlZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NodXRk
b3duIHx8IG1fcGVuZGluZ1Rhc2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9w
cGluZzsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0g
U3RhdHVzOjpTdG9wcGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFpbkxvb3BzLnJl
bW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIG1fc3RvcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBtX3BlbmRpbmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5Nb2RlID09IFJ1
bk1vZGU6Okl0ZXJhdGUpCisgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3Bw
aW5nOworCisgICAgLy8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0aW9uOjpDbG9j
azo6dGltZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICB3aGlsZSAo
IW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgIGlmIChl
YXJsaWVzdC0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5l
bmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworICAg
ICAgICBtX3NjaGVkdWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGltZXJzLmFwcGVu
ZChlYXJsaWVzdCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxv
b3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6
Q2xlYXI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAg
ICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisKKyAg
ICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1bk1vZGUsIHN0
YXR1c09mVGhpc0xvb3AsIGZpcmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVk
VGltZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4gdGFzayA9IGZpcmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYg
KHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2Ug
dGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3
ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAg
ICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAg
ICAgICAgIHNjaGVkdWxlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHBlcmZvcm1Xb3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOworfQorCit2b2lkIFJ1
bkxvb3A6Oml0ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1v
ZGU6Okl0ZXJhdGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZl
LiBUaGVzZSBvcGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5M
b29wJ3MgdGhyZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNw
YXRjaEFmdGVyfSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3Mg
UnVuTG9vcAorLy8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCit2b2lkIFJ1bkxvb3A6OnN0
b3AoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21h
aW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVz
ID0gbV9tYWluTG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBp
bmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVh
ZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNv
bnN0IExvY2tIb2xkZXImKQoreworICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3BlbmRpbmdUYXNrcyA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVu
Lm5vdGlmeU9uZSgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKK3ZvaWQg
UnVuTG9vcDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgbV9zY2hlZHVsZXMuYXBwZW5kKHRhc2spOworICAg
IHN0ZDo6cHVzaF9oZWFwKG1fc2NoZWR1bGVzLmJlZ2luKCksIG1fc2NoZWR1bGVzLmVuZCgpLCBU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGUoKSk7Cit9CisKK3ZvaWQg
UnVuTG9vcDo6c2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykK
K3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2Nr
ZXIsIHRhc2spOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCB0YXNrKTsKKyAgICB3YWtlVXAobG9j
a2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7
CisgICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShb
ZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9LCBkZWxheS5jb3VudCgpIC8g
MTAwMC4wIC8gMTAwMC4wIC8gMTAwMC4wLCByZXBlYXRpbmcpKTsKKyAgICB3YWtlVXAobG9ja2Vy
KTsKK30KKworLy8gU2luY2UgUnVuTG9vcCBkb2VzIG5vdCBvd24gdGhlIHJlZ2lzdGVyZWQgVGlt
ZXJCYXNlLAorLy8gVGltZXJCYXNlIGFuZCBpdHMgb3duZXIgc2hvdWxkIG1hbmFnZSB0aGVzZSBs
aWZldGltZS4KKy8vCisvLyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgVGltZXJCYXNlIG9wZXJhdGlv
bnMgYXJlIG5vdCB0aHJlYWQtc2FmZS4KKy8vIFNvIHRocmVhZHMgdGhhdCBkbyBub3QgYmVsb25n
IHRvIHRoZSBTY2hlZHVsZWRUYXNrJ3MgUnVuTG9vcAorLy8gc2hvdWxkIG5vdCBvcGVyYXRlIHRo
ZSBSdW5Mb29wOjpUaW1lckJhc2UuCisvLyBUaGlzIGlzIHRoZSBzYW1lIHRvIHRoZSBSdW5Mb29w
V2luLCB3aGljaCBpcyBSdW5Mb29wIGZvciBXaW5kb3dzLgorUnVuTG9vcDo6VGltZXJCYXNlOjpU
aW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKKyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorICAg
ICwgbV9zY2hlZHVsZWRUYXNrKG51bGxwdHIpCit7Cit9CisKK1J1bkxvb3A6OlRpbWVyQmFzZTo6
flRpbWVyQmFzZSgpCit7CisgICAgc3RvcCgpOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQoZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKK3sKKyAgICBzdG9wKCk7
CisgICAgbV9zY2hlZHVsZWRUYXNrID0gU2NoZWR1bGVkVGFzazo6Y3JlYXRlKFt0aGlzXSB7Cisg
ICAgICAgIGZpcmVkKCk7CisgICAgfSwgaW50ZXJ2YWwsIHJlcGVhdGluZyk7CisgICAgbV9ydW5M
b29wLnNjaGVkdWxlQW5kV2FrZVVwKG1fc2NoZWR1bGVkVGFzayk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKK3sKKyAgICBpZiAobV9zY2hlZHVsZWRUYXNrKSB7CisgICAg
ICAgIG1fc2NoZWR1bGVkVGFzay0+ZGVhY3RpdmF0ZSgpOworICAgICAgICBtX3NjaGVkdWxlZFRh
c2sgPSBudWxscHRyOworICAgICAgICBtX3J1bkxvb3Aud2FrZVVwKCk7CisgICAgfQorfQorCiti
b29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3NjaGVkdWxlZFRhc2s7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4
MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4
YmEzNDVhZDQ5MTI5YTlmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgx
MS9Xb3JrUXVldWVDeHgxMS5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAx
MCBNb3Rvcm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMx
OworCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUs
IFR5cGUsIFFPUykKK3sKKyAgICBTdHJpbmcgdGhyZWFkTmFtZShuYW1lKTsKKyAgICBzaXplX3Qg
c2l6ZSA9IHRocmVhZE5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKKyAgICBpZiAoc2l6ZSAhPSBub3RG
b3VuZCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUuc3Vic3RyaW5nKHNpemUgKyAx
KTsKKyAgICBpZiAodGhyZWFkTmFtZS5sZW5ndGgoKSA+IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1l
TGltaXQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnJpZ2h0KGtWaXN1YWxTdHVk
aW9UaHJlYWROYW1lTGltaXQpOworCisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXpl
UnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IGNyZWF0ZVRo
cmVhZCh0aHJlYWROYW1lLmFzY2lpKCkuZGF0YSgpLCBbdGhpc10geworICAgICAgICB7CisgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0
ZXgpOworICAgICAgICAgICAgbV9ydW5Mb29wID0gJlJ1bkxvb3A6OmN1cnJlbnQoKTsKKyAgICAg
ICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAg
IH0KKyAgICAgICAgbV9ydW5Mb29wLT5ydW4oKTsKKyAgICAgICAgeworICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAg
ICAgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9v
cENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0
ZXgpOworfQorCit2b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKK3sKKyAgICB7
CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKKyAgICAgICAgaWYgKG1fcnVuTG9vcCkgeworICAgICAgICAgICAgbV9ydW5Mb29wLT5z
dG9wKCk7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ud2FpdChtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAobV93b3JrUXVldWVUaHJlYWQpIHsKKyAgICAgICAgZGV0YWNoVGhyZWFkKG1fd29ya1F1ZXVl
VGhyZWFkKTsKKyAgICAgICAgbV93b3JrUXVldWVUaHJlYWQgPSAwOworICAgIH0KK30KKwordm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sK
KyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlz
cGF0Y2goW3Byb3RlY3QsIGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7
Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vj
b25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0
cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaEFmdGVy
KGRlbGF5LCBbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCmluZGV4IDYzMmZmNDA1MTQ5
M2E2YWQwOGQxMGI2ZDM5MjdiNjhmNDBkM2IxYTEuLmUyMTk1ODFiMDg5MDhjNjU3OTRmNzRkMWIw
ZmZmMzAwNDI4MjMyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVl
R0xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcApAQCAt
MzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwIGIvU291cmNlL1dU
Ri93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGUzY2I2YmE2NTMyMmQ2MGY4MTI0ODI2OGY1NmNlNjIzOWI0YTJkNDEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9N
YWluVGhyZWFkTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJNYWluVGhyZWFkLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi12
b2lkIGluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0oKQotewotfQotCi12b2lkIHNjaGVkdWxl
RGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQoKQotewotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUv
UnVuTG9vcE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjU1Y2ZkNTZl
NTk1YzBiZWEwMTJmYTU5ZmE5NTNmZTc4ZTU2MzZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiUnVuTG9vcC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9vcDo6UnVuTG9vcCgpCi17
Ci19Ci0KLVJ1bkxvb3A6On5SdW5Mb29wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpydW4oKQot
ewotfQotCi12b2lkIFJ1bkxvb3A6OnN0b3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6Ondha2VV
cCgpCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCi0gICAgOiBtX3J1bkxvb3AocnVuTG9vcCkK
LXsKLX0KLQotUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKLXsKLSAgICBzdG9wKCk7
Ci19Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUsIGJvb2wpCi17Ci19
Ci0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKLXsKLX0KLQotYm9vbCBSdW5Mb29w
OjpUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3Jr
UXVldWVOb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNmQ2NzU4ZDc5NjdiMzY1Njc0NWNmODM3ZTcz
MGUxMDY2MDgzZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2th
dmV2IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldvcmtRdWV1ZS5oIgot
Ci12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqLCBUeXBlLCBR
T1MpCi17Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQotewotfQot
Ci12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KQotewotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi12b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRl
cihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zSlNDT25seS5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQppbmRl
eCA0ZDU2NzdlZTdlMmM2NmVjYmE4ZDk5MjMxOWI2ZTFkZTk4N2Y4Y2MwLi4xNjVjYTNjNzE2MTM2
ZjBhOTY1ZmVjMjI5YTE4ZDI3YzQ1NWYxMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0pTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtl
CkBAIC0xMSwyNCArMTEsMTkgQEAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1NUQVRJQ19K
U0MgIldoZXRoZXIgdG8gYnVpbGQgSmF2YVNjcmlwdENvcmUgYXMgYSBzdGEKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVExfSklUIFBVQkxJQyBPTikKIFdFQktJVF9P
UFRJT05fRU5EKCkKIAotc2V0KEFMTF9FVkVOVExPT1BfVFlQRVMKK3NldChBTExfRVZFTlRfTE9P
UF9UWVBFUworICAgIEN4eDExCiAgICAgR0xpYgotICAgIE5vbmUKICkKIAotaWYgKFVOSVggQU5E
IE5PVCBBUFBMRSkKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNl
ICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwot
ICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVG
QVVMVF9FVkVOVF9MT09QX1RZUEUgIkN4eDExIikKIAotc2V0KEVWRU5UTE9PUF9UWVBFICR7REVG
QVVMVF9FVkVOVExPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVu
dCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVExP
T1BfVFlQRVN9KSIpCitzZXQoRVZFTlRfTE9PUF9UWVBFICR7REVGQVVMVF9FVkVOVF9MT09QX1RZ
UEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9vcCB0byBiZSB1c2Vk
IGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRfTE9PUF9UWVBFU30pIikKIAog
c2V0KEVOQUJMRV9XRUJDT1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9GRikKIHNldChFTkFC
TEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitzZXQoRU5BQkxFX0FQ
SV9URVNUUyBPTikKIAogaWYgKFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2XzY0KQogICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9VRElTODYgMSkKQEAgLTM4LDEwICszMywxMiBAQCBp
ZiAoRU5BQkxFX1NUQVRJQ19KU0MpCiAgICAgc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQ
RSBTVEFUSUMpCiBlbmRpZiAoKQogCi1zdHJpbmcoVE9MT1dFUiAke0VWRU5UTE9PUF9UWVBFfSBM
T1dFUkNBU0VfRVZFTlRMT09QX1RZUEUpCi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNU
UkVRVUFMICJnbGliIikKK3N0cmluZyhUT0xPV0VSICR7RVZFTlRfTE9PUF9UWVBFfSBMT1dFUkNB
U0VfRVZFTlRfTE9PUF9UWVBFKQoraWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFV
QUwgImdsaWIiKQogICAgIGZpbmRfcGFja2FnZShHTElCIDIuMzYgUkVRVUlSRUQgQ09NUE9ORU5U
UyBnaW8gZ29iamVjdCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR0xJQiAxKQor
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9FVkVOVF9MT09QX0dMSUIgMSkKKyAgICBT
RVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfREVGQVVMVF9FVkVOVF9MT09QIDApCiBlbmRpZiAo
KQogCiAjIEZyb20gT3B0aW9uc0dUSy5jbWFrZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM2ZmE2M2JmMWY3MzUzNTYwNjE3NDlkYjQ5NjcwZGZm
OWFmMTM4NGUuLjc5MGUxNzk0Zjk5NzFmNzRjYTQ5ZGZhZjVjYzY2OTE3Yjk2ZWFhMzUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRl
cGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBUZXN0V1RGIHRvIEpTQ09ubHkgcG9ydCB0byB0ZXN0IFdvcmtRdWV1ZSBhbmQgUnVuTG9v
cC4KKyAgICAgICAgUGxhdGZvcm0gc3BlY2lmaWMgb25lcyBsb2NhdGUgdW5kZXIganNjb25seSBk
aXJlY3Rvcnkgc2luY2UKKyAgICAgICAgaXQgaXMgbm90IGBjeHgxMWAgKFNpbmNlIGl0IGluY2x1
ZGVzIHRoZSBHTElCIGV2ZW50IGxvb3AgY2FzZSkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZTogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHA6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwLgorICAgICAgICAo
bWFpbik6CisKIDIwMTYtMDQtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBCdWlsZCBNaW5pQnJvd3NlciB3aXRoIENNYWtlIG9uIE1hYwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApp
bmRleCBmYWU4YjYxY2RiODY1NTlhZWI4MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlm
MWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYzNTlkNDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxz
ZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkdUSyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NF
UikKICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYg
KCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxF
X0FQSV9URVNUUykKKyAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAg
IGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGEx
OWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9S
VU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZ
fS9UZXN0V2ViS2l0QVBJIikKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVD
VE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIp
CisKKyMgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3Vw
cG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdl
IG5lZWQgdGhpcyBmbGFnIG5vdCB0byBpbmNsdWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhj
ZXB0CisjIGZvciBXVEYgYW5kIEphdmFTY3JpcHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJ
TERJTkdfSlNDT05MWV9fKQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisK
K2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNs
dWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAg
ICkKK2VuZGlmICgpCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VT
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09u
bHkuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdl
M2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uOWFhM2YzMDcxZDIxYTljYjA2MTY1MTc0NTI4
MGEwMDMyYTJlMGUwZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApA
QCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQ
bGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAj
aW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRh
aW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9O
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlm
OTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li40NWRlMDg1NWFlOTk1Y2FlMGUzNjgy
Yzc4ZWY4OWRjMzhhYTIxYWY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5M
b29wLmNwcApAQCAtNTQsNCArNTQsODQgQEAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7
CiB9CiAKK1RFU1QoV1RGX1J1bkxvb3AsIE5lc3RlZFJ1bkxvb3ApCit7CisgICAgUnVuTG9vcDo6
aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNl
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRy
dWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAg
fSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7Cit9CisKK1RFU1QoV1RGX1J1bkxv
b3AsIE9uZVNob3RUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3Ao
KTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVk
VGltZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGlj
OgorICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAg
OiBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywg
JkRlcml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RG
aW5pc2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
IHN0b3AoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCYgbV90ZXN0
RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRl
c3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0T25lU2hvdCgwLjEpOworICAgICAgICBV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBS
ZXBlYXRpbmdUaW1lcikKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsK
KworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisKKyAgICBjbGFzcyBEZXJpdmVkVGlt
ZXIgOiBwdWJsaWMgUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPiB7CisgICAgcHVibGljOgor
ICAgICAgICBEZXJpdmVkVGltZXIoYm9vbCYgdGVzdEZpbmlzaGVkKQorICAgICAgICAgICAgOiBS
dW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJkRl
cml2ZWRUaW1lcjo6ZmlyZWQpCisgICAgICAgICAgICAsIG1fdGVzdEZpbmlzaGVkKHRlc3RGaW5p
c2hlZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBmaXJlZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICgrK21fY291bnQgPT0gMTApIHsKKyAgICAgICAgICAgICAg
ICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc3RvcCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2Nv
dW50IHsgMCB9OworICAgICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAg
eworICAgICAgICBEZXJpdmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGlt
ZXIuc3RhcnRSZXBlYXRpbmcoMC4wMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVk
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZp
Zy5oCmluZGV4IDJhNjI1ODNiYzllMGE5YjExNmVlMDBiZDMxYTA2NDZkNjkyNjMwMTYuLmIzYzA1
Y2M3N2FiNGNkYWEyZDk0Mjc0N2E3OTRmYWVmOGVhNmFmM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29uZmlnLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaApA
QCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgogI2VuZGlmCiAKLSNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CiAjaW5jbHVkZSA8cnVudGlt
ZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKKyNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+CisjZW5kaWYKIAogI2lmIGRl
ZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExFX18KIApAQCAtNjMsNyArNjUsNyBAQAogCiAjaW5j
bHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAm
JiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkKKyNpZiAh
UExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRl
ZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkgJiYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9f
KQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNlbmRpZgogCkBAIC04OSw2ICs5MSw2
IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykKKyNpZiAhUExBVEZPUk0o
SU9TKSAmJiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjZGVmaW5lIFdLX0hBVkVfQ19T
UEkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxh
dGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9Q
bGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFlZTI0Yjg5NmI3OTliZTkz
YWQ4ZjhkZTc5OGU5ZDRiODMwYjczNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcApAQCAtMCwwICsxLDU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisKKyNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCisj
aWYgRVZFTlRfTE9PUChHTElCKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNw
YWNlIFV0aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUp
IHsKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlv
bihSdW5Mb29wOjpjdXJyZW50KCkubWFpbkNvbnRleHQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICAg
ICAgV1RGOjpSdW5Mb29wOjppdGVyYXRlKCk7CisjZW5kaWYKKyAgICB9Cit9CisKK3ZvaWQgc2xl
ZXAoZG91YmxlIHNlY29uZHMpCit7CisgICAgV1RGOjpzbGVlcChzZWNvbmRzKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9qc2Nvbmx5L21haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYjEyY2Y0Yjc5MzI5ZmYwYWZlYjlm
MThiMDJlNjljNzE5YjdlZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2pzY29ubHkvbWFpbi5jcHAKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQoreworICAgIHJldHVybiBUZXN0V2ViS2l0QVBJOjpUZXN0c0NvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLnJ1bihhcmdjLCBhcmd2KSA/IEVYSVRfU1VDQ0VTUyA6IEVYSVRfRkFJTFVSRTsKK30KZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjNzA0YzdkYWM5MzE4MWQ0MWIx
NGM4YzBjNzg5MTM2NDM2MjNmOTcyLi5lZWQ0Y2NlYTNlNjM1ZDljN2I5Y2ZkMzAwNjI3ZmRjNmUx
YmM1MTg3IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1vdmUgZ2xpYiBk
ZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZToKKwogMjAxNi0wNC0wNyAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
UmV3b3JrIHRoZSB0aGVtaW5nIGNvZGUgZm9yIEdUSysgMy4yMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276257</attachid>
            <date>2016-04-12 11:57:08 -0700</date>
            <delta_ts>2016-04-12 12:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413035717.patch</filename>
            <type>text/plain</type>
            <size>48439</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjI3YTE3MjE1ODRjY2VkZDVmOWNkOWE3YjdhOWNkODkzMWQ0YmU0NjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4pOworICAgIHZvaWQgc2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+KTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9s
ZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRl
LAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAg
ICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIHZvaWQgcnVuSW1wbChS
dW5Nb2RlKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8
UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExv
Y2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29u
ZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9z
Y2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9z
aHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5
ZWM3YjU0OTcyYTg5Zi4uMzE3NzM2MWY3N2I3ZDNlZWMzNGQ4NWNhZDAxOWZhOTcxMjc1ODBmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAh
UExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNo
L2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09Q
KEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNp
ZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlm
CiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoQ1hYMTEpCisjaW5jbHVkZSA8
d3RmL0NvbmRpdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdURiB7CiAKIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewpAQCAtNzQsMTMgKzc3LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVW
RU5UX0xPT1AoRUZMKQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhh
bmRsZXIoaW50KTsKLSNlbGlmIFVTRShHTElCKQotICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25z
dCB7IHJldHVybiAqbV9ydW5Mb29wOyB9Ci0jZWxpZiBPUyhEQVJXSU4pCisjZWxpZiBFVkVOVF9M
T09QKERBUldJTikKICAgICBkaXNwYXRjaF9xdWV1ZV90IGRpc3BhdGNoUXVldWUoKSBjb25zdCB7
IHJldHVybiBtX2Rpc3BhdGNoUXVldWU7IH0KKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZF
TlRfTE9PUChDWFgxMSkKKyAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1f
cnVuTG9vcDsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC04OSw3ICs5Miw3IEBAIGNsYXNzIFdv
cmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUsIFFPUyk7CiAgICAgdm9pZCBw
bGF0Zm9ybUludmFsaWRhdGUoKTsKIAotI2lmIE9TKFdJTkRPV1MpCisjaWYgRVZFTlRfTE9PUChX
SU5ET1dTKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJB
Q0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
OwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICAgICBSZWZQdHI8RGlzcGF0Y2hR
dWV1ZT4gbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgVGhyZWFkSWRlbnRp
ZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKLSAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsK
LSAgICBSdW5Mb29wKiBtX3J1bkxvb3A7Ci0gICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb25NdXRleDsKLSAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwot
I2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZv
aWQgZXhlY3V0ZUZ1bmN0aW9uKHZvaWQqKTsKICAgICBkaXNwYXRjaF9xdWV1ZV90IG1fZGlzcGF0
Y2hRdWV1ZTsKLSNlbGlmIE9TKFdJTkRPV1MpCisjZWxpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAg
ICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lzdGVyZWQ7CiAKICAgICBNdXRleCBt
X3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYgKzEyMCwxMyBAQCBjbGFzcyBXb3JrUXVldWUg
ZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBIYXNoTWFwPEhBTkRMRSwg
UmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5kbGVzOwogCiAgICAgSEFORExFIG1fdGltZXJR
dWV1ZTsKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikgfHwgRVZFTlRfTE9PUChDWFgxMSkKKyAgICBU
aHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0aWFsaXpl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRl
UnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BD
b25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4eDEx
L01haW5UaHJlYWRDeHgxMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM4NDljNjk1MWU4YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJl
MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9NYWluVGhyZWFkQ3h4
MTEuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3Rh
bnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
YWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJv
bU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY3h4MTEv
UnVuTG9vcEN4eDExLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzM4Y2Q0MzhiYTMwN2Y3ZjNjMjNkNWJmNGQyMjg4M2JjNmI4MTI0MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2N4eDExL1J1bkxvb3BDeHgxMS5jcHAKQEAg
LTAsMCArMSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2th
dmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgi
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxl
ZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RG
X01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRl
KExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8
TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRh
LCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24o
c3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChz
dGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6
OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAsIG1faXNSZXBl
YXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAg
fQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAg
ICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAg
fQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBvaW50OworICAg
IH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1
bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgIGlmICghbV9m
aXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hl
ZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAgc3RydWN0IEVh
cmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNj
aGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJo
cy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBp
c0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9j
ayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3Rp
dmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7
CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGlt
ZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBt
X2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxv
b3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9y
ZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworCisgICAgLy8gSGVyZSBpcyBydW5uaW5nIG1haW4gbG9v
cHMuIFdhaXQgdW50aWwgYWxsIHRoZSBtYWluIGxvb3BzIGFyZSBkZXN0cm95ZWQuCisgICAgaWYg
KCFtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1f
bG9vcExvY2spOworfQorCitpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1v
ZGUgcnVuTW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fbG9vcExvY2spOworCisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsK
KyAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGlsID0gQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9zY2hlZHVsZXMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCkt
PnNjaGVkdWxlZFRpbWVQb2ludCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwo
bV9sb29wTG9jaywgc2xlZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NodXRk
b3duIHx8IG1fcGVuZGluZ1Rhc2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9w
cGluZzsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0g
U3RhdHVzOjpTdG9wcGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFpbkxvb3BzLnJl
bW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIG1fc3RvcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBtX3BlbmRpbmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5Nb2RlID09IFJ1
bk1vZGU6Okl0ZXJhdGUpCisgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3Bw
aW5nOworCisgICAgLy8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0aW9uOjpDbG9j
azo6dGltZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICB3aGlsZSAo
IW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgIGlmIChl
YXJsaWVzdC0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5l
bmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworICAg
ICAgICBtX3NjaGVkdWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGltZXJzLmFwcGVu
ZChlYXJsaWVzdCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxv
b3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6
Q2xlYXI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAg
ICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisKKyAg
ICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7Cisg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1bk1vZGUsIHN0
YXR1c09mVGhpc0xvb3AsIGZpcmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVk
VGltZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4gdGFzayA9IGZpcmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYg
KHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2Ug
dGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3
ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAg
ICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAg
ICAgICAgIHNjaGVkdWxlKHRhc2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHBlcmZvcm1Xb3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOworfQorCit2b2lkIFJ1
bkxvb3A6Oml0ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1v
ZGU6Okl0ZXJhdGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZl
LiBUaGVzZSBvcGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5M
b29wJ3MgdGhyZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNw
YXRjaEFmdGVyfSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3Mg
UnVuTG9vcAorLy8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCit2b2lkIFJ1bkxvb3A6OnN0
b3AoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21h
aW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVz
ID0gbV9tYWluTG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBp
bmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVh
ZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNv
bnN0IExvY2tIb2xkZXImKQoreworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3Jl
YWR5VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVy
QmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBlbmQodGFz
ayk7CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMu
ZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
PiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVk
dWxlKGxvY2tlciwgdGFzayk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGVBbmRXYWtlVXAo
UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzaykKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIHRhc2spOworICAgIHdh
a2VVcChsb2NrZXIpOworfQorCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJv
bm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgYm9vbCByZXBlYXRpbmcg
PSBmYWxzZTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6
Y3JlYXRlKFtmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0sIGRlbGF5LmNv
dW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAgIHdha2VV
cChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0
ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdl
IHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJhc2Ug
b3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0IGRvIG5v
dCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQgbm90IG9w
ZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdG8gdGhl
IFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29wOjpUaW1l
ckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1bkxv
b3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9vcDo6VGlt
ZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6
VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQoreworICAg
IHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUoW3Ro
aXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsKKyAg
ICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30KKwordm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxlZFRhc2sp
IHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1fc2No
ZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgICAgIG1fcnVuTG9vcC53YWtlVXAoKTsKKyAgICB9
Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiZjA5ZGZjY2RmY2Q4
ZTJlMjk3MzhiYTM0NWFkNDkxMjlhOWY0ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2N4eDExL1dvcmtRdWV1ZUN4eDExLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0
IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworc3RhdGljIGNvbnN0IHNpemVfdCBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxp
bWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hh
ciogbmFtZSwgVHlwZSwgUU9TKQoreworICAgIFN0cmluZyB0aHJlYWROYW1lKG5hbWUpOworICAg
IHNpemVfdCBzaXplID0gdGhyZWFkTmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlmIChzaXpl
ICE9IG5vdEZvdW5kKQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFtZS5zdWJzdHJpbmco
c2l6ZSArIDEpOworICAgIGlmICh0aHJlYWROYW1lLmxlbmd0aCgpID4ga1Zpc3VhbFN0dWRpb1Ro
cmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUucmlnaHQoa1Zp
c3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCk7CisKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgIG1fd29ya1F1ZXVlVGhyZWFkID0g
Y3JlYXRlVGhyZWFkKHRocmVhZE5hbWUuYXNjaWkoKS5kYXRhKCksIFt0aGlzXSB7CisgICAgICAg
IHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OworICAgICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICAgICAgfQorICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOworICAgICAgICB7CisgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7
CisgICAgICAgICAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgICAgICAgICAgbV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9CisgICAgfSk7CisgICAg
bV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQor
eworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29u
ZGl0aW9uTXV0ZXgpOworICAgICAgICBpZiAobV9ydW5Mb29wKSB7CisgICAgICAgICAgICBtX3J1
bkxvb3AtPnN0b3AoKTsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi53
YWl0KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgeworICAgICAgICBkZXRhY2hUaHJlYWQobV93
b3JrUXVldWVUaHJlYWQpOworICAgICAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IDA7CisgICAgfQor
fQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CisgICAgbV9ydW5M
b29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsK
KyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7Cisg
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3Bh
dGNoQWZ0ZXIoZGVsYXksIFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigp
OworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVH
TGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKaW5kZXggNjMy
ZmY0MDUxNDkzYTZhZDA4ZDEwYjZkMzkyN2I2OGY0MGQzYjFhMS4uZTIxOTU4MWIwODkwOGM2NTc5
NGY3NGQxYjBmZmYzMDA0MjgyMzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9X
b3JrUXVldWVHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9ub25lL01haW5UaHJlYWROb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlh
bmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCi17Ci19Ci0KLXZvaWQg
c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwIGIvU291cmNlL1dURi93
dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAy
NTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29w
Tm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSdW5Mb29wLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29wOjpSdW5M
b29wKCkKLXsKLX0KLQotUnVuTG9vcDo6flJ1bkxvb3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6
OnJ1bigpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6c3RvcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUnVuTG9vcDo6
VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKLSAgICA6IG1fcnVuTG9vcChy
dW5Mb29wKQotewotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQotewotICAg
IHN0b3AoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9v
bCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQotewotfQotCi1ib29s
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25l
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2ZDY3NThkNzk2N2IzNjU2NzQ1
Y2Y4MzdlNzMwZTEwNjYwODNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFu
dGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1
ZXVlLmgiCi0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhcios
IFR5cGUsIFFPUykKLXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgp
Ci17Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNt
YWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRlOTg3ZjhjYzAuLjE2NWNh
M2M3MTYxMzZmMGE5NjVmZWMyMjlhMThkMjdjNDU1ZjExOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09u
bHkuY21ha2UKQEAgLTExLDI0ICsxMSwxOSBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
U1RBVElDX0pTQyAiV2hldGhlciB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBhIHN0YQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9FTkQoKQogCi1zZXQoQUxMX0VWRU5UTE9PUF9UWVBFUworc2V0KEFMTF9F
VkVOVF9MT09QX1RZUEVTCisgICAgQ3h4MTEKICAgICBHTGliCi0gICAgTm9uZQogKQogCi1pZiAo
VU5JWCBBTkQgTk9UIEFQUExFKQotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJHTGli
IikKLWVsc2UgKCkKLSAgICAjIFRPRE86IFVzZSBuYXRpdmUgTWFjIGFuZCBXaW4gaW1wbGVtZW50
YXRpb25zCi0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIk5vbmUiKQotZW5kaWYgKCkK
K3NldChERUZBVUxUX0VWRU5UX0xPT1BfVFlQRSAiQ3h4MTEiKQogCi1zZXQoRVZFTlRMT09QX1RZ
UEUgJHtERUZBVUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9u
IG9mIGV2ZW50IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxM
X0VWRU5UTE9PUF9UWVBFU30pIikKK3NldChFVkVOVF9MT09QX1RZUEUgJHtERUZBVUxUX0VWRU5U
X0xPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRv
IGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVF9MT09QX1RZUEVT
fSkiKQogCiBzZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQog
c2V0KEVOQUJMRV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChF
TkFCTEVfQVBJX1RFU1RTIE9OKQogCiBpZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9YODZfNjQp
CiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VESVM4NiAxKQpAQCAtMzgsMTAgKzMz
LDEyIEBAIGlmIChFTkFCTEVfU1RBVElDX0pTQykKICAgICBzZXQoSmF2YVNjcmlwdENvcmVfTElC
UkFSWV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKLXN0cmluZyhUT0xPV0VSICR7RVZFTlRMT09Q
X1RZUEV9IExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSkKLWlmIChMT1dFUkNBU0VfRVZFTlRMT09Q
X1RZUEUgU1RSRVFVQUwgImdsaWIiKQorc3RyaW5nKFRPTE9XRVIgJHtFVkVOVF9MT09QX1RZUEV9
IExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQ
RSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJFRCBD
T01QT05FTlRTIGdpbyBnb2JqZWN0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9H
TElCIDEpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0VWRU5UX0xPT1BfR0xJQiAx
KQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMCkK
IGVuZGlmICgpCiAKICMgRnJvbSBPcHRpb25zR1RLLmNtYWtlCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzZmYTYzYmYxZjczNTM1NjA2MTc0OWRi
NDk2NzBkZmY5YWYxMzg0ZS4uNzkwZTE3OTRmOTk3MWY3NGNhNDlkZmFmNWNjNjY5MTdiOTZlYWEz
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDE2LTA0LTEyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3Zl
IGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3QgV29ya1F1ZXVlIGFu
ZCBSdW5Mb29wLgorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxvY2F0ZSB1bmRlciBq
c2Nvbmx5IGRpcmVjdG9yeSBzaW5jZQorICAgICAgICBpdCBpcyBub3QgYGN4eDExYCAoU2luY2Ug
aXQgaW5jbHVkZXMgdGhlIEdMSUIgZXZlbnQgbG9vcCBjYXNlKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHku
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAuCisg
ICAgICAgIChtYWluKToKKwogMjAxNi0wNC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIE1pbmlCcm93c2VyIHdpdGggQ01ha2Ug
b24gTWFjCmRpZmYgLS1naXQgYS9Ub29scy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlz
dHMudHh0CmluZGV4IGZhZThiNjFjZGI4NjU1OWFlYjgzM2NjZmRhNWI2MmU1MGNiOWJiMWUuLjAz
NjRhYTk1OWYxYmM3NmJjOTM2MDc2ZjFhMDEwYzA3NjM1OWQ0M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CkBAIC0yNyw2ICsyNywx
MCBAQCBlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiR1RLIikKICAgICBpZiAoRU5BQkxFX01J
TklCUk9XU0VSKQogICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL2d0aykKICAg
ICBlbmRpZiAoKQorZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkpTQ09ubHkiKQorICAgIGlm
IChFTkFCTEVfQVBJX1RFU1RTKQorICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KFRlc3RXZWJLaXRB
UEkpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChXSU4zMikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdlM2NjNzVlMTBjOWRlOWIw
OWUyYTdkYTE5YzM0MjQ2ZmFiMTgwZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMjcgQEAKK3NldChURVNUV0VC
S0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9E
SVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkiKQorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQ
VVRfRElSRUNUT1JZX1dURiAiJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9S
WX0vV1RGIikKKworIyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEpTQ09ubHkgcG9ydCBkb2Vz
IG5vdCBzdXBwb3J0IFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4KKyMgVG8gYnVpbGQgVGVz
dFdURiwgd2UgbmVlZCB0aGlzIGZsYWcgbm90IHRvIGluY2x1ZGUgV2ViS2l0IHJlbGF0ZWQgaGVh
ZGVycyBleGNlcHQKKyMgZm9yIFdURiBhbmQgSmF2YVNjcmlwdENvcmUuCithZGRfZGVmaW5pdGlv
bnMoLURCVUlMRElOR19KU0NPTkxZX18pCisKK2luY2x1ZGVfZGlyZWN0b3JpZXMoCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycworICAgICIke1dURl9ESVJ9L2lj
dSIKKykKKworaWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQor
ICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNCisgICAgICAgICR7R0xJQl9JTkNMVURFX0RJ
UlN9CisgICAgKQorZW5kaWYgKCkKKworc2V0KHRlc3RfbWFpbl9TT1VSQ0VTCisgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vanNjb25seS9tYWluLmNwcAorKQorCitsaXN0KEFQUEVORCBUZXN0V1RG
X1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0
aWVzSlNDT25seS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9v
cC5jcHAKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRp
ZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRleCA3NTgz
ZTRlZTA3N2UzZTg4M2U2YTU3ZGI1ZDFiODllYzQ3OTQyOTRiLi45YWEzZjMwNzFkMjFhOWNiMDYx
NjUxNzQ1MjgwYTAwMzJhMmUwZTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxp
dGllcy5oCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBQbGF0Zm9ybVV0aWxpdGllc19oCiAj
ZGVmaW5lIFBsYXRmb3JtVXRpbGl0aWVzX2gKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09O
TFlfXykKICNpbmNsdWRlIDxXZWJLaXQvV0tOYXRpdmVFdmVudC5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS1JldGFpblB0ci5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZP
VU5EQVRJT04pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5M
b29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4
IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0MTNlMDg3MWMzZWE0MDY4MTcuLjQ1ZGUwODU1YWU5OTVj
YWUwZTM2ODJjNzhlZjg5ZGMzOGFhMjFhZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0ICs1NCw4NCBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZp
bmlzaGVkKTsKIH0KIAorVEVTVChXVEZfUnVuTG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICAgICAgdGVzdEZpbmlz
aGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVk
KTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVChX
VEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNz
IERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisgICAg
ICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0RmluaXNo
ZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZp
cmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOworICAg
ICAgICAgICAgc3RvcCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29s
JiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIg
dGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRPbmVTaG90KDAuMSk7Cisg
ICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1J1
bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERl
cml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAg
ICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0
aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQo
dGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA9PSAxMCkgeworICAgICAg
ICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdG9wKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2ln
bmVkIG1fY291bnQgeyAwIH07CisgICAgICAgIGJvb2wmIG1fdGVzdEZpbmlzaGVkOworICAgIH07
CisKKyAgICB7CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1lcih0ZXN0RmluaXNoZWQpOworICAg
ICAgICB0aW1lci5zdGFydFJlcGVhdGluZygwLjAxKTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0
RmluaXNoZWQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2OTI2MzAx
Ni4uYjNjMDVjYzc3YWI0Y2RhYTJkOTQyNzQ3YTc5NGZhZWY4ZWE2YWYzYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
bmZpZy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5k
aWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05M
WV9fKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNlbmRpZgog
CiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCkBAIC02Myw3ICs2NSw3IEBA
CiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18p
KQorI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RL
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKSAmJiAhZGVmaW5lZChCVUlMRElOR19K
U0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgogI2VuZGlmCiAKQEAgLTg5
LDYgKzkxLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKICNkZWZpbmUgV0tf
SEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNj
b25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9q
c2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVlMjRiODk2
Yjc5OWJlOTNhZDhmOGRlNzk4ZTlkNGI4MzBiNzM3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CituYW1lc3BhY2UgVXRpbCB7CisKK3ZvaWQgcnVuKGJvb2wqIGRvbmUpCit7CisgICAgd2hpbGUg
KCEqZG9uZSkgeworI2lmIEVWRU5UX0xPT1AoR0xJQikKKyAgICAgICAgZ19tYWluX2NvbnRleHRf
aXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJlbnQoKS5tYWluQ29udGV4dCgpLCBmYWxzZSk7CisjZWxz
ZQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsKKyNlbmRpZgorICAgIH0KK30KKwor
dm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6OnNsZWVwKHNlY29uZHMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRiNzkzMjlm
ZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6
c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJF
OworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGM3MDRjN2RhYzkz
MTgxZDQxYjE0YzhjMGM3ODkxMzY0MzYyM2Y5NzIuLmVlZDRjY2VhM2U2MzVkOWM3YjljZmQzMDA2
MjdmZGM2ZTFiYzUxODcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92
ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlOgorCiAyMDE2LTA0
LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBSZXdvcmsgdGhlIHRoZW1pbmcgY29kZSBmb3IgR1RLKyAzLjIwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276258</attachid>
            <date>2016-04-12 12:07:08 -0700</date>
            <delta_ts>2016-04-12 13:12:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413040717.patch</filename>
            <type>text/plain</type>
            <size>48451</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjQ5NzQ1Yjg4ZWY2ZGEzZWVlNzg5Nzc4YzVjZDBmNmY0ODM5NjY3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2N4eDExL01haW5UaHJlYWRD
eHgxMS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25l
LmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6CisgICAg
ICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgorICAgICAg
ICAqIHd0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OlNjaGVkdWxlZFRhc2spOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmZpcmVkKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpzY2hlZHVsZWRUaW1l
UG9pbnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6aXNBY3RpdmUpOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmRlYWN0aXZhdGUpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpSdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6flJ1
bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKToKKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6cnVuSW1wbCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6d2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6c2NoZWR1bGUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VV
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKToKKyAgICAgICAgKiB3dGYv
Y3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRl
KToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1ZXVlOjpk
aXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcDoKKyAg
ICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3
dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlk
YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxldGVkLgor
ICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAxNi0wNC0w
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBjb21w
aWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggYThkMmNh
NTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uODRhMjc3MDkwY2JiYTYyMGE1MmU5
NmNlYTU5OWRhZGJjNThlYjY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQgKzExNDIsMzkgQEAK
ICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRsZXMgd2hhdCBvZmZl
cnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICogRm9yIGV4YW1wbGUs
IEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBF
VkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkg
KGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisj
ZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVM
VF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBw
dW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNl
IHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVudCBsb29wLgorICog
U28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICog
QW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4
Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUg
ZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8K
KyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFURk9STShDT0NPQSkK
Ky8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJzdHJhY3Rpb24uICov
CisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFURk9STShFRkwpCisv
KiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0
cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJQikgY2FuIGJlIHRy
dWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlmIFVTRShHTElCKQor
LyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJpbHkgR1RLIHBvcnQg
dXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisjZWxzZQorI2RlZmlu
ZSBXVEZfRVZFTlRfTE9PUF9DWFgxMSAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RG
X1BsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25s
eS5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFl
NDZlMDE5YTI0ZGM3MTEyNzgzNjgxMDljZWNhNDZhNDI1YzY5Li5kMjQ5ZTc1ZWU4NmU3YTE4Nzdk
YzY1YmNlNDllNWMzOGViMmU2OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtl
CkBAIC0xLDQgKzEsNCBAQAotaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAi
Z2xpYiIpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAg
ICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAg
ICAgICBnbGliL01haW5UaHJlYWRHTGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJD
QVNFX0VWRU5UTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAg
bGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAK
LSAgICAgICAgbm9uZS9SdW5Mb29wTm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25l
LmNwcAorICAgICAgICBjeHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwCisgICAgICAgIGN4eDExL1J1
bkxvb3BDeHgxMS5jcHAKKyAgICAgICAgY3h4MTEvV29ya1F1ZXVlQ3h4MTEuY3BwCiAgICAgKQog
ZW5kaWYgKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQz
MjRiODlhN2YuLjBiNjZkYjA0M2FmMjM5OGYwNTQ3NWRjOWRkNjEzNjc0ZmE3MDdiOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxv
b3BfaAogCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0
Y2hlci5oPgpAQCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIEVWRU5UX0xP
T1AoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwxOSBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcnVuRm9yRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KTsKICNlbmRpZgogCi0jaWYgVVNFKEdMSUIpICYmICFQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChHTElCKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlmCiAKKyNp
ZiBFVkVOVF9MT09QKENYWDExKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBp
dGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6
OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisjZW5kaWYKKwog
ICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwogICAg
IHB1YmxpYzoKQEAgLTg3LDcgKzkzLDcgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKIAotI2lm
IFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikKICAgICAg
ICAgdm9pZCBzZXRQcmlvcml0eShpbnQpOwogI2VuZGlmCiAKQEAgLTk2LDIyICsxMDIsMjUgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIFJ1
bkxvb3AmIG1fcnVuTG9vcDsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBFVkVOVF9MT09QKFdJ
TkRPV1MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90
IElEKTsKICAgICAgICAgdWludDY0X3QgbV9JRDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5n
OwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisjZWxpZiBFVkVOVF9MT09QKERBUldJTikKICAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9S
TShFRkwpCisjZWxpZiBFVkVOVF9MT09QKEVGTCkKICAgICAgICAgc3RhdGljIGJvb2wgdGltZXJG
aXJlZCh2b2lkKiBkYXRhKTsKICAgICAgICAgRWNvcmVfVGltZXIqIG1fdGltZXI7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdT
b3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9Owog
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9Owor
I2VsaWYgRVZFTlRfTE9PUChDWFgxMSkKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAg
ICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAg
IH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShX
SU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVu
TG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1
bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHdu
ZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlv
bkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2Uq
PiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JN
KENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9y
bVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50
IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChF
RkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4g
bV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAg
ICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsK
LSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01h
aW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+
IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVO
VF9MT09QKENYWDExKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzaz4mJik7CisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRy
PFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJik7CisgICAgdm9pZCB3YWtlVXAoY29uc3QgTG9j
a0hvbGRlciYpOworICAgIHZvaWQgc2NoZWR1bGVBbmRXYWtlVXAoUmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4pOworCisgICAgZW51bSBjbGFzcyBSdW5Nb2RlIHsKKyAgICAgICAgSXRl
cmF0ZSwKKyAgICAgICAgRHJhaW4KKyAgICB9OworCisgICAgZW51bSBjbGFzcyBTdGF0dXMgewor
ICAgICAgICBDbGVhciwKKyAgICAgICAgU3RvcHBpbmcsCisgICAgfTsKKyAgICB2b2lkIHJ1bklt
cGwoUnVuTW9kZSk7CisgICAgYm9vbCBwb3B1bGF0ZVRhc2tzKFJ1bk1vZGUsIFN0YXR1cyYsIERl
cXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYpOworCisgICAgTG9jayBtX2xv
b3BMb2NrOworICAgIENvbmRpdGlvbiBtX3JlYWR5VG9SdW47CisgICAgQ29uZGl0aW9uIG1fc3Rv
cENvbmRpdGlvbjsKKyAgICBWZWN0b3I8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+
IG1fc2NoZWR1bGVzOworICAgIFZlY3RvcjxTdGF0dXMqPiBtX21haW5Mb29wczsKKyAgICBib29s
IG1fc2h1dGRvd24geyBmYWxzZSB9OworICAgIGJvb2wgbV9wZW5kaW5nVGFza3MgeyBmYWxzZSB9
OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaCBi
L1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IGQyNjc1YzFlZGUwMDljOTVmNDU2ODQy
NDU3OWVjN2I1NDk3MmE4OWYuLjMxNzczNjFmNzdiN2QzZWVjMzRkODVjYWQwMTlmYTk3MTI3NTgw
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC0zNCwyMiArMzQsMjUgQEAKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIE9TKERBUldJTikg
JiYgIVBMQVRGT1JNKEdUSykKKyNpZiBFVkVOVF9MT09QKERBUldJTikKICNpbmNsdWRlIDxkaXNw
YXRjaC9kaXNwYXRjaC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRf
TE9PUChFRkwpCiAjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5oPgotI2VsaWYgVVNFKEdMSUIp
Ci0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0j
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2VsaWYgT1MoV0lORE9XUykKKyNlbmRpZgor
CisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi93aW4vV29ya0l0ZW1XaW4uaD4KICNl
bmRpZgogCisjaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKENYWDExKQorI2luY2x1
ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2VuZGlmCisK
IG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKQEAgLTc0LDEzICs3NywxMyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwg
OiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBjb25jdXJyZW50QXBwbHkoc2l6ZV90IGl0ZXJhdGlvbnMsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZCAoc2l6ZV90IGluZGV4KT4mKTsKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNp
ZiBFVkVOVF9MT09QKEVGTCkKICAgICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGlu
dCwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZl
bnRIYW5kbGVyKGludCk7Ci0jZWxpZiBVU0UoR0xJQikKLSAgICBSdW5Mb29wJiBydW5Mb29wKCkg
Y29uc3QgeyByZXR1cm4gKm1fcnVuTG9vcDsgfQotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYgRVZF
TlRfTE9PUChEQVJXSU4pCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwYXRjaFF1ZXVlOyB9CisjZWxpZiBFVkVOVF9MT09QKEdMSUIpIHx8
IEVWRU5UX0xPT1AoQ1hYMTEpCisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJu
ICptX3J1bkxvb3A7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODksNyArOTIsNyBAQCBjbGFz
cyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOwogICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmIEVWRU5UX0xP
T1AoV0lORE9XUykKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxsYmFjayh2b2lk
KiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyB2b2lkIENB
TExCQUNLIHRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZp
cmVkKTsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBj
b250ZXh0KTsKQEAgLTEwMiwxOSArMTA1LDEyIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1
YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdp
c3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAK
LSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgUmVmUHRyPERpc3Bh
dGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShHTElCKQotICAgIFRocmVhZElk
ZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRp
b247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlv
bjsKLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQogICAgIHN0YXRp
YyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rp
c3BhdGNoUXVldWU7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VsaWYgRVZFTlRfTE9PUChXSU5ET1dT
KQogICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkOwogCiAgICAgTXV0
ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKQEAgLTEyNCw2ICsxMjAsMTMgQEAgY2xhc3MgV29ya1F1
ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgSGFzaE1hcDxIQU5E
TEUsIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4+IG1faGFuZGxlczsKIAogICAgIEhBTkRMRSBtX3Rp
bWVyUXVldWU7CisjZWxpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoQ1hYMTEpCisg
ICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRocmVhZDsKKyAgICBMb2NrIG1faW5pdGlh
bGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV9pbml0aWFsaXplUnVu
TG9vcENvbmRpdGlvbjsKKyAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisgICAgTG9jayBtX3Rlcm1p
bmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBDb25kaXRpb24gbV90ZXJtaW5hdGVSdW5M
b29wQ29uZGl0aW9uOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
eHgxMS9NYWluVGhyZWFkQ3h4MTEuY3BwIGIvU291cmNlL1dURi93dGYvY3h4MTEvTWFpblRocmVh
ZEN4eDExLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODQ5YzY5NTFlOGIyYmEzY2ZiM2VhNjhhYTRmYjQ0ODdh
NDliZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY3h4MTEvTWFpblRocmVh
ZEN4eDExLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtv
bnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTWFpblRocmVhZC5oIgorCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3ZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCit7Cit9CisKK3Zv
aWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCit7CisgICAgUnVuTG9v
cDo6bWFpbigpLmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPihkaXNwYXRjaEZ1bmN0aW9u
c0Zyb21NYWluVGhyZWFkKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2N4
eDExL1J1bkxvb3BDeHgxMS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJmYTQyZDA1MjgzMzkzNTU4ZmYyMmRmODc3MTdkY2EwMmI3OWI0Y2MK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9SdW5Mb29wQ3h4MTEuY3Bw
CkBAIC0wLDAgKzEsMjk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4g
VG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVuTG9v
cC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsK
K1dURl9NQUtFX05PTkNPUFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNy
ZWF0ZShMYW1iZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3
YXJkPExhbWJkYT4obGFtYmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxh
bWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0
aW9uKHN0ZDo6Zm9yd2FyZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2
YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4o
c3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lz
UmVwZWF0aW5nKHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOwor
ICAgIH0KKworICAgIGJvb2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsKKwor
ICAgICAgICBpZiAoIW1faXNSZXBlYXRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgICAgIHJldHVybiBpc0FjdGl2ZSgpOwor
ICAgIH0KKworICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgc2NoZWR1bGVkVGltZVBv
aW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjaGVkdWxlZFRpbWVQb2ludDsK
KyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpCisgICAgeworICAgICAgICBtX3Nj
aGVkdWxlZFRpbWVQb2ludCA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygpOworICAgICAgICBpZiAo
IW1fZmlyZUludGVydmFsLmNvdW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
c2NoZWR1bGVkVGltZVBvaW50ICs9IG1fZmlyZUludGVydmFsOworICAgIH0KKworICAgIHN0cnVj
dCBFYXJsaWVzdFNjaGVkdWxlIHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZlB0
cjxTY2hlZHVsZWRUYXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJocykK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxocy0+c2NoZWR1bGVkVGltZVBvaW50KCkg
PiByaHMtPnNjaGVkdWxlZFRpbWVQb2ludCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIGJv
b2wgaXNBY3RpdmUoKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2
ZUxvY2spOworICAgICAgICByZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICB9CisKKyAgICB2b2lkIGRl
YWN0aXZhdGUoKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2ZUxv
Y2spOworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgorICAg
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIENvbmRpdGlvbjo6Q2xvY2s6
OnRpbWVfcG9pbnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgc3RkOjpjaHJvbm86Om1pY3Jv
c2Vjb25kcyBtX2ZpcmVJbnRlcnZhbDsKKyAgICBMb2NrIG1faXNBY3RpdmVMb2NrOworICAgIGJv
b2wgbV9pc0FjdGl2ZSB7IHRydWUgfTsKKyAgICBib29sIG1faXNSZXBlYXRpbmc7Cit9OworCitS
dW5Mb29wOjpSdW5Mb29wKCkKK3sKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQoreworICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIG1fc2h1dGRvd24gPSB0cnVlOworICAg
IG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKworICAgIC8vIEhlcmUgaXMgcnVubmluZyBtYWlu
IGxvb3BzLiBXYWl0IHVudGlsIGFsbCB0aGUgbWFpbiBsb29wcyBhcmUgZGVzdHJveWVkLgorICAg
IGlmICghbV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0b3BDb25kaXRpb24ud2Fp
dChtX2xvb3BMb2NrKTsKK30KKworaW5saW5lIGJvb2wgUnVuTG9vcDo6cG9wdWxhdGVUYXNrcyhS
dW5Nb2RlIHJ1bk1vZGUsIFN0YXR1cyYgc3RhdHVzT2ZUaGlzTG9vcCwgRGVxdWU8UmVmUHRyPFRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+JiBmaXJlZFRpbWVycykKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvb3BMb2NrKTsKKworICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6OkRyYWlu
KSB7CisgICAgICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgc2xlZXBVbnRpbCA9IENv
bmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQ6Om1heCgpOworICAgICAgICBpZiAoIW1fc2NoZWR1
bGVzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJz
dCgpLT5zY2hlZHVsZWRUaW1lUG9pbnQoKTsKKworICAgICAgICBtX3JlYWR5VG9SdW4ud2FpdFVu
dGlsKG1fbG9vcExvY2ssIHNsZWVwVW50aWwsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4gbV9z
aHV0ZG93biB8fCBtX3BlbmRpbmdUYXNrcyB8fCBzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1czo6
U3RvcHBpbmc7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChzdGF0dXNPZlRoaXNMb29w
ID09IFN0YXR1czo6U3RvcHBpbmcgfHwgbV9zaHV0ZG93bikgeworICAgICAgICBtX21haW5Mb29w
cy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX3N0b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgbV9wZW5kaW5nVGFza3MgPSBmYWxzZTsKKyAgICBpZiAocnVuTW9kZSA9
PSBSdW5Nb2RlOjpJdGVyYXRlKQorICAgICAgICBzdGF0dXNPZlRoaXNMb29wID0gU3RhdHVzOjpT
dG9wcGluZzsKKworICAgIC8vIENoZWNrIGV4cGlyZWQgdGltZXJzLgorICAgIENvbmRpdGlvbjo6
Q2xvY2s6OnRpbWVfcG9pbnQgbm93ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgd2hp
bGUgKCFtX3NjaGVkdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4gZWFybGllc3QgPSBtX3NjaGVkdWxlcy5maXJzdCgpOworICAgICAgICBp
ZiAoZWFybGllc3QtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gbm93KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIHN0ZDo6cG9wX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVs
ZXMuZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsK
KyAgICAgICAgbV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAgICBmaXJlZFRpbWVycy5h
cHBlbmQoZWFybGllc3QpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJ1
bkxvb3A6OnJ1bkltcGwoUnVuTW9kZSBydW5Nb2RlKQoreworICAgIEFTU0VSVCh0aGlzID09ICZS
dW5Mb29wOjpjdXJyZW50KCkpOworCisgICAgU3RhdHVzIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0
dXM6OkNsZWFyOworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7
CisgICAgICAgIG1fbWFpbkxvb3BzLmFwcGVuZCgmc3RhdHVzT2ZUaGlzTG9vcCk7CisgICAgfQor
CisgICAgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+IGZpcmVkVGltZXJz
OworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmICghcG9wdWxhdGVUYXNrcyhydW5Nb2Rl
LCBzdGF0dXNPZlRoaXNMb29wLCBmaXJlZFRpbWVycykpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgLy8gRGlzcGF0Y2ggc2NoZWR1bGVkIHRpbWVycy4KKyAgICAgICAgd2hpbGUgKCFm
aXJlZFRpbWVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s+IHRhc2sgPSBmaXJlZFRpbWVycy50YWtlRmlyc3QoKTsKKyAgICAgICAgICAg
IGlmICh0YXNrLT5maXJlZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzY2hlZHVsZSBiZWNh
dXNlIHRoZSB0aW1lciByZXF1aXJlcyByZXBlYXRpbmcuCisgICAgICAgICAgICAgICAgLy8gU2lu
Y2Ugd2Ugd2lsbCBxdWVyeSB0aGUgdGltZXJzJyB0aW1lIHBvaW50cyBiZWZvcmUgc2xlZXBpbmcs
CisgICAgICAgICAgICAgICAgLy8gd2UgZG8gbm90IGNhbGwgd2FrZVVwKCkgaGVyZS4KKyAgICAg
ICAgICAgICAgICBzY2hlZHVsZShXVEZNb3ZlKHRhc2spKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBwZXJmb3JtV29yaygpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjpy
dW4oKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6OkRyYWluKTsK
K30KKwordm9pZCBSdW5Mb29wOjppdGVyYXRlKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
cnVuSW1wbChSdW5Nb2RlOjpJdGVyYXRlKTsKK30KKworLy8gUnVuTG9vcCBvcGVyYXRpb25zIGFy
ZSB0aHJlYWQtc2FmZS4gVGhlc2Ugb3BlcmF0aW9ucyBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lk
ZSBvZiB0aGUgUnVuTG9vcCdzIHRocmVhZC4KKy8vIEZvciBleGFtcGxlLCBXb3JrUXVldWU6Ontk
aXNwYXRjaCwgZGlzcGF0Y2hBZnRlcn0gY2FsbCB0aGUgb3BlcmF0aW9ucyBvZiB0aGUgV29ya1F1
ZXVlIHRocmVhZCdzIFJ1bkxvb3AKKy8vIGZyb20gdGhlIGNhbGxlcidzIHRocmVhZC4KKwordm9p
ZCBSdW5Mb29wOjpzdG9wKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsK
KyAgICBpZiAobV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dGF0dXMqIHN0YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBpZiAoKnN0YXR1cyAhPSBT
dGF0dXM6OlN0b3BwaW5nKSB7CisgICAgICAgICpzdGF0dXMgPSBTdGF0dXM6OlN0b3BwaW5nOwor
ICAgICAgICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxv
b3A6Ondha2VVcChjb25zdCBMb2NrSG9sZGVyJikKK3sKKyAgICBtX3BlbmRpbmdUYXNrcyA9IHRy
dWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondh
a2VVcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVw
KGxvY2tlcik7Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYs
IFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+JiYgdGFzaykKK3sKKyAgICBtX3NjaGVk
dWxlcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVs
ZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6
RWFybGllc3RTY2hlZHVsZSgpKTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8
VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmIHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCBXVEZNb3ZlKHRhc2spKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwor
ICAgIHNjaGVkdWxlKGxvY2tlciwgV1RGTW92ZSh0YXNrKSk7CisgICAgd2FrZVVwKGxvY2tlcik7
Cit9CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29u
ZHMgZGVsYXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBib29sIHJlcGVhdGluZyA9IGZhbHNlOworICAg
IHNjaGVkdWxlKGxvY2tlciwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUoZnVuY3Rp
b24sIGRlbGF5LmNvdW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykp
OworICAgIHdha2VVcChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93
biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBz
aG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5
LCBUaW1lckJhc2Ugb3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFk
cyB0aGF0IGRvIG5vdCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBz
aG91bGQgbm90IG9wZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhl
IHNhbWUgdG8gdGhlIFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitS
dW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9y
dW5Mb29wKHJ1bkxvb3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKwor
UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0
aW5nKQoreworICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNr
OjpjcmVhdGUoW3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVw
ZWF0aW5nKTsKKyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNr
KTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3Nj
aGVkdWxlZFRhc2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7Cisg
ICAgICAgIG1fc2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgICAgIG1fcnVuTG9vcC53YWtl
VXAoKTsKKyAgICB9Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9jeHgxMS9Xb3JrUXVldWVDeHgxMS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJi
ZjA5ZGZjY2RmY2Q4ZTJlMjk3MzhiYTM0NWFkNDkxMjlhOWY0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL2N4eDExL1dvcmtRdWV1ZUN4eDExLmNwcApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5
YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogUG9ydGlv
bnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IHNpemVfdCBrVmlzdWFsU3R1ZGlv
VGhyZWFkTmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxp
emUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQoreworICAgIFN0cmluZyB0aHJlYWROYW1l
KG5hbWUpOworICAgIHNpemVfdCBzaXplID0gdGhyZWFkTmFtZS5yZXZlcnNlRmluZCgnLicpOwor
ICAgIGlmIChzaXplICE9IG5vdEZvdW5kKQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFt
ZS5zdWJzdHJpbmcoc2l6ZSArIDEpOworICAgIGlmICh0aHJlYWROYW1lLmxlbmd0aCgpID4ga1Zp
c3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5h
bWUucmlnaHQoa1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCk7CisKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgIG1fd29ya1F1
ZXVlVGhyZWFkID0gY3JlYXRlVGhyZWFkKHRocmVhZE5hbWUuYXNjaWkoKS5kYXRhKCksIFt0aGlz
XSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6
ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9v
cDo6Y3VycmVudCgpOworICAgICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKKyAgICAgICAgfQorICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOworICAgICAg
ICB7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgICAgICAg
ICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9Cisg
ICAgfSk7CisgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5pdGlhbGl6
ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUlu
dmFsaWRhdGUoKQoreworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICBpZiAobV9ydW5Mb29wKSB7CisgICAg
ICAgICAgICBtX3J1bkxvb3AtPnN0b3AoKTsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9v
cENvbmRpdGlvbi53YWl0KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgeworICAgICAgICBkZXRh
Y2hUaHJlYWQobV93b3JrUXVldWVUaHJlYWQpOworICAgICAgICBtX3dvcmtRdWV1ZVRocmVhZCA9
IDA7CisgICAgfQorfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7
CisgICAgbV9ydW5Mb29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAg
ZnVuY3Rpb24oKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIo
c3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVu
Y3Rpb24pCit7CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1
bkxvb3AtPmRpc3BhdGNoQWZ0ZXIoZGVsYXksIFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAg
ICBmdW5jdGlvbigpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5j
cHAKaW5kZXggNjMyZmY0MDUxNDkzYTZhZDA4ZDEwYjZkMzkyN2I2OGY0MGQzYjFhMS4uZTIxOTU4
MWIwODkwOGM2NTc5NGY3NGQxYjBmZmYzMDA0MjgyMzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dv
cmtRdWV1ZUdMaWIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxnbGliLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFk
Tm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5
YjRhMmQ0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2
IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLQot
bmFtZXNwYWNlIFdURiB7Ci0KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCi17
Ci19Ci0KLXZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci19
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwIGIv
U291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAyNTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYv
bm9uZS9SdW5Mb29wTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgu
cnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJSdW5Mb29wLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi1S
dW5Mb29wOjpSdW5Mb29wKCkKLXsKLX0KLQotUnVuTG9vcDo6flJ1bkxvb3AoKQotewotfQotCi12
b2lkIFJ1bkxvb3A6OnJ1bigpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6c3RvcCgpCi17Ci19Ci0K
LXZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0K
LQotUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKLSAgICA6
IG1fcnVuTG9vcChydW5Mb29wKQotewotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJh
c2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KGRvdWJsZSwgYm9vbCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQot
ewotfQotCi1ib29sIFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9X
b3JrUXVldWVOb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2ZDY3NThk
Nzk2N2IzNjU2NzQ1Y2Y4MzdlNzMwZTEwNjYwODNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV29ya1F1ZXVlLmgiCi0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUo
Y29uc3QgY2hhciosIFR5cGUsIFFPUykKLXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3Jt
SW52YWxpZGF0ZSgpCi17Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNKU0NPbmx5LmNtYWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRlOTg3
ZjhjYzAuLjE2NWNhM2M3MTYxMzZmMGE5NjVmZWMyMjlhMThkMjdjNDU1ZjExOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0pTQ09ubHkuY21ha2UKQEAgLTExLDI0ICsxMSwxOSBAQCBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfU1RBVElDX0pTQyAiV2hldGhlciB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBh
cyBhIHN0YQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQg
UFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9FTkQoKQogCi1zZXQoQUxMX0VWRU5UTE9PUF9UWVBF
Uworc2V0KEFMTF9FVkVOVF9MT09QX1RZUEVTCisgICAgQ3h4MTEKICAgICBHTGliCi0gICAgTm9u
ZQogKQogCi1pZiAoVU5JWCBBTkQgTk9UIEFQUExFKQotICAgIHNldChERUZBVUxUX0VWRU5UTE9P
UF9UWVBFICJHTGliIikKLWVsc2UgKCkKLSAgICAjIFRPRE86IFVzZSBuYXRpdmUgTWFjIGFuZCBX
aW4gaW1wbGVtZW50YXRpb25zCi0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIk5vbmUi
KQotZW5kaWYgKCkKK3NldChERUZBVUxUX0VWRU5UX0xPT1BfVFlQRSAiQ3h4MTEiKQogCi1zZXQo
RVZFTlRMT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBTVFJJTkcgIklt
cGxlbWVudGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAo
b25lIG9mICR7QUxMX0VWRU5UTE9PUF9UWVBFU30pIikKK3NldChFVkVOVF9MT09QX1RZUEUgJHtE
RUZBVUxUX0VWRU5UX0xPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBl
dmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVO
VF9MT09QX1RZUEVTfSkiKQogCiBzZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9X
RUJLSVQgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RT
IE9GRikKK3NldChFTkFCTEVfQVBJX1RFU1RTIE9OKQogCiBpZiAoV1RGX0NQVV9YODYgT1IgV1RG
X0NQVV9YODZfNjQpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VESVM4NiAxKQpA
QCAtMzgsMTAgKzMzLDEyIEBAIGlmIChFTkFCTEVfU1RBVElDX0pTQykKICAgICBzZXQoSmF2YVNj
cmlwdENvcmVfTElCUkFSWV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKLXN0cmluZyhUT0xPV0VS
ICR7RVZFTlRMT09QX1RZUEV9IExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSkKLWlmIChMT1dFUkNB
U0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQorc3RyaW5nKFRPTE9XRVIgJHtFVkVO
VF9MT09QX1RZUEV9IExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUpCitpZiAoTE9XRVJDQVNFX0VW
RU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgZmluZF9wYWNrYWdlKEdMSUIgMi4z
NiBSRVFVSVJFRCBDT01QT05FTlRTIGdpbyBnb2JqZWN0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFVTRV9HTElCIDEpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0VWRU5U
X0xPT1BfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VW
RU5UX0xPT1AgMCkKIGVuZGlmICgpCiAKICMgRnJvbSBPcHRpb25zR1RLLmNtYWtlCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzZmYTYzYmYxZjcz
NTM1NjA2MTc0OWRiNDk2NzBkZmY5YWYxMzg0ZS4uNzkwZTE3OTRmOTk3MWY3NGNhNDlkZmFmNWNj
NjY5MTdiOTZlYWEzNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTEyICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9v
cCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3Qg
V29ya1F1ZXVlIGFuZCBSdW5Mb29wLgorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxv
Y2F0ZSB1bmRlciBqc2Nvbmx5IGRpcmVjdG9yeSBzaW5jZQorICAgICAgICBpdCBpcyBub3QgYGN4
eDExYCAoU2luY2UgaXQgaW5jbHVkZXMgdGhlIEdMSUIgZXZlbnQgbG9vcCBjYXNlKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1K
U0NPbmx5LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvbmZpZy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxp
dGllc0pTQ09ubHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29w
Tm9uZS5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvanNj
b25seS9tYWluLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVl
Tm9uZS5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxNi0wNC0xMSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIE1pbmlCcm93c2Vy
IHdpdGggQ01ha2Ugb24gTWFjCmRpZmYgLS1naXQgYS9Ub29scy9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhZThiNjFjZGI4NjU1OWFlYjgzM2NjZmRhNWI2MmU1
MGNiOWJiMWUuLjAzNjRhYTk1OWYxYmM3NmJjOTM2MDc2ZjFhMDEwYzA3NjM1OWQ0M2MgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CkBA
IC0yNyw2ICsyNywxMCBAQCBlbHNlaWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiR1RLIikKICAgICBp
ZiAoRU5BQkxFX01JTklCUk9XU0VSKQogICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KE1pbmlCcm93
c2VyL2d0aykKICAgICBlbmRpZiAoKQorZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkpTQ09u
bHkiKQorICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAgICAgICBhZGRfc3ViZGlyZWN0b3J5
KFRlc3RXZWJLaXRBUEkpCisgICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKIGlmIChXSU4zMikKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdlM2Nj
NzVlMTBjOWRlOWIwOWUyYTdkYTE5YzM0MjQ2ZmFiMTgwZgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0wLDAgKzEsMjcgQEAK
K3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkiKQorc2V0KFRFU1RXRUJLSVRBUElf
UlVOVElNRV9PVVRQVVRfRElSRUNUT1JZX1dURiAiJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VU
UFVUX0RJUkVDVE9SWX0vV1RGIikKKworIyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEpTQ09u
bHkgcG9ydCBkb2VzIG5vdCBzdXBwb3J0IFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4KKyMg
VG8gYnVpbGQgVGVzdFdURiwgd2UgbmVlZCB0aGlzIGZsYWcgbm90IHRvIGluY2x1ZGUgV2ViS2l0
IHJlbGF0ZWQgaGVhZGVycyBleGNlcHQKKyMgZm9yIFdURiBhbmQgSmF2YVNjcmlwdENvcmUuCith
ZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX18pCisKK2luY2x1ZGVfZGlyZWN0b3Jp
ZXMoCisgICAgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3YXJkaW5nSGVhZGVycworICAgICIk
e1dURl9ESVJ9L2ljdSIKKykKKworaWYgKExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUgU1RSRVFV
QUwgImdsaWIiKQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNCisgICAgICAgICR7R0xJ
Ql9JTkNMVURFX0RJUlN9CisgICAgKQorZW5kaWYgKCkKKworc2V0KHRlc3RfbWFpbl9TT1VSQ0VT
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9tYWluLmNwcAorKQorCitsaXN0KEFQ
UEVORCBUZXN0V1RGX1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9qc2Nvbmx5L1Bs
YXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvUnVuTG9vcC5jcHAKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
aAppbmRleCA3NTgzZTRlZTA3N2UzZTg4M2U2YTU3ZGI1ZDFiODllYzQ3OTQyOTRiLi45YWEzZjMw
NzFkMjFhOWNiMDYxNjUxNzQ1MjgwYTAwMzJhMmUwZTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBQbGF0Zm9ybVV0
aWxpdGllc19oCiAjZGVmaW5lIFBsYXRmb3JtVXRpbGl0aWVzX2gKIAorI2lmICFkZWZpbmVkKEJV
SUxESU5HX0pTQ09OTFlfXykKICNpbmNsdWRlIDxXZWJLaXQvV0tOYXRpdmVFdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c3RyaW5nPgog
CiAjaWYgVVNFKEZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxv
b3AuY3BwCmluZGV4IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0MTNlMDg3MWMzZWE0MDY4MTcuLjQ1
ZGUwODU1YWU5OTVjYWUwZTM2ODJjNzhlZjg5ZGMzOGFhMjFhZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0ICs1NCw4NCBAQAogICAgIFV0aWw6
OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZfUnVuTG9vcCwgTmVzdGVkUnVuTG9v
cCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKKworICAgIGJvb2wg
dGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsm
XSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJl0geworICAgICAgICAg
ICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnJ1bigm
dGVzdEZpbmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsK
K30KKworVEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQoreworICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsK
KworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVk
VGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0Rmlu
aXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9v
cDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwg
bV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQg
PSB0cnVlOworICAgICAgICAgICAgc3RvcCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9OworCisgICAgeworICAgICAgICBE
ZXJpdmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAgICAgdGltZXIuc3RhcnRPbmVT
aG90KDAuMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9Cit9CisK
K1RFU1QoV1RGX1J1bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQoreworICAgIFJ1bkxvb3A6OmluaXRp
YWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKwor
ICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29wOjpUaW1lcjxEZXJpdmVkVGlt
ZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1lcihib29sJiB0ZXN0RmluaXNo
ZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6
Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkKKyAgICAgICAgICAgICwgbV90
ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA9PSAx
MCkgeworICAgICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBzdG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgICAgIGJvb2wmIG1fdGVzdEZpbmlz
aGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1lcih0ZXN0Rmlu
aXNoZWQpOworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGluZygwLjAxKTsKKyAgICAgICAgVXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFh
MDY0NmQ2OTI2MzAxNi4uYjNjMDVjYzc3YWI0Y2RhYTJkOTQyNzQ3YTc5NGZhZWY4ZWE2YWYzYSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgImNtYWtlY29u
ZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3Mu
aD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisjaWYgIWRlZmluZWQoQlVJ
TERJTkdfSlNDT05MWV9fKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3Mu
aD4KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCkBAIC02
Myw3ICs2NSw3IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2lmICFQTEFURk9STShJT1Mp
ICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElO
R19XRUJLSVQyX18pKQorI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEo
UExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgogI2Vu
ZGlmCiAKQEAgLTg5LDYgKzkxLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0o
SU9TKQorI2lmICFQTEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykK
ICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMWVlMjRiODk2Yjc5OWJlOTNhZDhmOGRlNzk4ZTlkNGI4MzBiNzM3MwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09u
bHkuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CisKKyNpZiBFVkVOVF9MT09QKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5o
PgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3ZvaWQgcnVuKGJvb2wqIGRvbmUpCit7
CisgICAgd2hpbGUgKCEqZG9uZSkgeworI2lmIEVWRU5UX0xPT1AoR0xJQikKKyAgICAgICAgZ19t
YWluX2NvbnRleHRfaXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJlbnQoKS5tYWluQ29udGV4dCgpLCBm
YWxzZSk7CisjZWxzZQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsKKyNlbmRpZgor
ICAgIH0KK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6OnNsZWVw
KHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJi
MTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFpbihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3Rz
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDog
RVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4
IGM3MDRjN2RhYzkzMTgxZDQxYjE0YzhjMGM3ODkxMzY0MzYyM2Y5NzIuLmVlZDRjY2VhM2U2MzVk
OWM3YjljZmQzMDA2MjdmZGM2ZTFiYzUxODcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMiAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1bkxv
b3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtl
OgorCiAyMDE2LTA0LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgdGhlIHRoZW1pbmcgY29kZSBmb3IgR1RLKyAzLjIw
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276265</attachid>
            <date>2016-04-12 13:12:30 -0700</date>
            <delta_ts>2016-04-13 23:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160413051239.patch</filename>
            <type>text/plain</type>
            <size>48529</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1MGE3NTUzZTdiZmYyZWZhZmZmMjc0
NTVjMzE0YzJkN2EyYzk2MTQuLjI4YzIzY2M4MGNhZDIyMWRmZWE0Y2JiNjE2ODZkNDE4ZTBmYzA3
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTYtMDQtMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIGdsaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorICAgICAgICBFVkVOVF9MT09QIGRl
dGVybWluYXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxl
IG9mIFdURiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAq
IHd0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAg
ICAgICAgKiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2dlbmVyaWMvTWFpblRocmVh
ZEdlbmVyaWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFk
Tm9uZS5jcHAuCisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOgor
ICAgICAgICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKiB3dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZSk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6U2NoZWR1bGVkVGFzayk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZmlyZWQp
OgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OnNjaGVk
dWxlZFRpbWVQb2ludCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1
bGVkVGFzazo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjppc0FjdGl2ZSk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZGVhY3RpdmF0
ZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5M
b29wOjp+UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBvcHVsYXRlVGFza3MpOgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
cnVuKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXRlcmF0ZSk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxl
QW5kV2FrZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcik6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6
VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rv
cCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAg
ICAqIHd0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdv
cmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZv
cm1JbnZhbGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAo
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVH
TGliLmNwcDoKKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAg
IChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OlJ1bkxvb3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtl
VXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1JbnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gp
OiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4K
KwogMjAxNi0wNC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBjb21waWxlIHRpbWUgZGVmaW5lIGZvciBTRVBBUkFURURfSEVBUApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggYThkMmNhNTYwMTZiZmJlY2MzOTNmNjNkZTM5ZTMwMmU0ZDAzM2NhOS4uZDVlOWIxNWI1
ODA1MzVjZjA3NzhkZTMxZGVlMTQ1NTMzNDViZTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMTQyLDQg
KzExNDIsMzkgQEAKICNlbmRpZgogI2VuZGlmCiAKKworLyogPT09PSBFVkVOVF9MT09QIGhhbmRs
ZXMgd2hhdCBvZmZlcnMgdGhlIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24gdG8gV2ViS2l0LgorICog
Rm9yIGV4YW1wbGUsIEdUSyBwb3J0IGluIE9TWCwgaXRzIHBsYXRmb3JtIGlzIEdUSywgT1MgaXMg
REFSV0lOIGFuZCBFVkVOVF9MT09QIGlzIEdMSUIuCisgKi8KKyNkZWZpbmUgRVZFTlRfTE9PUChX
VEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSAgJiYgV1RG
X0VWRU5UX0xPT1BfIyNXVEZfRkVBVFVSRSkKKworI2lmICFkZWZpbmVkKFdURl9ERUZBVUxUX0VW
RU5UX0xPT1ApCisjZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMQorI2VuZGlmCisKKyNp
ZiBXVEZfREVGQVVMVF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lOKQorLyogVXNlIFdpbmRv
d3MgbWVzc2FnZSBwdW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0aGUgcG9ydCBpcyBBcHBs
ZVdpbiwgd2UgdXNlIHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0ZW0gZm9yIHRoZSBldmVu
dCBsb29wLgorICogU28gdGhhdCwgRVZFTlRfTE9PUChXSU5ET1dTKSAmJiBVU0UoQ0YpIGNhbiBi
ZSB0cnVlLgorICogQW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JNKEVGTCkgYW5kIFBMQVRGT1JN
KEdUSykgYXJlIGV4Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RLLAorICogUExBVEZPUk0oV0lO
KSBzaG91bGQgYmUgZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdMSUIncyBldmVudCBsb29wIGlz
IHVzZWQuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfV0lORE9XUyAxCisjZWxpZiBQTEFU
Rk9STShDT0NPQSkKKy8qIE9TWCBhbmQgSU9TLiBVc2UgQ29yZUZvdW5kYXRpb24gJiBHQ0QgYWJz
dHJhY3Rpb24uICovCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0RBUldJTiAxCisjZWxpZiBQTEFU
Rk9STShFRkwpCisvKiBFRkwgcG9ydCB1c2VzIEdMSUIuIEJ1dCBpdCB1c2VzIGl0cyBvd24gZXZl
bnQgbG9vcCBhYnN0cmFjdGlvbi4KKyAqIFRodXMsIEVWRU5UX0xPT1AoRUZMKSAmJiBVU0UoR0xJ
QikgY2FuIGJlIHRydWUuCisgKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfRUZMIDEKKyNlbGlm
IFVTRShHTElCKQorLyogVXNlIEdMSUIncyBldmVudCBsb29wIGFic3RyYWN0aW9uLiBQcmltYXJp
bHkgR1RLIHBvcnQgdXNlcyBpdC4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1BfR0xJQiAxCisj
ZWxzZQorI2RlZmluZSBXVEZfRVZFTlRfTE9PUF9HRU5FUklDIDEKKyNlbmRpZgorI2VuZGlmCisK
ICNlbmRpZiAvKiBXVEZfUGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm1KU0NPbmx5LmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCmluZGV4IDFhYWU0NmUwMTlhMjRkYzcxMTI3ODM2ODEwOWNlY2E0NmE0MjVjNjkuLjljMGEx
MGM4YTdjNzc2NjE5ZWRjODFjNTNkMTM5MTEyODg0NzgzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUpTQ09ubHkuY21ha2UKQEAgLTEsNCArMSw0IEBACi1pZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9U
WVBFIFNUUkVRVUFMICJnbGliIikKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVR
VUFMICJnbGliIikKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBnbGliL0dS
ZWZQdHIuY3BwCiAgICAgICAgIGdsaWIvTWFpblRocmVhZEdMaWIuY3BwCkBAIC0xNSw5ICsxNSw5
IEBAIGlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgICkK
IGVsc2UgKCkKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwotICAgICAgICBub25lL01haW5U
aHJlYWROb25lLmNwcAotICAgICAgICBub25lL1J1bkxvb3BOb25lLmNwcAotICAgICAgICBub25l
L1dvcmtRdWV1ZU5vbmUuY3BwCisgICAgICAgIGdlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3Bw
CisgICAgICAgIGdlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCisgICAgICAgIGdlbmVyaWMvV29y
a1F1ZXVlR2VuZXJpYy5jcHAKICAgICApCiBlbmRpZiAoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmggYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKaW5kZXggZmFlYjli
MWZmYTI1ZmNhYmFlOTFkZjg3MzBhYmNlNDMyNGI4OWE3Zi4uYTg1MGJjN2Q5YmJmYjk1OGJjNjAx
ZjcyMWMyZmM0YjNhYjE2Y2QwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmbmRl
ZiBSdW5Mb29wX2gKICNkZWZpbmUgUnVuTG9vcF9oCiAKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb25EaXNwYXRjaGVyLmg+CkBAIC0zNSwxMSArMzYsMTEgQEAKICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0j
aWYgVVNFKEdMSUIpCisjaWYgRVZFTlRfTE9PUChHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KICNlbmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoRUZM
KQogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4K
ICNlbmRpZgpAQCAtNjQsMTQgKzY1LDE5IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2FrZVVwKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkK
KyNpZiBFVkVOVF9MT09QKERBUldJTikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5G
b3JEdXJhdGlvbihkb3VibGUgZHVyYXRpb24pOwogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYg
IVBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIEdNYWluQ29udGV4dCogbWFpbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX21haW5Db250
ZXh0LmdldCgpOyB9CiAjZW5kaWYKIAorI2lmIEVWRU5UX0xPT1AoR0VORVJJQykKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4pOworI2VuZGlmCisKICAgICBjbGFzcyBUaW1lckJhc2UgewogICAgICAg
ICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKICAgICBwdWJsaWM6CkBAIC04Nyw3ICs5Myw3IEBAIGNs
YXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgZmlyZWQoKSA9IDA7CiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkK
KyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAgICAgIHZvaWQgc2V0UHJpb3JpdHkoaW50KTsKICNl
bmRpZgogCkBAIC05NiwyMiArMTAyLDI1IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKIAogICAgICAgICBSdW5Mb29wJiBtX3J1bkxvb3A7CiAKLSNpZiBQTEFU
Rk9STShXSU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgICAgICBzdGF0aWMgdm9pZCB0
aW1lckZpcmVkKFJ1bkxvb3AqLCB1aW50NjRfdCBJRCk7CiAgICAgICAgIHVpbnQ2NF90IG1fSUQ7
CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2Vs
aWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZS
dW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKICAgICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVy
UmVmPiBtX3RpbWVyOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChFRkwp
CiAgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7CiAgICAgICAgIEVj
b3JlX1RpbWVyKiBtX3RpbWVyOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7Ci0jZWxpZiBV
U0UoR0xJQikKKyNlbGlmIEVWRU5UX0xPT1AoR0xJQikKICAgICAgICAgdm9pZCB1cGRhdGVSZWFk
eVRpbWUoKTsKICAgICAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKICAgICAgICAgYm9v
bCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyBtX2ZpcmVJbnRlcnZhbCB7IDAgfTsKKyNlbGlmIEVWRU5UX0xPT1AoR0VORVJJQykKKyAg
ICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsKKyAgICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+
IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgogICAgIH07CiAKQEAgLTE0NCw3ICsxNTMsNyBAQCBj
bGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9m
dW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1
bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dT
KQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwog
ICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQ
QVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3Nh
Z2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOwpAQCAtMTUyLDEyICsxNjEsMTIgQEAg
Y2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2UqPiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBt
X2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChE
QVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybVdvcmsodm9pZCopOwogICAgIFJldGFpblB0
cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNl
UmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExB
VEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsK
ICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlwZT4gbV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NCwz
NSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9v
bCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwogCiAgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQo
dm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVkKTsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZF
TlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8R01haW5Db250ZXh0PiBtX21haW5Db250ZXh0Owog
ICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9vcD4+IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8
R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBFVkVOVF9MT09QKEdFTkVSSUMpCisgICAgdm9pZCBz
Y2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHNj
aGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
PiYmKTsKKyAgICB2b2lkIHdha2VVcChjb25zdCBMb2NrSG9sZGVyJik7CisgICAgdm9pZCBzY2hl
ZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7CisKKyAgICBl
bnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAgICBJdGVyYXRlLAorICAgICAgICBEcmFpbgorICAg
IH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CisgICAgICAgIENsZWFyLAorICAgICAgICBT
dG9wcGluZywKKyAgICB9OworICAgIHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKKyAgICBib29sIHBv
cHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVzJiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzaz4+Jik7CisKKyAgICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1f
cmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxS
ZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9y
PFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3BlbmRpbmdUYXNrcyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVl
LmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uZWNlYTMx
ZmM2YTA4NmY0NzVlMGE4MThhNWM5NjgzZjZhZWI1YzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0
LDIyICszNCwyNSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCi0jaWYgT1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIEVW
RU5UX0xPT1AoREFSV0lOKQogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxEaXNw
YXRjaFF1ZXVlRWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9u
Lmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1Mp
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5oPgogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09QKEdM
SUIpIHx8IEVWRU5UX0xPT1AoR0VORVJJQykKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xh
c3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBAIC03NCwx
MyArNzcsMTMgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0
Y2hlciB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFw
cGx5KHNpemVfdCBpdGVyYXRpb25zLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNpemVfdCBp
bmRleCk+Jik7CiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChFRkwpCiAgICAg
dm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNvY2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2VsaWYg
VVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxv
b3A7IH0KLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQogICAgIGRp
c3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hR
dWV1ZTsgfQorI2VsaWYgRVZFTlRfTE9PUChHTElCKSB8fCBFVkVOVF9MT09QKEdFTkVSSUMpCisg
ICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbmRp
ZgogCiBwcml2YXRlOgpAQCAtODksNyArOTIsNyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBw
dWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShj
b25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpOwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRl
KCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmIEVWRU5UX0xPT1AoV0lORE9XUykKICAgICBzdGF0
aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRp
bWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIHRpbWVyQ2FsbGJhY2so
dm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1lck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgRFdP
UkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KTsKQEAgLTEwMiwxOSAr
MTA1LDEyIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNo
ZXIgewogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRl
bUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCisj
aWYgRVZFTlRfTE9PUChFRkwpCiAgICAgUmVmUHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hR
dWV1ZTsKLSNlbGlmIFVTRShHTElCKQotICAgIFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVU
aHJlYWQ7Ci0gICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAg
Q29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb247Ci0gICAgUnVuTG9vcCogbV9y
dW5Mb29wOwotICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAg
Q29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbjsKLSNlbGlmIE9TKERBUldJTikK
KyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQogICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlv
bih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBtX2Rpc3BhdGNoUXVldWU7Ci0jZWxpZiBP
UyhXSU5ET1dTKQorI2VsaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHZvbGF0aWxlIExPTkcg
bV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkOwogCiAgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9j
azsKQEAgLTEyNCw2ICsxMjAsMTMgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1
bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgSGFzaE1hcDxIQU5ETEUsIFJlZlB0cjxIYW5kbGVXb3Jr
SXRlbT4+IG1faGFuZGxlczsKIAogICAgIEhBTkRMRSBtX3RpbWVyUXVldWU7CisjZWxpZiBFVkVO
VF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoR0VORVJJQykKKyAgICBUaHJlYWRJZGVudGlmaWVy
IG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlv
bk11dGV4OworICAgIENvbmRpdGlvbiBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAg
IFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlv
bk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5k
aWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdl
bmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzg0OWM2OTUxZThiMmJhM2NmYjNlYTY4YWE0ZmI0NDg3YTQ5YmUwOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMu
Y3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRp
biBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWlu
VGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kwordm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBzY2hl
ZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1h
aW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9S
dW5Mb29wR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmlj
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZmE0MmQwNTI4MzM5MzU1OGZmMjJkZjg3NzE3ZGNhMDJiNzliNGNj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJp
Yy5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3Rh
bnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJS
dW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6
OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFz
az4geworV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFz
az4gY3JlYXRlKExhbWJkYSYmIGxhbWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGlu
ZykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6
OmZvcndhcmQ8TGFtYmRhPihsYW1iZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRh
JiYgbGFtYmRhLCBkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1f
ZnVuY3Rpb24oc3RkOjpmb3J3YXJkPExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJ
bnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAs
IG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1l
KCk7CisgICAgfQorCisgICAgYm9vbCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0
aXZlKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigp
OworCisgICAgICAgIGlmICghbV9pc1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZl
KCk7CisgICAgfQorCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRU
aW1lUG9pbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBv
aW50OworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAg
IG1fc2NoZWR1bGVkVGltZVBvaW50ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAg
IGlmICghbV9maXJlSW50ZXJ2YWwuY291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAg
c3RydWN0IEVhcmxpZXN0U2NoZWR1bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qg
UmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYg
cmhzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9p
bnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisg
ICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lz
QWN0aXZlTG9jayk7CisgICAgICAgIHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZv
aWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0
aXZlTG9jayk7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpD
bG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7Cisg
ICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307
CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7
CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworCisgICAgLy8gSGVyZSBpcyBydW5uaW5n
IG1haW4gbG9vcHMuIFdhaXQgdW50aWwgYWxsIHRoZSBtYWluIGxvb3BzIGFyZSBkZXN0cm95ZWQu
CisgICAgaWYgKCFtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RvcENvbmRpdGlv
bi53YWl0KG1fbG9vcExvY2spOworfQorCitpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRh
c2tzKFJ1bk1vZGUgcnVuTW9kZSwgU3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworCisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6
RHJhaW4pIHsKKyAgICAgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGls
ID0gQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9z
Y2hlZHVsZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVz
LmZpcnN0KCktPnNjaGVkdWxlZFRpbWVQb2ludCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53
YWl0VW50aWwobV9sb29wTG9jaywgc2xlZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVy
biBtX3NodXRkb3duIHx8IG1fcGVuZGluZ1Rhc2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3Rh
dHVzOjpTdG9wcGluZzsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhp
c0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFp
bkxvb3BzLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIG1fc3RvcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBtX3BlbmRpbmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5N
b2RlID09IFJ1bk1vZGU6Okl0ZXJhdGUpCisgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0
dXM6OlN0b3BwaW5nOworCisgICAgLy8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0
aW9uOjpDbG9jazo6dGltZV9wb2ludCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAg
ICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAg
ICAgIGlmIChlYXJsaWVzdC0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgc3RkOjpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3Nj
aGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxl
KCkpOworICAgICAgICBtX3NjaGVkdWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGlt
ZXJzLmFwcGVuZChlYXJsaWVzdCk7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMg
PT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9
IFN0YXR1czo6Q2xlYXI7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BM
b2NrKTsKKyAgICAgICAgbV9tYWluTG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAg
ICB9CisKKyAgICBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRU
aW1lcnM7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1
bk1vZGUsIHN0YXR1c09mVGhpc0xvb3AsIGZpcmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAvLyBEaXNwYXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGls
ZSAoIWZpcmVkVGltZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZpcmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAg
ICAgICAgaWYgKHRhc2stPmZpcmVkKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxl
IGJlY2F1c2UgdGhlIHRpbWVyIHJlcXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAv
LyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVl
cGluZywKKyAgICAgICAgICAgICAgICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgor
ICAgICAgICAgICAgICAgIHNjaGVkdWxlKFdURk1vdmUodGFzaykpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHBlcmZvcm1Xb3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxv
b3A6OnJ1bigpCit7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJh
aW4pOworfQorCit2b2lkIFJ1bkxvb3A6Oml0ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5ydW5JbXBsKFJ1bk1vZGU6Okl0ZXJhdGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlv
bnMgYXJlIHRocmVhZC1zYWZlLiBUaGVzZSBvcGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBv
dXRzaWRlIG9mIHRoZSBSdW5Mb29wJ3MgdGhyZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1
ZTo6e2Rpc3BhdGNoLCBkaXNwYXRjaEFmdGVyfSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBX
b3JrUXVldWUgdGhyZWFkJ3MgUnVuTG9vcAorLy8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgor
Cit2b2lkIFJ1bkxvb3A6OnN0b3AoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExv
Y2spOworICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFN0YXR1cyogc3RhdHVzID0gbV9tYWluTG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVz
ICE9IFN0YXR1czo6U3RvcHBpbmcpIHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBp
bmc7CisgICAgICAgIG1fcmVhZHlUb1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQg
UnVuTG9vcDo6d2FrZVVwKGNvbnN0IExvY2tIb2xkZXImKQoreworICAgIG1fcGVuZGluZ1Rhc2tz
ID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3
YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9s
ZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJiB0YXNrKQoreworICAgIG1f
c2NoZWR1bGVzLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3Nj
aGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRU
YXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKFJl
ZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+JiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBzY2hlZHVsZShsb2NrZXIsIFdURk1vdmUodGFzaykp
OworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6
OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9j
ayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCBXVEZNb3ZlKHRhc2spKTsKKyAgICB3YWtlVXAobG9j
a2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5v
c2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7
CisgICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShm
dW5jdGlvbiwgZGVsYXkuY291bnQoKSAvIDEwMDAuMCAvIDEwMDAuMCAvIDEwMDAuMCwgcmVwZWF0
aW5nKSk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKKy8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBu
b3Qgb3duIHRoZSByZWdpc3RlcmVkIFRpbWVyQmFzZSwKKy8vIFRpbWVyQmFzZSBhbmQgaXRzIG93
bmVyIHNob3VsZCBtYW5hZ2UgdGhlc2UgbGlmZXRpbWUuCisvLworLy8gQW5kIG1vcmUgaW1wb3J0
YW50bHksIFRpbWVyQmFzZSBvcGVyYXRpb25zIGFyZSBub3QgdGhyZWFkLXNhZmUuCisvLyBTbyB0
aHJlYWRzIHRoYXQgZG8gbm90IGJlbG9uZyB0byB0aGUgU2NoZWR1bGVkVGFzaydzIFJ1bkxvb3AK
Ky8vIHNob3VsZCBub3Qgb3BlcmF0ZSB0aGUgUnVuTG9vcDo6VGltZXJCYXNlLgorLy8gVGhpcyBp
cyB0aGUgc2FtZSB0byB0aGUgUnVuTG9vcFdpbiwgd2hpY2ggaXMgUnVuTG9vcCBmb3IgV2luZG93
cy4KK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAg
OiBtX3J1bkxvb3AocnVuTG9vcCkKKyAgICAsIG1fc2NoZWR1bGVkVGFzayhudWxscHRyKQorewor
fQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30K
Kwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9vbCBy
ZXBlYXRpbmcpCit7CisgICAgc3RvcCgpOworICAgIG1fc2NoZWR1bGVkVGFzayA9IFNjaGVkdWxl
ZFRhc2s6OmNyZWF0ZShbdGhpc10geworICAgICAgICBmaXJlZCgpOworICAgIH0sIGludGVydmFs
LCByZXBlYXRpbmcpOworICAgIG1fcnVuTG9vcC5zY2hlZHVsZUFuZFdha2VVcChtX3NjaGVkdWxl
ZFRhc2spOworfQorCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYg
KG1fc2NoZWR1bGVkVGFzaykgeworICAgICAgICBtX3NjaGVkdWxlZFRhc2stPmRlYWN0aXZhdGUo
KTsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrID0gbnVsbHB0cjsKKyAgICAgICAgbV9ydW5Mb29w
Lndha2VVcCgpOworICAgIH0KK30KKworYm9vbCBSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY2hlZHVsZWRUYXNrOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2Vu
ZXJpYy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYyYmYwOWRmY2NkZmNkOGUyZTI5NzM4YmEzNDVhZDQ5MTI5YTlmNGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3Bw
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBU
b2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdh
bGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTAgTW90b3JvbGEgTW9iaWxpdHks
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrUXVldWUu
aCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitzdGF0aWMgY29uc3Qgc2l6
ZV90IGtWaXN1YWxTdHVkaW9UaHJlYWROYW1lTGltaXQgPSAzMTsKKwordm9pZCBXb3JrUXVldWU6
OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1MpCit7CisgICAg
U3RyaW5nIHRocmVhZE5hbWUobmFtZSk7CisgICAgc2l6ZV90IHNpemUgPSB0aHJlYWROYW1lLnJl
dmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKHNpemUgIT0gbm90Rm91bmQpCisgICAgICAgIHRocmVh
ZE5hbWUgPSB0aHJlYWROYW1lLnN1YnN0cmluZyhzaXplICsgMSk7CisgICAgaWYgKHRocmVhZE5h
bWUubGVuZ3RoKCkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KQorICAgICAgICB0aHJl
YWROYW1lID0gdGhyZWFkTmFtZS5yaWdodChrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0KTsK
KworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRl
eCk7CisgICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQodGhyZWFkTmFtZS5hc2Np
aSgpLmRhdGEoKSwgW3RoaXNdIHsKKyAgICAgICAgeworICAgICAgICAgICAgTG9ja0hvbGRlciBs
b2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAgIG1f
cnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisgICAgICAgICAgICBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9CisgICAgICAgIG1fcnVuTG9v
cC0+cnVuKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fdGVy
bWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAgIG1fcnVuTG9vcCA9IG51
bGxwdHI7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb24ubm90aWZ5T25l
KCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9u
LndhaXQobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKK30KKwordm9pZCBXb3Jr
UXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgeworICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgICAgIGlmICht
X3J1bkxvb3ApIHsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+c3RvcCgpOworICAgICAgICAgICAg
bV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0
aW9uTXV0ZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1fd29ya1F1ZXVlVGhyZWFk
KSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVhZCk7CisgICAgICAgIG1f
d29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpkaXNwYXRj
aChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAgUmVmUHRyPFdvcmtRdWV1
ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNoKFtwcm90ZWN0LCBmdW5j
dGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOworfQorCit2b2lkIFdvcmtRdWV1
ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXksIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29ya1F1ZXVlPiBwcm90ZWN0
KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRlcihkZWxheSwgW3Byb3RlY3QsIGZ1
bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9Xb3JrUXVldWVHTGliLmNwcAppbmRleCA2MzJmZjQwNTE0OTNhNmFkMDhkMTBiNmQzOTI3YjY4
ZjQwZDNiMWExLi5lMjE5NTgxYjA4OTA4YzY1Nzk0Zjc0ZDFiMGZmZjMwMDQyODIzMmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9H
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9ub25lL01haW5UaHJlYWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVh
ZE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2NiNmJhNjUzMjJkNjBm
ODEyNDgyNjhmNTZjZTYyMzliNGEyZDQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBL
b25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
TWFpblRocmVhZC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBpbml0aWFsaXplTWFpblRo
cmVhZFBsYXRmb3JtKCkKLXsKLX0KLQotdm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25N
YWluVGhyZWFkKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9S
dW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1NWNmZDU2ZTU5NWMwYmVhMDEyZmE1OWZhOTUz
ZmU3OGU1NjM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2
IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJ1bkxvb3AuaCIKLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLVJ1bkxvb3A6OlJ1bkxvb3AoKQotewotfQotCi1SdW5Mb29wOjp+UnVu
TG9vcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6cnVuKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29w
OjpzdG9wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQotewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29w
JiBydW5Mb29wKQotICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCi17Ci19Ci0KLVJ1bkxvb3A6OlRp
bWVyQmFzZTo6flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi12b2lkIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29sKQotewotfQotCi12b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6c3RvcCgpCi17Ci19Ci0KLWJvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyYTZkNjc1OGQ3OTY3YjM2NTY3NDVjZjgzN2U3MzBlMTA2NjA4M2Y2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25v
bmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgu
cnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotdm9pZCBXb3JrUXVldWU6OnBs
YXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQotewotfQotCi12b2lkIFdv
cmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRp
c3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9z
ZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCi17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UgYi9T
b3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKaW5kZXggNGQ1Njc3ZWU3ZTJjNjZlY2Jh
OGQ5OTIzMTliNmUxZGU5ODdmOGNjMC4uNTI4NmJlYmU0MzFjMTk1ZDhmZGQwNzQzY2YyZDNlZjVj
YzE3Njk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpAQCAtMTEsMjQgKzExLDE5IEBA
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9TVEFUSUNfSlNDICJXaGV0aGVyIHRvIGJ1aWxk
IEphdmFTY3JpcHRDb3JlIGFzIGEgc3RhCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRlRMX0pJVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0VORCgpCiAKLXNldChB
TExfRVZFTlRMT09QX1RZUEVTCitzZXQoQUxMX0VWRU5UX0xPT1BfVFlQRVMKICAgICBHTGliCi0g
ICAgTm9uZQorICAgIEdlbmVyaWMKICkKIAotaWYgKFVOSVggQU5EIE5PVCBBUFBMRSkKLSAgICBz
ZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgpCi0gICAgIyBUT0RPOiBV
c2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAgIHNldChERUZBVUxUX0VW
RU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVMVF9FVkVOVF9MT09QX1RZ
UEUgIkdlbmVyaWMiKQogCi1zZXQoRVZFTlRMT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UTE9PUF9U
WVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9uIG9mIGV2ZW50IGxvb3AgdG8gYmUgdXNl
ZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxMX0VWRU5UTE9PUF9UWVBFU30pIikKK3Nl
dChFVkVOVF9MT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UX0xPT1BfVFlQRX0gQ0FDSEUgU1RSSU5H
ICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENv
cmUgKG9uZSBvZiAke0FMTF9FVkVOVF9MT09QX1RZUEVTfSkiKQogCiBzZXQoRU5BQkxFX1dFQkNP
UkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQyIE9GRikK
LXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFCTEVfQVBJX1RFU1RTIE9OKQogCiBp
ZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9YODZfNjQpCiAgICAgU0VUX0FORF9FWFBPU0VfVE9f
QlVJTEQoVVNFX1VESVM4NiAxKQpAQCAtMzgsMTAgKzMzLDEyIEBAIGlmIChFTkFCTEVfU1RBVElD
X0pTQykKICAgICBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBFIFNUQVRJQykKIGVuZGlm
ICgpCiAKLXN0cmluZyhUT0xPV0VSICR7RVZFTlRMT09QX1RZUEV9IExPV0VSQ0FTRV9FVkVOVExP
T1BfVFlQRSkKLWlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQor
c3RyaW5nKFRPTE9XRVIgJHtFVkVOVF9MT09QX1RZUEV9IExPV0VSQ0FTRV9FVkVOVF9MT09QX1RZ
UEUpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAg
ZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJFRCBDT01QT05FTlRTIGdpbyBnb2JqZWN0KQog
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTElCIDEpCisgICAgU0VUX0FORF9FWFBP
U0VfVE9fQlVJTEQoV1RGX0VWRU5UX0xPT1BfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RP
X0JVSUxEKFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMCkKIGVuZGlmICgpCiAKICMgRnJvbSBPcHRp
b25zR1RLLmNtYWtlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggMzZmYTYzYmYxZjczNTM1NjA2MTc0OWRiNDk2NzBkZmY5YWYxMzg0ZS4uNzkwZTE3
OTRmOTk3MWY3NGNhNDlkZmFmNWNjNjY5MTdiOTZlYWEzNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTEy
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NP
bmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFRlc3RXVEYgdG8g
SlNDT25seSBwb3J0IHRvIHRlc3QgV29ya1F1ZXVlIGFuZCBSdW5Mb29wLgorICAgICAgICBQbGF0
Zm9ybSBzcGVjaWZpYyBvbmVzIGxvY2F0ZSB1bmRlciBqc2Nvbmx5IGRpcmVjdG9yeSBzaW5jZQor
ICAgICAgICBpdCBpcyBub3QgYGN4eDExYCAoU2luY2UgaXQgaW5jbHVkZXMgdGhlIEdMSUIgZXZl
bnQgbG9vcCBjYXNlKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUnVuTG9vcC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvbmZpZy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
anNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXApOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
VEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAuCisgICAgICAgIChtYWluKToKKwogMjAxNi0w
NC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEJ1aWxkIE1pbmlCcm93c2VyIHdpdGggQ01ha2Ugb24gTWFjCmRpZmYgLS1naXQgYS9Ub29s
cy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL0NNYWtlTGlzdHMudHh0CmluZGV4IGZhZThiNjFjZGI4
NjU1OWFlYjgzM2NjZmRhNWI2MmU1MGNiOWJiMWUuLjAzNjRhYTk1OWYxYmM3NmJjOTM2MDc2ZjFh
MDEwYzA3NjM1OWQ0M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL0NNYWtlTGlzdHMudHh0CkBAIC0yNyw2ICsyNywxMCBAQCBlbHNlaWYgKCIke1BPUlR9IiBT
VFJFUVVBTCAiR1RLIikKICAgICBpZiAoRU5BQkxFX01JTklCUk9XU0VSKQogICAgICAgICBhZGRf
c3ViZGlyZWN0b3J5KE1pbmlCcm93c2VyL2d0aykKICAgICBlbmRpZiAoKQorZWxzZWlmICgiJHtQ
T1JUfSIgU1RSRVFVQUwgIkpTQ09ubHkiKQorICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAg
ICAgICBhZGRfc3ViZGlyZWN0b3J5KFRlc3RXZWJLaXRBUEkpCisgICAgZW5kaWYgKCkKIGVuZGlm
ICgpCiAKIGlmIChXSU4zMikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1KU0NPbmx5LmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21h
a2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDdlM2NjNzVlMTBjOWRlOWIwOWUyYTdkYTE5YzM0MjQ2ZmFiMTgwZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNt
YWtlCkBAIC0wLDAgKzEsMjcgQEAKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJ
UkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEki
KQorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZX1dURiAiJHtURVNU
V0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV1RGIikKKworIyBUaGlzIGlzIG5l
Y2Vzc2FyeSBiZWNhdXNlIEpTQ09ubHkgcG9ydCBkb2VzIG5vdCBzdXBwb3J0IFdlYkNvcmUsIFdl
YktpdCBhbmQgV2ViS2l0Mi4KKyMgVG8gYnVpbGQgVGVzdFdURiwgd2UgbmVlZCB0aGlzIGZsYWcg
bm90IHRvIGluY2x1ZGUgV2ViS2l0IHJlbGF0ZWQgaGVhZGVycyBleGNlcHQKKyMgZm9yIFdURiBh
bmQgSmF2YVNjcmlwdENvcmUuCithZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19KU0NPTkxZX18p
CisKK2luY2x1ZGVfZGlyZWN0b3JpZXMoCisgICAgJHtERVJJVkVEX1NPVVJDRVNfRElSfS9Gb3J3
YXJkaW5nSGVhZGVycworICAgICIke1dURl9ESVJ9L2ljdSIKKykKKworaWYgKExPV0VSQ0FTRV9F
VkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQorICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMo
U1lTVEVNCisgICAgICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CisgICAgKQorZW5kaWYgKCkKKwor
c2V0KHRlc3RfbWFpbl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9t
YWluLmNwcAorKQorCitsaXN0KEFQUEVORCBUZXN0V1RGX1NPVVJDRVMKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKKyAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKKykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuaAppbmRleCA3NTgzZTRlZTA3N2UzZTg4M2U2YTU3ZGI1ZDFi
ODllYzQ3OTQyOTRiLi45YWEzZjMwNzFkMjFhOWNiMDYxNjUxNzQ1MjgwYTAwMzJhMmUwZTBkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC0yNiw4ICsyNiwxMCBA
QAogI2lmbmRlZiBQbGF0Zm9ybVV0aWxpdGllc19oCiAjZGVmaW5lIFBsYXRmb3JtVXRpbGl0aWVz
X2gKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKICNpbmNsdWRlIDxXZWJLaXQv
V0tOYXRpdmVFdmVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2VuZGlm
CiAjaW5jbHVkZSA8c3RyaW5nPgogCiAjaWYgVVNFKEZPVU5EQVRJT04pCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmluZGV4IGU3ZTNkOWY5OTNlZTc5YTQ2N2QwZTk0
MTNlMDg3MWMzZWE0MDY4MTcuLjQ1ZGUwODU1YWU5OTVjYWUwZTM2ODJjNzhlZjg5ZGMzOGFhMjFh
ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwCkBAIC01NCw0
ICs1NCw4NCBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZf
UnVuTG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1
bkxvb3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbJl0geworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7
CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6
OnJ1bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVy
KQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0
ZXN0RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBS
dW5Mb29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2
ZWRUaW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVy
PERlcml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpm
aXJlZCkKKyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgc3RvcCgpOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9
OworCisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAg
ICAgICAgdGltZXIuc3RhcnRPbmVTaG90KDAuMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZp
bmlzaGVkKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQor
eworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0
RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5M
b29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRU
aW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERl
cml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJl
ZCkKKyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCsrbV9jb3VudCA9PSAxMCkgeworICAgICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAg
ICAgIGJvb2wmIG1fdGVzdEZpbmlzaGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2
ZWRUaW1lciB0aW1lcih0ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGlu
ZygwLjAxKTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4
M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2OTI2MzAxNi4uYjNjMDVjYzc3YWI0Y2RhYTJkOTQy
NzQ3YTc5NGZhZWY4ZWE2YWYzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25m
aWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMCBA
QAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9z
Lmg+CisjaWYgIWRlZmluZWQoQlVJTERJTkdfSlNDT05MWV9fKQorI2luY2x1ZGUgPFdlYkNvcmUv
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChfX0FQUExFX18p
ICYmIF9fQVBQTEVfXwogCkBAIC02Myw3ICs2NSw3IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4K
IAotI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RL
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQorI2lmICFQTEFURk9STShJT1MpICYm
ICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19X
RUJLSVQyX18pKSAmJiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2Vi
S2l0L1dlYktpdDJfQy5oPgogI2VuZGlmCiAKQEAgLTg5LDYgKzkxLDYgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1MpICYmICFkZWZpbmVk
KEJVSUxESU5HX0pTQ09OTFlfXykKICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pT
Q09ubHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVz
SlNDT25seS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVlMjRiODk2Yjc5OWJlOTNhZDhmOGRlNzk4ZTlkNGI4
MzBiNzM3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9Q
bGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKyNpZiBFVkVOVF9MT09QKEdM
SUIpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3Zv
aWQgcnVuKGJvb2wqIGRvbmUpCit7CisgICAgd2hpbGUgKCEqZG9uZSkgeworI2lmIEVWRU5UX0xP
T1AoR0xJQikKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJl
bnQoKS5tYWluQ29udGV4dCgpLCBmYWxzZSk7CisjZWxzZQorICAgICAgICBXVEY6OlJ1bkxvb3A6
Oml0ZXJhdGUoKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25k
cykKK3sKKyAgICBXVEY6OnNsZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGls
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2pzY29ubHkvbWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFp
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2Vl
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNw
cApAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJv
bGxlci5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJu
IFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFy
Z3YpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdl
TG9nIGIvQ2hhbmdlTG9nCmluZGV4IGM3MDRjN2RhYzkzMTgxZDQxYjE0YzhjMGM3ODkxMzY0MzYy
M2Y5NzIuLmVlZDRjY2VhM2U2MzVkOWM3YjljZmQzMDA2MjdmZGM2ZTFiYzUxODcgMTAwNjQ0Ci0t
LSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0x
MiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlND
T25seV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtl
L09wdGlvbnNKU0NPbmx5LmNtYWtlOgorCiAyMDE2LTA0LTA3ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgdGhlIHRoZW1p
bmcgY29kZSBmb3IgR1RLKyAzLjIwCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276373</attachid>
            <date>2016-04-13 23:07:20 -0700</date>
            <delta_ts>2016-04-15 12:26:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160414150731.patch</filename>
            <type>text/plain</type>
            <size>49631</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDllNmM4MzUyZDVjYzIxOTNiZThmNDUz
ODJkY2JkMGY2NTdkMjZhMGYuLmQzMzI4NGZkMTI2NTMxZjE3NjgyNTA5YTllNWU3YWNjMzA5NTY1
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTYtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIEdMaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIEVWRU5UX0xPT1AoKSBXVEYgUGxhdGZvcm0gbWFjcm8u
CisgICAgICAgIEl0cyBFVkVOVF9MT09QKFRZUEUpIGlzIGV4Y2x1c2l2ZSB0byBlYWNoIG90aGVy
LiBTbyBmcm9tIG5vdywgd2UgZG8gbm90IG5lZWQgdG8gdGFrZSBjYXJlCisgICAgICAgIG9mIHRo
ZSBvcmRlciBvZiBpZi1kZWZzIGZvciB0aGUgZXZlbnQgbG9vcHMuIChGb3IgZXhhbXBsZSwgVVNF
KEdMSUIpIHNob3VsZCBoYXZlIGxlYWQgYmVmb3JlCisgICAgICAgIE9TKERBUldJTikgaW4gV29y
a1F1ZXVlLmggZm9yIFdlYktpdEdUSyBvbiBEYXJ3aW4uKQorCisgICAgICAgIEVWRU5UX0xPT1Ag
ZGV0ZXJtaW5hdGlvbiBpcyBkb25lIGluIFBsYXRmb3JtLmguIFRoaXMgZm9sbG93cyB0aGUgc3R5
bGUgb2YgV1RGIFBMQVRGT1JNLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAg
ICogd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZToKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5oOgor
ICAgICAgICAqIHd0Zi9Xb3JrUXVldWUuaDoKKyAgICAgICAgKiB3dGYvZ2VuZXJpYy9NYWluVGhy
ZWFkR2VuZXJpYy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJl
YWROb25lLmNwcC4KKyAgICAgICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6
CisgICAgICAgIChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOgor
ICAgICAgICAqIHd0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcDogQWRkZWQuCisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRlKToKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpTY2hlZHVsZWRUYXNr
KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpmaXJl
ZCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6c2No
ZWR1bGVkVGltZVBvaW50KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrOjp1cGRhdGVSZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OkVhcmxpZXN0U2NoZWR1bGU6Om9wZXJhdG9yKCkpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmlzQWN0aXZlKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpkZWFjdGl2
YXRlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6On5SdW5Mb29wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cG9wdWxhdGVUYXNrcyk6
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkltcGwpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpydW4pOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjppdGVyYXRlKToKKyAgICAgICAgKFdURjo6
UnVuTG9vcDo6c3RvcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondha2VVcCk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6c2NoZWR1
bGVBbmRXYWtlVXApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UpOgorICAgICAgICAoV1RG
OjpSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UpOgorICAgICAgICAoV1RGOjpSdW5Mb29w
OjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpz
dG9wKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2ZSk6CisgICAg
ICAgICogd3RmL2dlbmVyaWMvV29ya1F1ZXVlR2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAo
V29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAoV29ya1F1ZXVlOjpwbGF0
Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAg
IChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAgICAgICAqIHd0Zi9nbGliL1dvcmtRdWV1
ZUdMaWIuY3BwOgorICAgICAgICAqIHd0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcDoKKyAgICAg
ICAgKFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSk6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OnNjaGVkdWxlRGlzcGF0Y2hGdW5jdGlvbnNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgor
ICAgICAgICAqIHd0Zi9ub25lL1J1bkxvb3BOb25lLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6UnVuTG9vcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6On5SdW5Mb29wKTog
RGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6Ondh
a2VVcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJC
YXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6
IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHd0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwOgorICAgICAgICAoV29ya1F1
ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpw
bGF0Zm9ybUludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRj
aCk6IERlbGV0ZWQuCisgICAgICAgIChXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxldGVk
LgorCiAyMDE2LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUG9seW1vcnBoaWNBY2Nlc3Mgc2hvdWxkIGJ1ZmZlciBBY2Nlc3NDYXNlcyBiZWZvcmUgcmVn
ZW5lcmF0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBkMjkwZTc0YjBmMGY2MGY1OTZjN2YzNmY2YWI1ZWJh
MDI2ZjE3YWE4Li4xNDU0N2ZlNWJhYzgxOTliNTQ4MzFiNTdmNzFkYmI3YTUzOWJkY2JkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKQEAgLTExNDQsNCArMTE0NCwzOSBAQAogI2VuZGlmCiAjZW5kaWYKIAorCisvKiA9
PT09IEVWRU5UX0xPT1AgaGFuZGxlcyB3aGF0IG9mZmVycyB0aGUgZXZlbnQgbG9vcCBhYnN0cmFj
dGlvbiB0byBXZWJLaXQuCisgKiBGb3IgZXhhbXBsZSwgR1RLIHBvcnQgaW4gT1MgWCwgaXRzIHBs
YXRmb3JtIGlzIEdUSywgT1MgaXMgREFSV0lOIGFuZCBFVkVOVF9MT09QIGlzIEdMSUIuCisgKi8K
KyNkZWZpbmUgRVZFTlRfTE9PUChXVEZfRkVBVFVSRSkgKGRlZmluZWQgV1RGX0VWRU5UX0xPT1Bf
IyNXVEZfRkVBVFVSRSAmJiBXVEZfRVZFTlRfTE9PUF8jI1dURl9GRUFUVVJFKQorCisjaWYgIWRl
ZmluZWQoV1RGX0RFRkFVTFRfRVZFTlRfTE9PUCkKKyNkZWZpbmUgV1RGX0RFRkFVTFRfRVZFTlRf
TE9PUCAxCisjZW5kaWYKKworI2lmIFdURl9ERUZBVUxUX0VWRU5UX0xPT1AKKyNpZiBQTEFURk9S
TShXSU4pCisvKiBVc2UgV2luZG93cyBtZXNzYWdlIHB1bXAgYWJzdHJhY3Rpb24uCisgKiBFdmVu
IGlmIHRoZSBwb3J0IGlzIEFwcGxlV2luLCB3ZSB1c2UgdGhlIFdpbmRvd3MgbWVzc2FnZSBwdW1w
IHN5c3RlbSBmb3IgdGhlIGV2ZW50IGxvb3AsCisgKiBzbyB0aGF0IEVWRU5UX0xPT1AoV0lORE9X
UykgJiYgVVNFKENGKSBjYW4gYmUgdHJ1ZS4KKyAqIEFuZCBQTEFURk9STShXSU4pLCBQTEFURk9S
TShFRkwpIGFuZCBQTEFURk9STShHVEspIGFyZSBleGNsdXNpdmUuIElmIHRoZSBwb3J0IGlzIEdU
SywKKyAqIFBMQVRGT1JNKFdJTikgc2hvdWxkIGJlIGZhbHNlLiBBbmQgaW4gdGhhdCBjYXNlLCBH
TGliJ3MgZXZlbnQgbG9vcCBpcyB1c2VkLgorICovCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX1dJ
TkRPV1MgMQorI2VsaWYgUExBVEZPUk0oQ09DT0EpCisvKiBPUyBYIGFuZCBJT1MuIFVzZSBDb3Jl
Rm91bmRhdGlvbiAmIEdDRCBhYnN0cmFjdGlvbi4gKi8KKyNkZWZpbmUgV1RGX0VWRU5UX0xPT1Bf
REFSV0lOIDEKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKy8qIEVGTCBwb3J0IHVzZXMgR0xpYi4gQnV0
IGl0IHVzZXMgaXRzIG93biBldmVudCBsb29wIGFic3RyYWN0aW9uLgorICogVGh1cywgRVZFTlRf
TE9PUChFRkwpICYmIFVTRShHTElCKSBjYW4gYmUgdHJ1ZS4KKyAqLworI2RlZmluZSBXVEZfRVZF
TlRfTE9PUF9FRkwgMQorI2VsaWYgVVNFKEdMSUIpCisvKiBVc2UgR0xpYidzIGV2ZW50IGxvb3Ag
YWJzdHJhY3Rpb24uIFByaW1hcmlseSBHVEsgcG9ydCB1c2VzIGl0LiAqLworI2RlZmluZSBXVEZf
RVZFTlRfTE9PUF9HTElCIDEKKyNlbHNlCisjZGVmaW5lIFdURl9FVkVOVF9MT09QX0dFTkVSSUMg
MQorI2VuZGlmCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggMWFhZTQ2ZTAxOWEyNGRjNzExMjc4MzY4MTA5
Y2VjYTQ2YTQyNWM2OS4uOWMwYTEwYzhhN2M3NzY2MTllZGM4MWM1M2QxMzkxMTI4ODQ3ODM1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMSw0ICsxLDQgQEAKLWlmIChM
T1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQoraWYgKExPV0VSQ0FTRV9F
VkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCiAgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICAgICAgZ2xpYi9NYWluVGhyZWFkR0xp
Yi5jcHAKQEAgLTE1LDkgKzE1LDkgQEAgaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJF
UVVBTCAiZ2xpYiIpCiAgICAgKQogZWxzZSAoKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VT
Ci0gICAgICAgIG5vbmUvTWFpblRocmVhZE5vbmUuY3BwCi0gICAgICAgIG5vbmUvUnVuTG9vcE5v
bmUuY3BwCi0gICAgICAgIG5vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKyAgICAgICAgZ2VuZXJpYy9N
YWluVGhyZWFkR2VuZXJpYy5jcHAKKyAgICAgICAgZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAK
KyAgICAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogICAgICkKIGVuZGlmICgpCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9XVEYvd3RmL1J1
bkxvb3AuaAppbmRleCBmYWViOWIxZmZhMjVmY2FiYWU5MWRmODczMGFiY2U0MzI0Yjg5YTdmLi44
ODI2ODczMTc0ZTI1MzM4ZTFkYmM3NjkyMjY4NjQ1MjFmOGMyNTJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWZuZGVmIFJ1bkxvb3BfaAogI2RlZmluZSBSdW5Mb29wX2gKIAorI2lu
Y2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4KQEAg
LTM1LDExICszNiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBVU0UoR0xJQikKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwp
CisjaWYgRVZFTlRfTE9PUChFRkwpCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNsdWRlIDx3dGYv
ZWZsL1VuaXF1ZVB0ckVmbC5oPgogI2VuZGlmCkBAIC02NCwxNCArNjUsMjAgQEAgY2xhc3MgUnVu
TG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHN0b3AoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCB3YWtlVXAoKTsKIAot
I2lmIFBMQVRGT1JNKENPQ09BKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIHJ1bkZvckR1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbik7CiAjZW5kaWYK
IAotI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIEVWRU5UX0xPT1AoR0xJQikK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgR01haW5Db250ZXh0KiBtYWluQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFpbkNvbnRleHQuZ2V0KCk7IH0KICNlbmRpZgogCisjaWYgRVZFTlRfTE9P
UChHRU5FUklDKQorICAgIC8vIFJ1biB0aGUgc2luZ2xlIGl0ZXJhdGlvbiBvZiB0aGUgUnVuTG9v
cC4gSXQgY29uc3VtZXMgdGhlIHBlbmRpbmcgdGFza3MgYW5kIGV4cGlyZWQgdGltZXJzLCBidXQg
aXQgd29uJ3QgYmUgYmxvY2tlZC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQg
aXRlcmF0ZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworI2VuZGlmCisK
ICAgICBjbGFzcyBUaW1lckJhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKICAg
ICBwdWJsaWM6CkBAIC04Nyw3ICs5NCw3IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7CiAKLSNp
ZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBFVkVOVF9MT09QKEdMSUIpCiAgICAg
ICAgIHZvaWQgc2V0UHJpb3JpdHkoaW50KTsKICNlbmRpZgogCkBAIC05NiwyMiArMTAzLDI1IEBA
IGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgICAgICBS
dW5Mb29wJiBtX3J1bkxvb3A7CiAKLSNpZiBQTEFURk9STShXSU4pCisjaWYgRVZFTlRfTE9PUChX
SU5ET1dTKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKFJ1bkxvb3AqLCB1aW50NjRf
dCBJRCk7CiAgICAgICAgIHVpbnQ2NF90IG1fSUQ7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGlu
ZzsKLSNlbGlmIFBMQVRGT1JNKENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAg
ICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKICAg
ICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBtX3RpbWVyOwotI2VsaWYgUExBVEZP
Uk0oRUZMKQorI2VsaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgICAgIHN0YXRpYyBib29sIHRpbWVy
RmlyZWQodm9pZCogZGF0YSk7CiAgICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOwogICAgICAg
ICBib29sIG1faXNSZXBlYXRpbmc7Ci0jZWxpZiBVU0UoR0xJQikKKyNlbGlmIEVWRU5UX0xPT1Ao
R0xJQikKICAgICAgICAgdm9pZCB1cGRhdGVSZWFkeVRpbWUoKTsKICAgICAgICAgR1JlZlB0cjxH
U291cmNlPiBtX3NvdXJjZTsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsK
ICAgICAgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBtX2ZpcmVJbnRlcnZhbCB7IDAgfTsK
KyNlbGlmIEVWRU5UX0xPT1AoR0VORVJJQykKKyAgICAgICAgY2xhc3MgU2NoZWR1bGVkVGFzazsK
KyAgICAgICAgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IG1fc2NoZWR1bGVkVGFzazsKICNlbmRpZgog
ICAgIH07CiAKQEAgLTE0NCw3ICsxNTQsNyBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0
aW9uRGlzcGF0Y2hlciB7CiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKICAgICBEZXF1
ZTxzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX2Z1bmN0aW9uUXVldWU7CiAKLSNpZiBQTEFURk9S
TShXSU4pCisjaWYgRVZFTlRfTE9PUChXSU5ET1dTKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVy
UnVuTG9vcE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNL
IFJ1bkxvb3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxU
IHduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pOwpAQCAtMTUyLDEyICsxNjIsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5j
dGlvbkRpc3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJh
c2UqPiBUaW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRG
T1JNKENPQ09BKQorI2VsaWYgRVZFTlRfTE9PUChEQVJXSU4pCiAgICAgc3RhdGljIHZvaWQgcGVy
Zm9ybVdvcmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsK
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAg
aW50IG1fbmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgRVZFTlRfTE9P
UChFRkwpCiAgICAgTXV0ZXggbV9waXBlTG9jazsKICAgICBFZmxVbmlxdWVQdHI8RWNvcmVfUGlw
ZT4gbV9waXBlOwogCkBAIC0xNjUsMTAgKzE3NSwzNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgYm9vbCBtX3dha2VVcEV2ZW50UmVxdWVzdGVkOwog
CiAgICAgc3RhdGljIHZvaWQgd2FrZVVwRXZlbnQodm9pZCogZGF0YSwgdm9pZCosIHVuc2lnbmVk
KTsKLSNlbGlmIFVTRShHTElCKQorI2VsaWYgRVZFTlRfTE9PUChHTElCKQogICAgIEdSZWZQdHI8
R01haW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdNYWluTG9v
cD4+IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CisjZWxpZiBF
VkVOVF9MT09QKEdFTkVSSUMpCisgICAgdm9pZCBzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IExvY2tIb2xkZXImLCBS
ZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHdha2VVcChjb25z
dCBMb2NrSG9sZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgeworICAgICAg
ICBJdGVyYXRlLAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFN0YXR1
cyB7CisgICAgICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAgIHZvaWQg
cnVuSW1wbChSdW5Nb2RlKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwgU3RhdHVz
JiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAgICBMb2Nr
IG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25kaXRpb24g
bV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRU
YXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3BzOworICAg
IGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNrcyB7IGZh
bHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1
ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAwOWM5NWY0
NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uZWNlYTMxZmM2YTA4NmY0NzVlMGE4MThhNWM5NjgzZjZh
ZWI1YzY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysrIGIvU291
cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYgT1MoREFS
V0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIEVWRU5UX0xPT1AoREFSV0lOKQogI2luY2x1ZGUg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBF
VkVOVF9MT09QKEVGTCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVlRWZsLmg+Ci0jZWxpZiBVU0Uo
R0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2Vu
ZGlmCisKKyNpZiBFVkVOVF9MT09QKFdJTkRPV1MpCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9Xb3JrSXRlbVdpbi5o
PgogI2VuZGlmCiAKKyNpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1AoR0VORVJJQykK
KyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBAIC03NCwxMyArNzcsMTMgQEAgY2xhc3MgV29ya1F1ZXVl
IGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVudEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNpemVfdCBpbmRleCk+Jik7CiAKLSNpZiBQTEFURk9STShF
RkwpCisjaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgdm9pZCByZWdpc3RlclNvY2tldEV2ZW50SGFu
ZGxlcihpbnQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogICAgIHZvaWQgdW5yZWdpc3RlclNv
Y2tldEV2ZW50SGFuZGxlcihpbnQpOwotI2VsaWYgVVNFKEdMSUIpCi0gICAgUnVuTG9vcCYgcnVu
TG9vcCgpIGNvbnN0IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KLSNlbGlmIE9TKERBUldJTikKKyNl
bGlmIEVWRU5UX0xPT1AoREFSV0lOKQogICAgIGRpc3BhdGNoX3F1ZXVlX3QgZGlzcGF0Y2hRdWV1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hRdWV1ZTsgfQorI2VsaWYgRVZFTlRfTE9PUChH
TElCKSB8fCBFVkVOVF9MT09QKEdFTkVSSUMpCisgICAgUnVuTG9vcCYgcnVuTG9vcCgpIGNvbnN0
IHsgcmV0dXJuICptX3J1bkxvb3A7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtODksNyArOTIs
NyBAQCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiBuYW1lLCBUeXBlLCBRT1Mp
OwogICAgIHZvaWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKLSNpZiBPUyhXSU5ET1dTKQorI2lm
IEVWRU5UX0xPT1AoV0lORE9XUykKICAgICBzdGF0aWMgdm9pZCBDQUxMQkFDSyBoYW5kbGVDYWxs
YmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQpOwogICAgIHN0YXRp
YyB2b2lkIENBTExCQUNLIHRpbWVyQ2FsbGJhY2sodm9pZCogY29udGV4dCwgQk9PTEVBTiB0aW1l
ck9yV2FpdEZpcmVkKTsKICAgICBzdGF0aWMgRFdPUkQgV0lOQVBJIHdvcmtUaHJlYWRDYWxsYmFj
ayh2b2lkKiBjb250ZXh0KTsKQEAgLTEwMiwxOSArMTA1LDEyIEBAIGNsYXNzIFdvcmtRdWV1ZSBm
aW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIHN0YXRpYyBEV09SRCBXSU5B
UEkgdW5yZWdpc3RlcldhaXRBbmREZXN0cm95SXRlbUNhbGxiYWNrKHZvaWQqIGNvbnRleHQpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgRVZFTlRfTE9PUChFRkwpCiAgICAgUmVm
UHRyPERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShHTElCKQotICAg
IFRocmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBtX2luaXRpYWxp
emVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sgbV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9v
cENvbmRpdGlvbjsKLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIEVWRU5UX0xPT1AoREFSV0lOKQog
ICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVl
dWVfdCBtX2Rpc3BhdGNoUXVldWU7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VsaWYgRVZFTlRfTE9P
UChXSU5ET1dTKQogICAgIHZvbGF0aWxlIExPTkcgbV9pc1dvcmtUaHJlYWRSZWdpc3RlcmVkOwog
CiAgICAgTXV0ZXggbV93b3JrSXRlbVF1ZXVlTG9jazsKQEAgLTEyNCw2ICsxMjAsMTMgQEAgY2xh
c3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgSGFz
aE1hcDxIQU5ETEUsIFJlZlB0cjxIYW5kbGVXb3JrSXRlbT4+IG1faGFuZGxlczsKIAogICAgIEhB
TkRMRSBtX3RpbWVyUXVldWU7CisjZWxpZiBFVkVOVF9MT09QKEdMSUIpIHx8IEVWRU5UX0xPT1Ao
R0VORVJJQykKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOworICAgIExv
Y2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsKKyAgICBM
b2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlvbiBtX3Rl
cm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYv
Z2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg0OWM2OTUxZThiMmJh
M2NmYjNlYTY4YWE0ZmI0NDg3YTQ5YmUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5y
dT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFpblRocmVh
ZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWlu
VGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzg3M2YyNDI4
NGVkMmYzNGUyNTc3ZjZhZWViYWRlNjJjZGQzZGYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKQEAgLTAsMCArMSwyOTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRl
eC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFjZSBXVEYg
eworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RGX01BS0VfTk9OQ09QWUFCTEUo
U2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFtYmRhPgor
ICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKExhbWJkYSYmIGxhbWJkYSwg
ZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8TGFtYmRhPihsYW1iZGEpLCBp
bnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFt
YmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRhLCBkb3VibGUgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJkPExhbWJk
YT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6ZHVyYXRp
b25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVyYXRpb248
ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0aW5nKQor
ICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgfQorCisgICAgYm9vbCBmaXJl
ZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAgICAgIGlmICghbV9pc1JlcGVh
dGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVSZWFkeVRp
bWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAgfQorCisgICAgQ29uZGl0aW9u
OjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBvaW50OworICAgIH0KKworICAgIHZvaWQgdXBk
YXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50ID0gQ29u
ZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgIGlmICghbV9maXJlSW50ZXJ2YWwuY291bnQo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9pbnQgKz0g
bV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1bGUgewor
ICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+JiBsaHMs
IGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVkVGltZVBv
aW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisgICAgewor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIHJldHVy
biBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1faXNBY3Rp
dmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3NjaGVkdWxl
ZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUludGVydmFs
OworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgdHJ1ZSB9
OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxvb3A6OlJ1bkxvb3AoKQorewor
fQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29w
TG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5vdGlmeU9u
ZSgpOworCisgICAgLy8gSGVyZSBpcyBydW5uaW5nIG1haW4gbG9vcHMuIFdhaXQgdW50aWwgYWxs
IHRoZSBtYWluIGxvb3BzIGFyZSBkZXN0cm95ZWQuCisgICAgaWYgKCFtX21haW5Mb29wcy5pc0Vt
cHR5KCkpCisgICAgICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExvY2spOworfQorCitp
bmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1vZGUgcnVuTW9kZSwgU3RhdHVz
JiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
Pj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwor
CisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsKKyAgICAgICAgQ29uZGl0aW9u
OjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGlsID0gQ29uZGl0aW9uOjpDbG9jazo6dGltZV9w
b2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCktPnNjaGVkdWxlZFRpbWVQb2lu
dCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29wTG9jaywgc2xlZXBV
bnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NodXRkb3duIHx8IG1fcGVuZGluZ1Rh
c2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZyB8
fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFpbkxvb3BzLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fc3RvcENvbmRpdGlv
bi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX3BlbmRp
bmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6Okl0ZXJhdGUpCisg
ICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3BwaW5nOworCisgICAgLy8gQ2hl
Y2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBub3cg
PSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICB3aGlsZSAoIW1fc2NoZWR1bGVzLmlzRW1w
dHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBlYXJsaWVz
dCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgIGlmIChlYXJsaWVzdC0+c2NoZWR1bGVk
VGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RkOjpwb3Bf
aGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworICAgICAgICBtX3NjaGVkdWxlcy5y
ZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGltZXJzLmFwcGVuZChlYXJsaWVzdCk7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuSW1wbChSdW5Nb2Rl
IHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxvb3A6OmN1cnJlbnQoKSk7CisK
KyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6Q2xlYXI7CisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICAgICAgbV9tYWluTG9vcHMu
YXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisKKyAgICBEZXF1ZTxSZWZQdHI8VGlt
ZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7CisgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1bk1vZGUsIHN0YXR1c09mVGhpc0xvb3AsIGZp
cmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBEaXNwYXRjaCBz
Y2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVkVGltZXJzLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFzayA9IGZp
cmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2stPmZpcmVkKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRpbWVyIHJlcXVpcmVz
IHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5IHRoZSB0
aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAgICAgICAgICAgICAgICAvLyB3
ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAgICAgICAgIHNjaGVkdWxlKFdU
Rk1vdmUodGFzaykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBlcmZvcm1X
b3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOworfQorCit2b2lkIFJ1bkxvb3A6Oml0
ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6Okl0ZXJh
dGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZlLiBUaGVzZSBv
cGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5Mb29wJ3MgdGhy
ZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNwYXRjaEFmdGVy
fSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3MgUnVuTG9vcAor
Ly8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCit2b2lkIFJ1bkxvb3A6OnN0b3AoKQorewor
ICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21haW5Mb29wcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVzID0gbV9tYWlu
TG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBpbmcpIHsKKyAg
ICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVhZHlUb1J1bi5u
b3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0IExvY2tI
b2xkZXImKQoreworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3JlYWR5VG9SdW4u
bm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBS
dW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6U2No
ZWR1bGVkVGFzaz4mJiB0YXNrKQoreworICAgIG1fc2NoZWR1bGVzLmFwcGVuZChXVEZNb3ZlKHRh
c2spKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxl
cy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOwor
fQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+JiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBz
Y2hlZHVsZShsb2NrZXIsIFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVk
dWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2spCit7Cisg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCBX
VEZNb3ZlKHRhc2spKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5Mb29wOjpk
aXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2sp
OworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2VyLCBUaW1l
ckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShmdW5jdGlvbiwgZGVsYXkuY291bnQoKSAvIDEw
MDAuMCAvIDEwMDAuMCAvIDEwMDAuMCwgcmVwZWF0aW5nKSk7CisgICAgd2FrZVVwKGxvY2tlcik7
Cit9CisKKy8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBub3Qgb3duIHRoZSByZWdpc3RlcmVkIFRpbWVy
QmFzZSwKKy8vIFRpbWVyQmFzZSBhbmQgaXRzIG93bmVyIHNob3VsZCBtYW5hZ2UgdGhlc2UgbGlm
ZXRpbWUuCisvLworLy8gQW5kIG1vcmUgaW1wb3J0YW50bHksIFRpbWVyQmFzZSBvcGVyYXRpb25z
IGFyZSBub3QgdGhyZWFkLXNhZmUuCisvLyBTbyB0aHJlYWRzIHRoYXQgZG8gbm90IGJlbG9uZyB0
byB0aGUgU2NoZWR1bGVkVGFzaydzIFJ1bkxvb3AKKy8vIHNob3VsZCBub3Qgb3BlcmF0ZSB0aGUg
UnVuTG9vcDo6VGltZXJCYXNlLgorLy8gVGhpcyBpcyB0aGUgc2FtZSB0byB0aGUgUnVuTG9vcFdp
biwgd2hpY2ggaXMgUnVuTG9vcCBmb3IgV2luZG93cy4KK1J1bkxvb3A6OlRpbWVyQmFzZTo6VGlt
ZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKKyAgICAs
IG1fc2NoZWR1bGVkVGFzayhudWxscHRyKQoreworfQorCitSdW5Mb29wOjpUaW1lckJhc2U6On5U
aW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCit7CisgICAgc3RvcCgpOwor
ICAgIG1fc2NoZWR1bGVkVGFzayA9IFNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbdGhpc10geworICAg
ICAgICBmaXJlZCgpOworICAgIH0sIGludGVydmFsLCByZXBlYXRpbmcpOworICAgIG1fcnVuTG9v
cC5zY2hlZHVsZUFuZFdha2VVcChtX3NjaGVkdWxlZFRhc2spOworfQorCit2b2lkIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKG1fc2NoZWR1bGVkVGFzaykgeworICAgICAg
ICBtX3NjaGVkdWxlZFRhc2stPmRlYWN0aXZhdGUoKTsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNr
ID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjppc0FjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtRdWV1ZUdl
bmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMWI2YzRiNWEwOGYwZjNmNDkxMzgxMWQ1YTIzYzE3OWYwMjI3OGU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNw
cApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4g
VG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1vYmlsaXR5
LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya1F1ZXVl
LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNvbnN0IHNp
emVfdCBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29ya1F1ZXVl
OjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQoreworICAg
IC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNoZXIgb3Ig
Y29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2luZyB0aG9z
ZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRoYW4gMzEg
Y2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0dWRpbyBm
b3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRlVGhyZWFk
KCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2UgbmVlZAor
ICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFuIDMxIGNo
YXJhY3RlcnMuCisgICAgU3RyaW5nIHRocmVhZE5hbWUobmFtZSk7CisgICAgc2l6ZV90IHNpemUg
PSB0aHJlYWROYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKHNpemUgIT0gbm90Rm91bmQp
CisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnN1YnN0cmluZyhzaXplICsgMSk7Cisg
ICAgaWYgKHRocmVhZE5hbWUubGVuZ3RoKCkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0
KQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFtZS5yaWdodChrVmlzdWFsU3R1ZGlvVGhy
ZWFkTmFtZUxpbWl0KTsKKworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxv
b3BDb25kaXRpb25NdXRleCk7CisgICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVUaHJlYWQo
dGhyZWFkTmFtZS5hc2NpaSgpLmRhdGEoKSwgW3RoaXNdIHsKKyAgICAgICAgeworICAgICAgICAg
ICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
KyAgICAgICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisgICAgICAgICAg
ICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9Cisg
ICAgICAgIG1fcnVuTG9vcC0+cnVuKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgICAg
IG1fcnVuTG9vcCA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25k
aXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uLndhaXQobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4KTsK
K30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAgeworICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7
CisgICAgICAgIGlmIChtX3J1bkxvb3ApIHsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+c3RvcCgp
OworICAgICAgICAgICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1f
d29ya1F1ZXVlVGhyZWFkKSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1ZVRocmVh
ZCk7CisgICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgV29y
a1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7CisgICAg
UmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3BhdGNo
KFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMg
ZGVsYXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQdHI8V29y
a1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRlcihkZWxh
eSwgW3Byb3RlY3QsIGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3BwIGIvU291
cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcAppbmRleCA2MzJmZjQwNTE0OTNhNmFk
MDhkMTBiNmQzOTI3YjY4ZjQwZDNiMWExLi5lMjE5NTgxYjA4OTA4YzY1Nzk0Zjc0ZDFiMGZmZjMw
MDQyODIzMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L25vbmUvTWFpblRocmVhZE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
M2NiNmJhNjUzMjJkNjBmODEyNDgyNjhmNTZjZTYyMzliNGEyZDQxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvTWFpblRo
cmVhZE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdm9pZCBp
bml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKLXsKLX0KLQotdm9pZCBzY2hlZHVsZURpc3Bh
dGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxv
b3BOb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1NWNmZDU2ZTU5NWMw
YmVhMDEyZmE1OWZhOTUzZmU3OGU1NjM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29u
c3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJ1
bkxvb3AuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLVJ1bkxvb3A6OlJ1bkxvb3AoKQotewotfQot
Ci1SdW5Mb29wOjp+UnVuTG9vcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6cnVuKCkKLXsKLX0K
LQotdm9pZCBSdW5Mb29wOjpzdG9wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQot
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6OlRp
bWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQotICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCi17Ci19
Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQot
Ci12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29sKQotewotfQotCi12
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCi17Ci19Ci0KLWJvb2wgUnVuTG9vcDo6VGlt
ZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVl
Tm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTZkNjc1OGQ3OTY3YjM2NTY3NDVjZjgzN2U3MzBlMTA2
NjA4M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8
YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIKLQotdm9p
ZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwgVHlwZSwgUU9TKQot
ewotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLX0KLQotdm9p
ZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3Rk
OjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCi17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pT
Q09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKaW5kZXggNGQ1
Njc3ZWU3ZTJjNjZlY2JhOGQ5OTIzMTliNmUxZGU5ODdmOGNjMC4uNTI4NmJlYmU0MzFjMTk1ZDhm
ZGQwNzQzY2YyZDNlZjVjYzE3Njk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNK
U0NPbmx5LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQpAQCAt
MTEsMjQgKzExLDE5IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9TVEFUSUNfSlNDICJX
aGV0aGVyIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIGEgc3RhCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9O
X0VORCgpCiAKLXNldChBTExfRVZFTlRMT09QX1RZUEVTCitzZXQoQUxMX0VWRU5UX0xPT1BfVFlQ
RVMKICAgICBHTGliCi0gICAgTm9uZQorICAgIEdlbmVyaWMKICkKIAotaWYgKFVOSVggQU5EIE5P
VCBBUFBMRSkKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1lbHNlICgp
Ci0gICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9ucwotICAg
IHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQoREVGQVVM
VF9FVkVOVF9MT09QX1RZUEUgIkdlbmVyaWMiKQogCi1zZXQoRVZFTlRMT09QX1RZUEUgJHtERUZB
VUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9uIG9mIGV2ZW50
IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxMX0VWRU5UTE9P
UF9UWVBFU30pIikKK3NldChFVkVOVF9MT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UX0xPT1BfVFlQ
RX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQg
aW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVF9MT09QX1RZUEVTfSkiKQogCiBz
ZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0KEVOQUJM
RV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFCTEVfQVBJ
X1RFU1RTIE9OKQogCiBpZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9YODZfNjQpCiAgICAgU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VESVM4NiAxKQpAQCAtMzgsMTAgKzMzLDEyIEBAIGlm
IChFTkFCTEVfU1RBVElDX0pTQykKICAgICBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBF
IFNUQVRJQykKIGVuZGlmICgpCiAKLXN0cmluZyhUT0xPV0VSICR7RVZFTlRMT09QX1RZUEV9IExP
V0VSQ0FTRV9FVkVOVExPT1BfVFlQRSkKLWlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RS
RVFVQUwgImdsaWIiKQorc3RyaW5nKFRPTE9XRVIgJHtFVkVOVF9MT09QX1RZUEV9IExPV0VSQ0FT
RV9FVkVOVF9MT09QX1RZUEUpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVB
TCAiZ2xpYiIpCiAgICAgZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJFRCBDT01QT05FTlRT
IGdpbyBnb2JqZWN0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTElCIDEpCisg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0VWRU5UX0xPT1BfR0xJQiAxKQorICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMCkKIGVuZGlmICgp
CiAKICMgRnJvbSBPcHRpb25zR1RLLmNtYWtlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMzMzk2ZDRlMWZlNTRiOWNiMjk1ZjQ4YmEyNGM3ZWQ5
NmFiMzlmZS4uOThhNGQwMTU5OGU1OTRmOWNlZmQ0N2ZjMGY1NGUwMWM2MTk2MWFmNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDE2LTA0LTEzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBhbmQgcmVtb3ZlIGdsaWIgZGVw
ZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3QgV29ya1F1ZXVlIGFuZCBSdW5Mb29w
LgorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxvY2F0ZSB1bmRlciBqc2Nvbmx5IGRp
cmVjdG9yeSBzaW5jZQorICAgICAgICBpdCBpcyBub3QgYGdlbmVyaWNgIChTaW5jZSBpdCBpbmNs
dWRlcyB0aGUgR0xJQiBldmVudCBsb29wIGNhc2UpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHkuY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29uZmlnLmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNwcC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGls
OjpzbGVlcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcC4KKyAgICAgICAg
KG1haW4pOgorCiAyMDE2LTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2Ugc2hvdWxkIG5vdCBzcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGUgY2FjaGVkIHJl
ZGlyZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxp
c3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlhZWI4MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4w
MzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMwNzYzNTlkNDNjIDEwMDY0NAotLS0gYS9Ub29s
cy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcs
MTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFVQUwgIkdUSyIpCiAgICAgaWYgKEVOQUJMRV9N
SU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShNaW5pQnJvd3Nlci9ndGspCiAg
ICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJKU0NPbmx5IikKKyAgICBp
ZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0
QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCiBpZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTli
MDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMCwwICsxLDI3IEBACitzZXQoVEVTVFdF
QktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3NldChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VU
UFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RP
Ull9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9l
cyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuCisjIFRvIGJ1aWxkIFRl
c3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0byBpbmNsdWRlIFdlYktpdCByZWxhdGVkIGhl
YWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEphdmFTY3JpcHRDb3JlLgorYWRkX2RlZmluaXRp
b25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitpbmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKKyAgICAiJHtXVEZfRElSfS9p
Y3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikK
KyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQorICAgICAgICAke0dMSUJfSU5DTFVERV9E
SVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0ZXN0X21haW5fU09VUkNFUworICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5jcHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdU
Rl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vanNjb25seS9QbGF0Zm9ybVV0aWxp
dGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxv
b3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0
aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4
M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0Nzk0Mjk0Yi4uNDlmNTcwODhhOTYyMzg5NGU0
ZWNkMzUyNjIyM2MyZmUxNTNjYzc4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAog
I2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKKyNpZm5kZWYgQlVJTERJTkdfSlNDT05MWV9f
CiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tS
ZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFU
SU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2Uz
ZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2VhNDA2ODE3Li4xMWFhOTIxNmQ0YjZmYjhjYTlj
MDQ3NWIwMzU4NjZkNjQ1Y2QwZjIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
dW5Mb29wLmNwcApAQCAtNTQsNCArNTQsMTEzIEBACiAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNo
ZWQpOwogfQogCitURVNUKFdURl9SdW5Mb29wLCBOZXN0ZWRSdW5Mb29wKQoreworICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBm
YWxzZTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQg
PSB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwor
ICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQorCitURVNUKFdURl9S
dW5Mb29wLCBPbmVTaG90VGltZXIpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworCisgICAgY2xhc3MgRGVy
aXZlZFRpbWVyIDogcHVibGljIFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4geworICAgIHB1
YmxpYzoKKyAgICAgICAgRGVyaXZlZFRpbWVyKGJvb2wmIHRlc3RGaW5pc2hlZCkKKyAgICAgICAg
ICAgIDogUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZEZXJpdmVkVGltZXI6OmZpcmVkKQorICAgICAgICAgICAgLCBtX3Rlc3RGaW5pc2hlZCh0
ZXN0RmluaXNoZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmlyZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBtX3Rlc3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAg
ICAgICBzdG9wKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wmIG1f
dGVzdEZpbmlzaGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1l
cih0ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1lci5zdGFydE9uZVNob3QoMC4xKTsKKyAgICAg
ICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKworVEVTVChXVEZfUnVuTG9v
cCwgUmVwZWF0aW5nVGltZXIpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOworCisgICAgY2xhc3MgRGVyaXZl
ZFRpbWVyIDogcHVibGljIFJ1bkxvb3A6OlRpbWVyPERlcml2ZWRUaW1lcj4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgRGVyaXZlZFRpbWVyKGJvb2wmIHRlc3RGaW5pc2hlZCkKKyAgICAgICAgICAg
IDogUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMs
ICZEZXJpdmVkVGltZXI6OmZpcmVkKQorICAgICAgICAgICAgLCBtX3Rlc3RGaW5pc2hlZCh0ZXN0
RmluaXNoZWQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZmlyZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoKyttX2NvdW50ID09IDEwKSB7CisgICAgICAgICAg
ICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHN0b3AoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQg
bV9jb3VudCB7IDAgfTsKKyAgICAgICAgYm9vbCYgbV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKwor
ICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRpbWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAg
IHRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMDEpOworICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5p
c2hlZCk7CisgICAgfQorfQorCitURVNUKFdURl9SdW5Mb29wLCBNYW55VGltZXMpCit7CisgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBjbGFzcyBDb3VudGVyIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgcnVuKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCsrbV9jb3VudCA9PSAxMDAwMDApIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuc3RvcCgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpc10geworICAgICAgICAg
ICAgICAgIHJ1bigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgfTsKKworICAgIENvdW50ZXIg
Y291bnRlcjsKKworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbJmNvdW50ZXJdIHsK
KyAgICAgICAgY291bnRlci5ydW4oKTsKKyAgICB9KTsKKyAgICBSdW5Mb29wOjpydW4oKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2
MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2OTI2MzAxNi4uMDllMzU4MGQzNzJkYzk1MTEy
ZjE2NTYxNTJiNjQ3M2FkNGRkNjY3YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywx
MCBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFj
cm9zLmg+CisjaWZuZGVmIEJVSUxESU5HX0pTQ09OTFlfXworI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYm
IF9fQVBQTEVfXwogCkBAIC02Myw3ICs2NSw3IEBACiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAot
I2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAm
JiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKQorI2lmICFQTEFURk9STShJT1MpICYmICFQ
TEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJL
SVQyX18pKSAmJiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0
L1dlYktpdDJfQy5oPgogI2VuZGlmCiAKQEAgLTg5LDYgKzkxLDYgQEAKICNlbmRpZgogI2VuZGlm
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQTEFURk9STShJT1MpICYmICFkZWZpbmVkKEJV
SUxESU5HX0pTQ09OTFlfXykKICNkZWZpbmUgV0tfSEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09u
bHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlND
T25seS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMWVlMjRiODk2Yjc5OWJlOTNhZDhmOGRlNzk4ZTlkNGI4MzBi
NzM3MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0
Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKKyNpZiBFVkVOVF9MT09QKEdMSUIp
CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2UgVXRpbCB7CisKK3ZvaWQg
cnVuKGJvb2wqIGRvbmUpCit7CisgICAgd2hpbGUgKCEqZG9uZSkgeworI2lmIEVWRU5UX0xPT1Ao
R0xJQikKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJlbnQo
KS5tYWluQ29udGV4dCgpLCBmYWxzZSk7CisjZWxzZQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0
ZXJhdGUoKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykK
K3sKKyAgICBXVEY6OnNsZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2pzY29ubHkvbWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjJiMTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApA
QCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxl
ci5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRl
c3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3Yp
ID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IGY3MzI2ZDVmNzhiN2ZiNTFkZmMyNWViMDNjODMxMTI4OWZlYjY5
NDUuLjVmNzcyNmIzZThkMjM1MmVhZmY1ODVhNDFmOTdjMWQ4NGVjZjE5NzcgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xMyAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25s
eV0gSW1wbGVtZW50IFJ1bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09w
dGlvbnNKU0NPbmx5LmNtYWtlOgorCiAyMDE2LTA0LTEzICBLb25zdGFudGluIFRva2FyZXYgIDxh
bm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBGaW5kV2ViUCBzaG91bGQgbm90IGJlIG1pc2d1
aWRlZCBieSBwa2ctY29uZmlnIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276493</attachid>
            <date>2016-04-15 12:26:39 -0700</date>
            <delta_ts>2016-04-16 04:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160416042652.patch</filename>
            <type>text/plain</type>
            <size>49559</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDllNmM4MzUyZDVjYzIxOTNiZThmNDUz
ODJkY2JkMGY2NTdkMjZhMGYuLmQyMzQzNWYxY2JmNzU1MmNhNDE0NDA3OWJiMTgzNTBkZDk4OTdi
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTYtMDQtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIEdMaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIFVTRV9YWFhfRVZFTlRfTE9PUCBmbGFncy4KKyAgICAg
ICAgVVNFKFhYWF9FVkVOVF9MT09QKSBpcyBleGNsdXNpdmUgdG8gZWFjaCBvdGhlci4gU28gZnJv
bSBub3csIHdlIGRvIG5vdCBuZWVkIHRvIHRha2UgY2FyZQorICAgICAgICBvZiB0aGUgb3JkZXIg
b2YgaWYtZGVmcyBmb3IgdGhlIGV2ZW50IGxvb3BzLiAoRm9yIGV4YW1wbGUsIFVTRShHTElCKSBz
aG91bGQgaGF2ZSBsZWFkIGJlZm9yZQorICAgICAgICBPUyhEQVJXSU4pIGluIFdvcmtRdWV1ZS5o
IGZvciBXZWJLaXRHVEsgb24gRGFyd2luLikKKworICAgICAgICBFVkVOVF9MT09QIGRldGVybWlu
YXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxlIG9mIFdU
RiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAg
KiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVy
aWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAuCisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOgorICAgICAg
ICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAg
KiB3dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6U2NoZWR1bGVkVGFzayk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZmlyZWQpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OnNjaGVkdWxlZFRp
bWVQb2ludCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
azo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdU
Rjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjppc0FjdGl2ZSk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZGVhY3RpdmF0ZSk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+
UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBvcHVsYXRlVGFza3MpOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXRlcmF0ZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlQW5kV2Fr
ZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAgICAqIHd0
Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZh
bGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNw
cDoKKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxv
b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxl
dGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAx
Ni0wNC0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFBvbHlt
b3JwaGljQWNjZXNzIHNob3VsZCBidWZmZXIgQWNjZXNzQ2FzZXMgYmVmb3JlIHJlZ2VuZXJhdGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKaW5kZXggZDI5MGU3NGIwZjBmNjBmNTk2YzdmMzZmNmFiNWViYTAyNmYxN2Fh
OC4uYjBiNTNkZDAxNjI5MTQ1YzJjMTBlMzU4OGMxYjM1NTllMTM4YmIzYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CkBAIC0xMTQ0LDQgKzExNDQsMzQgQEAKICNlbmRpZgogI2VuZGlmCiAKKworI2lmICFkZWZpbmVk
KFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisjZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1Ag
MQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVMVF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lO
KQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0
aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNlIHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0
ZW0gZm9yIHRoZSBldmVudCBsb29wLAorICogc28gdGhhdCBVU0UoV0lORE9XU19FVkVOVF9MT09Q
KSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICogQW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JN
KEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RL
LAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUgZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdM
aWIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8KKyNkZWZpbmUgVVNFX1dJTkRPV1NfRVZFTlRf
TE9PUCAxCisjZWxpZiBQTEFURk9STShDT0NPQSkKKy8qIE9TIFggYW5kIElPUy4gVXNlIENvcmVG
b3VuZGF0aW9uICYgR0NEIGFic3RyYWN0aW9uLiAqLworI2RlZmluZSBVU0VfREFSV0lOX0VWRU5U
X0xPT1AgMQorI2VsaWYgUExBVEZPUk0oRUZMKQorLyogRUZMIHBvcnQgdXNlcyBHTGliLiBCdXQg
aXQgdXNlcyBpdHMgb3duIGV2ZW50IGxvb3AgYWJzdHJhY3Rpb24uCisgKiBUaHVzLCBVU0UoRUZM
X0VWRU5UX0xPT1ApICYmIFVTRShHTElCKSBjYW4gYmUgdHJ1ZS4KKyAqLworI2RlZmluZSBVU0Vf
RUZMX0VWRU5UX0xPT1AgMQorI2VsaWYgVVNFKEdMSUIpCisvKiBVc2UgR0xpYidzIGV2ZW50IGxv
b3AgYWJzdHJhY3Rpb24uIFByaW1hcmlseSBHVEsgcG9ydCB1c2VzIGl0LiAqLworI2RlZmluZSBV
U0VfR0xJQl9FVkVOVF9MT09QIDEKKyNlbHNlCisjZGVmaW5lIFVTRV9HRU5FUklDX0VWRU5UX0xP
T1AgMQorI2VuZGlmCisjZW5kaWYKKwogI2VuZGlmIC8qIFdURl9QbGF0Zm9ybV9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKaW5kZXggMWFhZTQ2ZTAxOWEyNGRjNzExMjc4MzY4
MTA5Y2VjYTQ2YTQyNWM2OS4uOWMwYTEwYzhhN2M3NzY2MTllZGM4MWM1M2QxMzkxMTI4ODQ3ODM1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQpAQCAtMSw0ICsxLDQgQEAKLWlm
IChMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQoraWYgKExPV0VSQ0FT
RV9FVkVOVF9MT09QX1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGxpc3QoQVBQRU5EIFdURl9T
T1VSQ0VTCiAgICAgICAgIGdsaWIvR1JlZlB0ci5jcHAKICAgICAgICAgZ2xpYi9NYWluVGhyZWFk
R0xpYi5jcHAKQEAgLTE1LDkgKzE1LDkgQEAgaWYgKExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBT
VFJFUVVBTCAiZ2xpYiIpCiAgICAgKQogZWxzZSAoKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VS
Q0VTCi0gICAgICAgIG5vbmUvTWFpblRocmVhZE5vbmUuY3BwCi0gICAgICAgIG5vbmUvUnVuTG9v
cE5vbmUuY3BwCi0gICAgICAgIG5vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKyAgICAgICAgZ2VuZXJp
Yy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKKyAgICAgICAgZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5j
cHAKKyAgICAgICAgZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmljLmNwcAogICAgICkKIGVuZGlmICgp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaCBiL1NvdXJjZS9XVEYvd3Rm
L1J1bkxvb3AuaAppbmRleCBmYWViOWIxZmZhMjVmY2FiYWU5MWRmODczMGFiY2U0MzI0Yjg5YTdm
Li5hMjE0MzFlYWIxMTdkNmJiYWVkZTVjODU4ZTJkZjQwMDlhZjcyZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKKysrIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaWZuZGVmIFJ1bkxvb3BfaAogI2RlZmluZSBSdW5Mb29wX2gKIAor
I2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbkRpc3BhdGNoZXIuaD4K
QEAgLTM1LDExICszNiwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKLSNpZiBVU0UoR0xJQikKKyNpZiBVU0UoR0xJQl9FVkVOVF9M
T09QKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oRUZMKQorI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDxFY29yZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9lZmwvVW5pcXVlUHRyRWZsLmg+CiAjZW5kaWYKQEAgLTY0LDE0ICs2NSwyMCBA
QCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHdh
a2VVcCgpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNFKERBUldJTl9FVkVOVF9MT09Q
KQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJ1bkZvckR1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbik7CiAjZW5kaWYKIAotI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEdNYWluQ29udGV4dCog
bWFpbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX21haW5Db250ZXh0LmdldCgpOyB9CiAjZW5k
aWYKIAorI2lmIFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCisgICAgLy8gUnVuIHRoZSBzaW5nbGUg
aXRlcmF0aW9uIG9mIHRoZSBSdW5Mb29wLiBJdCBjb25zdW1lcyB0aGUgcGVuZGluZyB0YXNrcyBh
bmQgZXhwaXJlZCB0aW1lcnMsIGJ1dCBpdCB3b24ndCBiZSBibG9ja2VkLgorICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgdm9pZCBpdGVyYXRlKCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPik7CisjZW5kaWYKKwogICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBSdW5Mb29wOwogICAgIHB1YmxpYzoKQEAgLTg3LDcgKzk0LDcgQEAgY2xhc3Mg
UnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpID0gMDsKIAotI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oRUZMKQorI2lm
IFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgICAgIHZvaWQgc2V0UHJpb3JpdHkoaW50KTsKICNl
bmRpZgogCkBAIC05NiwyMiArMTAzLDI1IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rp
b25EaXNwYXRjaGVyIHsKIAogICAgICAgICBSdW5Mb29wJiBtX3J1bkxvb3A7CiAKLSNpZiBQTEFU
Rk9STShXSU4pCisjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICAgICAgICAgc3RhdGljIHZv
aWQgdGltZXJGaXJlZChSdW5Mb29wKiwgdWludDY0X3QgSUQpOwogICAgICAgICB1aW50NjRfdCBt
X0lEOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7Ci0jZWxpZiBQTEFURk9STShDT0NPQSkK
KyNlbGlmIFVTRShEQVJXSU5fRVZFTlRfTE9PUCkKICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJG
aXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wVGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9STShFRkwpCisjZWxpZiBVU0UoRUZM
X0VWRU5UX0xPT1ApCiAgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7
CiAgICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOwogICAgICAgICBib29sIG1faXNSZXBlYXRp
bmc7Ci0jZWxpZiBVU0UoR0xJQikKKyNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgICAg
IHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3Vy
Y2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisjZWxpZiBVU0UoR0VO
RVJJQ19FVkVOVF9MT09QKQorICAgICAgICBjbGFzcyBTY2hlZHVsZWRUYXNrOworICAgICAgICBS
ZWZQdHI8U2NoZWR1bGVkVGFzaz4gbV9zY2hlZHVsZWRUYXNrOwogI2VuZGlmCiAgICAgfTsKIApA
QCAtMTQ0LDcgKzE1NCw3IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRj
aGVyIHsKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVMb2NrOwogICAgIERlcXVlPHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNp
ZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVuTG9v
cE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1bkxv
b3BXbmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHduZFBy
b2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0p
OwpAQCAtMTUyLDEyICsxNjIsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRp
c3BhdGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2UqPiBU
aW1lck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JNKENP
Q09BKQorI2VsaWYgVVNFKERBUldJTl9FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIHBlcmZv
cm1Xb3JrKHZvaWQqKTsKICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CiAg
ICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOwogICAgIGlu
dCBtX25lc3RpbmdMZXZlbDsKLSNlbGlmIFBMQVRGT1JNKEVGTCkKKyNlbGlmIFVTRShFRkxfRVZF
TlRfTE9PUCkKICAgICBNdXRleCBtX3BpcGVMb2NrOwogICAgIEVmbFVuaXF1ZVB0cjxFY29yZV9Q
aXBlPiBtX3BpcGU7CiAKQEAgLTE2NSwxMCArMTc1LDM1IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJs
aWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBib29sIG1fd2FrZVVwRXZlbnRSZXF1ZXN0ZWQ7
CiAKICAgICBzdGF0aWMgdm9pZCB3YWtlVXBFdmVudCh2b2lkKiBkYXRhLCB2b2lkKiwgdW5zaWdu
ZWQpOwotI2VsaWYgVVNFKEdMSUIpCisjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIEdS
ZWZQdHI8R01haW5Db250ZXh0PiBtX21haW5Db250ZXh0OwogICAgIFZlY3RvcjxHUmVmUHRyPEdN
YWluTG9vcD4+IG1fbWFpbkxvb3BzOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7Cisj
ZWxpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQorICAgIHZvaWQgc2NoZWR1bGUoUmVmUHRyPFRp
bWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJik7CisgICAgdm9pZCBzY2hlZHVsZShjb25zdCBMb2Nr
SG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4mJik7CisgICAgdm9pZCB3
YWtlVXAoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHZvaWQgc2NoZWR1bGVBbmRXYWtlVXAoUmVm
UHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4pOworCisgICAgZW51bSBjbGFzcyBSdW5Nb2Rl
IHsKKyAgICAgICAgSXRlcmF0ZSwKKyAgICAgICAgRHJhaW4KKyAgICB9OworCisgICAgZW51bSBj
bGFzcyBTdGF0dXMgeworICAgICAgICBDbGVhciwKKyAgICAgICAgU3RvcHBpbmcsCisgICAgfTsK
KyAgICB2b2lkIHJ1bkltcGwoUnVuTW9kZSk7CisgICAgYm9vbCBwb3B1bGF0ZVRhc2tzKFJ1bk1v
ZGUsIFN0YXR1cyYsIERlcXVlPFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+PiYpOwor
CisgICAgTG9jayBtX2xvb3BMb2NrOworICAgIENvbmRpdGlvbiBtX3JlYWR5VG9SdW47CisgICAg
Q29uZGl0aW9uIG1fc3RvcENvbmRpdGlvbjsKKyAgICBWZWN0b3I8UmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4+IG1fc2NoZWR1bGVzOworICAgIFZlY3RvcjxTdGF0dXMqPiBtX21haW5M
b29wczsKKyAgICBib29sIG1fc2h1dGRvd24geyBmYWxzZSB9OworICAgIGJvb2wgbV9wZW5kaW5n
VGFza3MgeyBmYWxzZSB9OwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9Xb3JrUXVldWUuaCBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCmluZGV4IGQyNjc1YzFl
ZGUwMDljOTVmNDU2ODQyNDU3OWVjN2I1NDk3MmE4OWYuLjk1NWE2YzBhMmMzYjYxMTk2NTAwYzUx
ZmI2ZGNlZmI0NWFiZDdhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1dvcmtRdWV1ZS5oCkBAIC0zNCwyMiArMzQsMjUgQEAKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KIAot
I2lmIE9TKERBUldJTikgJiYgIVBMQVRGT1JNKEdUSykKKyNpZiBVU0UoREFSV0lOX0VWRU5UX0xP
T1ApCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNlbmRpZgogCi0jaWYgUExBVEZP
Uk0oRUZMKQorI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKICNpbmNsdWRlIDxEaXNwYXRjaFF1ZXVl
RWZsLmg+Ci0jZWxpZiBVU0UoR0xJQikKLSNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+Ci0jaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+Ci0jZWxp
ZiBPUyhXSU5ET1dTKQorI2VuZGlmCisKKyNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi93aW4vV29ya0l0ZW1XaW4uaD4KICNlbmRpZgogCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkgfHwgVVNFKEdFTkVSSUNfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CkBAIC03
NCwxMyArNzcsMTMgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlz
cGF0Y2hlciB7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgY29uY3VycmVu
dEFwcGx5KHNpemVfdCBpdGVyYXRpb25zLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHNpemVf
dCBpbmRleCk+Jik7CiAKLSNpZiBQTEFURk9STShFRkwpCisjaWYgVVNFKEVGTF9FVkVOVF9MT09Q
KQogICAgIHZvaWQgcmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+KTsKICAgICB2b2lkIHVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50KTsK
LSNlbGlmIFVTRShHTElCKQotICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAq
bV9ydW5Mb29wOyB9Ci0jZWxpZiBPUyhEQVJXSU4pCisjZWxpZiBVU0UoREFSV0lOX0VWRU5UX0xP
T1ApCiAgICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4g
bV9kaXNwYXRjaFF1ZXVlOyB9CisjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VO
RVJJQ19FVkVOVF9MT09QKQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAq
bV9ydW5Mb29wOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTg5LDcgKzkyLDcgQEAgY2xhc3Mg
V29ya1F1ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgdm9pZCBw
bGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKICAgICB2b2lk
IHBsYXRmb3JtSW52YWxpZGF0ZSgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBVU0UoV0lORE9X
U19FVkVOVF9MT09QKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZv
aWQqIGNvbnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQg
Q0FMTEJBQ0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0
RmlyZWQpOwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQq
IGNvbnRleHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDog
cHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJl
Z2lzdGVyV2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCiAgICAgUmVmUHRy
PERpc3BhdGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShHTElCKQotICAgIFRo
cmVhZElkZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBtX2luaXRpYWxpemVS
dW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BD
b25kaXRpb247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sgbV90ZXJtaW5hdGVS
dW5Mb29wQ29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENv
bmRpdGlvbjsKLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIFVTRShEQVJXSU5fRVZFTlRfTE9PUCkK
ICAgICBzdGF0aWMgdm9pZCBleGVjdXRlRnVuY3Rpb24odm9pZCopOwogICAgIGRpc3BhdGNoX3F1
ZXVlX3QgbV9kaXNwYXRjaFF1ZXVlOwotI2VsaWYgT1MoV0lORE9XUykKKyNlbGlmIFVTRShXSU5E
T1dTX0VWRU5UX0xPT1ApCiAgICAgdm9sYXRpbGUgTE9ORyBtX2lzV29ya1RocmVhZFJlZ2lzdGVy
ZWQ7CiAKICAgICBNdXRleCBtX3dvcmtJdGVtUXVldWVMb2NrOwpAQCAtMTI0LDYgKzEyMCwxMyBA
QCBjbGFzcyBXb3JrUXVldWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAg
ICBIYXNoTWFwPEhBTkRMRSwgUmVmUHRyPEhhbmRsZVdvcmtJdGVtPj4gbV9oYW5kbGVzOwogCiAg
ICAgSEFORExFIG1fdGltZXJRdWV1ZTsKKyNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8IFVT
RShHRU5FUklDX0VWRU5UX0xPT1ApCisgICAgVGhyZWFkSWRlbnRpZmllciBtX3dvcmtRdWV1ZVRo
cmVhZDsKKyAgICBMb2NrIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBD
b25kaXRpb24gbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbjsKKyAgICBSdW5Mb29wKiBtX3J1
bkxvb3A7CisgICAgTG9jayBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleDsKKyAgICBD
b25kaXRpb24gbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uOwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
NDljNjk1MWU4YjJiYTNjZmIzZWE2OGFhNGZiNDQ4N2E0OWJlMDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL01haW5UaHJlYWRHZW5lcmljLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5u
dWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWFpblRocmVhZC5oIgorCisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgaW5pdGlh
bGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCit7Cit9CisKK3ZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1
bmN0aW9uc09uTWFpblRocmVhZCgpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPihkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKSk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMu
Y3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGM4NzNmMjQyODRlZDJmMzRlMjU3N2Y2YWVlYmFkZTYyY2RkM2RmMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCkBAIC0wLDAg
KzEsMjkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8
YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVuTG9vcC5oIgorCitu
YW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNjaGVkdWxlZFRhc2s+IHsKK1dURl9NQUtF
X05PTkNPUFlBQkxFKFNjaGVkdWxlZFRhc2spOworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIExhbWJkYT4KKyAgICBzdGF0aWMgUmVmUHRyPFNjaGVkdWxlZFRhc2s+IGNyZWF0ZShMYW1i
ZGEmJiBsYW1iZGEsIGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjaGVkdWxlZFRhc2soc3RkOjpmb3J3YXJkPExhbWJk
YT4obGFtYmRhKSwgaW50ZXJ2YWwsIHJlcGVhdGluZykpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIExhbWJkYT4KKyAgICBTY2hlZHVsZWRUYXNrKExhbWJkYSYmIGxhbWJkYSwgZG91
YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICAgICAgOiBtX2Z1bmN0aW9uKHN0ZDo6
Zm9yd2FyZDxMYW1iZGE+KGxhbWJkYSkpCisgICAgICAgICwgbV9maXJlSW50ZXJ2YWwoc3RkOjpj
aHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4oc3RkOjpjaHJv
bm86OmR1cmF0aW9uPGRvdWJsZT4oaW50ZXJ2YWwpKSkKKyAgICAgICAgLCBtX2lzUmVwZWF0aW5n
KHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHVwZGF0ZVJlYWR5VGltZSgpOworICAgIH0KKwor
ICAgIGJvb2wgZmlyZWQoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0FjdGl2ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIG1fZnVuY3Rpb24oKTsKKworICAgICAgICBp
ZiAoIW1faXNSZXBlYXRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
dXBkYXRlUmVhZHlUaW1lKCk7CisgICAgICAgIHJldHVybiBpc0FjdGl2ZSgpOworICAgIH0KKwor
ICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgc2NoZWR1bGVkVGltZVBvaW50KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NjaGVkdWxlZFRpbWVQb2ludDsKKyAgICB9CisK
KyAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpCisgICAgeworICAgICAgICBtX3NjaGVkdWxlZFRp
bWVQb2ludCA9IENvbmRpdGlvbjo6Q2xvY2s6Om5vdygpOworICAgICAgICBpZiAoIW1fZmlyZUlu
dGVydmFsLmNvdW50KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc2NoZWR1bGVk
VGltZVBvaW50ICs9IG1fZmlyZUludGVydmFsOworICAgIH0KKworICAgIHN0cnVjdCBFYXJsaWVz
dFNjaGVkdWxlIHsKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFJlZlB0cjxTY2hlZHVs
ZWRUYXNrPiYgbGhzLCBjb25zdCBSZWZQdHI8U2NoZWR1bGVkVGFzaz4mIHJocykKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGxocy0+c2NoZWR1bGVkVGltZVBvaW50KCkgPiByaHMtPnNj
aGVkdWxlZFRpbWVQb2ludCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIGJvb2wgaXNBY3Rp
dmUoKQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2ZUxvY2spOwor
ICAgICAgICByZXR1cm4gbV9pc0FjdGl2ZTsKKyAgICB9CisKKyAgICB2b2lkIGRlYWN0aXZhdGUo
KQorICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pc0FjdGl2ZUxvY2spOworICAg
ICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOworICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9p
bnQgbV9zY2hlZHVsZWRUaW1lUG9pbnQ7CisgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBt
X2ZpcmVJbnRlcnZhbDsKKyAgICBMb2NrIG1faXNBY3RpdmVMb2NrOworICAgIGJvb2wgbV9pc0Fj
dGl2ZSB7IHRydWUgfTsKKyAgICBib29sIG1faXNSZXBlYXRpbmc7Cit9OworCitSdW5Mb29wOjpS
dW5Mb29wKCkKK3sKK30KKworUnVuTG9vcDo6flJ1bkxvb3AoKQoreworICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9vcExvY2spOworICAgIG1fc2h1dGRvd24gPSB0cnVlOworICAgIG1fcmVhZHlU
b1J1bi5ub3RpZnlPbmUoKTsKKworICAgIC8vIEhlcmUgaXMgcnVubmluZyBtYWluIGxvb3BzLiBX
YWl0IHVudGlsIGFsbCB0aGUgbWFpbiBsb29wcyBhcmUgZGVzdHJveWVkLgorICAgIGlmICghbV9t
YWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0b3BDb25kaXRpb24ud2FpdChtX2xvb3BM
b2NrKTsKK30KKworaW5saW5lIGJvb2wgUnVuTG9vcDo6cG9wdWxhdGVUYXNrcyhSdW5Nb2RlIHJ1
bk1vZGUsIFN0YXR1cyYgc3RhdHVzT2ZUaGlzTG9vcCwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6
U2NoZWR1bGVkVGFzaz4+JiBmaXJlZFRpbWVycykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlciht
X2xvb3BMb2NrKTsKKworICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6OkRyYWluKSB7CisgICAg
ICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRpbWVfcG9pbnQgc2xlZXBVbnRpbCA9IENvbmRpdGlvbjo6
Q2xvY2s6OnRpbWVfcG9pbnQ6Om1heCgpOworICAgICAgICBpZiAoIW1fc2NoZWR1bGVzLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgIHNsZWVwVW50aWwgPSBtX3NjaGVkdWxlcy5maXJzdCgpLT5zY2hl
ZHVsZWRUaW1lUG9pbnQoKTsKKworICAgICAgICBtX3JlYWR5VG9SdW4ud2FpdFVudGlsKG1fbG9v
cExvY2ssIHNsZWVwVW50aWwsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4gbV9zaHV0ZG93biB8
fCBtX3BlbmRpbmdUYXNrcyB8fCBzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1czo6U3RvcHBpbmc7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChzdGF0dXNPZlRoaXNMb29wID09IFN0YXR1
czo6U3RvcHBpbmcgfHwgbV9zaHV0ZG93bikgeworICAgICAgICBtX21haW5Mb29wcy5yZW1vdmVM
YXN0KCk7CisgICAgICAgIGlmIChtX21haW5Mb29wcy5pc0VtcHR5KCkpCisgICAgICAgICAgICBt
X3N0b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgbV9wZW5kaW5nVGFza3MgPSBmYWxzZTsKKyAgICBpZiAocnVuTW9kZSA9PSBSdW5Nb2Rl
OjpJdGVyYXRlKQorICAgICAgICBzdGF0dXNPZlRoaXNMb29wID0gU3RhdHVzOjpTdG9wcGluZzsK
KworICAgIC8vIENoZWNrIGV4cGlyZWQgdGltZXJzLgorICAgIENvbmRpdGlvbjo6Q2xvY2s6OnRp
bWVfcG9pbnQgbm93ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgd2hpbGUgKCFtX3Nj
aGVkdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVk
VGFzaz4gZWFybGllc3QgPSBtX3NjaGVkdWxlcy5maXJzdCgpOworICAgICAgICBpZiAoZWFybGll
c3QtPnNjaGVkdWxlZFRpbWVQb2ludCgpID4gbm93KQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIHN0ZDo6cG9wX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4oKSwgbV9zY2hlZHVsZXMuZW5kKCks
IFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RTY2hlZHVsZSgpKTsKKyAgICAgICAg
bV9zY2hlZHVsZXMucmVtb3ZlTGFzdCgpOworICAgICAgICBmaXJlZFRpbWVycy5hcHBlbmQoZWFy
bGllc3QpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJ1bkxvb3A6OnJ1
bkltcGwoUnVuTW9kZSBydW5Nb2RlKQoreworICAgIEFTU0VSVCh0aGlzID09ICZSdW5Mb29wOjpj
dXJyZW50KCkpOworCisgICAgU3RhdHVzIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OkNsZWFy
OworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgICAg
IG1fbWFpbkxvb3BzLmFwcGVuZCgmc3RhdHVzT2ZUaGlzTG9vcCk7CisgICAgfQorCisgICAgRGVx
dWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+IGZpcmVkVGltZXJzOworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIGlmICghcG9wdWxhdGVUYXNrcyhydW5Nb2RlLCBzdGF0dXNP
ZlRoaXNMb29wLCBmaXJlZFRpbWVycykpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Ly8gRGlzcGF0Y2ggc2NoZWR1bGVkIHRpbWVycy4KKyAgICAgICAgd2hpbGUgKCFmaXJlZFRpbWVy
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRh
c2s+IHRhc2sgPSBmaXJlZFRpbWVycy50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgIGlmICh0YXNr
LT5maXJlZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzY2hlZHVsZSBiZWNhdXNlIHRoZSB0
aW1lciByZXF1aXJlcyByZXBlYXRpbmcuCisgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugd2ls
bCBxdWVyeSB0aGUgdGltZXJzJyB0aW1lIHBvaW50cyBiZWZvcmUgc2xlZXBpbmcsCisgICAgICAg
ICAgICAgICAgLy8gd2UgZG8gbm90IGNhbGwgd2FrZVVwKCkgaGVyZS4KKyAgICAgICAgICAgICAg
ICBzY2hlZHVsZShXVEZNb3ZlKHRhc2spKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBwZXJmb3JtV29yaygpOworICAgIH0KK30KKwordm9pZCBSdW5Mb29wOjpydW4oKQorewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6OkRyYWluKTsKK30KKwordm9p
ZCBSdW5Mb29wOjppdGVyYXRlKCkKK3sKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkucnVuSW1wbChS
dW5Nb2RlOjpJdGVyYXRlKTsKK30KKworLy8gUnVuTG9vcCBvcGVyYXRpb25zIGFyZSB0aHJlYWQt
c2FmZS4gVGhlc2Ugb3BlcmF0aW9ucyBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBvZiB0aGUg
UnVuTG9vcCdzIHRocmVhZC4KKy8vIEZvciBleGFtcGxlLCBXb3JrUXVldWU6OntkaXNwYXRjaCwg
ZGlzcGF0Y2hBZnRlcn0gY2FsbCB0aGUgb3BlcmF0aW9ucyBvZiB0aGUgV29ya1F1ZXVlIHRocmVh
ZCdzIFJ1bkxvb3AKKy8vIGZyb20gdGhlIGNhbGxlcidzIHRocmVhZC4KKwordm9pZCBSdW5Mb29w
OjpzdG9wKCkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICBpZiAo
bV9tYWluTG9vcHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdGF0dXMqIHN0
YXR1cyA9IG1fbWFpbkxvb3BzLmxhc3QoKTsKKyAgICBpZiAoKnN0YXR1cyAhPSBTdGF0dXM6OlN0
b3BwaW5nKSB7CisgICAgICAgICpzdGF0dXMgPSBTdGF0dXM6OlN0b3BwaW5nOworICAgICAgICBt
X3JlYWR5VG9SdW4ubm90aWZ5T25lKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6Ondha2VV
cChjb25zdCBMb2NrSG9sZGVyJikKK3sKKyAgICBtX3BlbmRpbmdUYXNrcyA9IHRydWU7CisgICAg
bV9yZWFkeVRvUnVuLm5vdGlmeU9uZSgpOworfQorCit2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCit7
CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgd2FrZVVwKGxvY2tlcik7
Cit9CisKK3ZvaWQgUnVuTG9vcDo6c2NoZWR1bGUoY29uc3QgTG9ja0hvbGRlciYsIFJlZlB0cjxU
aW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+JiYgdGFzaykKK3sKKyAgICBtX3NjaGVkdWxlcy5hcHBl
bmQoV1RGTW92ZSh0YXNrKSk7CisgICAgc3RkOjpwdXNoX2hlYXAobV9zY2hlZHVsZXMuYmVnaW4o
KSwgbV9zY2hlZHVsZXMuZW5kKCksIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6RWFybGllc3RT
Y2hlZHVsZSgpKTsKK30KKwordm9pZCBSdW5Mb29wOjpzY2hlZHVsZShSZWZQdHI8VGltZXJCYXNl
OjpTY2hlZHVsZWRUYXNrPiYmIHRhc2spCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29w
TG9jayk7CisgICAgc2NoZWR1bGUobG9ja2VyLCBXVEZNb3ZlKHRhc2spKTsKK30KKwordm9pZCBS
dW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNr
PiB0YXNrKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIHNjaGVk
dWxlKGxvY2tlciwgV1RGTW92ZSh0YXNrKSk7CisgICAgd2FrZVVwKGxvY2tlcik7Cit9CisKK3Zv
aWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3NlY29uZHMgZGVsYXks
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2xvb3BMb2NrKTsKKyAgICBib29sIHJlcGVhdGluZyA9IGZhbHNlOworICAgIHNjaGVkdWxl
KGxvY2tlciwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpjcmVhdGUoZnVuY3Rpb24sIGRlbGF5
LmNvdW50KCkgLyAxMDAwLjAgLyAxMDAwLjAgLyAxMDAwLjAsIHJlcGVhdGluZykpOworICAgIHdh
a2VVcChsb2NrZXIpOworfQorCisvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVn
aXN0ZXJlZCBUaW1lckJhc2UsCisvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFu
YWdlIHRoZXNlIGxpZmV0aW1lLgorLy8KKy8vIEFuZCBtb3JlIGltcG9ydGFudGx5LCBUaW1lckJh
c2Ugb3BlcmF0aW9ucyBhcmUgbm90IHRocmVhZC1zYWZlLgorLy8gU28gdGhyZWFkcyB0aGF0IGRv
IG5vdCBiZWxvbmcgdG8gdGhlIFNjaGVkdWxlZFRhc2sncyBSdW5Mb29wCisvLyBzaG91bGQgbm90
IG9wZXJhdGUgdGhlIFJ1bkxvb3A6OlRpbWVyQmFzZS4KKy8vIFRoaXMgaXMgdGhlIHNhbWUgdG8g
dGhlIFJ1bkxvb3BXaW4sIHdoaWNoIGlzIFJ1bkxvb3AgZm9yIFdpbmRvd3MuCitSdW5Mb29wOjpU
aW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQorICAgIDogbV9ydW5Mb29wKHJ1
bkxvb3ApCisgICAgLCBtX3NjaGVkdWxlZFRhc2sobnVsbHB0cikKK3sKK30KKworUnVuTG9vcDo6
VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKK3sKKyAgICBzdG9wKCk7Cit9CisKK3ZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdGFydChkb3VibGUgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorewor
ICAgIHN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFRhc2sgPSBTY2hlZHVsZWRUYXNrOjpjcmVhdGUo
W3RoaXNdIHsKKyAgICAgICAgZmlyZWQoKTsKKyAgICB9LCBpbnRlcnZhbCwgcmVwZWF0aW5nKTsK
KyAgICBtX3J1bkxvb3Auc2NoZWR1bGVBbmRXYWtlVXAobV9zY2hlZHVsZWRUYXNrKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQoreworICAgIGlmIChtX3NjaGVkdWxlZFRh
c2spIHsKKyAgICAgICAgbV9zY2hlZHVsZWRUYXNrLT5kZWFjdGl2YXRlKCk7CisgICAgICAgIG1f
c2NoZWR1bGVkVGFzayA9IG51bGxwdHI7CisgICAgfQorfQorCitib29sIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6aXNBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjaGVkdWxlZFRhc2s7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJp
Yy9Xb3JrUXVldWVHZW5lcmljLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1ZXVl
R2VuZXJpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTFiNmM0YjVhMDhmMGYzZjQ5MTM4MTFkNWEyM2MxNzlm
MDIyNzhlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvV29ya1F1
ZXVlR2VuZXJpYy5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMCBNb3Rv
cm9sYSBNb2JpbGl0eSwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldvcmtRdWV1ZS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK3N0
YXRpYyBjb25zdCBzaXplX3Qga1Zpc3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCA9IDMxOworCit2
b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUs
IFFPUykKK3sKKyAgICAvLyBUaGlzIG5hbWUgY2FuIGJlIGNvbS5hcHBsZS5XZWJLaXQuUHJvY2Vz
c0xhdW5jaGVyIG9yIGNvbS5hcHBsZS5Db3JlSVBDLlJlY2VpdmVRdWV1ZS4KKyAgICAvLyBXZSBh
cmUgdXNpbmcgdGhvc2UgbmFtZXMgZm9yIHRoZSB0aHJlYWQgbmFtZSwgYnV0IGJvdGggYXJlIGxv
bmdlciB0aGFuIDMxIGNoYXJhY3RlcnMsCisgICAgLy8gd2hpY2ggaXMgdGhlIGxpbWl0IG9mIFZp
c3VhbCBTdHVkaW8gZm9yIHRocmVhZCBuYW1lcy4KKyAgICAvLyBXaGVuIGxvZyBpcyBlbmFibGVk
IGNyZWF0ZVRocmVhZCgpIHdpbGwgYXNzZXJ0IGluc3RlYWQgb2YgdHJ1bmNhdGUgdGhlIG5hbWUs
IHNvIHdlIG5lZWQKKyAgICAvLyB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIGEgbmFtZSBsb25n
ZXIgdGhhbiAzMSBjaGFyYWN0ZXJzLgorICAgIFN0cmluZyB0aHJlYWROYW1lKG5hbWUpOworICAg
IHNpemVfdCBzaXplID0gdGhyZWFkTmFtZS5yZXZlcnNlRmluZCgnLicpOworICAgIGlmIChzaXpl
ICE9IG5vdEZvdW5kKQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFtZS5zdWJzdHJpbmco
c2l6ZSArIDEpOworICAgIGlmICh0aHJlYWROYW1lLmxlbmd0aCgpID4ga1Zpc3VhbFN0dWRpb1Ro
cmVhZE5hbWVMaW1pdCkKKyAgICAgICAgdGhyZWFkTmFtZSA9IHRocmVhZE5hbWUucmlnaHQoa1Zp
c3VhbFN0dWRpb1RocmVhZE5hbWVMaW1pdCk7CisKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lu
aXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgIG1fd29ya1F1ZXVlVGhyZWFkID0g
Y3JlYXRlVGhyZWFkKHRocmVhZE5hbWUuYXNjaWkoKS5kYXRhKCksIFt0aGlzXSB7CisgICAgICAg
IHsKKyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7CisgICAgICAgICAgICBtX3J1bkxvb3AgPSAmUnVuTG9vcDo6Y3VycmVudCgp
OworICAgICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi5ub3RpZnlPbmUoKTsK
KyAgICAgICAgfQorICAgICAgICBtX3J1bkxvb3AtPnJ1bigpOworICAgICAgICB7CisgICAgICAg
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7
CisgICAgICAgICAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgICAgICAgICAgbV90ZXJtaW5h
dGVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAgICB9CisgICAgfSk7CisgICAg
bV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbi53YWl0KG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25k
aXRpb25NdXRleCk7Cit9CisKK3ZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUludmFsaWRhdGUoKQor
eworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV90ZXJtaW5hdGVSdW5Mb29wQ29u
ZGl0aW9uTXV0ZXgpOworICAgICAgICBpZiAobV9ydW5Mb29wKSB7CisgICAgICAgICAgICBtX3J1
bkxvb3AtPnN0b3AoKTsKKyAgICAgICAgICAgIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbi53
YWl0KG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtX3dvcmtRdWV1ZVRocmVhZCkgeworICAgICAgICBkZXRhY2hUaHJlYWQobV93
b3JrUXVldWVUaHJlYWQpOworICAgICAgICBtX3dvcmtRdWV1ZVRocmVhZCA9IDA7CisgICAgfQor
fQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKQoreworICAgIFJlZlB0cjxXb3JrUXVldWU+IHByb3RlY3QodGhpcyk7CisgICAgbV9ydW5M
b29wLT5kaXNwYXRjaChbcHJvdGVjdCwgZnVuY3Rpb25dIHsKKyAgICAgICAgZnVuY3Rpb24oKTsK
KyAgICB9KTsKK30KKwordm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86
Om5hbm9zZWNvbmRzIGRlbGF5LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7Cisg
ICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRpc3Bh
dGNoQWZ0ZXIoZGVsYXksIFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigp
OworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVH
TGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKaW5kZXggNjMy
ZmY0MDUxNDkzYTZhZDA4ZDEwYjZkMzkyN2I2OGY0MGQzYjFhMS4uZTIxOTU4MWIwODkwOGM2NTc5
NGY3NGQxYjBmZmYzMDA0MjgyMzJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9X
b3JrUXVldWVHTGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTNjYjZiYTY1MzIyZDYwZjgxMjQ4MjY4ZjU2Y2U2MjM5YjRhMmQ0MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9ub25lL01haW5UaHJlYWROb25lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlh
bmRleC5ydT4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIk1haW5UaHJlYWQuaCIKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLXZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRQbGF0Zm9ybSgpCi17Ci19Ci0KLXZvaWQg
c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgpCi17Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3BwIGIvU291cmNlL1dURi93
dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAy
NTVjZmQ1NmU1OTVjMGJlYTAxMmZhNTlmYTk1M2ZlNzhlNTYzNmYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29w
Tm9uZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEtvbnN0YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJSdW5Mb29wLmgiCi0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29wOjpSdW5M
b29wKCkKLXsKLX0KLQotUnVuTG9vcDo6flJ1bkxvb3AoKQotewotfQotCi12b2lkIFJ1bkxvb3A6
OnJ1bigpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6c3RvcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9v
cDo6d2FrZVVwKCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotUnVuTG9vcDo6
VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKLSAgICA6IG1fcnVuTG9vcChy
dW5Mb29wKQotewotfQotCi1SdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQotewotICAg
IHN0b3AoKTsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KGRvdWJsZSwgYm9v
bCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQotewotfQotCi1ib29s
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9u
b25lL1dvcmtRdWV1ZU5vbmUuY3BwIGIvU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVOb25l
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2ZDY3NThkNzk2N2IzNjU2NzQ1
Y2Y4MzdlNzMwZTEwNjYwODNmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFu
dGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV29ya1F1
ZXVlLmgiCi0KLXZvaWQgV29ya1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhcios
IFR5cGUsIFFPUykKLXsKLX0KLQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgp
Ci17Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4p
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLXZvaWQgV29ya1F1ZXVlOjpkaXNw
YXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
KQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNt
YWtlCmluZGV4IDRkNTY3N2VlN2UyYzY2ZWNiYThkOTkyMzE5YjZlMWRlOTg3ZjhjYzAuLmRlNjQ5
YzRiOWFhNGU0M2JmMmM1Yzg2ZDQ0ZTg1Yzg1NzY0ZGUwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09u
bHkuY21ha2UKQEAgLTExLDI0ICsxMSwxOSBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
U1RBVElDX0pTQyAiV2hldGhlciB0byBidWlsZCBKYXZhU2NyaXB0Q29yZSBhcyBhIHN0YQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUTF9KSVQgUFVCTElDIE9OKQog
V0VCS0lUX09QVElPTl9FTkQoKQogCi1zZXQoQUxMX0VWRU5UTE9PUF9UWVBFUworc2V0KEFMTF9F
VkVOVF9MT09QX1RZUEVTCiAgICAgR0xpYgotICAgIE5vbmUKKyAgICBHZW5lcmljCiApCiAKLWlm
IChVTklYIEFORCBOT1QgQVBQTEUpCi0gICAgc2V0KERFRkFVTFRfRVZFTlRMT09QX1RZUEUgIkdM
aWIiKQotZWxzZSAoKQotICAgICMgVE9ETzogVXNlIG5hdGl2ZSBNYWMgYW5kIFdpbiBpbXBsZW1l
bnRhdGlvbnMKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiTm9uZSIpCi1lbmRpZiAo
KQorc2V0KERFRkFVTFRfRVZFTlRfTE9PUF9UWVBFICJHZW5lcmljIikKIAotc2V0KEVWRU5UTE9P
UF9UWVBFICR7REVGQVVMVF9FVkVOVExPT1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRh
dGlvbiBvZiBldmVudCBsb29wIHRvIGJlIHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAk
e0FMTF9FVkVOVExPT1BfVFlQRVN9KSIpCitzZXQoRVZFTlRfTE9PUF9UWVBFICR7REVGQVVMVF9F
VkVOVF9MT09QX1RZUEV9IENBQ0hFIFNUUklORyAiSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgbG9v
cCB0byBiZSB1c2VkIGluIEphdmFTY3JpcHRDb3JlIChvbmUgb2YgJHtBTExfRVZFTlRfTE9PUF9U
WVBFU30pIikKIAogc2V0KEVOQUJMRV9XRUJDT1JFIE9GRikKIHNldChFTkFCTEVfV0VCS0lUIE9G
RikKIHNldChFTkFCTEVfV0VCS0lUMiBPRkYpCi1zZXQoRU5BQkxFX0FQSV9URVNUUyBPRkYpCitz
ZXQoRU5BQkxFX0FQSV9URVNUUyBPTikKIAogaWYgKFdURl9DUFVfWDg2IE9SIFdURl9DUFVfWDg2
XzY0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9VRElTODYgMSkKQEAgLTM4LDEw
ICszMywxNSBAQCBpZiAoRU5BQkxFX1NUQVRJQ19KU0MpCiAgICAgc2V0KEphdmFTY3JpcHRDb3Jl
X0xJQlJBUllfVFlQRSBTVEFUSUMpCiBlbmRpZiAoKQogCi1zdHJpbmcoVE9MT1dFUiAke0VWRU5U
TE9PUF9UWVBFfSBMT1dFUkNBU0VfRVZFTlRMT09QX1RZUEUpCi1pZiAoTE9XRVJDQVNFX0VWRU5U
TE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKK3N0cmluZyhUT0xPV0VSICR7RVZFTlRfTE9PUF9U
WVBFfSBMT1dFUkNBU0VfRVZFTlRfTE9PUF9UWVBFKQoraWYgKExPV0VSQ0FTRV9FVkVOVF9MT09Q
X1RZUEUgU1RSRVFVQUwgImdsaWIiKQogICAgIGZpbmRfcGFja2FnZShHTElCIDIuMzYgUkVRVUlS
RUQgQ09NUE9ORU5UUyBnaW8gZ29iamVjdCkKICAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfR0xJQiAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTElCX0VWRU5UX0xP
T1AgMSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChXVEZfREVGQVVMVF9FVkVOVF9MT09Q
IDApCitlbHNlICgpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dFTkVSSUNfRVZF
TlRfTE9PUCAxKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VWRU5U
X0xPT1AgMCkKIGVuZGlmICgpCiAKICMgRnJvbSBPcHRpb25zR1RLLmNtYWtlCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2JiYzRhZmUxZGJkY2I3
ZDM1Y2RjMTI5ODhkZmRmMjQ0ODhiZjVlZi4uMTMwZmViN2RiMDQ3MjExMmU5NWQxMzZlN2I1OTY3
MTJiMDIyMzZlYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA0LTE1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBh
bmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIFRlc3RXVEYgdG8gSlNDT25seSBwb3J0IHRvIHRlc3QgV29y
a1F1ZXVlIGFuZCBSdW5Mb29wLgorICAgICAgICBQbGF0Zm9ybSBzcGVjaWZpYyBvbmVzIGxvY2F0
ZSB1bmRlciBqc2Nvbmx5IGRpcmVjdG9yeSBzaW5jZQorICAgICAgICBpdCBpcyBub3QgYGdlbmVy
aWNgIChTaW5jZSBpdCBpbmNsdWRlcyB0aGUgR0xJQiBldmVudCBsb29wIGNhc2UpLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpT
Q09ubHkuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGls
aXRpZXMuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29uZmlnLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9qc2Nvbmx5L1BsYXRmb3JtVXRpbGl0
aWVzSlNDT25seS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BO
b25lLmNwcC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9qc2Nv
bmx5L21haW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9Xb3JrUXVldWVO
b25lLmNwcC4KKyAgICAgICAgKG1haW4pOgorCiAyMDE2LTA0LTE1ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQKaW5kZXggZmFlOGI2MWNk
Yjg2NTU5YWViODMzY2NmZGE1YjYyZTUwY2I5YmIxZS4uMDM2NGFhOTU5ZjFiYzc2YmM5MzYwNzZm
MWEwMTBjMDc2MzU5ZDQzYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvQ01ha2VMaXN0cy50eHQKQEAgLTI3LDYgKzI3LDEwIEBAIGVsc2VpZiAoIiR7UE9SVH0i
IFNUUkVRVUFMICJHVEsiKQogICAgIGlmIChFTkFCTEVfTUlOSUJST1dTRVIpCiAgICAgICAgIGFk
ZF9zdWJkaXJlY3RvcnkoTWluaUJyb3dzZXIvZ3RrKQogICAgIGVuZGlmICgpCitlbHNlaWYgKCIk
e1BPUlR9IiBTVFJFUVVBTCAiSlNDT25seSIpCisgICAgaWYgKEVOQUJMRV9BUElfVEVTVFMpCisg
ICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoVGVzdFdlYktpdEFQSSkKKyAgICBlbmRpZiAoKQogZW5k
aWYgKCkKIAogaWYgKFdJTjMyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybUpTQ09ubHkuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kN2UzY2M3NWUxMGM5ZGU5YjA5ZTJhN2RhMTljMzQyNDZmYWIxODBm
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUpTQ09ubHku
Y21ha2UKQEAgLTAsMCArMSwyNyBAQAorc2V0KFRFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRf
RElSRUNUT1JZICIke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vVGVzdFdlYktpdEFQ
SSIpCitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUllfV1RGICIke1RF
U1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9XVEYiKQorCisjIFRoaXMgaXMg
bmVjZXNzYXJ5IGJlY2F1c2UgSlNDT25seSBwb3J0IGRvZXMgbm90IHN1cHBvcnQgV2ViQ29yZSwg
V2ViS2l0IGFuZCBXZWJLaXQyLgorIyBUbyBidWlsZCBUZXN0V1RGLCB3ZSBuZWVkIHRoaXMgZmxh
ZyBub3QgdG8gaW5jbHVkZSBXZWJLaXQgcmVsYXRlZCBoZWFkZXJzIGV4Y2VwdAorIyBmb3IgV1RG
IGFuZCBKYXZhU2NyaXB0Q29yZS4KK2FkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX0pTQ09OTFlf
XykKKworaW5jbHVkZV9kaXJlY3RvcmllcygKKyAgICAke0RFUklWRURfU09VUkNFU19ESVJ9L0Zv
cndhcmRpbmdIZWFkZXJzCisgICAgIiR7V1RGX0RJUn0vaWN1IgorKQorCitpZiAoTE9XRVJDQVNF
X0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCisgICAgaW5jbHVkZV9kaXJlY3Rvcmll
cyhTWVNURU0KKyAgICAgICAgJHtHTElCX0lOQ0xVREVfRElSU30KKyAgICApCitlbmRpZiAoKQor
CitzZXQodGVzdF9tYWluX1NPVVJDRVMKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9qc2Nvbmx5
L21haW4uY3BwCispCisKK2xpc3QoQVBQRU5EIFRlc3RXVEZfU09VUkNFUworICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IDc1ODNlNGVlMDc3ZTNlODgzZTZhNTdkYjVk
MWI4OWVjNDc5NDI5NGIuLjQ5ZjU3MDg4YTk2MjM4OTRlNGVjZDM1MjYyMjNjMmZlMTUzY2M3ODEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTI2LDggKzI2LDEw
IEBACiAjaWZuZGVmIFBsYXRmb3JtVXRpbGl0aWVzX2gKICNkZWZpbmUgUGxhdGZvcm1VdGlsaXRp
ZXNfaAogCisjaWZuZGVmIEJVSUxESU5HX0pTQ09OTFlfXwogI2luY2x1ZGUgPFdlYktpdC9XS05h
dGl2ZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjZW5kaWYKICNp
bmNsdWRlIDxzdHJpbmc+CiAKICNpZiBVU0UoRk9VTkRBVElPTikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKaW5kZXggZTdlM2Q5Zjk5M2VlNzlhNDY3ZDBlOTQxM2Uw
ODcxYzNlYTQwNjgxNy4uMTFhYTkyMTZkNGI2ZmI4Y2E5YzA0NzViMDM1ODY2ZDY0NWNkMGYyMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKQEAgLTU0LDQgKzU0
LDExMyBAQAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KIAorVEVTVChXVEZfUnVu
TG9vcCwgTmVzdGVkUnVuTG9vcCkKK3sKKyAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxv
b3AoKTsKKworICAgIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFsmXSB7CisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbJl0geworICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICB9KTsKKworICAgIFV0aWw6OnJ1
bigmdGVzdEZpbmlzaGVkKTsKK30KKworVEVTVChXVEZfUnVuTG9vcCwgT25lU2hvdFRpbWVyKQor
eworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0
RmluaXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5M
b29wOjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRU
aW1lcihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERl
cml2ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJl
ZCkKKyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgc3RvcCgpOworICAgICAgICB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sJiBtX3Rlc3RGaW5pc2hlZDsKKyAgICB9Owor
CisgICAgeworICAgICAgICBEZXJpdmVkVGltZXIgdGltZXIodGVzdEZpbmlzaGVkKTsKKyAgICAg
ICAgdGltZXIuc3RhcnRPbmVTaG90KDAuMSk7CisgICAgICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlz
aGVkKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1J1bkxvb3AsIFJlcGVhdGluZ1RpbWVyKQorewor
ICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOworCisgICAgYm9vbCB0ZXN0Rmlu
aXNoZWQgPSBmYWxzZTsKKworICAgIGNsYXNzIERlcml2ZWRUaW1lciA6IHB1YmxpYyBSdW5Mb29w
OjpUaW1lcjxEZXJpdmVkVGltZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIERlcml2ZWRUaW1l
cihib29sJiB0ZXN0RmluaXNoZWQpCisgICAgICAgICAgICA6IFJ1bkxvb3A6OlRpbWVyPERlcml2
ZWRUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmRGVyaXZlZFRpbWVyOjpmaXJlZCkK
KyAgICAgICAgICAgICwgbV90ZXN0RmluaXNoZWQodGVzdEZpbmlzaGVkKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGZpcmVkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCsrbV9jb3VudCA9PSAxMCkgeworICAgICAgICAgICAgICAgIG1fdGVzdEZpbmlzaGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAwIH07CisgICAgICAg
IGJvb2wmIG1fdGVzdEZpbmlzaGVkOworICAgIH07CisKKyAgICB7CisgICAgICAgIERlcml2ZWRU
aW1lciB0aW1lcih0ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1lci5zdGFydFJlcGVhdGluZygw
LjAxKTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0KK30KKworVEVT
VChXVEZfUnVuTG9vcCwgTWFueVRpbWVzKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOworCisgICAgY2xhc3MgQ291bnRlciB7CisgICAgcHVibGljOgorICAgICAgICB2
b2lkIHJ1bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgrK21fY291bnQgPT0gMTAwMDAw
KSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXNdIHsKKyAgICAgICAgICAgICAgICBydW4oKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX2Nv
dW50IHsgMCB9OworICAgIH07CisKKyAgICBDb3VudGVyIGNvdW50ZXI7CisKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goWyZjb3VudGVyXSB7CisgICAgICAgIGNvdW50ZXIucnVuKCk7
CisgICAgfSk7CisgICAgUnVuTG9vcDo6cnVuKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCmluZGV4IDJhNjI1ODNiYzllMGE5YjExNmVlMDBiZDMx
YTA2NDZkNjkyNjMwMTYuLjA5ZTM1ODBkMzcyZGM5NTExMmYxNjU2MTUyYjY0NzNhZDRkZDY2N2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29uZmlnLmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb25maWcuaApAQCAtMjcsOCArMjcsMTAgQEAKICNpbmNsdWRlICJjbWFrZWNv
bmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9z
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorI2lmbmRlZiBCVUlMRElO
R19KU0NPTkxZX18KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmg+Cisj
ZW5kaWYKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExFX18KIApAQCAtNjMsNyAr
NjUsNyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKLSNpZiAhUExBVEZPUk0oSU9TKSAmJiAh
UExBVEZPUk0oV0lOKSAmJiAhKFBMQVRGT1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VC
S0lUMl9fKSkKKyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhUExBVEZPUk0oV0lOKSAmJiAhKFBMQVRG
T1JNKEdUSykgJiYgIWRlZmluZWQoQlVJTERJTkdfV0VCS0lUMl9fKSkgJiYgIWRlZmluZWQoQlVJ
TERJTkdfSlNDT05MWV9fKQogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KICNlbmRpZgog
CkBAIC04OSw2ICs5MSw2IEBACiAjZW5kaWYKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPUykK
KyNpZiAhUExBVEZPUk0oSU9TKSAmJiAhZGVmaW5lZChCVUlMRElOR19KU0NPTkxZX18pCiAjZGVm
aW5lIFdLX0hBVkVfQ19TUEkgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQx
ZGM2YjkyMGJkZTY4NDAwMmY5Y2UxYWZhMWNmZDI2ZjdmN2Q1MTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NPbmx5LmNw
cApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgorCisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDxnbGliLmg+
CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBVdGlsIHsKKwordm9pZCBydW4oYm9vbCogZG9uZSkKK3sK
KyAgICB3aGlsZSAoISpkb25lKSB7CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKKyAgICAgICAg
Z19tYWluX2NvbnRleHRfaXRlcmF0aW9uKFJ1bkxvb3A6OmN1cnJlbnQoKS5tYWluQ29udGV4dCgp
LCBmYWxzZSk7CisjZWxzZQorICAgICAgICBXVEY6OlJ1bkxvb3A6Oml0ZXJhdGUoKTsKKyNlbmRp
ZgorICAgIH0KK30KKwordm9pZCBzbGVlcChkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXVEY6OnNs
ZWVwKHNlY29uZHMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVdGlsCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFpbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjJiMTJjZjRiNzkzMjlmZjBhZmViOWYxOGIwMmU2OWM3MTliN2VlOAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3RzQ29udHJvbGxlci5oIgorCitpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgcmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRl
c3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNT
IDogRVhJVF9GQUlMVVJFOworfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IGY3MzI2ZDVmNzhiN2ZiNTFkZmMyNWViMDNjODMxMTI4OWZlYjY5NDUuLjdjYWM2ZDIzMDll
MWQxNzgxZTg3ZjExYjg2Y2JhNGI1ZDY0NDI3YmMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0wNC0xNSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDT25seV0gSW1wbGVtZW50IFJ1
bkxvb3AgYW5kIHJlbW92ZSBnbGliIGRlcGVuZGVuY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTcwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNt
YWtlOgorCiAyMDE2LTA0LTEzICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBGaW5kV2ViUCBzaG91bGQgbm90IGJlIG1pc2d1aWRlZCBieSBwa2ctY29u
ZmlnIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276552</attachid>
            <date>2016-04-16 04:21:48 -0700</date>
            <delta_ts>2016-04-18 13:51:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155706-20160416202202.patch</filename>
            <type>text/plain</type>
            <size>49552</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDllNmM4MzUyZDVjYzIxOTNiZThmNDUz
ODJkY2JkMGY2NTdkMjZhMGYuLmI5MjEzNmNiM2FiOTNhNzk0ZmY4NzM2NmRmMTk0NGY2OWZkZDIy
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMTYtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29w
IGFuZCByZW1vdmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbWlzc2luZyBSdW5Mb29wIGFuZCBXb3JrUXVldWUgcGxh
dGZvcm0gY29kZSBmb3IgSlNDT25seSBwb3J0LgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24g
ZG9lcyBub3QgdXNlIHBsYXRmb3JtIHNwZWNpZmljIHRoaW5ncy4gSW5zdGVhZCwgd2UKKyAgICAg
ICAgaW1wbGVtZW50IHRoZW0gb24gV1RGIGZyYW1ld29yazsgdXNpbmcgY29uZGl0aW9uIHZhcmlh
YmxlcyB0byBjb25zdHJ1Y3QKKyAgICAgICAgdGhlIHJ1biBsb29wIGFuZCB0aW1lcnMuCisKKyAg
ICAgICAgU2luY2UgdGhlIGZhbGxiYWNrIGlzIGltcGxlbWVudGVkLCBpdCBpcyBub3QgbmVjZXNz
YXJ5IGZvciBKU0NPbmx5IHBvcnQKKyAgICAgICAgdG8gZGVwZW5kIG9uIEdMaWIncyBSdW5Mb29w
IGFic3RyYWN0aW9uLiBTbyB0aGlzIHBhdGNoIHJlbW92ZXMgaXRzCisgICAgICAgIGRlcGVuZGVu
Y3kuIEFzIGEgcmVzdWx0LCBub3csIEpTQ09ubHkgcG9ydCByZW1vdmVzIGRlcGVuZGVuY2llcyBl
eGNlcHQgZm9yIHRoZSBzeXN0ZW0gSUNVLgorCisgICAgICAgIFdlIGNsZWFuIHVwIGV2ZW50IGxv
b3AgaWZkZWZzIGJ5IGludHJvZHVjaW5nIFVTRV9YWFhfRVZFTlRfTE9PUCBmbGFncy4KKyAgICAg
ICAgVVNFKFhYWF9FVkVOVF9MT09QKSBpcyBleGNsdXNpdmUgdG8gZWFjaCBvdGhlci4gU28gZnJv
bSBub3csIHdlIGRvIG5vdCBuZWVkIHRvIHRha2UgY2FyZQorICAgICAgICBvZiB0aGUgb3JkZXIg
b2YgaWYtZGVmcyBmb3IgdGhlIGV2ZW50IGxvb3BzLiAoRm9yIGV4YW1wbGUsIFVTRShHTElCKSBz
aG91bGQgaGF2ZSBsZWFkIGJlZm9yZQorICAgICAgICBPUyhEQVJXSU4pIGluIFdvcmtRdWV1ZS5o
IGZvciBXZWJLaXRHVEsgb24gRGFyd2luLikKKworICAgICAgICBFVkVOVF9MT09QIGRldGVybWlu
YXRpb24gaXMgZG9uZSBpbiBQbGF0Zm9ybS5oLiBUaGlzIGZvbGxvd3MgdGhlIHN0eWxlIG9mIFdU
RiBQTEFURk9STS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybUpTQ09ubHkuY21ha2U6CisgICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAg
KiB3dGYvV29ya1F1ZXVlLmg6CisgICAgICAgICogd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVy
aWMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dURi93dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5j
cHAuCisgICAgICAgIChXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOgorICAgICAg
ICAoV1RGOjpzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKToKKyAgICAgICAg
KiB3dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6
OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6U2NoZWR1bGVkVGFzayk6CisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZmlyZWQpOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OnNjaGVkdWxlZFRp
bWVQb2ludCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFz
azo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpT
Y2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKFdU
Rjo6UnVuTG9vcDo6VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjppc0FjdGl2ZSk6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6ZGVhY3RpdmF0ZSk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxvb3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+
UnVuTG9vcCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnBvcHVsYXRlVGFza3MpOgorICAgICAg
ICAoV1RGOjpSdW5Mb29wOjpydW5JbXBsKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6cnVuKToK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6aXRlcmF0ZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6
OnN0b3ApOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOgorICAgICAgICAoV1RGOjpS
dW5Mb29wOjpzY2hlZHVsZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnNjaGVkdWxlQW5kV2Fr
ZVVwKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcik6CisgICAgICAgIChX
VEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9v
cDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6Cisg
ICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6aXNBY3RpdmUpOgorICAgICAgICAqIHd0
Zi9nZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdvcmtRdWV1
ZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZh
bGlkYXRlKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAgICAgICAoV29ya1F1
ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNw
cDoKKyAgICAgICAgKiB3dGYvbm9uZS9NYWluVGhyZWFkTm9uZS5jcHA6CisgICAgICAgIChXVEY6
OmluaXRpYWxpemVNYWluVGhyZWFkUGxhdGZvcm0pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpz
Y2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAg
KiB3dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlJ1bkxv
b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp+UnVuTG9vcCk6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjp3YWtlVXApOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSk6IERl
bGV0ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OmlzQWN0aXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3dGYvbm9uZS9Xb3JrUXVldWVOb25lLmNwcDoKKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxh
dGZvcm1Jbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6cGxhdGZvcm1J
bnZhbGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOiBEZWxl
dGVkLgorICAgICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4KKwogMjAx
Ni0wNC0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFBvbHlt
b3JwaGljQWNjZXNzIHNob3VsZCBidWZmZXIgQWNjZXNzQ2FzZXMgYmVmb3JlIHJlZ2VuZXJhdGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKaW5kZXggZDI5MGU3NGIwZjBmNjBmNTk2YzdmMzZmNmFiNWViYTAyNmYxN2Fh
OC4uZjBiOWI0ZGQyZWEwODI2MGRlMmFhYWQ3OTAzNzQ3ZjEwZGM2YmZjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CkBAIC0xMTQ0LDQgKzExNDQsMzQgQEAKICNlbmRpZgogI2VuZGlmCiAKKworI2lmICFkZWZpbmVk
KFdURl9ERUZBVUxUX0VWRU5UX0xPT1ApCisjZGVmaW5lIFdURl9ERUZBVUxUX0VWRU5UX0xPT1Ag
MQorI2VuZGlmCisKKyNpZiBXVEZfREVGQVVMVF9FVkVOVF9MT09QCisjaWYgUExBVEZPUk0oV0lO
KQorLyogVXNlIFdpbmRvd3MgbWVzc2FnZSBwdW1wIGFic3RyYWN0aW9uLgorICogRXZlbiBpZiB0
aGUgcG9ydCBpcyBBcHBsZVdpbiwgd2UgdXNlIHRoZSBXaW5kb3dzIG1lc3NhZ2UgcHVtcCBzeXN0
ZW0gZm9yIHRoZSBldmVudCBsb29wLAorICogc28gdGhhdCBVU0UoV0lORE9XU19FVkVOVF9MT09Q
KSAmJiBVU0UoQ0YpIGNhbiBiZSB0cnVlLgorICogQW5kIFBMQVRGT1JNKFdJTiksIFBMQVRGT1JN
KEVGTCkgYW5kIFBMQVRGT1JNKEdUSykgYXJlIGV4Y2x1c2l2ZS4gSWYgdGhlIHBvcnQgaXMgR1RL
LAorICogUExBVEZPUk0oV0lOKSBzaG91bGQgYmUgZmFsc2UuIEFuZCBpbiB0aGF0IGNhc2UsIEdM
aWIncyBldmVudCBsb29wIGlzIHVzZWQuCisgKi8KKyNkZWZpbmUgVVNFX1dJTkRPV1NfRVZFTlRf
TE9PUCAxCisjZWxpZiBQTEFURk9STShDT0NPQSkKKy8qIE9TIFggYW5kIElPUy4gVXNlIENvcmVG
b3VuZGF0aW9uICYgR0NEIGFic3RyYWN0aW9uLiAqLworI2RlZmluZSBVU0VfQ09DT0FfRVZFTlRf
TE9PUCAxCisjZWxpZiBQTEFURk9STShFRkwpCisvKiBFRkwgcG9ydCB1c2VzIEdMaWIuIEJ1dCBp
dCB1c2VzIGl0cyBvd24gZXZlbnQgbG9vcCBhYnN0cmFjdGlvbi4KKyAqIFRodXMsIFVTRShFRkxf
RVZFTlRfTE9PUCkgJiYgVVNFKEdMSUIpIGNhbiBiZSB0cnVlLgorICovCisjZGVmaW5lIFVTRV9F
RkxfRVZFTlRfTE9PUCAxCisjZWxpZiBVU0UoR0xJQikKKy8qIFVzZSBHTGliJ3MgZXZlbnQgbG9v
cCBhYnN0cmFjdGlvbi4gUHJpbWFyaWx5IEdUSyBwb3J0IHVzZXMgaXQuICovCisjZGVmaW5lIFVT
RV9HTElCX0VWRU5UX0xPT1AgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0dFTkVSSUNfRVZFTlRfTE9P
UCAxCisjZW5kaWYKKyNlbmRpZgorCiAjZW5kaWYgLyogV1RGX1BsYXRmb3JtX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZSBiL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSlNDT25seS5jbWFrZQppbmRleCAxYWFlNDZlMDE5YTI0ZGM3MTEyNzgzNjgx
MDljZWNhNDZhNDI1YzY5Li45YzBhMTBjOGE3Yzc3NjYxOWVkYzgxYzUzZDEzOTExMjg4NDc4MzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUpTQ09ubHkuY21ha2UKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCkBAIC0xLDQgKzEsNCBAQAotaWYg
KExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCitpZiAoTE9XRVJDQVNF
X0VWRU5UX0xPT1BfVFlQRSBTVFJFUVVBTCAiZ2xpYiIpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NP
VVJDRVMKICAgICAgICAgZ2xpYi9HUmVmUHRyLmNwcAogICAgICAgICBnbGliL01haW5UaHJlYWRH
TGliLmNwcApAQCAtMTUsOSArMTUsOSBAQCBpZiAoTE9XRVJDQVNFX0VWRU5UTE9PUF9UWVBFIFNU
UkVRVUFMICJnbGliIikKICAgICApCiBlbHNlICgpCiAgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJD
RVMKLSAgICAgICAgbm9uZS9NYWluVGhyZWFkTm9uZS5jcHAKLSAgICAgICAgbm9uZS9SdW5Mb29w
Tm9uZS5jcHAKLSAgICAgICAgbm9uZS9Xb3JrUXVldWVOb25lLmNwcAorICAgICAgICBnZW5lcmlj
L01haW5UaHJlYWRHZW5lcmljLmNwcAorICAgICAgICBnZW5lcmljL1J1bkxvb3BHZW5lcmljLmNw
cAorICAgICAgICBnZW5lcmljL1dvcmtRdWV1ZUdlbmVyaWMuY3BwCiAgICAgKQogZW5kaWYgKCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCmluZGV4IGZhZWI5YjFmZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQzMjRiODlhN2Yu
LmZjODVhMmJmY2JmM2NjOTk4ZmM0MDlkNjdmNWVjZGNkZWI0YmUyNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAg
LTI4LDYgKzI4LDcgQEAKICNpZm5kZWYgUnVuTG9vcF9oCiAjZGVmaW5lIFJ1bkxvb3BfaAogCisj
aW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uRGlzcGF0Y2hlci5oPgpA
QCAtMzUsMTEgKzM2LDExIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KIAotI2lmIFVTRShHTElCKQorI2lmIFVTRShHTElCX0VWRU5UX0xP
T1ApCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShFRkwpCisjaWYgVVNFKEVGTF9FVkVOVF9MT09QKQogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5j
bHVkZSA8d3RmL2VmbC9VbmlxdWVQdHJFZmwuaD4KICNlbmRpZgpAQCAtNjQsMTQgKzY1LDIwIEBA
IGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgd2Fr
ZVVwKCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlvbihkb3VibGUgZHVyYXRp
b24pOwogI2VuZGlmCiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBHTWFpbkNvbnRleHQqIG1h
aW5Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5nZXQoKTsgfQogI2VuZGlm
CiAKKyNpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQorICAgIC8vIFJ1biB0aGUgc2luZ2xlIGl0
ZXJhdGlvbiBvZiB0aGUgUnVuTG9vcC4gSXQgY29uc3VtZXMgdGhlIHBlbmRpbmcgdGFza3MgYW5k
IGV4cGlyZWQgdGltZXJzLCBidXQgaXQgd29uJ3QgYmUgYmxvY2tlZC4KKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIHZvaWQgaXRlcmF0ZSgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoQWZ0ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4pOworI2VuZGlmCisKICAgICBjbGFzcyBUaW1lckJhc2UgewogICAgICAgICBmcmll
bmQgY2xhc3MgUnVuTG9vcDsKICAgICBwdWJsaWM6CkBAIC04Nyw3ICs5NCw3IEBAIGNsYXNzIFJ1
bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVyIHsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZmlyZWQoKSA9IDA7CiAKLSNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JNKEVGTCkKKyNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQogICAgICAgICB2b2lkIHNldFByaW9yaXR5KGludCk7CiAjZW5k
aWYKIApAQCAtOTYsMjIgKzEwMywyNSBAQCBjbGFzcyBSdW5Mb29wIDogcHVibGljIEZ1bmN0aW9u
RGlzcGF0Y2hlciB7CiAKICAgICAgICAgUnVuTG9vcCYgbV9ydW5Mb29wOwogCi0jaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFVTRShXSU5ET1dTX0VWRU5UX0xPT1ApCiAgICAgICAgIHN0YXRpYyB2b2lk
IHRpbWVyRmlyZWQoUnVuTG9vcCosIHVpbnQ2NF90IElEKTsKICAgICAgICAgdWludDY0X3QgbV9J
RDsKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nOwotI2VsaWYgUExBVEZPUk0oQ09DT0EpCisj
ZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICAgICAgc3RhdGljIHZvaWQgdGltZXJGaXJl
ZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29w
VGltZXJSZWY+IG1fdGltZXI7Ci0jZWxpZiBQTEFURk9STShFRkwpCisjZWxpZiBVU0UoRUZMX0VW
RU5UX0xPT1ApCiAgICAgICAgIHN0YXRpYyBib29sIHRpbWVyRmlyZWQodm9pZCogZGF0YSk7CiAg
ICAgICAgIEVjb3JlX1RpbWVyKiBtX3RpbWVyOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmc7
Ci0jZWxpZiBVU0UoR0xJQikKKyNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgICAgIHZv
aWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7
CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIHN0ZDo6Y2hy
b25vOjptaWNyb3NlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisjZWxpZiBVU0UoR0VORVJJ
Q19FVkVOVF9MT09QKQorICAgICAgICBjbGFzcyBTY2hlZHVsZWRUYXNrOworICAgICAgICBSZWZQ
dHI8U2NoZWR1bGVkVGFzaz4gbV9zY2hlZHVsZWRUYXNrOwogI2VuZGlmCiAgICAgfTsKIApAQCAt
MTQ0LDcgKzE1NCw3IEBAIGNsYXNzIFJ1bkxvb3AgOiBwdWJsaWMgRnVuY3Rpb25EaXNwYXRjaGVy
IHsKICAgICBNdXRleCBtX2Z1bmN0aW9uUXVldWVMb2NrOwogICAgIERlcXVlPHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBV
U0UoV0lORE9XU19FVkVOVF9MT09QKQogICAgIHN0YXRpYyBib29sIHJlZ2lzdGVyUnVuTG9vcE1l
c3NhZ2VXaW5kb3dDbGFzcygpOwogICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNLIFJ1bkxvb3BX
bmRQcm9jKEhXTkQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNKTsKICAgICBMUkVTVUxUIHduZFByb2Mo
SFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pOwpA
QCAtMTUyLDEyICsxNjIsMTIgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBGdW5jdGlvbkRpc3Bh
dGNoZXIgewogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBUaW1lckJhc2UqPiBUaW1l
ck1hcDsKICAgICBUaW1lck1hcCBtX2FjdGl2ZVRpbWVyczsKLSNlbGlmIFBMQVRGT1JNKENPQ09B
KQorI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgc3RhdGljIHZvaWQgcGVyZm9ybVdv
cmsodm9pZCopOwogICAgIFJldGFpblB0cjxDRlJ1bkxvb3BSZWY+IG1fcnVuTG9vcDsKICAgICBS
ZXRhaW5QdHI8Q0ZSdW5Mb29wU291cmNlUmVmPiBtX3J1bkxvb3BTb3VyY2U7CiAgICAgaW50IG1f
bmVzdGluZ0xldmVsOwotI2VsaWYgUExBVEZPUk0oRUZMKQorI2VsaWYgVVNFKEVGTF9FVkVOVF9M
T09QKQogICAgIE11dGV4IG1fcGlwZUxvY2s7CiAgICAgRWZsVW5pcXVlUHRyPEVjb3JlX1BpcGU+
IG1fcGlwZTsKIApAQCAtMTY1LDEwICsxNzUsMzUgQEAgY2xhc3MgUnVuTG9vcCA6IHB1YmxpYyBG
dW5jdGlvbkRpc3BhdGNoZXIgewogICAgIGJvb2wgbV93YWtlVXBFdmVudFJlcXVlc3RlZDsKIAog
ICAgIHN0YXRpYyB2b2lkIHdha2VVcEV2ZW50KHZvaWQqIGRhdGEsIHZvaWQqLCB1bnNpZ25lZCk7
Ci0jZWxpZiBVU0UoR0xJQikKKyNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgR1JlZlB0
cjxHTWFpbkNvbnRleHQ+IG1fbWFpbkNvbnRleHQ7CiAgICAgVmVjdG9yPEdSZWZQdHI8R01haW5M
b29wPj4gbV9tYWluTG9vcHM7CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3NvdXJjZTsKKyNlbGlm
IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCisgICAgdm9pZCBzY2hlZHVsZShSZWZQdHI8VGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlKGNvbnN0IExvY2tIb2xk
ZXImLCBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiYmKTsKKyAgICB2b2lkIHdha2VV
cChjb25zdCBMb2NrSG9sZGVyJik7CisgICAgdm9pZCBzY2hlZHVsZUFuZFdha2VVcChSZWZQdHI8
VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPik7CisKKyAgICBlbnVtIGNsYXNzIFJ1bk1vZGUgewor
ICAgICAgICBJdGVyYXRlLAorICAgICAgICBEcmFpbgorICAgIH07CisKKyAgICBlbnVtIGNsYXNz
IFN0YXR1cyB7CisgICAgICAgIENsZWFyLAorICAgICAgICBTdG9wcGluZywKKyAgICB9OworICAg
IHZvaWQgcnVuSW1wbChSdW5Nb2RlKTsKKyAgICBib29sIHBvcHVsYXRlVGFza3MoUnVuTW9kZSwg
U3RhdHVzJiwgRGVxdWU8UmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4+Jik7CisKKyAg
ICBMb2NrIG1fbG9vcExvY2s7CisgICAgQ29uZGl0aW9uIG1fcmVhZHlUb1J1bjsKKyAgICBDb25k
aXRpb24gbV9zdG9wQ29uZGl0aW9uOworICAgIFZlY3RvcjxSZWZQdHI8VGltZXJCYXNlOjpTY2hl
ZHVsZWRUYXNrPj4gbV9zY2hlZHVsZXM7CisgICAgVmVjdG9yPFN0YXR1cyo+IG1fbWFpbkxvb3Bz
OworICAgIGJvb2wgbV9zaHV0ZG93biB7IGZhbHNlIH07CisgICAgYm9vbCBtX3BlbmRpbmdUYXNr
cyB7IGZhbHNlIH07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dv
cmtRdWV1ZS5oIGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKaW5kZXggZDI2NzVjMWVkZTAw
OWM5NWY0NTY4NDI0NTc5ZWM3YjU0OTcyYTg5Zi4uYzRlYTcyZTQ4YWNmOTVmMjdhN2IxMjQwMmQ5
OTljOTliZTM0MmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKKysr
IGIvU291cmNlL1dURi93dGYvV29ya1F1ZXVlLmgKQEAgLTM0LDIyICszNCwyNSBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogCi0jaWYg
T1MoREFSV0lOKSAmJiAhUExBVEZPUk0oR1RLKQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQog
I2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEVG
TCkKKyNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCiAjaW5jbHVkZSA8RGlzcGF0Y2hRdWV1ZUVmbC5o
PgotI2VsaWYgVVNFKEdMSUIpCi0jaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0jaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgotI2VsaWYgT1Mo
V0lORE9XUykKKyNlbmRpZgorCisjaWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
d2luL1dvcmtJdGVtV2luLmg+CiAjZW5kaWYKIAorI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApIHx8
IFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5oPgorI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNz
IFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewpAQCAtNzQsMTMg
Kzc3LDEzIEBAIGNsYXNzIFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNo
ZXIgewogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBs
eShzaXplX3QgaXRlcmF0aW9ucywgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5k
ZXgpPiYpOwogCi0jaWYgUExBVEZPUk0oRUZMKQorI2lmIFVTRShFRkxfRVZFTlRfTE9PUCkKICAg
ICB2b2lkIHJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCwgc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU29ja2V0RXZlbnRIYW5kbGVyKGludCk7Ci0jZWxp
ZiBVU0UoR0xJQikKLSAgICBSdW5Mb29wJiBydW5Mb29wKCkgY29uc3QgeyByZXR1cm4gKm1fcnVu
TG9vcDsgfQotI2VsaWYgT1MoREFSV0lOKQorI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAg
ICAgZGlzcGF0Y2hfcXVldWVfdCBkaXNwYXRjaFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNw
YXRjaFF1ZXVlOyB9CisjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKSB8fCBVU0UoR0VORVJJQ19F
VkVOVF9MT09QKQorICAgIFJ1bkxvb3AmIHJ1bkxvb3AoKSBjb25zdCB7IHJldHVybiAqbV9ydW5M
b29wOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTg5LDcgKzkyLDcgQEAgY2xhc3MgV29ya1F1
ZXVlIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKTsKICAgICB2b2lkIHBsYXRm
b3JtSW52YWxpZGF0ZSgpOwogCi0jaWYgT1MoV0lORE9XUykKKyNpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQogICAgIHN0YXRpYyB2b2lkIENBTExCQUNLIGhhbmRsZUNhbGxiYWNrKHZvaWQqIGNv
bnRleHQsIEJPT0xFQU4gdGltZXJPcldhaXRGaXJlZCk7CiAgICAgc3RhdGljIHZvaWQgQ0FMTEJB
Q0sgdGltZXJDYWxsYmFjayh2b2lkKiBjb250ZXh0LCBCT09MRUFOIHRpbWVyT3JXYWl0RmlyZWQp
OwogICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgd29ya1RocmVhZENhbGxiYWNrKHZvaWQqIGNvbnRl
eHQpOwpAQCAtMTAyLDE5ICsxMDUsMTIgQEAgY2xhc3MgV29ya1F1ZXVlIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uRGlzcGF0Y2hlciB7CiAgICAgc3RhdGljIERXT1JEIFdJTkFQSSB1bnJlZ2lzdGVy
V2FpdEFuZERlc3Ryb3lJdGVtQ2FsbGJhY2sodm9pZCogY29udGV4dCk7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKEVGTCkKKyNpZiBVU0UoRUZMX0VWRU5UX0xPT1ApCiAgICAgUmVmUHRyPERpc3Bh
dGNoUXVldWU+IG1fZGlzcGF0Y2hRdWV1ZTsKLSNlbGlmIFVTRShHTElCKQotICAgIFRocmVhZElk
ZW50aWZpZXIgbV93b3JrUXVldWVUaHJlYWQ7Ci0gICAgTG9jayBtX2luaXRpYWxpemVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRp
b247Ci0gICAgUnVuTG9vcCogbV9ydW5Mb29wOwotICAgIExvY2sgbV90ZXJtaW5hdGVSdW5Mb29w
Q29uZGl0aW9uTXV0ZXg7Ci0gICAgQ29uZGl0aW9uIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlv
bjsKLSNlbGlmIE9TKERBUldJTikKKyNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09QKQogICAgIHN0
YXRpYyB2b2lkIGV4ZWN1dGVGdW5jdGlvbih2b2lkKik7CiAgICAgZGlzcGF0Y2hfcXVldWVfdCBt
X2Rpc3BhdGNoUXVldWU7Ci0jZWxpZiBPUyhXSU5ET1dTKQorI2VsaWYgVVNFKFdJTkRPV1NfRVZF
TlRfTE9PUCkKICAgICB2b2xhdGlsZSBMT05HIG1faXNXb3JrVGhyZWFkUmVnaXN0ZXJlZDsKIAog
ICAgIE11dGV4IG1fd29ya0l0ZW1RdWV1ZUxvY2s7CkBAIC0xMjQsNiArMTIwLDEzIEBAIGNsYXNz
IFdvcmtRdWV1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbkRpc3BhdGNoZXIgewogICAgIEhhc2hN
YXA8SEFORExFLCBSZWZQdHI8SGFuZGxlV29ya0l0ZW0+PiBtX2hhbmRsZXM7CiAKICAgICBIQU5E
TEUgbV90aW1lclF1ZXVlOworI2VsaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkgfHwgVVNFKEdFTkVS
SUNfRVZFTlRfTE9PUCkKKyAgICBUaHJlYWRJZGVudGlmaWVyIG1fd29ya1F1ZXVlVGhyZWFkOwor
ICAgIExvY2sgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlv
biBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uOworICAgIFJ1bkxvb3AqIG1fcnVuTG9vcDsK
KyAgICBMb2NrIG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4OworICAgIENvbmRpdGlv
biBtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb247CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwIGIvU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9NYWluVGhyZWFkR2VuZXJpYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg0OWM2OTUx
ZThiMmJhM2NmYjNlYTY4YWE0ZmI0NDg3YTQ5YmUwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL2dlbmVyaWMvTWFpblRocmVhZEdlbmVyaWMuY3BwCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlh
bmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNYWluVGhyZWFkLmgiCisKKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordm9pZCBpbml0aWFsaXplTWFp
blRocmVhZFBsYXRmb3JtKCkKK3sKK30KKwordm9pZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25z
T25NYWluVGhyZWFkKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KGRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQpKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzg3
M2YyNDI4NGVkMmYzNGUyNTc3ZjZhZWViYWRlNjJjZGQzZGYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAKQEAgLTAsMCArMSwyOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVu
QHlhbmRleC5ydT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSdW5Mb29wLmgiCisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBSdW5Mb29wOjpUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2sgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2NoZWR1bGVkVGFzaz4geworV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2NoZWR1bGVkVGFzayk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGFt
YmRhPgorICAgIHN0YXRpYyBSZWZQdHI8U2NoZWR1bGVkVGFzaz4gY3JlYXRlKExhbWJkYSYmIGxh
bWJkYSwgZG91YmxlIGludGVydmFsLCBib29sIHJlcGVhdGluZykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2NoZWR1bGVkVGFzayhzdGQ6OmZvcndhcmQ8TGFtYmRhPihsYW1i
ZGEpLCBpbnRlcnZhbCwgcmVwZWF0aW5nKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTGFtYmRhPgorICAgIFNjaGVkdWxlZFRhc2soTGFtYmRhJiYgbGFtYmRhLCBkb3VibGUgaW50
ZXJ2YWwsIGJvb2wgcmVwZWF0aW5nKQorICAgICAgICA6IG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJk
PExhbWJkYT4obGFtYmRhKSkKKyAgICAgICAgLCBtX2ZpcmVJbnRlcnZhbChzdGQ6OmNocm9ubzo6
ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPihzdGQ6OmNocm9ubzo6ZHVy
YXRpb248ZG91YmxlPihpbnRlcnZhbCkpKQorICAgICAgICAsIG1faXNSZXBlYXRpbmcocmVwZWF0
aW5nKQorICAgIHsKKyAgICAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CisgICAgfQorCisgICAgYm9v
bCBmaXJlZCgpCisgICAgeworICAgICAgICBpZiAoIWlzQWN0aXZlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbV9mdW5jdGlvbigpOworCisgICAgICAgIGlmICghbV9p
c1JlcGVhdGluZykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1cGRhdGVS
ZWFkeVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIGlzQWN0aXZlKCk7CisgICAgfQorCisgICAgQ29u
ZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzY2hlZHVsZWRUaW1lUG9pbnQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGltZVBvaW50OworICAgIH0KKworICAgIHZv
aWQgdXBkYXRlUmVhZHlUaW1lKCkKKyAgICB7CisgICAgICAgIG1fc2NoZWR1bGVkVGltZVBvaW50
ID0gQ29uZGl0aW9uOjpDbG9jazo6bm93KCk7CisgICAgICAgIGlmICghbV9maXJlSW50ZXJ2YWwu
Y291bnQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9zY2hlZHVsZWRUaW1lUG9p
bnQgKz0gbV9maXJlSW50ZXJ2YWw7CisgICAgfQorCisgICAgc3RydWN0IEVhcmxpZXN0U2NoZWR1
bGUgeworICAgICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUmVmUHRyPFNjaGVkdWxlZFRhc2s+
JiBsaHMsIGNvbnN0IFJlZlB0cjxTY2hlZHVsZWRUYXNrPiYgcmhzKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbGhzLT5zY2hlZHVsZWRUaW1lUG9pbnQoKSA+IHJocy0+c2NoZWR1bGVk
VGltZVBvaW50KCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgYm9vbCBpc0FjdGl2ZSgpCisg
ICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAg
IHJldHVybiBtX2lzQWN0aXZlOworICAgIH0KKworICAgIHZvaWQgZGVhY3RpdmF0ZSgpCisgICAg
eworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2lzQWN0aXZlTG9jayk7CisgICAgICAgIG1f
aXNBY3RpdmUgPSBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IG1fZnVuY3Rpb247CisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBtX3Nj
aGVkdWxlZFRpbWVQb2ludDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIG1fZmlyZUlu
dGVydmFsOworICAgIExvY2sgbV9pc0FjdGl2ZUxvY2s7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsg
dHJ1ZSB9OworICAgIGJvb2wgbV9pc1JlcGVhdGluZzsKK307CisKK1J1bkxvb3A6OlJ1bkxvb3Ao
KQoreworfQorCitSdW5Mb29wOjp+UnVuTG9vcCgpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9sb29wTG9jayk7CisgICAgbV9zaHV0ZG93biA9IHRydWU7CisgICAgbV9yZWFkeVRvUnVuLm5v
dGlmeU9uZSgpOworCisgICAgLy8gSGVyZSBpcyBydW5uaW5nIG1haW4gbG9vcHMuIFdhaXQgdW50
aWwgYWxsIHRoZSBtYWluIGxvb3BzIGFyZSBkZXN0cm95ZWQuCisgICAgaWYgKCFtX21haW5Mb29w
cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RvcENvbmRpdGlvbi53YWl0KG1fbG9vcExvY2spOwor
fQorCitpbmxpbmUgYm9vbCBSdW5Mb29wOjpwb3B1bGF0ZVRhc2tzKFJ1bk1vZGUgcnVuTW9kZSwg
U3RhdHVzJiBzdGF0dXNPZlRoaXNMb29wLCBEZXF1ZTxSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVs
ZWRUYXNrPj4mIGZpcmVkVGltZXJzKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExv
Y2spOworCisgICAgaWYgKHJ1bk1vZGUgPT0gUnVuTW9kZTo6RHJhaW4pIHsKKyAgICAgICAgQ29u
ZGl0aW9uOjpDbG9jazo6dGltZV9wb2ludCBzbGVlcFVudGlsID0gQ29uZGl0aW9uOjpDbG9jazo6
dGltZV9wb2ludDo6bWF4KCk7CisgICAgICAgIGlmICghbV9zY2hlZHVsZXMuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgc2xlZXBVbnRpbCA9IG1fc2NoZWR1bGVzLmZpcnN0KCktPnNjaGVkdWxlZFRp
bWVQb2ludCgpOworCisgICAgICAgIG1fcmVhZHlUb1J1bi53YWl0VW50aWwobV9sb29wTG9jaywg
c2xlZXBVbnRpbCwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBtX3NodXRkb3duIHx8IG1fcGVu
ZGluZ1Rhc2tzIHx8IHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9wcGluZzsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgaWYgKHN0YXR1c09mVGhpc0xvb3AgPT0gU3RhdHVzOjpTdG9w
cGluZyB8fCBtX3NodXRkb3duKSB7CisgICAgICAgIG1fbWFpbkxvb3BzLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgaWYgKG1fbWFpbkxvb3BzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fc3RvcENv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBt
X3BlbmRpbmdUYXNrcyA9IGZhbHNlOworICAgIGlmIChydW5Nb2RlID09IFJ1bk1vZGU6Okl0ZXJh
dGUpCisgICAgICAgIHN0YXR1c09mVGhpc0xvb3AgPSBTdGF0dXM6OlN0b3BwaW5nOworCisgICAg
Ly8gQ2hlY2sgZXhwaXJlZCB0aW1lcnMuCisgICAgQ29uZGl0aW9uOjpDbG9jazo6dGltZV9wb2lu
dCBub3cgPSBDb25kaXRpb246OkNsb2NrOjpub3coKTsKKyAgICB3aGlsZSAoIW1fc2NoZWR1bGVz
LmlzRW1wdHkoKSkgeworICAgICAgICBSZWZQdHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPiBl
YXJsaWVzdCA9IG1fc2NoZWR1bGVzLmZpcnN0KCk7CisgICAgICAgIGlmIChlYXJsaWVzdC0+c2No
ZWR1bGVkVGltZVBvaW50KCkgPiBub3cpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3Rk
Ojpwb3BfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3NjaGVkdWxlcy5lbmQoKSwgVGltZXJC
YXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxlKCkpOworICAgICAgICBtX3NjaGVk
dWxlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIGZpcmVkVGltZXJzLmFwcGVuZChlYXJsaWVzdCk7
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUnVuTG9vcDo6cnVuSW1wbChS
dW5Nb2RlIHJ1bk1vZGUpCit7CisgICAgQVNTRVJUKHRoaXMgPT0gJlJ1bkxvb3A6OmN1cnJlbnQo
KSk7CisKKyAgICBTdGF0dXMgc3RhdHVzT2ZUaGlzTG9vcCA9IFN0YXR1czo6Q2xlYXI7CisgICAg
eworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICAgICAgbV9tYWlu
TG9vcHMuYXBwZW5kKCZzdGF0dXNPZlRoaXNMb29wKTsKKyAgICB9CisKKyAgICBEZXF1ZTxSZWZQ
dHI8VGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrPj4gZmlyZWRUaW1lcnM7CisgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVRhc2tzKHJ1bk1vZGUsIHN0YXR1c09mVGhpc0xv
b3AsIGZpcmVkVGltZXJzKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBEaXNw
YXRjaCBzY2hlZHVsZWQgdGltZXJzLgorICAgICAgICB3aGlsZSAoIWZpcmVkVGltZXJzLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgUmVmUHRyPFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzaz4gdGFz
ayA9IGZpcmVkVGltZXJzLnRha2VGaXJzdCgpOworICAgICAgICAgICAgaWYgKHRhc2stPmZpcmVk
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBSZXNjaGVkdWxlIGJlY2F1c2UgdGhlIHRpbWVyIHJl
cXVpcmVzIHJlcGVhdGluZy4KKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSB3aWxsIHF1ZXJ5
IHRoZSB0aW1lcnMnIHRpbWUgcG9pbnRzIGJlZm9yZSBzbGVlcGluZywKKyAgICAgICAgICAgICAg
ICAvLyB3ZSBkbyBub3QgY2FsbCB3YWtlVXAoKSBoZXJlLgorICAgICAgICAgICAgICAgIHNjaGVk
dWxlKFdURk1vdmUodGFzaykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHBl
cmZvcm1Xb3JrKCk7CisgICAgfQorfQorCit2b2lkIFJ1bkxvb3A6OnJ1bigpCit7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLnJ1bkltcGwoUnVuTW9kZTo6RHJhaW4pOworfQorCit2b2lkIFJ1bkxv
b3A6Oml0ZXJhdGUoKQoreworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5ydW5JbXBsKFJ1bk1vZGU6
Okl0ZXJhdGUpOworfQorCisvLyBSdW5Mb29wIG9wZXJhdGlvbnMgYXJlIHRocmVhZC1zYWZlLiBU
aGVzZSBvcGVyYXRpb25zIGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIG9mIHRoZSBSdW5Mb29w
J3MgdGhyZWFkLgorLy8gRm9yIGV4YW1wbGUsIFdvcmtRdWV1ZTo6e2Rpc3BhdGNoLCBkaXNwYXRj
aEFmdGVyfSBjYWxsIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBXb3JrUXVldWUgdGhyZWFkJ3MgUnVu
TG9vcAorLy8gZnJvbSB0aGUgY2FsbGVyJ3MgdGhyZWFkLgorCit2b2lkIFJ1bkxvb3A6OnN0b3Ao
KQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOworICAgIGlmIChtX21haW5M
b29wcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0YXR1cyogc3RhdHVzID0g
bV9tYWluTG9vcHMubGFzdCgpOworICAgIGlmICgqc3RhdHVzICE9IFN0YXR1czo6U3RvcHBpbmcp
IHsKKyAgICAgICAgKnN0YXR1cyA9IFN0YXR1czo6U3RvcHBpbmc7CisgICAgICAgIG1fcmVhZHlU
b1J1bi5ub3RpZnlPbmUoKTsKKyAgICB9Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKGNvbnN0
IExvY2tIb2xkZXImKQoreworICAgIG1fcGVuZGluZ1Rhc2tzID0gdHJ1ZTsKKyAgICBtX3JlYWR5
VG9SdW4ubm90aWZ5T25lKCk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6d2FrZVVwKCkKK3sKKyAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwor
dm9pZCBSdW5Mb29wOjpzY2hlZHVsZShjb25zdCBMb2NrSG9sZGVyJiwgUmVmUHRyPFRpbWVyQmFz
ZTo6U2NoZWR1bGVkVGFzaz4mJiB0YXNrKQoreworICAgIG1fc2NoZWR1bGVzLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKKyAgICBzdGQ6OnB1c2hfaGVhcChtX3NjaGVkdWxlcy5iZWdpbigpLCBtX3Nj
aGVkdWxlcy5lbmQoKSwgVGltZXJCYXNlOjpTY2hlZHVsZWRUYXNrOjpFYXJsaWVzdFNjaGVkdWxl
KCkpOworfQorCit2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVk
dWxlZFRhc2s+JiYgdGFzaykKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvb3BMb2NrKTsK
KyAgICBzY2hlZHVsZShsb2NrZXIsIFdURk1vdmUodGFzaykpOworfQorCit2b2lkIFJ1bkxvb3A6
OnNjaGVkdWxlQW5kV2FrZVVwKFJlZlB0cjxUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s+IHRhc2sp
Cit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7CisgICAgc2NoZWR1bGUobG9j
a2VyLCBXVEZNb3ZlKHRhc2spKTsKKyAgICB3YWtlVXAobG9ja2VyKTsKK30KKwordm9pZCBSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkZWxheSwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9v
cExvY2spOworICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7CisgICAgc2NoZWR1bGUobG9ja2Vy
LCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShmdW5jdGlvbiwgZGVsYXkuY291bnQo
KSAvIDEwMDAuMCAvIDEwMDAuMCAvIDEwMDAuMCwgcmVwZWF0aW5nKSk7CisgICAgd2FrZVVwKGxv
Y2tlcik7Cit9CisKKy8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBub3Qgb3duIHRoZSByZWdpc3RlcmVk
IFRpbWVyQmFzZSwKKy8vIFRpbWVyQmFzZSBhbmQgaXRzIG93bmVyIHNob3VsZCBtYW5hZ2UgdGhl
c2UgbGlmZXRpbWUuCisvLworLy8gQW5kIG1vcmUgaW1wb3J0YW50bHksIFRpbWVyQmFzZSBvcGVy
YXRpb25zIGFyZSBub3QgdGhyZWFkLXNhZmUuCisvLyBTbyB0aHJlYWRzIHRoYXQgZG8gbm90IGJl
bG9uZyB0byB0aGUgU2NoZWR1bGVkVGFzaydzIFJ1bkxvb3AKKy8vIHNob3VsZCBub3Qgb3BlcmF0
ZSB0aGUgUnVuTG9vcDo6VGltZXJCYXNlLgorLy8gVGhpcyBpcyB0aGUgc2FtZSB0byB0aGUgUnVu
TG9vcFdpbiwgd2hpY2ggaXMgUnVuTG9vcCBmb3IgV2luZG93cy4KK1J1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCisgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkK
KyAgICAsIG1fc2NoZWR1bGVkVGFzayhudWxscHRyKQoreworfQorCitSdW5Mb29wOjpUaW1lckJh
c2U6On5UaW1lckJhc2UoKQoreworICAgIHN0b3AoKTsKK30KKwordm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0YXJ0KGRvdWJsZSBpbnRlcnZhbCwgYm9vbCByZXBlYXRpbmcpCit7CisgICAgc3Rv
cCgpOworICAgIG1fc2NoZWR1bGVkVGFzayA9IFNjaGVkdWxlZFRhc2s6OmNyZWF0ZShbdGhpc10g
eworICAgICAgICBmaXJlZCgpOworICAgIH0sIGludGVydmFsLCByZXBlYXRpbmcpOworICAgIG1f
cnVuTG9vcC5zY2hlZHVsZUFuZFdha2VVcChtX3NjaGVkdWxlZFRhc2spOworfQorCit2b2lkIFJ1
bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCit7CisgICAgaWYgKG1fc2NoZWR1bGVkVGFzaykgewor
ICAgICAgICBtX3NjaGVkdWxlZFRhc2stPmRlYWN0aXZhdGUoKTsKKyAgICAgICAgbV9zY2hlZHVs
ZWRUYXNrID0gbnVsbHB0cjsKKyAgICB9Cit9CisKK2Jvb2wgUnVuTG9vcDo6VGltZXJCYXNlOjpp
c0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2NoZWR1bGVkVGFzazsKK30KKworfSAv
LyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1dvcmtR
dWV1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5lcmlj
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMWI2YzRiNWEwOGYwZjNmNDkxMzgxMWQ1YTIzYzE3OWYwMjI3OGU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvZ2VuZXJpYy9Xb3JrUXVldWVHZW5l
cmljLmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0
YW50aW4gVG9rYXZldiA8YW5udWxlbkB5YW5kZXgucnU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDExIElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEwIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29y
a1F1ZXVlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIGNv
bnN0IHNpemVfdCBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFtZUxpbWl0ID0gMzE7CisKK3ZvaWQgV29y
a1F1ZXVlOjpwbGF0Zm9ybUluaXRpYWxpemUoY29uc3QgY2hhciogbmFtZSwgVHlwZSwgUU9TKQor
eworICAgIC8vIFRoaXMgbmFtZSBjYW4gYmUgY29tLmFwcGxlLldlYktpdC5Qcm9jZXNzTGF1bmNo
ZXIgb3IgY29tLmFwcGxlLkNvcmVJUEMuUmVjZWl2ZVF1ZXVlLgorICAgIC8vIFdlIGFyZSB1c2lu
ZyB0aG9zZSBuYW1lcyBmb3IgdGhlIHRocmVhZCBuYW1lLCBidXQgYm90aCBhcmUgbG9uZ2VyIHRo
YW4gMzEgY2hhcmFjdGVycywKKyAgICAvLyB3aGljaCBpcyB0aGUgbGltaXQgb2YgVmlzdWFsIFN0
dWRpbyBmb3IgdGhyZWFkIG5hbWVzLgorICAgIC8vIFdoZW4gbG9nIGlzIGVuYWJsZWQgY3JlYXRl
VGhyZWFkKCkgd2lsbCBhc3NlcnQgaW5zdGVhZCBvZiB0cnVuY2F0ZSB0aGUgbmFtZSwgc28gd2Ug
bmVlZAorICAgIC8vIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCB1c2UgYSBuYW1lIGxvbmdlciB0aGFu
IDMxIGNoYXJhY3RlcnMuCisgICAgU3RyaW5nIHRocmVhZE5hbWUobmFtZSk7CisgICAgc2l6ZV90
IHNpemUgPSB0aHJlYWROYW1lLnJldmVyc2VGaW5kKCcuJyk7CisgICAgaWYgKHNpemUgIT0gbm90
Rm91bmQpCisgICAgICAgIHRocmVhZE5hbWUgPSB0aHJlYWROYW1lLnN1YnN0cmluZyhzaXplICsg
MSk7CisgICAgaWYgKHRocmVhZE5hbWUubGVuZ3RoKCkgPiBrVmlzdWFsU3R1ZGlvVGhyZWFkTmFt
ZUxpbWl0KQorICAgICAgICB0aHJlYWROYW1lID0gdGhyZWFkTmFtZS5yaWdodChrVmlzdWFsU3R1
ZGlvVGhyZWFkTmFtZUxpbWl0KTsKKworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1faW5pdGlhbGl6
ZVJ1bkxvb3BDb25kaXRpb25NdXRleCk7CisgICAgbV93b3JrUXVldWVUaHJlYWQgPSBjcmVhdGVU
aHJlYWQodGhyZWFkTmFtZS5hc2NpaSgpLmRhdGEoKSwgW3RoaXNdIHsKKyAgICAgICAgeworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKKyAgICAgICAgICAgIG1fcnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CisgICAg
ICAgICAgICBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uLm5vdGlmeU9uZSgpOworICAgICAg
ICB9CisgICAgICAgIG1fcnVuTG9vcC0+cnVuKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fdGVybWluYXRlUnVuTG9vcENvbmRpdGlvbk11dGV4KTsKKyAgICAg
ICAgICAgIG1fcnVuTG9vcCA9IG51bGxwdHI7CisgICAgICAgICAgICBtX3Rlcm1pbmF0ZVJ1bkxv
b3BDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBtX2luaXRp
YWxpemVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvbk11
dGV4KTsKK30KKwordm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCit7CisgICAg
eworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3Rlcm1pbmF0ZVJ1bkxvb3BDb25kaXRpb25N
dXRleCk7CisgICAgICAgIGlmIChtX3J1bkxvb3ApIHsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+
c3RvcCgpOworICAgICAgICAgICAgbV90ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uLndhaXQobV90
ZXJtaW5hdGVSdW5Mb29wQ29uZGl0aW9uTXV0ZXgpOworICAgICAgICB9CisgICAgfQorCisgICAg
aWYgKG1fd29ya1F1ZXVlVGhyZWFkKSB7CisgICAgICAgIGRldGFjaFRocmVhZChtX3dvcmtRdWV1
ZVRocmVhZCk7CisgICAgICAgIG1fd29ya1F1ZXVlVGhyZWFkID0gMDsKKyAgICB9Cit9CisKK3Zv
aWQgV29ya1F1ZXVlOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCit7
CisgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBtX3J1bkxvb3AtPmRp
c3BhdGNoKFtwcm90ZWN0LCBmdW5jdGlvbl0geworICAgICAgICBmdW5jdGlvbigpOworICAgIH0p
OworfQorCit2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHMgZGVsYXksIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBSZWZQ
dHI8V29ya1F1ZXVlPiBwcm90ZWN0KHRoaXMpOworICAgIG1fcnVuTG9vcC0+ZGlzcGF0Y2hBZnRl
cihkZWxheSwgW3Byb3RlY3QsIGZ1bmN0aW9uXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAg
fSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIuY3Bw
IGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcAppbmRleCA2MzJmZjQwNTE0
OTNhNmFkMDhkMTBiNmQzOTI3YjY4ZjQwZDNiMWExLi5lMjE5NTgxYjA4OTA4YzY1Nzk0Zjc0ZDFi
MGZmZjMwMDQyODIzMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1
ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL01haW5UaHJlYWROb25lLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL25vbmUvTWFpblRocmVhZE5vbmUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlM2NiNmJhNjUzMjJkNjBmODEyNDgyNjhmNTZjZTYyMzliNGEyZDQxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL25vbmUv
TWFpblRocmVhZE5vbmUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBLb25zdGFudGluIFRva2F2ZXYgPGFubnVsZW5AeWFuZGV4LnJ1
PgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiTWFpblRocmVhZC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQot
dm9pZCBpbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKCkKLXsKLX0KLQotdm9pZCBzY2hlZHVs
ZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKLXsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvbm9uZS9SdW5Mb29wTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25l
L1J1bkxvb3BOb25lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDI1NWNmZDU2
ZTU5NWMwYmVhMDEyZmE1OWZhOTUzZmU3OGU1NjM2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9ub25lL1J1bkxvb3BOb25lLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgS29uc3RhbnRpbiBUb2thdmV2IDxhbm51bGVuQHlhbmRleC5ydT4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlJ1bkxvb3AuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0KLVJ1bkxvb3A6OlJ1bkxvb3AoKQot
ewotfQotCi1SdW5Mb29wOjp+UnVuTG9vcCgpCi17Ci19Ci0KLXZvaWQgUnVuTG9vcDo6cnVuKCkK
LXsKLX0KLQotdm9pZCBSdW5Mb29wOjpzdG9wKCkKLXsKLX0KLQotdm9pZCBSdW5Mb29wOjp3YWtl
VXAoKQotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotfQotCi1SdW5Mb29wOjpUaW1lckJh
c2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQotICAgIDogbV9ydW5Mb29wKHJ1bkxvb3Ap
Ci17Ci19Ci0KLVJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgp
OwotfQotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoZG91YmxlLCBib29sKQotewot
fQotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCi17Ci19Ci0KLWJvb2wgUnVuTG9v
cDo6VGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29y
a1F1ZXVlTm9uZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTZkNjc1OGQ3OTY3YjM2NTY3NDVjZjgzN2U3
MzBlMTA2NjA4M2Y2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XVEYvd3RmL25vbmUvV29ya1F1ZXVlTm9uZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEtvbnN0YW50aW4gVG9r
YXZldiA8YW5udWxlbkB5YW5kZXgucnU+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXb3JrUXVldWUuaCIK
LQotdm9pZCBXb3JrUXVldWU6OnBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBjaGFyKiwgVHlwZSwg
UU9TKQotewotfQotCi12b2lkIFdvcmtRdWV1ZTo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKLXsKLX0K
LQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikKLXsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotdm9pZCBXb3JrUXVldWU6OmRpc3BhdGNoQWZ0
ZXIoc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pCi17Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0pTQ09ubHkuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKaW5k
ZXggNGQ1Njc3ZWU3ZTJjNjZlY2JhOGQ5OTIzMTliNmUxZGU5ODdmOGNjMC4uZGU2NDljNGI5YWE0
ZTQzYmYyYzVjODZkNDRlODVjODU3NjRkZTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09w
dGlvbnNKU0NPbmx5LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFr
ZQpAQCAtMTEsMjQgKzExLDE5IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9TVEFUSUNf
SlNDICJXaGV0aGVyIHRvIGJ1aWxkIEphdmFTY3JpcHRDb3JlIGFzIGEgc3RhCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQVUJMSUMgT04pCiBXRUJLSVRf
T1BUSU9OX0VORCgpCiAKLXNldChBTExfRVZFTlRMT09QX1RZUEVTCitzZXQoQUxMX0VWRU5UX0xP
T1BfVFlQRVMKICAgICBHTGliCi0gICAgTm9uZQorICAgIEdlbmVyaWMKICkKIAotaWYgKFVOSVgg
QU5EIE5PVCBBUFBMRSkKLSAgICBzZXQoREVGQVVMVF9FVkVOVExPT1BfVFlQRSAiR0xpYiIpCi1l
bHNlICgpCi0gICAgIyBUT0RPOiBVc2UgbmF0aXZlIE1hYyBhbmQgV2luIGltcGxlbWVudGF0aW9u
cwotICAgIHNldChERUZBVUxUX0VWRU5UTE9PUF9UWVBFICJOb25lIikKLWVuZGlmICgpCitzZXQo
REVGQVVMVF9FVkVOVF9MT09QX1RZUEUgIkdlbmVyaWMiKQogCi1zZXQoRVZFTlRMT09QX1RZUEUg
JHtERUZBVUxUX0VWRU5UTE9PUF9UWVBFfSBDQUNIRSBTVFJJTkcgIkltcGxlbWVudGF0aW9uIG9m
IGV2ZW50IGxvb3AgdG8gYmUgdXNlZCBpbiBKYXZhU2NyaXB0Q29yZSAob25lIG9mICR7QUxMX0VW
RU5UTE9PUF9UWVBFU30pIikKK3NldChFVkVOVF9MT09QX1RZUEUgJHtERUZBVUxUX0VWRU5UX0xP
T1BfVFlQRX0gQ0FDSEUgU1RSSU5HICJJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBsb29wIHRvIGJl
IHVzZWQgaW4gSmF2YVNjcmlwdENvcmUgKG9uZSBvZiAke0FMTF9FVkVOVF9MT09QX1RZUEVTfSki
KQogCiBzZXQoRU5BQkxFX1dFQkNPUkUgT0ZGKQogc2V0KEVOQUJMRV9XRUJLSVQgT0ZGKQogc2V0
KEVOQUJMRV9XRUJLSVQyIE9GRikKLXNldChFTkFCTEVfQVBJX1RFU1RTIE9GRikKK3NldChFTkFC
TEVfQVBJX1RFU1RTIE9OKQogCiBpZiAoV1RGX0NQVV9YODYgT1IgV1RGX0NQVV9YODZfNjQpCiAg
ICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1VESVM4NiAxKQpAQCAtMzgsMTAgKzMzLDE1
IEBAIGlmIChFTkFCTEVfU1RBVElDX0pTQykKICAgICBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFS
WV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKLXN0cmluZyhUT0xPV0VSICR7RVZFTlRMT09QX1RZ
UEV9IExPV0VSQ0FTRV9FVkVOVExPT1BfVFlQRSkKLWlmIChMT1dFUkNBU0VfRVZFTlRMT09QX1RZ
UEUgU1RSRVFVQUwgImdsaWIiKQorc3RyaW5nKFRPTE9XRVIgJHtFVkVOVF9MT09QX1RZUEV9IExP
V0VSQ0FTRV9FVkVOVF9MT09QX1RZUEUpCitpZiAoTE9XRVJDQVNFX0VWRU5UX0xPT1BfVFlQRSBT
VFJFUVVBTCAiZ2xpYiIpCiAgICAgZmluZF9wYWNrYWdlKEdMSUIgMi4zNiBSRVFVSVJFRCBDT01Q
T05FTlRTIGdpbyBnb2JqZWN0KQogICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTElC
IDEpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dMSUJfRVZFTlRfTE9PUCAxKQor
ICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFdURl9ERUZBVUxUX0VWRU5UX0xPT1AgMCkKK2Vs
c2UgKCkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfR0VORVJJQ19FVkVOVF9MT09Q
IDEpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoV1RGX0RFRkFVTFRfRVZFTlRfTE9PUCAw
KQogZW5kaWYgKCkKIAogIyBGcm9tIE9wdGlvbnNHVEsuY21ha2UKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYmJjNGFmZTFkYmRjYjdkMzVjZGMx
Mjk4OGRmZGYyNDQ4OGJmNWVmLi40OTQzYTM2NTlmZmRmNTZjYTcxNTA4ZWEzNTI1NDg4ZTYxOTY2
NjE3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTYtMDQtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0pTQ09ubHldIEltcGxlbWVudCBSdW5Mb29wIGFuZCByZW1v
dmUgZ2xpYiBkZXBlbmRlbmN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgVGVzdFdURiB0byBKU0NPbmx5IHBvcnQgdG8gdGVzdCBXb3JrUXVldWUg
YW5kIFJ1bkxvb3AuCisgICAgICAgIFBsYXRmb3JtIHNwZWNpZmljIG9uZXMgbG9jYXRlIHVuZGVy
IGpzY29ubHkgZGlyZWN0b3J5IHNpbmNlCisgICAgICAgIGl0IGlzIG5vdCBgZ2VuZXJpY2AgKFNp
bmNlIGl0IGluY2x1ZGVzIHRoZSBHTElCIGV2ZW50IGxvb3AgY2FzZSkuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5j
bWFrZTogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvUGxhdGZvcm1VdGlsaXRpZXNKU0NP
bmx5LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XVEYvd3RmL25vbmUvUnVuTG9vcE5vbmUuY3Bw
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnNsZWVwKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2pzY29ubHkvbWFp
bi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9ub25lL1dvcmtRdWV1ZU5vbmUuY3Bw
LgorICAgICAgICAobWFpbik6CisKIDIwMTYtMDQtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxh
cEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ01h
a2VMaXN0cy50eHQgYi9Ub29scy9DTWFrZUxpc3RzLnR4dAppbmRleCBmYWU4YjYxY2RiODY1NTlh
ZWI4MzNjY2ZkYTViNjJlNTBjYjliYjFlLi4wMzY0YWE5NTlmMWJjNzZiYzkzNjA3NmYxYTAxMGMw
NzYzNTlkNDNjIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9D
TWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsMTAgQEAgZWxzZWlmICgiJHtQT1JUfSIgU1RSRVFV
QUwgIkdUSyIpCiAgICAgaWYgKEVOQUJMRV9NSU5JQlJPV1NFUikKICAgICAgICAgYWRkX3N1YmRp
cmVjdG9yeShNaW5pQnJvd3Nlci9ndGspCiAgICAgZW5kaWYgKCkKK2Vsc2VpZiAoIiR7UE9SVH0i
IFNUUkVRVUFMICJKU0NPbmx5IikKKyAgICBpZiAoRU5BQkxFX0FQSV9URVNUUykKKyAgICAgICAg
YWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJKQorICAgIGVuZGlmICgpCiBlbmRpZiAoKQog
CiBpZiAoV0lOMzIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlND
T25seS5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1KU0NPbmx5LmNtYWtlCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3ZTNjYzc1ZTEwYzlkZTliMDllMmE3ZGExOWMzNDI0NmZhYjE4MGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtSlNDT25seS5jbWFrZQpA
QCAtMCwwICsxLDI3IEBACitzZXQoVEVTVFdFQktJVEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RP
UlkgIiR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJIikKK3Nl
dChURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWV9XVEYgIiR7VEVTVFdFQktJ
VEFQSV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1dURiIpCisKKyMgVGhpcyBpcyBuZWNlc3Nh
cnkgYmVjYXVzZSBKU0NPbmx5IHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBXZWJDb3JlLCBXZWJLaXQg
YW5kIFdlYktpdDIuCisjIFRvIGJ1aWxkIFRlc3RXVEYsIHdlIG5lZWQgdGhpcyBmbGFnIG5vdCB0
byBpbmNsdWRlIFdlYktpdCByZWxhdGVkIGhlYWRlcnMgZXhjZXB0CisjIGZvciBXVEYgYW5kIEph
dmFTY3JpcHRDb3JlLgorYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfSlNDT05MWV9fKQorCitp
bmNsdWRlX2RpcmVjdG9yaWVzKAorICAgICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0vRm9yd2FyZGlu
Z0hlYWRlcnMKKyAgICAiJHtXVEZfRElSfS9pY3UiCispCisKK2lmIChMT1dFUkNBU0VfRVZFTlRf
TE9PUF9UWVBFIFNUUkVRVUFMICJnbGliIikKKyAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RF
TQorICAgICAgICAke0dMSUJfSU5DTFVERV9ESVJTfQorICAgICkKK2VuZGlmICgpCisKK3NldCh0
ZXN0X21haW5fU09VUkNFUworICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L2pzY29ubHkvbWFpbi5j
cHAKKykKKworbGlzdChBUFBFTkQgVGVzdFdURl9TT1VSQ0VTCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCisgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL1J1bkxvb3AuY3BwCispCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggNzU4M2U0ZWUwNzdlM2U4ODNlNmE1N2RiNWQxYjg5ZWM0
Nzk0Mjk0Yi4uNDlmNTcwODhhOTYyMzg5NGU0ZWNkMzUyNjIyM2MyZmUxNTNjYzc4MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaApAQCAtMjYsOCArMjYsMTAgQEAKICNp
Zm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAK
KyNpZm5kZWYgQlVJTERJTkdfSlNDT05MWV9fCiAjaW5jbHVkZSA8V2ViS2l0L1dLTmF0aXZlRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNlbmRpZgogI2luY2x1ZGUg
PHN0cmluZz4KIAogI2lmIFVTRShGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9SdW5Mb29wLmNwcAppbmRleCBlN2UzZDlmOTkzZWU3OWE0NjdkMGU5NDEzZTA4NzFjM2Vh
NDA2ODE3Li4xMWFhOTIxNmQ0YjZmYjhjYTljMDQ3NWIwMzU4NjZkNjQ1Y2QwZjIwIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SdW5Mb29wLmNwcApAQCAtNTQsNCArNTQsMTEzIEBA
CiAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQogCitURVNUKFdURl9SdW5Mb29wLCBO
ZXN0ZWRSdW5Mb29wKQoreworICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwor
CisgICAgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goWyZdIHsKKyAgICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFsmXSB7
CisgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAg
VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworICAgIH0pOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0
RmluaXNoZWQpOworfQorCitURVNUKFdURl9SdW5Mb29wLCBPbmVTaG90VGltZXIpCit7CisgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hl
ZCA9IGZhbHNlOworCisgICAgY2xhc3MgRGVyaXZlZFRpbWVyIDogcHVibGljIFJ1bkxvb3A6OlRp
bWVyPERlcml2ZWRUaW1lcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgRGVyaXZlZFRpbWVyKGJv
b2wmIHRlc3RGaW5pc2hlZCkKKyAgICAgICAgICAgIDogUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRp
bWVyPihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZEZXJpdmVkVGltZXI6OmZpcmVkKQorICAg
ICAgICAgICAgLCBtX3Rlc3RGaW5pc2hlZCh0ZXN0RmluaXNoZWQpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgZmlyZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3Rl
c3RGaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICBzdG9wKCk7CisgICAgICAgIH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIGJvb2wmIG1fdGVzdEZpbmlzaGVkOworICAgIH07CisKKyAgICB7
CisgICAgICAgIERlcml2ZWRUaW1lciB0aW1lcih0ZXN0RmluaXNoZWQpOworICAgICAgICB0aW1l
ci5zdGFydE9uZVNob3QoMC4xKTsKKyAgICAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwor
ICAgIH0KK30KKworVEVTVChXVEZfUnVuTG9vcCwgUmVwZWF0aW5nVGltZXIpCit7CisgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CisKKyAgICBib29sIHRlc3RGaW5pc2hlZCA9
IGZhbHNlOworCisgICAgY2xhc3MgRGVyaXZlZFRpbWVyIDogcHVibGljIFJ1bkxvb3A6OlRpbWVy
PERlcml2ZWRUaW1lcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgRGVyaXZlZFRpbWVyKGJvb2wm
IHRlc3RGaW5pc2hlZCkKKyAgICAgICAgICAgIDogUnVuTG9vcDo6VGltZXI8RGVyaXZlZFRpbWVy
PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZEZXJpdmVkVGltZXI6OmZpcmVkKQorICAgICAg
ICAgICAgLCBtX3Rlc3RGaW5pc2hlZCh0ZXN0RmluaXNoZWQpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgZmlyZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKytt
X2NvdW50ID09IDEwKSB7CisgICAgICAgICAgICAgICAgbV90ZXN0RmluaXNoZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIHN0b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9jb3VudCB7IDAgfTsKKyAgICAgICAgYm9vbCYg
bV90ZXN0RmluaXNoZWQ7CisgICAgfTsKKworICAgIHsKKyAgICAgICAgRGVyaXZlZFRpbWVyIHRp
bWVyKHRlc3RGaW5pc2hlZCk7CisgICAgICAgIHRpbWVyLnN0YXJ0UmVwZWF0aW5nKDAuMDEpOwor
ICAgICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgfQorfQorCitURVNUKFdURl9S
dW5Mb29wLCBNYW55VGltZXMpCit7CisgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29w
KCk7CisKKyAgICBjbGFzcyBDb3VudGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZvaWQgcnVu
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCsrbV9jb3VudCA9PSAxMDAwMDApIHsKKyAg
ICAgICAgICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpc10geworICAgICAgICAgICAgICAgIHJ1bigpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHVuc2lnbmVkIG1fY291bnQgeyAw
IH07CisgICAgfTsKKworICAgIENvdW50ZXIgY291bnRlcjsKKworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbJmNvdW50ZXJdIHsKKyAgICAgICAgY291bnRlci5ydW4oKTsKKyAgICB9
KTsKKyAgICBSdW5Mb29wOjpydW4oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29uZmlnLmgKaW5kZXggMmE2MjU4M2JjOWUwYTliMTE2ZWUwMGJkMzFhMDY0NmQ2
OTI2MzAxNi4uMDllMzU4MGQzNzJkYzk1MTEyZjE2NTYxNTJiNjQ3M2FkNGRkNjY3YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvbmZpZy5oCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgImNtYWtlY29uZmlnLmgi
CiAjZW5kaWYKIAotI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KICNp
bmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisjaWZuZGVmIEJVSUxESU5HX0pTQ09O
TFlfXworI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaD4KKyNlbmRpZgog
CiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9fQVBQTEVfXwogCkBAIC02Myw3ICs2NSw3IEBA
CiAKICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9S
TShXSU4pICYmICEoUExBVEZPUk0oR1RLKSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18p
KQorI2lmICFQTEFURk9STShJT1MpICYmICFQTEFURk9STShXSU4pICYmICEoUExBVEZPUk0oR1RL
KSAmJiAhZGVmaW5lZChCVUlMRElOR19XRUJLSVQyX18pKSAmJiAhZGVmaW5lZChCVUlMRElOR19K
U0NPTkxZX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dlYktpdDJfQy5oPgogI2VuZGlmCiAKQEAgLTg5
LDYgKzkxLDYgQEAKICNlbmRpZgogI2VuZGlmCiAKLSNpZiAhUExBVEZPUk0oSU9TKQorI2lmICFQ
TEFURk9STShJT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX0pTQ09OTFlfXykKICNkZWZpbmUgV0tf
SEFWRV9DX1NQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNj
b25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9q
c2Nvbmx5L1BsYXRmb3JtVXRpbGl0aWVzSlNDT25seS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFkYzZiOTIw
YmRlNjg0MDAyZjljZTFhZmExY2ZkMjZmN2Y3ZDUxNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvanNjb25seS9QbGF0Zm9ybVV0aWxpdGllc0pTQ09ubHkuY3BwCkBAIC0w
LDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworbmFtZXNwYWNlIFV0aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdo
aWxlICghKmRvbmUpIHsKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAgICAgICBnX21haW5f
Y29udGV4dF9pdGVyYXRpb24oUnVuTG9vcDo6Y3VycmVudCgpLm1haW5Db250ZXh0KCksIGZhbHNl
KTsKKyNlbHNlCisgICAgICAgIFdURjo6UnVuTG9vcDo6aXRlcmF0ZSgpOworI2VuZGlmCisgICAg
fQorfQorCit2b2lkIHNsZWVwKGRvdWJsZSBzZWNvbmRzKQoreworICAgIFdURjo6c2xlZXAoc2Vj
b25kcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvanNjb25seS9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmIxMmNm
NGI3OTMyOWZmMGFmZWI5ZjE4YjAyZTY5YzcxOWI3ZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9qc2Nvbmx5L21haW4uY3BwCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdHNDb250cm9sbGVyLmgiCisKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKK3sKKyAgICByZXR1cm4gVGVzdFdlYktpdEFQSTo6VGVzdHNDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5ydW4oYXJnYywgYXJndikgPyBFWElUX1NVQ0NFU1MgOiBFWElU
X0ZBSUxVUkU7Cit9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZjcz
MjZkNWY3OGI3ZmI1MWRmYzI1ZWIwM2M4MzExMjg5ZmViNjk0NS4uNDk2ZTQzMTkyNzBhMjlhYzE2
ODNiNWQyMzEyOGZiMjBlMTAwYTYxZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTA0LTE2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NPbmx5XSBJbXBsZW1lbnQgUnVuTG9vcCBh
bmQgcmVtb3ZlIGdsaWIgZGVwZW5kZW5jeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2U6CisK
IDIwMTYtMDQtMTMgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIEZpbmRXZWJQIHNob3VsZCBub3QgYmUgbWlzZ3VpZGVkIGJ5IHBrZy1jb25maWcgd2hl
biBjcm9zcy1jb21waWxpbmcuCg==
</data>
<flag name="review"
          id="300831"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>