<?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>182975</bug_id>
          
          <creation_ts>2018-02-20 09:30:43 -0800</creation_ts>
          <short_desc>Fix std::make_unique / new[] using system malloc</short_desc>
          <delta_ts>2018-03-06 09:38:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</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>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1400788</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-20 09:30:43 -0800</bug_when>
    <thetext>Fix std::make_unique / new[] using system malloc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400789</commentid>
    <comment_count>1</comment_count>
      <attachid>334274</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-20 09:31:00 -0800</bug_when>
    <thetext>Created attachment 334274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400823</commentid>
    <comment_count>2</comment_count>
      <attachid>334285</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-20 10:23:50 -0800</bug_when>
    <thetext>Created attachment 334285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401038</commentid>
    <comment_count>3</comment_count>
      <attachid>334345</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 01:06:48 -0800</bug_when>
    <thetext>Created attachment 334345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401054</commentid>
    <comment_count>4</comment_count>
      <attachid>334351</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 02:18:27 -0800</bug_when>
    <thetext>Created attachment 334351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401059</commentid>
    <comment_count>5</comment_count>
      <attachid>334355</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 02:33:52 -0800</bug_when>
    <thetext>Created attachment 334355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401064</commentid>
    <comment_count>6</comment_count>
      <attachid>334357</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 03:08:31 -0800</bug_when>
    <thetext>Created attachment 334357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401110</commentid>
    <comment_count>7</comment_count>
      <attachid>334378</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 08:20:40 -0800</bug_when>
    <thetext>Created attachment 334378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401126</commentid>
    <comment_count>8</comment_count>
      <attachid>334385</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-21 09:08:34 -0800</bug_when>
    <thetext>Created attachment 334385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401618</commentid>
    <comment_count>9</comment_count>
      <attachid>334385</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-22 18:41:59 -0800</bug_when>
    <thetext>Comment on attachment 334385
Patch

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

&gt; Source/WTF/wtf/UniqueArray.h:44
&gt; +    // If it is acceptable, we can just use Vector&lt;T&gt; instead. So this UniqueArray&lt;T&gt; only
&gt; +    // accepts the type T which does not have non trivial destructor. This allows us to
&gt; +    // skip calling destructors for N elements. And this allows UniqueArray&lt;T&gt; not to
&gt; +    // store its N size.

Is it worth having a variant that handles non-trivial destructors? Presumably we want those going through bmalloc as well.

&quot;type T which does not have non trivial destructor&quot; =&gt; &quot;type T which has a trivial destructor&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401620</commentid>
    <comment_count>10</comment_count>
      <attachid>334385</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-22 18:55:09 -0800</bug_when>
    <thetext>Comment on attachment 334385
Patch

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

Thank you

&gt;&gt; Source/WTF/wtf/UniqueArray.h:44
&gt;&gt; +    // store its N size.
&gt; 
&gt; Is it worth having a variant that handles non-trivial destructors? Presumably we want those going through bmalloc as well.
&gt; 
&gt; &quot;type T which does not have non trivial destructor&quot; =&gt; &quot;type T which has a trivial destructor&quot;

We can implement it, but in practice, I think it is not so useful.
When the class has non-trivial destructors, in WebKit, typically, it is user-defined class.
So annotating the class with WTF_MAKE_FAST_ALLOCATED can achieve what we want.
What do you think of?

I&apos;ll fix this typo.

&gt; Source/WTF/wtf/UniqueArray.h:49
&gt; +    // more larger storage than the `sizeof(U) * size` storage since it want to store

Fix &quot;more larger&quot; =&gt; &quot;larger&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401627</commentid>
    <comment_count>11</comment_count>
      <attachid>334499</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-22 19:09:19 -0800</bug_when>
    <thetext>Created attachment 334499
Patch

Update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401750</commentid>
    <comment_count>12</comment_count>
      <attachid>334538</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-23 10:18:58 -0800</bug_when>
    <thetext>Created attachment 334538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401754</commentid>
    <comment_count>13</comment_count>
      <attachid>334538</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-23 10:20:53 -0800</bug_when>
    <thetext>Comment on attachment 334538
Patch

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

&gt; Source/WTF/wtf/UniqueArray.h:97
&gt; +}

I&apos;ve added UniqueArray&lt;T&gt; implementation for types which have non-trivial-destructors too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401868</commentid>
    <comment_count>14</comment_count>
      <attachid>334562</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-24 08:23:49 -0800</bug_when>
    <thetext>Created attachment 334562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401869</commentid>
    <comment_count>15</comment_count>
      <attachid>334563</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-24 08:42:06 -0800</bug_when>
    <thetext>Created attachment 334563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401872</commentid>
    <comment_count>16</comment_count>
      <attachid>334563</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-02-24 10:06:43 -0800</bug_when>
    <thetext>Comment on attachment 334563
Patch

Attachment 334563 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/6653356

New failing tests:
stress/ftl-put-by-id-setter-exception-interesting-live-state.js.ftl-eager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401875</commentid>
    <comment_count>17</comment_count>
      <attachid>334564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-24 10:21:01 -0800</bug_when>
    <thetext>Created attachment 334564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402133</commentid>
    <comment_count>18</comment_count>
      <attachid>334385</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-26 12:08:40 -0800</bug_when>
    <thetext>Comment on attachment 334385
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/UniqueArray.h:44
&gt;&gt;&gt; +    // store its N size.
&gt;&gt; 
&gt;&gt; Is it worth having a variant that handles non-trivial destructors? Presumably we want those going through bmalloc as well.
&gt;&gt; 
&gt;&gt; &quot;type T which does not have non trivial destructor&quot; =&gt; &quot;type T which has a trivial destructor&quot;
&gt; 
&gt; We can implement it, but in practice, I think it is not so useful.
&gt; When the class has non-trivial destructors, in WebKit, typically, it is user-defined class.
&gt; So annotating the class with WTF_MAKE_FAST_ALLOCATED can achieve what we want.
&gt; What do you think of?
&gt; 
&gt; I&apos;ll fix this typo.

I don&apos;t follow why that would actually make that happen. Let&apos;s say I have a type T that is marked WTF_MAKE_FAST_ALLOCATED, and it has a non trivial destructor. Won&apos;t the compiler just end up emitting placement new?

E.g, wouldn&apos;t std::unique_ptr&lt;T[]&gt;(size) just do something like:
T* p = malloc(sizeof(T)*size);
for ( i = 0; i &lt; size; ++i)
    new (&amp;p[i]) T;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402306</commentid>
    <comment_count>19</comment_count>
      <attachid>334385</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-27 00:46:28 -0800</bug_when>
    <thetext>Comment on attachment 334385
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/UniqueArray.h:44
&gt;&gt;&gt;&gt; +    // store its N size.
&gt;&gt;&gt; 
&gt;&gt;&gt; Is it worth having a variant that handles non-trivial destructors? Presumably we want those going through bmalloc as well.
&gt;&gt;&gt; 
&gt;&gt;&gt; &quot;type T which does not have non trivial destructor&quot; =&gt; &quot;type T which has a trivial destructor&quot;
&gt;&gt; 
&gt;&gt; We can implement it, but in practice, I think it is not so useful.
&gt;&gt; When the class has non-trivial destructors, in WebKit, typically, it is user-defined class.
&gt;&gt; So annotating the class with WTF_MAKE_FAST_ALLOCATED can achieve what we want.
&gt;&gt; What do you think of?
&gt;&gt; 
&gt;&gt; I&apos;ll fix this typo.
&gt; 
&gt; I don&apos;t follow why that would actually make that happen. Let&apos;s say I have a type T that is marked WTF_MAKE_FAST_ALLOCATED, and it has a non trivial destructor. Won&apos;t the compiler just end up emitting placement new?
&gt; 
&gt; E.g, wouldn&apos;t std::unique_ptr&lt;T[]&gt;(size) just do something like:
&gt; T* p = malloc(sizeof(T)*size);
&gt; for ( i = 0; i &lt; size; ++i)
&gt;     new (&amp;p[i]) T;

No. When WTF_MAKE_FAST_ALLOCATED is annotated, the `new[]` operator (not `new` operator. WTF_MAKE_FAST_ALLOCATED defines `new` and `new[]`) is invoked, which is defined by WTF_MAKE_FAST_ALLOCATED.
Since it allocates the memory from FastMalloc, we do not use system malloc for that. So, `make_unique&lt;T[]&gt;(size)` works with FastMalloc if T is annotated with WTF_MAKE_FAST_ALLOCATED.

BTW, just for the usability, I added makeUniqueArray&lt;T&gt; for T which has a non trivial destructor in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403291</commentid>
    <comment_count>20</comment_count>
      <attachid>334564</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-02 10:33:32 -0800</bug_when>
    <thetext>Comment on attachment 334564
Patch

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

&gt; Source/JavaScriptCore/runtime/StructureIDTable.cpp:36
&gt; +    , m_table(makeUniqueArray&lt;StructureOrOffset&gt;(s_initialSize))

Seems like a vector would be better here since we realloc below.

&gt; Source/WTF/wtf/UniqueArray.h:46
&gt; +        using U = typename std::remove_extent&lt;T&gt;::type;

Why remove_extent? We don&apos;t use UniqueArray&lt;T[]&gt; right? Should it be an error to do so?

&gt; Source/WTF/wtf/UniqueArray.h:96
&gt; +    return UniqueArrayMaker&lt;std::is_trivially_destructible&lt;typename std::remove_extent&lt;T&gt;::type&gt;::value, T&gt;::make(size);

Same here. You also remove_extent and it seems like it should just be an error to get it. So you need std::is_same&lt;T, remove_extent&lt;T&gt;&gt;

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5933
&gt; +    i = std::min(m_buffers.size() - 1, i);

Can m_buffers.size() be 0?

&gt; Source/WebCore/platform/graphics/FormatConverter.h:49
&gt; +        m_unpackedIntermediateSrcData = makeUniqueArray&lt;uint8_t&gt;(m_width * MaxNumberOfComponents * MaxBytesPerComponent);

Can this overflow?

&gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:481
&gt; +        m_formalizedRGBA8Data = makeUniqueArray&lt;uint8_t&gt;(m_imageWidth * m_imageHeight * 4);

Can this overflow?

&gt; Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp:149
&gt; +        memcpy(attachmentInfo.data(), messageData, sizeof(AttachmentInfo) * attachmentCount);

Can this overflow?

&gt; Tools/TestWebKitAPI/Tests/WTF/UniqueArray.cpp:33
&gt; +static unsigned numberOfConstrucions { 0 };

typo &quot;constructions&quot;

&gt; Tools/TestWebKitAPI/Tests/WTF/UniqueArray.cpp:44
&gt; +    }

This isn&apos;t trivial?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403305</commentid>
    <comment_count>21</comment_count>
      <attachid>334564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-02 10:57:23 -0800</bug_when>
    <thetext>Comment on attachment 334564
Patch

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

Thanks.

&gt;&gt; Source/JavaScriptCore/runtime/StructureIDTable.cpp:36
&gt;&gt; +    , m_table(makeUniqueArray&lt;StructureOrOffset&gt;(s_initialSize))
&gt; 
&gt; Seems like a vector would be better here since we realloc below.

This is intentional. In `StructureIDTable::resize` function, we first allocate the table pointer, fill the values, and perform `WTF::storeStoreFence`.
If the table pointer is swapped before copying the values, we encounter the issue. (And this order depends on Vector&apos;s implementation. And we do not want to limit the Vector&apos;s implementation due to StructureIDTable implementaiton.).

&gt;&gt; Source/WTF/wtf/UniqueArray.h:46
&gt;&gt; +        using U = typename std::remove_extent&lt;T&gt;::type;
&gt; 
&gt; Why remove_extent? We don&apos;t use UniqueArray&lt;T[]&gt; right? Should it be an error to do so?

OK, I&apos;ll insert `static_assert` to ensure `T[]` is not coming here.

&gt;&gt; Source/WTF/wtf/UniqueArray.h:96
&gt;&gt; +    return UniqueArrayMaker&lt;std::is_trivially_destructible&lt;typename std::remove_extent&lt;T&gt;::type&gt;::value, T&gt;::make(size);
&gt; 
&gt; Same here. You also remove_extent and it seems like it should just be an error to get it. So you need std::is_same&lt;T, remove_extent&lt;T&gt;&gt;

Ditto.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:5933
&gt;&gt; +    i = std::min(m_buffers.size() - 1, i);
&gt; 
&gt; Can m_buffers.size() be 0?

It would be 0. However, in that case, we never call this `imageBuffer` function.

&gt;&gt; Source/WebCore/platform/graphics/FormatConverter.h:49
&gt;&gt; +        m_unpackedIntermediateSrcData = makeUniqueArray&lt;uint8_t&gt;(m_width * MaxNumberOfComponents * MaxBytesPerComponent);
&gt; 
&gt; Can this overflow?

It would be overflow. Using Checked&lt;&gt; and causing abort would be safer.

&gt;&gt; Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:481
&gt;&gt; +        m_formalizedRGBA8Data = makeUniqueArray&lt;uint8_t&gt;(m_imageWidth * m_imageHeight * 4);
&gt; 
&gt; Can this overflow?

Ditto.

&gt;&gt; Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp:149
&gt;&gt; +        memcpy(attachmentInfo.data(), messageData, sizeof(AttachmentInfo) * attachmentCount);
&gt; 
&gt; Can this overflow?

No. In that case, Vector already causes abort.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/UniqueArray.cpp:33
&gt;&gt; +static unsigned numberOfConstrucions { 0 };
&gt; 
&gt; typo &quot;constructions&quot;

Fixed.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/UniqueArray.cpp:44
&gt;&gt; +    }
&gt; 
&gt; This isn&apos;t trivial?

Oops, I need to swap `TrivialDestructor` and `NonTrivialDestructor` here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403461</commentid>
    <comment_count>22</comment_count>
      <attachid>334950</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-03 01:07:44 -0800</bug_when>
    <thetext>Created attachment 334950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403471</commentid>
    <comment_count>23</comment_count>
      <attachid>334955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-03 07:14:25 -0800</bug_when>
    <thetext>Created attachment 334955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403640</commentid>
    <comment_count>24</comment_count>
      <attachid>334955</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-03-05 09:37:52 -0800</bug_when>
    <thetext>Comment on attachment 334955
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403647</commentid>
    <comment_count>25</comment_count>
      <attachid>334955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-05 09:49:19 -0800</bug_when>
    <thetext>Comment on attachment 334955
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403650</commentid>
    <comment_count>26</comment_count>
      <attachid>334955</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-05 09:53:12 -0800</bug_when>
    <thetext>Comment on attachment 334955
Patch

Rejecting attachment 334955 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 334955, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ile Source/WebKitLegacy/win/WebPreferences.cpp
patching file Source/WebKitLegacy/win/WebView.cpp
patching file Tools/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Tools/TestWebKitAPI/CMakeLists.txt
patching file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
patching file Tools/TestWebKitAPI/Tests/WTF/UniqueArray.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;JF Bastien&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/6814363</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403664</commentid>
    <comment_count>27</comment_count>
      <attachid>334955</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-05 10:23:33 -0800</bug_when>
    <thetext>Comment on attachment 334955
Patch

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

&gt; Source/WTF/wtf/Vector.h:85
&gt;              new (NotNull, cur) T;

Oops, this can be used for POD, and at that time, value is not initialized since it is not `T()`.
In `initialize()` function with `bool needsInitialization = true`, we should call `T()` instead of `T` since it *wants* initialization.
This is discovered by UniqueArray test. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403894</commentid>
    <comment_count>28</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-05 23:25:22 -0800</bug_when>
    <thetext>Committed r229309: &lt;https://trac.webkit.org/changeset/229309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403895</commentid>
    <comment_count>29</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-05 23:26:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/38169866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404027</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-06 09:38:09 -0800</bug_when>
    <thetext>Committed r229324: &lt;https://trac.webkit.org/changeset/229324&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334274</attachid>
            <date>2018-02-20 09:31:00 -0800</date>
            <delta_ts>2018-02-20 10:23:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221023059.patch</filename>
            <type>text/plain</type>
            <size>20261</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDNkZTAxYWUzY2Y0ZDE5N2M5YjIzMjcxOGE1ZmEzZGRkZDY4NzBmLi5lMmE1YWZlNDc0OTFhZjdk
MTU1ZDczNWZlOTE3MzhmZWMyMmY1YjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAxOC0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAgICAgKiBk
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6
OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmU6OmVkZ2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6Omxp
bmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50
V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdF
eHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoK
KwogMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVzaCBmb3IgQXJyYXlTdG9yYWdlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhm
OGY5MDNiNGExMzBlOGEzNmE3OWI5NTIyNTEzMzUzODVjMTBmY2IuLmQ0MGE0Nzg3ZjhjOWQyNDBm
NGNlNzEwNDMwMTQzMGQxZTg2OGY4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTgtMDItMjAg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0
ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2Mu
aDoKKyAgICAgICAgKFdURjo6RmFzdEZyZWU6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAo
V1RGOjpGYXN0RnJlZTxUOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvTWFsbG9j
UHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6Cisg
ICAgICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdURjo6U3lzdGVtRnJlZTxUOjpv
cGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDogQWRkZWQuCisg
ICAgICAgIChXVEY6Om1ha2VVbmlxdWVBcnJheSk6CisKIDIwMTgtMDItMTYgIERlYW4gSmFja3Nv
biAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPUEVOR0wgbWFjcm9zIHRvIGJlIG1v
cmUgY2xlYXIgYWJvdXQgd2hpY2ggT3BlbkdML0VTIFdlYkdMIHVzZXMgb24gQ29jb2EKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4IDA1ODcyNTkzZjZk
YmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMzYTMuLjEzNjc3MTUzZDVmYTA0ZGZiOGU5ZmVhN2U0
NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1Jl
ZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0
aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVm
ZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiAmT3BhcXVlSlNTdHJpbmc6OmNy
ZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1JlZigpOwogCi0gICAgYXV0byBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVuZ3RoKTsKLSAgICBDRlN0cmlu
Z0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZ2V0
KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dl
dENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZGF0YSgp
KTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAi
VW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsKLSAgICByZXR1cm4gJk9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSks
IGxlbmd0aCkubGVha1JlZigpOworICAgIHJldHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmRhdGEoKSksIGxlbmd0aCkubGVha1JlZigp
OwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBh
bGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmluZGV4IGVhODU5YzRhOWExMmZlNGRkZjJlNTJjMmI4
Njg2ZDIwODg4M2I4NzQuLmU3NzM3MDZkMTFlNTQyNTFiY2RkNmQ4NzEyZTQ0MzIxNjdiNmYxZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaApA
QCAtNzQsNiArNzQsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICBmcmllbmQgY2xhc3Mg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogCiAgICAgY2xhc3MgS2lsbFNldCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEtpbGxTZXQpOwogICAgIHB1YmxpYzoKICAgICAgICAg
S2lsbFNldCgpCiAgICAgICAgICAgICA6IG1fd29yZCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGFkMDM1NmU4ZjkwYmRmOGEzNWExZTNl
NTNkZjg3NjI1NDRlNDMxMGEuLjBjMjA3MDNlZDhlMmQ4MTNmNWQyMTgwOGFhYzJmM2NkMjg2MjA0
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAK
QEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1ZgogICAgICAgICBhbW91
bnRPZk5vZGVXaGl0ZVNwYWNlID0gMDsKICAgICBlbHNlCiAgICAgICAgIGFtb3VudE9mTm9kZVdo
aXRlU3BhY2UgPSBHcmFwaDo6YW1vdW50T2ZOb2RlV2hpdGVTcGFjZShjb250ZXh0KTsKLSAgICBh
dXRvIHByZWZpeEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGgg
KyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7Ci0gICAgbWVtY3B5KHByZWZpeEJ1ZmZlci5n
ZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBwcmVmaXhCdWZm
ZXIocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSArIDEpOworICAgIG1lbWNw
eShwcmVmaXhCdWZmZXIuZGF0YSgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlOyArK2kpCiAgICAgICAgIHByZWZp
eEJ1ZmZlcltpICsgcHJlZml4TGVuZ3RoXSA9ICcgJzsKICAgICBwcmVmaXhCdWZmZXJbcHJlZml4
TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZV0gPSAwOwpAQCAtMTY5LDcgKzE2OSw3IEBA
IHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgQ29kZUxvY2F0aW9uTGFiZWwgZW5kID0gbGlu
a0J1ZmZlci5sb2NhdGlvbk9mKGN1cnJlbnRMYWJlbCk7CiAgICAgcHJldmlvdXNMYWJlbCA9IGN1
cnJlbnRMYWJlbDsKICAgICBBU1NFUlQoZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSA+PSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwotICAgIGRpc2Fzc2Vt
YmxlKHN0YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhl
Y3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZ2V0KCksIG91dCk7Cisg
ICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkg
LSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5kYXRh
KCksIG91dCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAK
aW5kZXggODU4YjU0MTc0YmZlYjJlMjIxZDgzMDZmYTk4OGEyMjkxZDUwMjRlMy4uMTRjOWI3Zjg3
MTViMzJlMGEwM2YzZDg0ZGY5YjRjYTBkYTI0NmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKQEAgLTcx
LDcgKzcxLDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBjb2RlUmVmLCBWTSYg
dm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsCiAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2Vz
LAotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRzKQorICAgIE1hbGxv
Y1B0cjx1aW50MzJfdD4mJiBmYXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5l
KGNvZGVSZWYsIHZtKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7
CkBAIC0xMDQsNyArMTA0LDcgQEAgQ2FsbEVkZ2VMaXN0IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lOjplZGdlcygpIGNvbnN0CiAgICAgCiAgICAgQ2FsbEVkZ2VMaXN0IHJlc3VsdDsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFyaWFudHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJl
c3VsdC5hcHBlbmQoQ2FsbEVkZ2UoQ2FsbFZhcmlhbnQobV92YXJpYW50c1tpXS5nZXQoKSksIG1f
ZmFzdENvdW50c1tpXSkpOworICAgICAgICByZXN1bHQuYXBwZW5kKENhbGxFZGdlKENhbGxWYXJp
YW50KG1fdmFyaWFudHNbaV0uZ2V0KCkpLCBtX2Zhc3RDb3VudHMuZ2V0KClbaV0pKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZDk2YWU1NmM0N2Y0YWFiOWZkNDcy
ZmUyNDMyYmNmNTk1YjIyZjk1ZC4uNjU4MmRlYjI3OTc3NWUzNjk1Y2QwZmRiZGZhZmE5MTZmMDc4
MDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogICAgIFBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYmLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgICAgIEV4ZWNTdGF0ZSogY2FsbGVy
RnJhbWUsIENhbGxMaW5rSW5mbyYsIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYs
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRzKTsKKyAgICAg
ICAgTWFsbG9jUHRyPHVpbnQzMl90PiYmIGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwg
flBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAwLDcgQEAg
Y2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJS
b3V0aW5lIHsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+
IG1fdmFyaWFudHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50
czsKKyAgICBNYWxsb2NQdHI8dWludDMyX3Q+IG1fZmFzdENvdW50czsKICAgICBCYWc8UG9seW1v
cnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZXBhdGNoLmNwcAppbmRleCA3OGNhOTMwM2ZjODI4NzdjZTYwYmZlY2E5MTYwZWFjMzRmZjk2NmJh
Li4xM2JkMzIyZjE0NDM2NGRlMDMxOGViODZhMWU5ZjE1ZDVjOWIyM2NkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk0NCwxNCArOTQ0LDE0IEBAIHZvaWQgbGlua1Bv
bHltb3JwaGljQ2FsbCgKICAgICAKICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVlcyhjYWxs
Q2FzZXMuc2l6ZSgpKTsKICAgICBWZWN0b3I8Q2FsbFRvQ29kZVB0cj4gY2FsbHMoY2FsbENhc2Vz
LnNpemUoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHM7Cisg
ICAgTWFsbG9jUHRyPHVpbnQzMl90PiBmYXN0Q291bnRzOwogICAgIAogICAgIGlmICghaXNXZWJB
c3NlbWJseSAmJiBjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSAhPSBKSVRDb2RlOjp0b3BUaWVy
SklUKCkpCi0gICAgICAgIGZhc3RDb3VudHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+
KGNhbGxDYXNlcy5zaXplKCkpOworICAgICAgICBmYXN0Q291bnRzID0gTWFsbG9jUHRyPHVpbnQz
Ml90Pjo6bWFsbG9jKHNpemVvZih1aW50MzJfdCkgKiBjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxDYXNlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAoZmFzdENvdW50cykKLSAgICAgICAgICAgIGZhc3RDb3VudHNbaV0gPSAwOworICAg
ICAgICAgICAgZmFzdENvdW50cy5nZXQoKVtpXSA9IDA7CiAgICAgICAgIAogICAgICAgICBDYWxs
VmFyaWFudCB2YXJpYW50ID0gY2FsbENhc2VzW2ldLnZhcmlhbnQoKTsKICAgICAgICAgaW50NjRf
dCBuZXdDYXNlVmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAwNjAyZTRkOTQxMTQ1
MGNjODgzYzEyODNkNzNlNWRjMjdhNTI3YzcxLi5kY2Q3ZjMyNmQ0NDk3ZGE3YThlZDFkMDNkMTdh
NDE1OWE2OWZjMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE4LDE3ICs3MTgsMTcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3Rv
cnkoKQogICAgIC8vIEluIFdpbmRvd3MsIHdjaGFyX3QgaXMgdGhlIFVURi0xNkxFLgogICAgIC8v
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZGQzNzQwODEuYXNweAog
ICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9k
ZXNrdG9wL2ZmMzgxNDA3LmFzcHgKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
d2NoYXJfdFtdPihidWZmZXJMZW5ndGgpOwotICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051
bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmdldCgpKTsK
LSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZ2V0KCks
IGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOworICAgIFZlY3Rvcjx3Y2hhcl90PiBidWZmZXIoYnVm
ZmVyTGVuZ3RoKTsKKyAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpHZXRDdXJy
ZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5kYXRhKCkpOworICAgIFN0cmluZyBk
aXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdElu
Y2x1ZGluZ051bGwpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2Ug
XFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRz
V2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKLSAgICBh
dXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihQQVRIX01BWCk7Ci0gICAgaWYg
KCFnZXRjd2QoYnVmZmVyLmdldCgpLCBQQVRIX01BWCkpCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZl
cihQQVRIX01BWCk7CisgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmRhdGEoKSwgUEFUSF9NQVgpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0
cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSk7CiAjZW5kaWYKICAgICBpZiAo
ZGlyZWN0b3J5U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNGNmOGM2ZDRl
ZDlmMWEzMTJjNDE0M2U1NGIxMDI2YjU1N2E2MDA2Yi4uM2ExZWEzNzQ4MjQxYTRjMGQ2YTU3ZjJi
ZGYxOGFkNjY1MjViMWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CiAKLUluc3RydWN0aW9uKiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IDA7CitJ
bnN0cnVjdGlvbiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGgg
KyAxXSA9IHsgfTsKIE9wY29kZSBEYXRhOjpzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdID0geyB9
OwogT3Bjb2RlU3RhdHNBcnJheSogRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5ID0gbnVsbHB0cjsK
IApAQCAtNTcsOCArNTcsNiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCopOwog
CiB2b2lkIGluaXRpYWxpemUoKQogewotICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
ID0gbmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdOwotCiAjaWYgIUVOQUJMRShK
SVQpCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCmluZGV4IDYwMmRkNjQ2ZTU3M2I4NjFiNWIyNmZjODYzNWRmNTQ3NDYwOWNh
N2IuLjMwMWQwNzdlY2JiNTllNjY1NTc5Njg4ODU0NzFkMDI0MmRjNjRmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0
YSB7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTdGF0cygpOwogICAgIHN0YXRpYyB2b2lkIHNhdmVT
dGF0cygpOwogCi0gICAgc3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKKyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bj
b2RlTGVuZ3RoICsgMV07CiAgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1hcFtudW1PcGNvZGVJ
RHNdOwogICAgIHN0YXRpYyBPcGNvZGVTdGF0c0FycmF5KiBzX29wY29kZVN0YXRzQXJyYXk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAzOTE4OWY4N2QyNWVk
YjU3YzJlYTIyODM1MDRmNjExZjUyNTBlMTZlLi42M2MyZGU5MTNmZGY0ZGI1ZTU0YWNmZTJlYWI0
YWRkZjkwZWMzMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBA
IC0xNjUsNiArMTY1LDcgQEAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgOiBwdWJsaWMgUmVj
b3JkT3ZlcmZsb3cgewogfTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVyOwogICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggY2U2
ZTRjMWY0NWNiOWViOWU1ODVlNzJiZGMwZTcwYWI2N2JhZWZiYi4uYmI5NDQ5MWYxZGZhNmY2Yzgx
YjM3NjBhNzJiMWVmN2M1N2IwNWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtNTM4LDcgKzUzOCw3IEBAIFZNOjp+Vk0oKQogCiAjaWYgRU5BQkxFKFlBUlJfSklUX0FM
TF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgaWYgKG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZl
cikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyOworICAgICAg
ICBmYXN0RnJlZShtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC05MDcsNyArOTA3LDcgQEAgY2hhciogVk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCkKIAogICAgIG1fcmVnRXhwUGF0dGVybkNvbnRl
eHRMb2NrLmxvY2soKTsKICAgICBpZiAoIW1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcikKLSAg
ICAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyID0gbmV3IGNoYXJbVk06OnBhdHRlcm5D
b250ZXh0QnVmZmVyU2l6ZV07CisgICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9
IHN0YXRpY19jYXN0PGNoYXIqPihmYXN0TWFsbG9jKHNpemVvZihjaGFyKSAqIFZNOjpwYXR0ZXJu
Q29udGV4dEJ1ZmZlclNpemUpKTsKICAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmgKaW5k
ZXggNDgyNGIxYzZiM2U2ZmFiMmJhMmE3ZDgyMTFlNzllMDc4N2ZjNDk0My4uMjViOGY4MTQwMzhi
MmFlMWNhNDJhOTI0ZmVlMzZlOTU0YWVmYWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9IZWFwVmVyaWZpZXIuaApAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBIZWFwVmVyaWZpZXIg
ewogCiBwcml2YXRlOgogICAgIHN0cnVjdCBHQ0N5Y2xlIHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOworCiAgICAgICAgIEdDQ3ljbGUoKQogICAgICAgICAgICAgOiBi
ZWZvcmUoIkJlZm9yZSBNYXJraW5nIikKICAgICAgICAgICAgICwgYWZ0ZXIoIkFmdGVyIE1hcmtp
bmciKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAppbmRleCAxNThjYmVmNzYxMjNkOTNkN2Y0MWYyYmZmMjAx
NjU2ZTI5OGU4YTA4Li5kYmFkYWVlNmNhNTQwNjAwMTI5NjQzOWEyMzA0NTk3ZTViYmE3NjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMTUxLDEyICsxNTEsMTIgQEAgc3RhdGljIHZvaWQgdnBy
aW50Zl9zdGRlcnJfd2l0aF9wcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBjaGFyKiBm
b3JtYXQsIHYKIHsKICAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKHByZWZpeCk7CiAg
ICAgc2l6ZV90IGZvcm1hdExlbmd0aCA9IHN0cmxlbihmb3JtYXQpOwotICAgIGF1dG8gZm9ybWF0
V2l0aFByZWZpeCA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGggKyBmb3Jt
YXRMZW5ndGggKyAxKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwgcHJlZml4
LCBwcmVmaXhMZW5ndGgpOwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgpICsgcHJl
Zml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1h
dFdpdGhQcmVmaXgocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoICsgMSk7CisgICAgbWVtY3B5
KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAgbWVt
Y3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpICsgcHJlZml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1h
dExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aFByZWZpeFtwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5n
dGhdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJlZml4Lmdl
dCgpLCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5k
YXRhKCksIGFyZ3MpOwogfQogCiBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWls
aW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCkBAIC0xNjcsMTIg
KzE2NywxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xp
bmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBmb3JtYXRXaXRoTmV3bGluZSA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
Pihmb3JtYXRMZW5ndGggKyAyKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCks
IGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9ybWF0V2l0aE5ld2xp
bmUoZm9ybWF0TGVuZ3RoICsgMik7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmRhdGEo
KSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAgIGZvcm1hdFdpdGhOZXdsaW5lW2Zvcm1hdExl
bmd0aF0gPSAnXG4nOwogICAgIGZvcm1hdFdpdGhOZXdsaW5lW2Zvcm1hdExlbmd0aCArIDFdID0g
MDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5nZXQoKSwg
YXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5lLmRhdGEo
KSwgYXJncyk7CiB9CiAKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDIyMGJhZmQzNDhiMzA2MzM4M2FiN2E1NDJkYzJlZGUxMTFhYzcwODUuLmU5N2Qw
NjE5M2MwYTFkZmZjODMwZTBjYTdkZTY5ZTUwOWQ2NTk3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CkBAIC0yMzMsNiArMjMzLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVW5leHBlY3RlZC5oCiAg
ICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQuaAorICAgIFVuaXF1ZUFycmF5LmgKICAg
ICBVbmlxdWVSZWYuaAogICAgIFVuc2FmZVBvaW50ZXIuaAogICAgIFZNVGFncy5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmgKaW5kZXggN2VjMjFhZTc5ODUwNzRmNjM5ZGY0YmFjYjAwMzZhZTFmYzdlMDI2YS4uNjY3
MmNlNDZkOWYxYzJiNDNhMzkxZTU0YjY2MjQ0M2YwOGY5MzlmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApA
QCAtMjAwLDYgKzIwMCwyNiBAQCBzdHJ1Y3QgRmFzdE1hbGxvYyB7CiAgICAgc3RhdGljIHZvaWQg
ZnJlZSh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IEZhc3RGcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3BlcmF0b3IoKShUKiBw
b2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVlPFRbXT4geworICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCisgICAg
dm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CisgICAgeworICAgICAgICBmYXN0RnJl
ZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikp
OworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjaWYgIWRlZmluZWQoTkRFQlVH
KQpAQCAtMjA4LDYgKzIyOCw3IEBAIHVzaW5nIFdURjo6ZmFzdFNldE1heFNpbmdsZUFsbG9jYXRp
b25TaXplOwogCiB1c2luZyBXVEY6OkZhc3RBbGxvY2F0b3I7CiB1c2luZyBXVEY6OkZhc3RNYWxs
b2M7Cit1c2luZyBXVEY6OkZhc3RGcmVlOwogdXNpbmcgV1RGOjppc0Zhc3RNYWxsb2NFbmFibGVk
OwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9jOwogdXNpbmcgV1RGOjpmYXN0RnJlZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oIGIvU291cmNlL1dURi93dGYvTWFsbG9jUHRy
LmgKaW5kZXggN2Y2YTAyY2VmMzFiMWEyOWZhYzYzODRjZDJhY2UzZThmNzUwYzBiYS4uNjZmMTBh
YTliZDViYmEwOWFjNTYxMTM2YWQzNWJmNWU4NGU0OGZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvTWFsbG9jUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKQEAgLTY2
LDYgKzY2LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1hbGxvYyA9IEZhc3RN
YWxsb2M+IGNsYXNzIE1hbGxvY1B0ciB7CiAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1f
cHRyLCBudWxscHRyKTsKICAgICB9CiAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKICAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fcHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oIGIvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5o
CmluZGV4IDNlZjc1NjI4MmNmMjBkNDBkOGM2MTg1NDc5NDZkMDRmNWJhZWNlZjUuLjczYjY5M2Yw
NjgzOGJjYzhjY2M4M2E0NjhkNGRiYzNhOGFiODJmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N5c3RlbUZyZWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKQEAgLTMx
LDYgKzMxLDggQEAgbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1
Y3QgU3lzdGVtRnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJl
bW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKQEAgLTM5LDExICs0MSwxMiBAQCBzdHJ1Y3Qg
U3lzdGVtRnJlZSB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZTxU
W10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxU
Pjo6dmFsdWUsICIiKTsKKwogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+
Ojp0eXBlKj4ocG9pbnRlcikpOwogICAgIH0KLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oIGIvU291cmNlL1dURi93dGYv
VW5pcXVlQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTZmNDY4MzhiZTE1YmFjMDk4OWJkMDFjZDIyOTVk
YWZkNWIwYzI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXku
aApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHN0
ZDo6dW5pcXVlX3B0cjxUW10sIEZhc3RGcmVlPjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1Vu
aXF1ZUFycmF5PFQ+IG1ha2VVbmlxdWVBcnJheShzaXplX3Qgc2l6ZSkKK3sKKyAgICB1c2luZyBV
ID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlOworICAgIHJldHVybiBVbmlx
dWVBcnJheTxUPigqbmV3IChmYXN0TWFsbG9jKHNpemVvZihVKSAqIHNpemUpKSBVW3NpemVdKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpVbmlxdWVBcnJheTsKK3Vz
aW5nIFdURjo6bWFrZVVuaXF1ZUFycmF5Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334285</attachid>
            <date>2018-02-20 10:23:50 -0800</date>
            <delta_ts>2018-02-21 01:06:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221032349.patch</filename>
            <type>text/plain</type>
            <size>60614</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDNkZTAxYWUzY2Y0ZDE5N2M5YjIzMjcxOGE1ZmEzZGRkZDY4NzBmLi5lNjljZTI5MzdhOGQzMWEx
YzgyMGI1ODg2ZGFhMTQ1YjlkOWM4NWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOC0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAgICAgKiBk
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3NlbWJsZXI6
OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6Omxp
bmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChjdXJyZW50
V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdF
eHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoK
KwogMjAxOC0wMi0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbRlRMXSBTdXBwb3J0IEFycmF5UHVzaCBmb3IgQXJyYXlTdG9yYWdlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhm
OGY5MDNiNGExMzBlOGEzNmE3OWI5NTIyNTEzMzUzODVjMTBmY2IuLjU0MWQyNTY3Y2MwNmRjM2E1
NDlhMTU0MTkzYWI5YTYzZDA3ZTBjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTgtMDItMjAg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0
ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Bc3NlcnRpb25zLmNwcDoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0Zhc3RNYWxsb2Mu
aDoKKyAgICAgICAgKFdURjo6RmFzdEZyZWU6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAo
V1RGOjpGYXN0RnJlZTxUOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvTWFsbG9j
UHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6Cisg
ICAgICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdURjo6U3lzdGVtRnJlZTxUOjpv
cGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDogQWRkZWQuCisg
ICAgICAgIChXVEY6Om1ha2VVbmlxdWVBcnJheSk6CisKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5jcHA6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0
TWFsbG9jLmg6CisgICAgICAgIChXVEY6OkZhc3RGcmVlOjpvcGVyYXRvcigpIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6RmFzdEZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICogd3Rm
L01hbGxvY1B0ci5oOgorICAgICAgICAoV1RGOjpNYWxsb2NQdHI6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKFdURjo6U3RhY2tTaG90
OjpTdGFja1Nob3QpOgorICAgICAgICAoV1RGOjpTdGFja1Nob3Q6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdURjo6U3lzdGVtRnJlZTxUOjpvcGVy
YXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAuCisgICAgICAgIChXVEY6
Om1ha2VVbmlxdWVBcnJheSk6CisKIDIwMTgtMDItMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFVzZSBPUEVOR0wgbWFjcm9zIHRvIGJlIG1vcmUgY2xlYXIgYWJv
dXQgd2hpY2ggT3BlbkdML0VTIFdlYkdMIHVzZXMgb24gQ29jb2EKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMDQ4
ZTBlZjY4NmNkODZhZTNiYmJmYWFmYWNlMTQxZWVlZGI0NTMwLi4xOTFiMzM2NDI2N2RkZmZkNjNm
ZTRkMjRhZTU0ZWYzMmVjNmU2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTgt
MDItMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
Rml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIGNzc2ppdC9Db21waWxlZFNlbGVjdG9y
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3Vi
SW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
aW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZG
VEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFnZVN1cmZhY2VW
ZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbUxvZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVj
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjAgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW01pbmlCcm93c2Vy
XSBIb25vciBHU3RyZWFtZXIgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgaW4gTWluaUJyb3dzZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDlkZDQ2ZWIxMDc1OGI0NTM4NDc0ZTgxOGIzZjI0MTk2ZDI0
ZTZjZmIuLjQ5YjkxYTcyNTZiZDE1ZjNjOWI0NWQ5YWYxOTlmZTRmNWEwMzk0NzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTAyLTIwICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8g
bmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwYWwvd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoUEFM
Ojpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMTUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hv
cnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBFWENMVURFRF9TT1VSQ0VfRklM
RV9OQU1FUyBmb3IgYWN0dWFsIHNvdXJjZSBmaWxlcyBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVj
Y2ZkYjNlOTc4NWNiYTFmOWNjYWI5MzBkNjhlMmQ1NDE2MzViMTQuLjZkNTE4N2FjOGFmZTgyMjRl
YWJlOTQ2YTliYWVlMmM5ZTU2YmZmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgt
MDItMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
Rml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHA6CisgICAgICAgIChXaW5kb3dzU3lzdGVtUHJveHk6Omdl
dFN5c3RlbUh0dHBQcm94eSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6Cisg
ICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQ
bGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0xldmVsU3Ry
aW5nKToKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAgICAgICAqIFNo
YXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFsbG9jYXRlKToKKwogMjAxOC0wMi0yMCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1b
TWluaUJyb3dzZXJdIEhvbm9yIEdTdHJlYW1lciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBpbiBN
aW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDA2MWZmZDM4MmE4MzZj
MmUyNDI1YjgyYWMxNzFhMzFmZTJmZjg4MWMuLjFjOTI0M2EyNGVkNzA0ZjY5YTg4OTZiOThlNDEz
ZGFiMjcwMTIxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAxOC0wMi0yMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6
OmZldGNoSW5mbyk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2Vi
UHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6CisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKToKKwog
MjAxOC0wMi0xNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNl
IE9QRU5HTCBtYWNyb3MgdG8gYmUgbW9yZSBjbGVhciBhYm91dCB3aGljaCBPcGVuR0wvRVMgV2Vi
R0wgdXNlcyBvbiBDb2NvYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1N0cmluZ1JlZkNGLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZD
Ri5jcHAKaW5kZXggMDU4NzI1OTNmNmRiYjlhODUzYTgxNjFhNjliYmRmNzQyYTIzMzNhMy4uMTM2
NzcxNTNkNWZhMDRkZmI4ZTlmZWE3ZTQ0OGFjNDE3ZjljNmUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCkBAIC00OSwxMCArNDksMTAgQEAgSlNTdHJp
bmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQogICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGNvbnZlcnRlZFNpemUpID09IGxlbmd0aCAmJiBzdGF0
aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZmZXJMZW5ndGgpID09IGxlbmd0aCkKICAgICAgICAgcmV0
dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKGxjaGFyQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKS5s
ZWFrUmVmKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pQ2hhcltd
PihsZW5ndGgpOwotICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtl
KDAsIGxlbmd0aCksIGJ1ZmZlci5nZXQoKSk7CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihs
ZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAs
IGxlbmd0aCksIGJ1ZmZlci5kYXRhKCkpOwogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVuaUNo
YXIpID09IHNpemVvZihVQ2hhciksICJVbmlDaGFyIGFuZCBVQ2hhciBtdXN0IGJlIHNhbWUgc2l6
ZSIpOwotICAgIHJldHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVuZ3RoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuICZP
cGFxdWVKU1N0cmluZzo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZGF0
YSgpKSwgbGVuZ3RoKS5sZWFrUmVmKCk7CiB9CiAKIENGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNG
U3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKaW5kZXggZWE4
NTljNGE5YTEyZmU0ZGRmMmU1MmMyYjg2ODZkMjA4ODgzYjg3NC4uZTc3MzcwNmQxMWU1NDI1MWJj
ZGQ2ZDg3MTJlNDQzMjE2N2I2ZjFkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCkBAIC03NCw2ICs3NCw3IEBAIGNsYXNzIEJ5dGVjb2RlS2ls
bHMgewogICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiAKICAgICBj
bGFzcyBLaWxsU2V0IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoS2lsbFNldCk7
CiAgICAgcHVibGljOgogICAgICAgICBLaWxsU2V0KCkKICAgICAgICAgICAgIDogbV93b3JkKDAp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXgg
YWQwMzU2ZThmOTBiZGY4YTM1YTFlM2U1M2RmODc2MjU0NGU0MzEwYS4uMGMyMDcwM2VkOGUyZDgx
M2Y1ZDIxODA4YWFjMmYzY2QyODYyMDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGlzYXNzZW1ibGVyLmNwcApAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgRGlzYXNzZW1i
bGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4
LCBMaW5rQnVmCiAgICAgICAgIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgPSAwOwogICAgIGVsc2UK
ICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9IEdyYXBoOjphbW91bnRPZk5vZGVXaGl0
ZVNwYWNlKGNvbnRleHQpOwotICAgIGF1dG8gcHJlZml4QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKLSAg
ICBtZW1jcHkocHJlZml4QnVmZmVyLmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAg
VmVjdG9yPGNoYXI+IHByZWZpeEJ1ZmZlcihwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0
ZVNwYWNlICsgMSk7CisgICAgbWVtY3B5KHByZWZpeEJ1ZmZlci5kYXRhKCksIHByZWZpeCwgcHJl
Zml4TGVuZ3RoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFtb3VudE9mTm9kZVdoaXRlU3Bh
Y2U7ICsraSkKICAgICAgICAgcHJlZml4QnVmZmVyW2kgKyBwcmVmaXhMZW5ndGhdID0gJyAnOwog
ICAgIHByZWZpeEJ1ZmZlcltwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlXSA9
IDA7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJs
eShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICBDb2Rl
TG9jYXRpb25MYWJlbCBlbmQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsK
ICAgICBwcmV2aW91c0xhYmVsID0gY3VycmVudExhYmVsOwogICAgIEFTU0VSVChlbmQuZXhlY3V0
YWJsZUFkZHJlc3M8dWludHB0cl90PigpID49IHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRw
dHJfdD4oKSk7Ci0gICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1
aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZp
eEJ1ZmZlci5nZXQoKSwgb3V0KTsKKyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFi
bGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJf
dD4oKSwgcHJlZml4QnVmZmVyLmRhdGEoKSwgb3V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCA4NThiNTQxNzRiZmViMmUyMjFkODMwNmZhOTg4
YTIyOTFkNTAyNGUzLi5iYzBmODQxZGY3NTE0NTkzNDU5MjdkZjNkYTZhYWJkMDkxNjc1YjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbENh
c2U6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYmIGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgRXhlY1N0YXRl
KiBjYWxsZXJGcmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5
bW9ycGhpY0NhbGxDYXNlPiYgY2FzZXMsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+
IGZhc3RDb3VudHMpCisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKICAg
ICA6IEdDQXdhcmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkKICAgICAsIG1fZmFzdENvdW50
cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCmluZGV4IGQ5NmFlNTZjNDdmNGFh
YjlmZDQ3MmZlMjQzMmJjZjU5NWIyMmY5NWQuLjJhMzk1NzcyYjRhYjA0NjViYTFhOGMwOGU4Yzhk
MjFkYWM5NmViMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
YWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04NCw3ICs4NSw3IEBA
IGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHVi
Um91dGluZSB7CiAgICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICAg
ICAgRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwgQ2FsbExpbmtJbmZvJiwgY29uc3QgVmVjdG9yPFBv
bHltb3JwaGljQ2FsbENhc2U+JiwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+
IGZhc3RDb3VudHMpOworICAgICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRz
KTsKICAgICAKICAgICB2aXJ0dWFsIH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpOwogICAg
IApAQCAtMTAwLDcgKzEwMSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDog
cHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdy
aXRlQmFycmllcjxKU0NlbGw+LCAyPiBtX3ZhcmlhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50MzJfdFtdPiBtX2Zhc3RDb3VudHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFz
dENvdW50czsKICAgICBCYWc8UG9seW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCA3OGNhOTMwM2ZjODI4Nzdj
ZTYwYmZlY2E5MTYwZWFjMzRmZjk2NmJhLi5hZTBkZTYzOWM5M2U0ZWE4OTMwNmE5NzdmYmQyNGY4
ZDYxNzgwNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk0NCwx
MCArOTQ0LDEwIEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICBWZWN0b3I8
aW50NjRfdD4gY2FzZVZhbHVlcyhjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICBWZWN0b3I8Q2FsbFRv
Q29kZVB0cj4gY2FsbHMoY2FsbENhc2VzLnNpemUoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVp
bnQzMl90W10+IGZhc3RDb3VudHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IGZhc3RDb3Vu
dHM7CiAgICAgCiAgICAgaWYgKCFpc1dlYkFzc2VtYmx5ICYmIGNhbGxlckNvZGVCbG9jay0+aml0
VHlwZSgpICE9IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKLSAgICAgICAgZmFzdENvdW50cyA9IHN0
ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4oY2FsbENhc2VzLnNpemUoKSk7CisgICAgICAgIGZh
c3RDb3VudHMgPSBtYWtlVW5pcXVlQXJyYXk8dWludDMyX3Q+KGNhbGxDYXNlcy5zaXplKCkpOwog
ICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbENhc2VzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGlmIChmYXN0Q291bnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAwNjAyZTRk
OTQxMTQ1MGNjODgzYzEyODNkNzNlNWRjMjdhNTI3YzcxLi5kY2Q3ZjMyNmQ0NDk3ZGE3YThlZDFk
MDNkMTdhNDE1OWE2OWZjMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE4LDE3ICs3MTgs
MTcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdE
aXJlY3RvcnkoKQogICAgIC8vIEluIFdpbmRvd3MsIHdjaGFyX3QgaXMgdGhlIFVURi0xNkxFLgog
ICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZGQzNzQwODEu
YXNweAogICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2lu
ZG93cy9kZXNrdG9wL2ZmMzgxNDA3LmFzcHgKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8d2NoYXJfdFtdPihidWZmZXJMZW5ndGgpOwotICAgIERXT1JEIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmdl
dCgpKTsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIu
Z2V0KCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOworICAgIFZlY3Rvcjx3Y2hhcl90PiBidWZm
ZXIoYnVmZmVyTGVuZ3RoKTsKKyAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpH
ZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5kYXRhKCkpOworICAgIFN0
cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0
aE5vdEluY2x1ZGluZ051bGwpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRo
IGxpa2UgXFxob3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcu
c3RhcnRzV2l0aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UK
LSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihQQVRIX01BWCk7Ci0g
ICAgaWYgKCFnZXRjd2QoYnVmZmVyLmdldCgpLCBQQVRIX01BWCkpCisgICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlcihQQVRIX01BWCk7CisgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmRhdGEoKSwgUEFUSF9N
QVgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBkaXJlY3RvcnlT
dHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CisgICAgU3RyaW5nIGRpcmVj
dG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSk7CiAjZW5kaWYKICAg
ICBpZiAoZGlyZWN0b3J5U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNGNm
OGM2ZDRlZDlmMWEzMTJjNDE0M2U1NGIxMDI2YjU1N2E2MDA2Yi4uM2ExZWEzNzQ4MjQxYTRjMGQ2
YTU3ZjJiZGYxOGFkNjY1MjViMWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CiAKLUluc3RydWN0aW9uKiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9
IDA7CitJbnN0cnVjdGlvbiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVM
ZW5ndGggKyAxXSA9IHsgfTsKIE9wY29kZSBEYXRhOjpzX29wY29kZU1hcFtudW1PcGNvZGVJRHNd
ID0geyB9OwogT3Bjb2RlU3RhdHNBcnJheSogRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5ID0gbnVs
bHB0cjsKIApAQCAtNTcsOCArNTcsNiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9p
ZCopOwogCiB2b2lkIGluaXRpYWxpemUoKQogewotICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zID0gbmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdOwotCiAjaWYgIUVO
QUJMRShKSVQpCiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5oCmluZGV4IDYwMmRkNjQ2ZTU3M2I4NjFiNWIyNmZjODYzNWRmNTQ3
NDYwOWNhN2IuLjMwMWQwNzdlY2JiNTllNjY1NTc5Njg4ODU0NzFkMDI0MmRjNjRmYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xh
c3MgRGF0YSB7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTdGF0cygpOwogICAgIHN0YXRpYyB2b2lk
IHNhdmVTdGF0cygpOwogCi0gICAgc3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3Ry
dWN0aW9uczsKKyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVjdGlvbnNb
bWF4T3Bjb2RlTGVuZ3RoICsgMV07CiAgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1hcFtudW1P
cGNvZGVJRHNdOwogICAgIHN0YXRpYyBPcGNvZGVTdGF0c0FycmF5KiBzX29wY29kZVN0YXRzQXJy
YXk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAzOTE4OWY4
N2QyNWVkYjU3YzJlYTIyODM1MDRmNjExZjUyNTBlMTZlLi42M2MyZGU5MTNmZGY0ZGI1ZTU0YWNm
ZTJlYWI0YWRkZjkwZWMzMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5oCkBAIC0xNjUsNiArMTY1LDcgQEAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgOiBwdWJs
aWMgUmVjb3JkT3ZlcmZsb3cgewogfTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVyOwogICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggY2U2ZTRjMWY0NWNiOWViOWU1ODVlNzJiZGMwZTcwYWI2N2JhZWZiYi4uYmI5NDQ5MWYxZGZh
NmY2YzgxYjM3NjBhNzJiMWVmN2M1N2IwNWNjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIFZNOjp+Vk0oKQogCiAjaWYgRU5BQkxFKFlBUlJf
SklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgaWYgKG1fcmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyOwor
ICAgICAgICBmYXN0RnJlZShtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC05MDcsNyArOTA3LDcgQEAgY2hhciogVk06
OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCkKIAogICAgIG1fcmVnRXhwUGF0dGVy
bkNvbnRleHRMb2NrLmxvY2soKTsKICAgICBpZiAoIW1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZl
cikKLSAgICAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyID0gbmV3IGNoYXJbVk06OnBh
dHRlcm5Db250ZXh0QnVmZmVyU2l6ZV07CisgICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1
ZmZlciA9IHN0YXRpY19jYXN0PGNoYXIqPihmYXN0TWFsbG9jKHNpemVvZihjaGFyKSAqIFZNOjpw
YXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUpKTsKICAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SGVhcFZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmgKaW5kZXggNDgyNGIxYzZiM2U2ZmFiMmJhMmE3ZDgyMTFlNzllMDc4N2ZjNDk0My4uMjViOGY4
MTQwMzhiMmFlMWNhNDJhOTI0ZmVlMzZlOTU0YWVmYWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaApAQCAtNjQsNiArNjQsOCBAQCBjbGFzcyBIZWFwVmVy
aWZpZXIgewogCiBwcml2YXRlOgogICAgIHN0cnVjdCBHQ0N5Y2xlIHsKKyAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCiAgICAgICAgIEdDQ3ljbGUoKQogICAgICAgICAg
ICAgOiBiZWZvcmUoIkJlZm9yZSBNYXJraW5nIikKICAgICAgICAgICAgICwgYWZ0ZXIoIkFmdGVy
IE1hcmtpbmciKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAppbmRleCAxNThjYmVmNzYxMjNkOTNkN2Y0MWYy
YmZmMjAxNjU2ZTI5OGU4YTA4Li5kYmFkYWVlNmNhNTQwNjAwMTI5NjQzOWEyMzA0NTk3ZTViYmE3
NjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMTUxLDEyICsxNTEsMTIgQEAgc3RhdGljIHZv
aWQgdnByaW50Zl9zdGRlcnJfd2l0aF9wcmVmaXgoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBj
aGFyKiBmb3JtYXQsIHYKIHsKICAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKHByZWZp
eCk7CiAgICAgc2l6ZV90IGZvcm1hdExlbmd0aCA9IHN0cmxlbihmb3JtYXQpOwotICAgIGF1dG8g
Zm9ybWF0V2l0aFByZWZpeCA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihwcmVmaXhMZW5ndGgg
KyBmb3JtYXRMZW5ndGggKyAxKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwg
cHJlZml4LCBwcmVmaXhMZW5ndGgpOwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgp
ICsgcHJlZml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+
IGZvcm1hdFdpdGhQcmVmaXgocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoICsgMSk7CisgICAg
bWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7Cisg
ICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpICsgcHJlZml4TGVuZ3RoLCBmb3JtYXQs
IGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aFByZWZpeFtwcmVmaXhMZW5ndGggKyBmb3Jt
YXRMZW5ndGhdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJl
Zml4LmdldCgpLCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFBy
ZWZpeC5kYXRhKCksIGFyZ3MpOwogfQogCiBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRo
X3RyYWlsaW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZ3MpCkBAIC0x
NjcsMTIgKzE2NywxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5n
X25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXV0byBmb3JtYXRXaXRoTmV3bGluZSA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihmb3JtYXRMZW5ndGggKyAyKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUu
Z2V0KCksIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9ybWF0V2l0
aE5ld2xpbmUoZm9ybWF0TGVuZ3RoICsgMik7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5l
LmRhdGEoKSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAgIGZvcm1hdFdpdGhOZXdsaW5lW2Zv
cm1hdExlbmd0aF0gPSAnXG4nOwogICAgIGZvcm1hdFdpdGhOZXdsaW5lW2Zvcm1hdExlbmd0aCAr
IDFdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5n
ZXQoKSwgYXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5l
LmRhdGEoKSwgYXJncyk7CiB9CiAKICNpZiBDT01QSUxFUihHQ0NfT1JfQ0xBTkcpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CmluZGV4IDIyMGJhZmQzNDhiMzA2MzM4M2FiN2E1NDJkYzJlZGUxMTFhYzcwODUu
LmU5N2QwNjE5M2MwYTFkZmZjODMwZTBjYTdkZTY5ZTUwOWQ2NTk3YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CkBAIC0yMzMsNiArMjMzLDcgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgVW5leHBlY3Rl
ZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQuaAorICAgIFVuaXF1ZUFycmF5
LmgKICAgICBVbmlxdWVSZWYuaAogICAgIFVuc2FmZVBvaW50ZXIuaAogICAgIFZNVGFncy5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9G
YXN0TWFsbG9jLmgKaW5kZXggN2VjMjFhZTc5ODUwNzRmNjM5ZGY0YmFjYjAwMzZhZTFmYzdlMDI2
YS4uNjY3MmNlNDZkOWYxYzJiNDNhMzkxZTU0YjY2MjQ0M2YwOGY5MzlmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxs
b2MuaApAQCAtMjAwLDYgKzIwMCwyNiBAQCBzdHJ1Y3QgRmFzdE1hbGxvYyB7CiAgICAgc3RhdGlj
IHZvaWQgZnJlZSh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9CiB9OwogCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IEZhc3RGcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVlPFRbXT4geworICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOwor
CisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CisgICAgeworICAgICAgICBm
YXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9p
bnRlcikpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjaWYgIWRlZmluZWQo
TkRFQlVHKQpAQCAtMjA4LDYgKzIyOCw3IEBAIHVzaW5nIFdURjo6ZmFzdFNldE1heFNpbmdsZUFs
bG9jYXRpb25TaXplOwogCiB1c2luZyBXVEY6OkZhc3RBbGxvY2F0b3I7CiB1c2luZyBXVEY6OkZh
c3RNYWxsb2M7Cit1c2luZyBXVEY6OkZhc3RGcmVlOwogdXNpbmcgV1RGOjppc0Zhc3RNYWxsb2NF
bmFibGVkOwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9jOwogdXNpbmcgV1RGOjpmYXN0RnJlZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oIGIvU291cmNlL1dURi93dGYvTWFs
bG9jUHRyLmgKaW5kZXggN2Y2YTAyY2VmMzFiMWEyOWZhYzYzODRjZDJhY2UzZThmNzUwYzBiYS4u
NjZmMTBhYTliZDViYmEwOWFjNTYxMTM2YWQzNWJmNWU4NGU0OGZjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmgK
QEAgLTY2LDYgKzY2LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1hbGxvYyA9
IEZhc3RNYWxsb2M+IGNsYXNzIE1hbGxvY1B0ciB7CiAgICAgICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKG1fcHRyLCBudWxscHRyKTsKICAgICB9CiAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29s
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gIW1fcHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1No
b3QuaAppbmRleCA2ZWZkMDc0ZGUyNzA5ZTYyN2FjZWIzYzgzYjk0MzMxMzQyZjc1YWZkLi43ZTMy
YTM1YmFlM2M3YjU2YThiZTg1YjdkMThkMWU1NTc5YTBiM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TdGFja1Nob3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAt
MzcsNyArMzgsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgICAgICA6IG1fc2l6ZShzaXplKQog
ICAgIHsKICAgICAgICAgaWYgKHNpemUpIHsKLSAgICAgICAgICAgIG1fYXJyYXkgPSBzdGQ6Om1h
a2VfdW5pcXVlPHZvaWQqW10+KHNpemUpOworICAgICAgICAgICAgbV9hcnJheSA9IG1ha2VVbmlx
dWVBcnJheTx2b2lkKj4oc2l6ZSk7CiAgICAgICAgICAgICBpbnQgaW50U2l6ZSA9IHNpemU7CiAg
ICAgICAgICAgICBXVEZHZXRCYWNrdHJhY2UobV9hcnJheS5nZXQoKSwgJmludFNpemUpOwogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbnRTaXplKSA8PSBz
aXplKTsKQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgU3RhY2tTaG90IHsKICAgICAKICAgICBTdGFj
a1Nob3QmIG9wZXJhdG9yPShjb25zdCBTdGFja1Nob3QmIG90aGVyKQogICAgIHsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPHZvaWQqW10+IG5ld0FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTx2b2lk
KltdPihvdGhlci5tX3NpemUpOworICAgICAgICBhdXRvIG5ld0FycmF5ID0gbWFrZVVuaXF1ZUFy
cmF5PHZvaWQqPihvdGhlci5tX3NpemUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gb3RoZXIu
bV9zaXplOyBpLS07KQogICAgICAgICAgICAgbmV3QXJyYXlbaV0gPSBvdGhlci5tX2FycmF5W2ld
OwogICAgICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CkBAIC0xMDYsOCArMTA3LDggQEAgY2xh
c3MgU3RhY2tTaG90IHsKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQqKiBkZWxldGVk
VmFsdWVBcnJheSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKio+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpOyB9Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPHZvaWQqW10+IG1fYXJy
YXk7CisKKyAgICBVbmlxdWVBcnJheTx2b2lkKj4gbV9hcnJheTsKICAgICBzaXplX3QgbV9zaXpl
IHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oIGIv
U291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCmluZGV4IDNlZjc1NjI4MmNmMjBkNDBkOGM2MTg1
NDc5NDZkMDRmNWJhZWNlZjUuLjczYjY5M2YwNjgzOGJjYzhjY2M4M2E0NjhkNGRiYzNhOGFiODJm
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TeXN0ZW1GcmVlLmgKQEAgLTMxLDYgKzMxLDggQEAgbmFtZXNwYWNlIFdURiB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZSB7CisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAg
ICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUo
Y29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsK
QEAgLTM5LDExICs0MSwxMiBAQCBzdHJ1Y3QgU3lzdGVtRnJlZSB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwogICAgIHZvaWQgb3Bl
cmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZnJlZShjb25zdF9jYXN0
PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwogICAgIH0KLQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVBcnJheS5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTZj
Y2YwNzA5MDU3YjZlNTk5Njc0YzI3Yjk4ZGVlNjgyYmVmNWVkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxUW10sIEZh
c3RGcmVlPFRbXT4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8VD4gbWFr
ZVVuaXF1ZUFycmF5KHNpemVfdCBzaXplKQoreworICAgIHVzaW5nIFUgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgcmV0dXJuIFVuaXF1ZUFycmF5PFQ+KG5ldyAo
ZmFzdE1hbGxvYyhzaXplb2YoVSkgKiBzaXplKSkgVVtzaXplXSgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlQXJyYXk7Cit1c2luZyBXVEY6Om1ha2VVbmlx
dWVBcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjNzFmMzkyOTM0ODFlY2VlOGQ1NWViNzZj
NGMzYjU1ZjQwOGYyZjFhLi41ZTYyYzVhYzJkYzljYzAxMGI1ZTk5M2RiMTNjY2E1ZTQ2MjNlODVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00MjEsOCArNDIxLDggQEAgdm9pZCBBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogCiAg
ICAgICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsK
IAotICAgICAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9h
dCpbXT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9
IHN0ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBt
X3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZD
aGFubmVscyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJh
eTxmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAgbV9zb3VyY2VDaGFu
bmVsc1tpXSA9IGJ1ZmZlci0+Y2hhbm5lbERhdGEoaSktPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmlu
ZGV4IGY0ZTYzYTg1OWMwMWI0MTVlMWNmMzQ3ZjI3ODhkZGQ4YjdiNzNiYTEuLjMwYjc5Yjc5MzMz
NzMxODIxZmEyNTdhMDhkMTM1ODBmYTI1OTBkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMjYsNiAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCiAjaW5jbHVk
ZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDksOCArMTEwLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgUmVmUHRy
PEF1ZGlvQnVmZmVyPiBtX2J1ZmZlcjsKIAogICAgIC8vIFBvaW50ZXJzIGZvciB0aGUgYnVmZmVy
IGFuZCBkZXN0aW5hdGlvbi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1f
c291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0
aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5u
ZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAg
ICAgLy8gVXNlZCBmb3IgdGhlICJnYWluIiBhbmQgInBsYXliYWNrUmF0ZSIgYXR0cmlidXRlcy4K
ICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dp
bi9Mb2dnaW5nV2luLmNwcAppbmRleCA4Y2E0Yzk2ZmVhZjhiYmFlNjEwODIxMTMxMzg3YWUzNDVm
MDdkYzI1Li4yMzc1ZDlkZjc2Y2QyN2Y4YzA5ZTk3NzllNmZmZjljOGI4MjJjNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFBBTCB7CkBAIC00Miw3ICs0Myw3IEBAIFN0cmluZyBsb2dMZXZlbFN0
cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5ndGgpOwogCiAgICAgaWYg
KCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVm
ZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCmluZGV4IGE4MzNkYmEwMmZmMzNkMWRm
NjMwOGUxODg4MDJiYzcwODhlNzY2OTEuLjA5OWFjOTNiNzU0ZDIxNDgxOTc3MDMwOGJlYmJmMzM4
OTMzMjU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaApAQCAt
NTUsNiArNTUsNyBAQCBjbGFzcyBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsKIH07CiAKIHN0
cnVjdCBDb21waWxlZFNlbGVjdG9yIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBzdGF0dXM7CiAgICAgSlNDOjpNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZjsKICNpZiBkZWZpbmVkKENTU19TRUxFQ1RPUl9KSVRf
UFJPRklMSU5HKSAmJiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApp
bmRleCAyY2RhYzkxMjJlZjllYTc3Mjc5YmNkYzBkNjNhNGVhZGZlOTc4ZWRkLi5kNTM4YWMwNjhk
ZGYwYTgyYzYyMDI4YzljMGY4ZmU5YjcxNjEzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtOTks
NiArOTksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQzMkFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE1NTMs
NyArMTU1NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29weVRleFN1Yklt
YWdlMkQiLCAiVGV4dHVyZSBoYXMgdW5rbm93biBpbnRlcm5hbCBmb3JtYXQiKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQg
Y2hhcltdPiB6ZXJvOworICAgICAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwog
ICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzaXpl
OwogICAgICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNp
emVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tBbGlnbm1lbnQs
ICZzaXplLCBudWxscHRyKTsKQEAgLTE1NjEsNyArMTU2Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsCiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4
U3ViSW1hZ2UyRCIsICJiYWQgZGltZW5zaW9ucyIpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkIGNoYXJbXT4oc2l6ZSk7CisgICAgICAgICAgICB6ZXJvID0gbWFrZVVuaXF1ZUFycmF5PHVu
c2lnbmVkIGNoYXI+KHNpemUpOwogICAgICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUs
ICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJvdXQgb2YgbWVtb3J5Iik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNTc2MSw3ICs1NzYyLDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0MzRHVpbnQgbnUKICAg
ICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZl
clZhbHVlWzJdCiAgICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRl
eEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkpIHsKIAotICAgICAgICBhdXRvIGJ1ZmZlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPEdDM0RmbG9hdFtdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBi
dWZmZXJEYXRhID0gbWFrZVVuaXF1ZUFycmF5PEdDM0RmbG9hdD4oYnVmZmVyU2l6ZSk7CiAgICAg
ICAgIGZvciAoR0MzRHVpbnQgaWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKICAg
ICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOwogICAg
ICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOwpA
QCAtNTkwNyw3ICs1OTA4LDcgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVu
c3VyZU5vdE51bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGlu
dCBjYXBhY2l0eSkKLSAgICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQorICAgIDogbV9idWZmZXJzKGNhcGFjaXR5
LCBudWxscHRyKQogICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApp
bmRleCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZiNzgwYzVkNzI5YzQ5Li5jNTc0NmE5YTZh
YzUyYjUxODljMTc4ZDRhMWY1NmE0Nzg3MmJiZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01MTgsNyAr
NTE4LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHUFVCYXNl
ZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUKICAgICAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZv
aWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOworICAgICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJzOwogICAgICAgICBpbnQgbV9jYXBh
Y2l0eTsKICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNh
Y2hlIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAKaW5kZXggMzAxMjVhZWIzMmFhMTMxZDcwY2IzNGE4ZjljZDg1YzE3
MzI2YWVmMC4uYjI1NTE4ZDg4MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwCkBAIC0yNzUsOCArMjc1LDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJl
ck9mQ2hhbm5lbHModW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAgICAgbV9wb3N0Rmls
dGVyUGFja3MuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7
CiAgICAgfQogCi0gICAgbV9zb3VyY2VDaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3Qg
ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwotICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9
IHN0ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOworICAgIG1fc291
cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5u
ZWxzKTsKKyAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8ZmxvYXQq
PihudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgIG1fY29tcHJlc3Nvci5zZXROdW1iZXJPZkNoYW5u
ZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogICAgIG1fbnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9m
Q2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5oCmluZGV4IGExMWQ4N2RlNTc1YzUyZWEzMWEyMmI5ODNhMWUzNDZjYmQyYWVi
ZDUuLmY3MTZjZWY3M2EzNWVlNmVlODhiYTk4YmI5OGQyNjI1MzdiZDY5NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgiCiAjaW5j
bHVkZSAiWmVyb1BvbGUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTAxLDggKzEwMiw4IEBAIGNs
YXNzIER5bmFtaWNzQ29tcHJlc3NvciB7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJv
UG9sZUZpbHRlclBhY2s0Pj4gbV9wcmVGaWx0ZXJQYWNrczsKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+PiBtX3Bvc3RGaWx0ZXJQYWNrczsKIAotICAgIHN0
ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKKyAgICBVbmlxdWVB
cnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Zmxv
YXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICB2b2lkIHNldEVtcGhhc2lzU3RhZ2VQ
YXJhbWV0ZXJzKHVuc2lnbmVkIHN0YWdlSW5kZXgsIGZsb2F0IGdhaW4sIGZsb2F0IG5vcm1hbGl6
ZWRGcmVxdWVuY3kgLyogMCAtPiAxICovKTsKICAgICB2b2lkIHNldEVtcGhhc2lzUGFyYW1ldGVy
cyhmbG9hdCBnYWluLCBmbG9hdCBhbmNob3JGcmVxLCBmbG9hdCBmaWx0ZXJTdGFnZVJhdGlvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IDQwNjIwZmI4NDEw
MWY2NmI1ZmMwOWFhM2VmYjEyNTgxM2JmY2QwNzEuLjcyN2M5MmEzYTA3ZGVkOTM3Mzc2NGNjMWFk
Y2NiZmVhYzA0ZDUwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0ZGVEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUu
aApAQCAtNDQsNiArNDQsNyBAQCBHX0VORF9ERUNMUwogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA3LDcgKzEwOCw3IEBAIGNsYXNzIEZGVEZyYW1lIHsK
ICNpZiBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQogICAgIEdzdEZGVEYzMiogbV9mZnQ7CiAgICAg
R3N0RkZURjMyKiBtX2ludmVyc2VGZnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdEZGVEYzMkNv
bXBsZXhbXT4gbV9jb21wbGV4RGF0YTsKKyAgICBVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4
PiBtX2NvbXBsZXhEYXRhOwogICAgIEF1ZGlvRmxvYXRBcnJheSBtX3JlYWxEYXRhOwogICAgIEF1
ZGlvRmxvYXRBcnJheSBtX2ltYWdEYXRhOwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFN
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCA2NTY2YzE4MThhNTI1MTkzNDM2OGU5
NWYyZDJiODI3ZDE1OWUzMTk3Li4xYjY2ZTQwMDYzYjZmZDQ4ZDhlODQxYjkyMzRmNzg5ZWMwZTMy
YTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogRkZURnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVkIGZmdFNpemUpCiAgICAg
OiBtX0ZGVFNpemUoZmZ0U2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGxvZzIoZmZ0U2l6ZSkpKQotICAgICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5p
cXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkK
KyAgICAsIG1fY29tcGxleERhdGEobWFrZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVu
cGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRh
U2l6ZShtX0ZGVFNpemUpKQogewpAQCAtNjYsNyArNjYsNyBAQCBGRlRGcmFtZTo6RkZURnJhbWUo
KQogRkZURnJhbWU6OkZGVEZyYW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICA6IG1fRkZU
U2l6ZShmcmFtZS5tX0ZGVFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKGZyYW1lLm1fbG9nMkZG
VFNpemUpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29t
cGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAgICwgbV9jb21wbGV4
RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6
ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFt
ZS5tX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1l
Lm1fRkZUU2l6ZSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zvcm1hdENvbnZlcnRlci5oCmluZGV4IGRkOTdiMzdjNzdkODEyYjc4MzZkMmMyYWI0ODNlNjk5
YjU1NDBmNTMuLjlkODIwNGM4YTI0NjYwZmM3NzJiMGNmN2I1NjUwODdhMzQ1MTVhYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEZvcm1hdENv
bnZlcnRlciB7CiAgICAgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBv
bmVudHMgPSA0OwogICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAg
PSA0OwotICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8dWludDhfdFtdPihtX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0
ZXNQZXJDb21wb25lbnQpOworICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9
IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihtX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRz
ICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpOwogCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50
ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7CiAgICAgfQpAQCAtNjgsNyArNjksNyBAQCBjbGFzcyBG
b3JtYXRDb252ZXJ0ZXIgewogICAgIHZvaWQqIGNvbnN0IG1fZHN0U3RhcnQ7CiAgICAgY29uc3Qg
aW50IG1fc3JjU3RyaWRlLCBtX2RzdFN0cmlkZTsKICAgICBib29sIG1fc3VjY2VzczsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsK
KyAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA0ZTc1N2EwZTFl
Zjc0NDdjZTQ3OTM0ODZhNzQxZGY4ODJkNjI5ZDQwLi4zMjJiZWQwYjhjNTc5ZmM5NTFmYjY1NjEy
Nzc4NGM4YjAzNDA4NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2Vy
dmVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTQ2LDcgKzE0Nyw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGdl
dERhdGFGb3JtYXQoR0MzRGVudW0gZGVzdGluYXRpb25Gb3JtYXQsIEdDM0RlbnVtCiBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwg
R0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgR0MzRGludCB1bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0Fs
aWdubWVudCA9PSAxIHx8IHVucGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9
PSA0IHx8IHVucGFja0FsaWdubWVudCA9PSA4KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWdu
ZWQgY2hhcltdPiB6ZXJvOworICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAg
ICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBz
aXplOwogICAgICAgICBHQzNEZW51bSBlcnJvciA9IGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZv
cm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVsbHB0
cik7CkBAIC0xNTQsNyArMTU1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2Uy
RFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFy
W10+KHNpemUpOworICAgICAgICB6ZXJvID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+
KHNpemUpOwogICAgICAgICBpZiAoIXplcm8pIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCmluZGV4IDAzY2Q0YzY4N2ZjN2FkZGVmOTU0YWYyNGZkZDRiNjdlZTg2
OWJjMGEuLjE0MGZjOGVlNjAyMjVkMTlmNzhjMTM4NGNhNzBkNDM0Y2QxMjllZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFVTRShDQSkKQEAgLTEyNjIsNyArMTI2Myw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1fZGVjb2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0
YTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThE
YXRhOworICAgICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7
CiAjZW5kaWYKICAgICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRtbERvbVNv
dXJjZSBtX2ltYWdlSHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDcyOWY4NDNkZjk3YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJiZWZmYjgz
ODBmODdhYWQ3YzVjMDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApA
QCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+
CiAKICNpZmRlZiBERUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXRE
aXJ0eVJlY3RzKEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAgICAgfQog
CiAgICAgRFdPUkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgpLCAwLCAw
KTsKLSAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVk
IGNoYXJbXT4oZGF0YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1ha2VVbmlx
dWVBcnJheTx1bnNpZ25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwog
ICAgIGlmICghOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRh
dGEpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGViNTAyODE1
MjJhZjExYjIxYzE3Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0MzI1OWYz
NTA0ZGYxZDlmZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
QEAgLTM0MCw3ICszNDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkg
LyAyOwogCiAgICAgdWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IHRtcCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUpOworICAg
IGF1dG8gdG1wID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90KiB0b3Ag
PSBzb3VyY2UgKyAoaSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDhlYjZm
NGUzYjZhYWE3ZGNjMWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZmN2E1YTg5
NDg1ZDU0YmY5MjkxMzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00NzgsNyAr
NDc4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291bGQgcHJl
bXVsdGlwbHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAvLyBQcmVm
ZXIgdG8gbWFubnVhbGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRzIHRvIFJH
QkE4IGZvcm1hdHMgaW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAxNikgewot
ICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3Rb
XT4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zvcm1hbGl6
ZWRSR0JBOERhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRoICogbV9p
bWFnZUhlaWdodCAqIDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1
aW50OF90KiBkZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAg
ICAgY29uc3QgcHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNp
emVvZih1aW50MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvVGV4dHVyZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1
MjY0Ni4uODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1
cmU6OnVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0
KQogICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhl
IHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6
ZWQKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1f
dGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAg
ICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVz
LmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0
byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsK
KyAgICBhdXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNp
emUpOwogCiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgp
ICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0
aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhl
NmRiNzIzZTEuLjQ0MTU1YWFkNmQ2Y2Y4Nzg5YWZmOTcwNmMxMTc4ZGFmNjNhNDgzZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiAr
NTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciog
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFs
Qnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBt
YWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhl
bHMpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY4LDcgKzY2OSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBp
ZiAobGVuZ3RoKSB7CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7CisgICAgICAgIGF1dG8gaW5m
byA9IG1ha2VVbmlxdWVBcnJheTxHTGNoYXI+KGxlbmd0aCk7CiAgICAgICAgIDo6Z2xHZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CiAKICAgICAgICAg
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKQEAgLTg1MSw3ICs4
NTIsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIEdMaW50IG1heEF0dHJpYnV0ZVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6
ZSk7Ci0gICAgYXV0byBuYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obWF4QXR0cmli
dXRlU2l6ZSk7IC8vIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxs
IHRlcm1pbmF0aW9uLgorICAgIGF1dG8gbmFtZSA9IG1ha2VVbmlxdWVBcnJheTxHTGNoYXI+KG1h
eEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKQEAgLTg5OCw3ICs4OTksNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0R1aW50CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAg
IDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwg
Jm1heFVuaWZvcm1TaXplKTsKIAotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xj
aGFyW10+KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBp
bmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgorICAgIGF1dG8gbmFtZSA9IG1ha2VVbmlxdWVBcnJh
eTxHTGNoYXI+KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdU
SCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7
CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTY5OSw3ICsx
NzAwLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBH
THNpemVpIHNpemUgPSAwOwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFy
W10+KGxlbmd0aCk7CisgICAgYXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obGVu
Z3RoKTsKICAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwg
aW5mby5nZXQoKSk7CiAKICAgICBHQzNEc2l6ZWkgY291bnQ7CkBAIC0xNzcwLDcgKzE3NzEsNyBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNp
emUgPSAwOwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0
aCk7CisgICAgYXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obGVuZ3RoKTsKICAg
ICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkp
OwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGFiZWRmNTM1NTNk
ZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLmMzMzJmZjM3NDJhNGIzODVlNDgwOWI3Mzdm
ZDIyNzVjY2Q3MjA2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUg
IkxvZ2dpbmcuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1MCw3ICs0NTEsNyBAQCBzdGF0aWMgQ1N0cmluZyBnZXRT
aGFkZXJMb2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxv
Z0xlbmd0aCk7CisgICAgYXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obG9nTGVu
Z3RoKTsKICAgICBHTHNpemVpIGluZm9MZW5ndGggPSAwOwogICAgIGdsR2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOwogCkBAIC00NjUs
NyArNDY2LDcgQEAgc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJvZ3JhbSkK
ICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgYXV0byBpbmZv
ID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9M
ZW5ndGggPSAwOwogICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAm
aW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4
IGUwYThmOWQ0MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0
ZTkyMDI5YWNiZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApA
QCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUg
PHd0Zi9TdHJlYW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcg
Kzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2Nr
ZXRTdHJlYW1IYW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291
dHB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2hhcltdPiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVm
ZmVyOwogCiAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3
NmUyMmI2NDYwN2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIy
NGJkMzA2OTU3NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBA
IC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQo
R1JlZlB0cjxHSU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJl
YW0pOwogICAgIG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9f
c3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0
cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAg
IG1fcmVhZEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpF
KTsKKyAgICBtX3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJf
U0laRSk7CiAKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0
KCksIG1fcmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVBy
aW9yaXR5OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVm
ZDlmM2I2MTViN2RiMmVhNTEzODNhLi42MDNmMjExNDg3OWQ2NGI2OTZkN2U2ODdiYmFjOTJmNGIy
YTIyMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Myw3
IEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4obGVuZ3RoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFy
PihsZW5ndGgpOwogCiAgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52
aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2luL1N5c3RlbVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2lu
L1N5c3RlbVByb3h5V2luLmNwcAppbmRleCA5NTM2MmZhMTZmMzYwNWI2N2QwYmIzMTIwNzMzOGEw
ZjUwZWY0ODUzLi41NzUwMTViNmU2MDg3MmRlNjI0NWYyZDBlMWY1ZTc0MTk3MzY1Zjg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4u
Y3BwCkBAIC0yNywxMCArMjcsMTEgQEAKICNpbmNsdWRlICJTeXN0ZW1Qcm94eVdpbi5oIgogCiAj
aW5jbHVkZSA8V2ViQ29yZS9DdXJsQ29udGV4dC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJh
eS5oPgogCiBib29sIFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5KGNoYXIq
IGJ1ZmZlciwgaW50IGJ1ZmZlckxlbiwgaW50KiBwb3J0KQogewotICAgIHN0ZDo6dW5pcXVlX3B0
cjxUQ0hBUltdPiB0UmVnQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJM
ZW4pOworICAgIFVuaXF1ZUFycmF5PFRDSEFSPiB0UmVnQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5
PFRDSEFSPihidWZmZXJMZW4pOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUQ0hBUltdPiB0SG9zdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKICAgICBpZiAoIXRSZWdCdWZm
ZXIgfHwgIXRIb3N0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDIwM2M1NmFkYjYy
Njk5ZTMwNmQ5Mzg0Y2M4NjM3ZDQ2MWM4NzQ2NDUuLmVkMDk3OWI0NWRmYzVjNjk4YTkyOGYwN2Ix
ZWQ5YWY3ZmYxMjIzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3Vu
aXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaVN0ZEV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgVVNF
KEdMSUIpCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgpAQCAtMTQzLDEwICsxNDQsMTAgQEAgYm9vbCBD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAKICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVE
ZXNjcmlwdG9yQ291bnQgPSAwOwogICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdl
SW5mby5hdHRhY2htZW50Q291bnQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudElu
Zm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+IGF0
dGFjaG1lbnRJbmZvOwogCiAgICAgaWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRh
Y2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVu
dENvdW50KTsKKyAgICAgICAgYXR0YWNobWVudEluZm8gPSBtYWtlVW5pcXVlQXJyYXk8QXR0YWNo
bWVudEluZm8+KGF0dGFjaG1lbnRDb3VudCk7CiAgICAgICAgIG1lbWNweShhdHRhY2htZW50SW5m
by5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50
Q291bnQpOwogICAgICAgICBtZXNzYWdlRGF0YSArPSBzaXplb2YoQXR0YWNobWVudEluZm8pICog
YXR0YWNobWVudENvdW50OwogCkBAIC00MTcsNyArNDE4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpz
ZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICBpb3ZbMF0u
aW92X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwogICAgIGlv
dlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxBdHRhY2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBVbmlxdWVBcnJheTxBdHRh
Y2htZW50SW5mbz4gYXR0YWNobWVudEluZm87CiAgICAgTWFsbG9jUHRyPGNoYXI+IGF0dGFjaG1l
bnRGREJ1ZmZlcjsKIAogICAgIGF1dG8mIGF0dGFjaG1lbnRzID0gb3V0cHV0TWVzc2FnZS5hdHRh
Y2htZW50cygpOwpAQCAtNDQ0LDcgKzQ0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1
dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBmZFB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oQ01TR19EQVRBKGNtc2cpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGF0dGFjaG1lbnRJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxBdHRhY2htZW50SW5mb1td
PihhdHRhY2htZW50cy5zaXplKCkpOworICAgICAgICBhdHRhY2htZW50SW5mbyA9IG1ha2VVbmlx
dWVBcnJheTxBdHRhY2htZW50SW5mbz4oYXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICAgICAgaW50
IGZkSW5kZXggPSAwOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRUeXBlKGF0
dGFjaG1lbnRzW2ldLnR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdX
aW4uY3BwCmluZGV4IDZkZTFiYWI4NTkwNzdmODE3MGM4YmQyYmZhNTIxOTVmYWE3MWI3MmQuLjJj
MTk2NjIyYjUwNTM5ODM2NGJlYzk0ODQ1ZDFkZGNmZWFkMmE0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgIUxPR19E
SVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw3ICs0Myw3IEBAIFN0
cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4obGVuZ3RoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5n
dGgpOwogCiAgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1l
bnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCBlNTI3
ZjgxNTI1N2MwODcwOWNiNGZhMTViOWIwNzk1OTIxYzAxM2Y5Li5mMjM3ZDI3YzY2NTk4Njk5OWVl
MDAzMWI4ZmFhMTFlODJlNjNkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtODYsNyArODcsNyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5z
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogICAgICAgIAogICAg
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7CisgICAgICAgIFVuaXF1ZUFycmF5PEhhbmRsZT4g
bV9kYXRhOwogICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogI2Vsc2UKICAgICAgICAgSGFu
ZGxlIG1fZW1wdHlIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZlMTVlMDMyODQxOGJjM2Iw
YWIzM2QuLmY4YTA3ZDg4ZGQ2NTc3NGRiZGJlMTEzMzMyNzVjMmQwYThjNGZiNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC0xNjUs
NyArMTY1LDcgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUo
c2l6ZV90IHNpemUpCiAKICAgICBBU1NFUlQoIW1fZGF0YSk7CiAKLSAgICBtX2RhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsKKyAgICBtX2Rh
dGEgPSBtYWtlVW5pcXVlQXJyYXk8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPihzaXplKTsKICAg
ICBtX3NpemUgPSBzaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCBlMDA5NGI5NmJiMTg5YTY5NjM1NWRl
MGRiMDgwMzBiYzBhODJkNzA5Li40Y2M3ZmEyMzc0OGM4ZjZmMzdmYjk1ZDcxNTMxMjFkZTFlNTRh
NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZVdpbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtMTcyLDcgKzE3
Myw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBpZiAodmVyc2lvbklu
Zm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdmVyc2lvbklu
Zm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6ZSk7CisgICAg
YXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4odmVyc2lvbkluZm9T
aXplKTsKIAogICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5h
dGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9E
YXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4OGIxM2Zm
NWUxNTdmOGQ2MDMuLjhlYzhlMTJmYWNkYWI3OTIxM2RkM2M0OTMxMDBkY2Y3NTc1MmMzNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTQ5LDYgKzQ5
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NTMyLDggKzUzMyw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNl
c1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKICAgICBDRlN0cmluZ1JlZiBk
aWRSZW1vdmVEZWZhdWx0c0tleSA9IENGU1RSKFdlYktpdERpZE1pZ3JhdGVEZWZhdWx0U2V0dGlu
Z3NGcm9tU2FmYXJpM0JldGFQcmVmZXJlbmNlS2V5KTsKICAgICBib29sIG9taXREZWZhdWx0cyA9
ICFib29sZWFuVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGRGljdGlvbmFyeUdldFZhbHVlKGRp
Y3QsIGRpZFJlbW92ZURlZmF1bHRzS2V5KSk7CiAKLSAgICBhdXRvIGtleXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENGVHlwZVJlZltdPihjb3VudCk7Ci0gICAgYXV0byB2YWx1ZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENGVHlwZVJlZltdPihjb3VudCk7CisgICAgYXV0byBrZXlzID0gbWFrZVVuaXF1ZUFy
cmF5PENGVHlwZVJlZj4oY291bnQpOworICAgIGF1dG8gdmFsdWVzID0gbWFrZVVuaXF1ZUFycmF5
PENGVHlwZVJlZj4oY291bnQpOwogICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGlj
dCwga2V5cy5nZXQoKSwgdmFsdWVzLmdldCgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNWUyN2Y5
ODVjMmNkOTk2ZGU5YTA3ZWVhOWI1OWZkZDBmNDhlNzg3Li41MzI2NTkwZGU0ZTBiMDM5YTgzZmY4
MDdiMmI0ZjhjMWNhNTM2ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTcwLDYgKzE3MCw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3
dGYvUkFNU2l6ZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFVTRShD
RykKQEAgLTE3ODQsNyArMTc4NSw3IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIG1lbnVJdGVtSW5mby5mTWFzayA9IE1JSU1f
U1RSSU5HOwogICAgIDo6R2V0TWVudUl0ZW1JbmZvKGhNZW51LCBpbmRleCwgdHJ1ZSwgJm1lbnVJ
dGVtSW5mbyk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V0NIQVJbXT4o
bWVudUl0ZW1JbmZvLmNjaCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5
PFdDSEFSPihtZW51SXRlbUluZm8uY2NoICsgMSk7CiAgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURh
dGEgPSBidWZmZXIuZ2V0KCk7CiAgICAgbWVudUl0ZW1JbmZvLmNjaCsrOwogICAgIG1lbnVJdGVt
SW5mby5mTWFzayB8PSBNSUlNX0lEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334345</attachid>
            <date>2018-02-21 01:06:48 -0800</date>
            <delta_ts>2018-02-21 02:18:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221180647.patch</filename>
            <type>text/plain</type>
            <size>66647</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li4wNzE0NGU4OTMwYmY3ZWVk
NmQ2OTgxM2YxZDlhNGRmODdmZjIwYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZp
ZXIuaDoKKwogMjAxOC0wMi0yMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBERkc6OlZhcmFyZ3NGb3J3YXJkaW5nUGhhc2Ugc2hvdWxkIGVsaW1pbmF0ZSBnZXR0
aW5nIGFyZ3VtZW50IGxlbmd0aApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwYTFhZjA4Yjg1N2M2YzRlYzNlOGRiOTg2NGRlYzFj
MTc2NTY5ZjA4Li4xMjcxYzJlNWY4NGY2NjBhYzRmNGNjOGVkZjkxYjlmNzFiNTNmYWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM5IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcg
c3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSWYgd2UgdXNlIGBtYWtlX3VuaXF1ZTxjaGFyW10+KG51bSlgIG9yIGBuZXcgY2hhcltu
dW1dYCwgYWxsb2NhdGlvbiBpcworICAgICAgICBkb25lIGJ5IHRoZSBzeXN0ZW0gbWFsbG9jIGlu
c3RlYWQgb2YgYm1hbGxvYy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCisgICAgICAgIGJ5
LAorCisgICAgICAgIDEuIEludHJvZHVjZSBVbmlxdWVBcnJheTxUPi4gSXQgaXMgdXNhYmxlIGZv
ciB0eXBlIFQgd2hpY2ggZG9lcyBub3QgaGF2ZQorICAgICAgICBhIG5vbiB0cml2aWFsIGRlc3Ry
dWN0b3IuIEl0IGFsbG9jYXRlcyBtZW1vcnkgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgIDIu
IFVzZSBWZWN0b3I8VD4gaW5zdGVhZC4KKworICAgICAgICAzLiBBbm5vdGF0ZSBhbGxvY2F0ZWQg
dHlwZXMgd2l0aCBNQUtFX0ZBU1RfQUxMT0NBVEVELiBTaW5jZSBpdCBpbnRyb2R1Y2VzCisgICAg
ICAgIG5ld1tdIGFuZCBkZWxldGVbXSBvcGVyYXRvcnMsIG1ha2VfdW5pcXVlPFRbXT4obnVtKSB3
aWxsIGFsbG9jYXRlIG1lbW9yeQorICAgICAgICBmcm9tIEZhc3RNYWxsb2MuCisKKyAgICAgICAg
KiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQXNzZXJ0aW9u
cy5jcHA6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0
TWFsbG9jLmg6CisgICAgICAgIChXVEY6OkZhc3RGcmVlOjpvcGVyYXRvcigpIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6RmFzdEZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICogd3Rm
L01hbGxvY1B0ci5oOgorICAgICAgICAoV1RGOjpNYWxsb2NQdHI6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAgKFdURjo6U3RhY2tTaG90
OjpTdGFja1Nob3QpOgorICAgICAgICAoV1RGOjpTdGFja1Nob3Q6Om9wZXJhdG9yPSk6CisgICAg
ICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdURjo6U3lzdGVtRnJlZTxUOjpvcGVy
YXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXkuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAuCisgICAgICAgIChXVEY6
Om1ha2VVbmlxdWVBcnJheSk6CisKIDIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5k
cyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYTFmZmY4OWU5ZTgxNzY5ZWFjMTBkMDAyYTc0ZTY1ODgxZmE5MTJmNy4uM2M2NWE5N2I5
MWU5ZTIwYzIyZDdhMmIxNzNkN2NmYTU1MWMyMWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxv
YworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZl
Y3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3NqaXQv
Q29tcGlsZWRTZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdl
QnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9G
cm9udCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1l
OjpGRlRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFn
ZVN1cmZhY2VWZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVT
dWJSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3Jh
bUxvZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjEgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVuZGVyVHJlZUJ1aWxkZXJdIE1v
dmUgUmVuZGVyRnVsbFNjcmVlbjo6d2lsbEJlUmVtb3ZlZCgpIG11dGF0aW9uIGxvZ2ljIHRvIFJl
bmRlclRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBlZTkzNGUx
OWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi5mYTNkYTlkYWI0NzRiMmRjZTMxMzU5NjY1MTBjZDRhNzc3
YzZjYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3Rk
OjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NB
VEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogcGFsL3dpbi9Mb2dnaW5n
V2luLmNwcDoKKyAgICAgICAgKFBBTDo6bG9nTGV2ZWxTdHJpbmcpOgorCiAyMDE4LTAyLTIwICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVj
ZSBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGFlMGRhZWJiYjQ5Y2Yy
MTgxNDg5YWEyNDY3MThlMjUxOWZiNmZhMC4uMDMxNTNiZThhNzhmMzAxMDM0NTQ3YmVlZTEyZjcx
MTU4OTIyODFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0wMi0yMSAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtl
X3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBv
ciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL1N5
c3RlbVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVt
SHR0cFByb3h5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAg
KElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nTGV2ZWxTdHJpbmcpOgor
ICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogU2hhcmVkL21h
Yy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOgorCiAyMDE4LTAyLTIwICBOYW4gV2FuZyAgPG5f
d2FuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEtleWJvYXJkIGZvY3VzIG5vdCBmb2xsb3dp
bmcgVm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdpdGhpbiB3ZWIgY29udGVu
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwNjFmZmQzODJhODM2YzJlMjQyNWI4
MmFjMTcxYTMxZmUyZmY4ODFjLi4xOGIxN2MzMDgzZTY3YjkyMTc5OGJmZTBlYjUxZjg2Yzc2YjRl
ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgt
MDItMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
Rml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yLCBGQVNU
X0FMTE9DQVRFRCwgb3IgVW5pcXVlQXJyYXkgaW5zdGVhZC4KKworICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlBy
ZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6b25NZW51Q29tbWFuZCk6CisKIDIw
MTgtMDItMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBP
UEVOR0wgbWFjcm9zIHRvIGJlIG1vcmUgY2xlYXIgYWJvdXQgd2hpY2ggT3BlbkdML0VTIFdlYkdM
IHVzZXMgb24gQ29jb2EKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0Yu
Y3BwCmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMzYTMuLjEzNjc3
MTUzZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICBp
ZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVy
biAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVh
a1JlZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4o
bGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgw
LCBsZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIobGVu
Z3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBs
ZW5ndGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFy
KSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUi
KTsKLSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJldHVybiAmT3Bh
cXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmRhdGEo
KSksIGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlDRlN0
cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmluZGV4IGVhODU5
YzRhOWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmEyODIyOWM1NjhiNDEyYWM0ODg3
YzM1ODE2NmZjMjJkZTU5MTlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlS2lsbHMuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxz
IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogCiAgICAgY2xh
c3MgS2lsbFNldCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgS2lsbFNldCgpCiAgICAgICAgICAgICA6IG1fd29yZCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGFkMDM1NmU4Zjkw
YmRmOGEzNWExZTNlNTNkZjg3NjI1NDRlNDMxMGEuLjBjMjA3MDNlZDhlMmQ4MTNmNWQyMTgwOGFh
YzJmM2NkMjg2MjA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1Zgog
ICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gMDsKICAgICBlbHNlCiAgICAgICAgIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgPSBHcmFwaDo6YW1vdW50T2ZOb2RlV2hpdGVTcGFjZShjb250
ZXh0KTsKLSAgICBhdXRvIHByZWZpeEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihw
cmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7Ci0gICAgbWVtY3B5KHBy
ZWZpeEJ1ZmZlci5nZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIFZlY3RvcjxjaGFy
PiBwcmVmaXhCdWZmZXIocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSArIDEp
OworICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZGF0YSgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlOyArK2kpCiAg
ICAgICAgIHByZWZpeEJ1ZmZlcltpICsgcHJlZml4TGVuZ3RoXSA9ICcgJzsKICAgICBwcmVmaXhC
dWZmZXJbcHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZV0gPSAwOwpAQCAtMTY5
LDcgKzE2OSw3IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGN1cnJlbnRMYWJlbCk7CiAgICAgcHJldmlv
dXNMYWJlbCA9IGN1cnJlbnRMYWJlbDsKICAgICBBU1NFUlQoZW5kLmV4ZWN1dGFibGVBZGRyZXNz
PHVpbnRwdHJfdD4oKSA+PSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwot
ICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90Pigp
IC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZ2V0
KCksIG91dCk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1
aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZp
eEJ1ZmZlci5kYXRhKCksIG91dCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZS5jcHAKaW5kZXggODU4YjU0MTc0YmZlYjJlMjIxZDgzMDZmYTk4OGEyMjkxZDUwMjRl
My4uYmMwZjg0MWRmNzUxNDU5MzQ1OTI3ZGYzZGE2YWFiZDA5MTY3NWI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNlOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBj
b2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEV4ZWNTdGF0ZSogY2FsbGVyRnJh
bWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxs
Q2FzZT4mIGNhc2VzLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRz
KQorICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCiAgICAgOiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShm
YXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAppbmRleCBkOTZhZTU2YzQ3ZjRhYWI5ZmQ0NzJmZTI0
MzJiY2Y1OTViMjJmOTVkLi4yYTM5NTc3MmI0YWIwNDY1YmExYThjMDhlOGM4ZDIxZGFjOTZlYjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FsbFZhcmlhbnQu
aCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODQsNyArODUsNyBAQCBjbGFzcyBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewog
ICAgIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYmLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgICAgIEV4ZWNTdGF0
ZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYsIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0Nh
bGxDYXNlPiYsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRz
KTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cyk7CiAgICAgCiAg
ICAgdmlydHVhbCB+UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoKTsKICAgICAKQEAgLTEwMCw3
ICsxMDEsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgewogCiBwcml2YXRlOgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPiwgMj4gbV92YXJpYW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4g
bV9mYXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RDb3VudHM7CiAg
ICAgQmFnPFBvbHltb3JwaGljQ2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNzhjYTkzMDNmYzgyODc3Y2U2MGJmZWNhOTE2
MGVhYzM0ZmY5NjZiYS4uYWUwZGU2MzljOTNlNGVhODkzMDZhOTc3ZmJkMjRmOGQ2MTc4MDUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDQsMTAgKzk0NCwxMCBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgVmVjdG9yPGludDY0X3Q+IGNh
c2VWYWx1ZXMoY2FsbENhc2VzLnNpemUoKSk7CiAgICAgVmVjdG9yPENhbGxUb0NvZGVQdHI+IGNh
bGxzKGNhbGxDYXNlcy5zaXplKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBm
YXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBmYXN0Q291bnRzOwogICAgIAog
ICAgIGlmICghaXNXZWJBc3NlbWJseSAmJiBjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSAhPSBK
SVRDb2RlOjp0b3BUaWVySklUKCkpCi0gICAgICAgIGZhc3RDb3VudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPHVpbnQzMl90W10+KGNhbGxDYXNlcy5zaXplKCkpOworICAgICAgICBmYXN0Q291bnRzID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90PihjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxDYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBp
ZiAoZmFzdENvdW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDYwMmU0ZDk0MTE0NTBjYzg4
M2MxMjgzZDczZTVkYzI3YTUyN2M3MS4uZGNkN2YzMjZkNDQ5N2RhN2E4ZWQxZDAzZDE3YTQxNTlh
NjlmYzM2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcxOCwxNyArNzE4LDE3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCkK
ICAgICAvLyBJbiBXaW5kb3dzLCB3Y2hhcl90IGlzIHRoZSBVVEYtMTZMRS4KICAgICAvLyBodHRw
czovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2RkMzc0MDgxLmFzcHgKICAgICAv
LyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3Rv
cC9mZjM4MTQwNy5hc3B4Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHdjaGFy
X3RbXT4oYnVmZmVyTGVuZ3RoKTsKLSAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0g
OjpHZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5nZXQoKSk7Ci0gICAg
U3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmdldCgpLCBsZW5n
dGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxl
bmd0aCk7CisgICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERp
cmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZGF0YSgpKTsKKyAgICBTdHJpbmcgZGlyZWN0
b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRp
bmdOdWxsKTsKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG5ldHdvcmsgcGF0aCBsaWtlIFxcaG9z
dFxzaGFyZVw8cGF0aCBuYW1lPi4KICAgICBpZiAoZGlyZWN0b3J5U3RyaW5nLnN0YXJ0c1dpdGgo
IlxcXFwiKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCi0gICAgYXV0byBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUEFUSF9NQVgpOwotICAgIGlmICghZ2V0
Y3dkKGJ1ZmZlci5nZXQoKSwgUEFUSF9NQVgpKQorICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoUEFU
SF9NQVgpOworICAgIGlmICghZ2V0Y3dkKGJ1ZmZlci5kYXRhKCksIFBBVEhfTUFYKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCkpOwogI2VuZGlmCiAgICAgaWYgKGRpcmVj
dG9yeVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDRjZjhjNmQ0ZWQ5ZjFh
MzEyYzQxNDNlNTRiMTAyNmI1NTdhNjAwNmIuLjNhMWVhMzc0ODI0MWE0YzBkNmE1N2YyYmRmMThh
ZDY2NTI1YjFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewog
Ci1JbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSAwOworSW5zdHJ1
Y3Rpb24gRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV0g
PSB7IH07CiBPcGNvZGUgRGF0YTo6c19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXSA9IHsgfTsKIE9w
Y29kZVN0YXRzQXJyYXkqIERhdGE6OnNfb3Bjb2RlU3RhdHNBcnJheSA9IG51bGxwdHI7CiAKQEAg
LTU3LDggKzU3LDYgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VudHJ5KHZvaWQqKTsKIAogdm9p
ZCBpbml0aWFsaXplKCkKIHsKLSAgICBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IG5l
dyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXTsKLQogI2lmICFFTkFCTEUoSklUKQog
ICAgIENMb29wOjppbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaAppbmRleCA2MDJkZDY0NmU1NzNiODYxYjViMjZmYzg2MzVkZjU0NzQ2MDljYTdiLi4z
MDFkMDc3ZWNiYjU5ZTY2NTU3OTY4ODg1NDcxZDAyNDJkYzY0ZmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIERhdGEgewog
ICAgIHN0YXRpYyB2b2lkIHJlc2V0U3RhdHMoKTsKICAgICBzdGF0aWMgdm9pZCBzYXZlU3RhdHMo
KTsKIAotICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNlcHRpb25JbnN0cnVjdGlvbnM7Cisg
ICAgc3RhdGljIEluc3RydWN0aW9uIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxl
bmd0aCArIDFdOwogICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXTsK
ICAgICBzdGF0aWMgT3Bjb2RlU3RhdHNBcnJheSogc19vcGNvZGVTdGF0c0FycmF5OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKaW5kZXggMzkxODlmODdkMjVlZGI1N2My
ZWEyMjgzNTA0ZjYxMWY1MjUwZTE2ZS4uNjNjMmRlOTEzZmRmNGRiNWU1NGFjZmUyZWFiNGFkZGY5
MGVjMzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMTY1
LDYgKzE2NSw3IEBAIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIFJlY29yZE92
ZXJmbG93IHsKIH07CiAKIGNsYXNzIEFyZ0xpc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBmcmllbmQgY2xhc3MgSklU
OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGNlNmU0YzFm
NDVjYjllYjllNTg1ZTcyYmRjMGU3MGFiNjdiYWVmYmIuLmJiOTQ0OTFmMWRmYTZmNmM4MWIzNzYw
YTcyYjFlZjdjNTdiMDVjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAg
LTUzOCw3ICs1MzgsNyBAQCBWTTo6flZNKCkKIAogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TKQogICAgIGlmIChtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0g
ICAgICAgIGRlbGV0ZVtdIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKKyAgICAgICAgZmFz
dEZyZWUobV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFJFR0VYUF9UUkFDSU5HKQpAQCAtOTA3LDcgKzkwNyw3IEBAIGNoYXIqIFZNOjphY3F1aXJlUmVn
RXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9j
ay5sb2NrKCk7CiAgICAgaWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAgICAg
IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZNOjpwYXR0ZXJuQ29udGV4
dEJ1ZmZlclNpemVdOworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBzdGF0
aWNfY2FzdDxjaGFyKj4oZmFzdE1hbGxvYyhzaXplb2YoY2hhcikgKiBWTTo6cGF0dGVybkNvbnRl
eHRCdWZmZXJTaXplKSk7CiAgICAgcmV0dXJuIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCmluZGV4IDQ4
MjRiMWM2YjNlNmZhYjJiYTJhN2Q4MjExZTc5ZTA3ODdmYzQ5NDMuLjI1YjhmODE0MDM4YjJhZTFj
YTQyYTkyNGZlZTM2ZTk1NGFlZmFkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9IZWFwVmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SGVhcFZlcmlmaWVyLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgR0NDeWNsZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKwogICAgICAgICBHQ0N5Y2xlKCkKICAgICAgICAgICAgIDogYmVmb3Jl
KCJCZWZvcmUgTWFya2luZyIpCiAgICAgICAgICAgICAsIGFmdGVyKCJBZnRlciBNYXJraW5nIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwYTI1YmYzNjM3
ZmE1OTY2MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0MzZiNTY2OWZi
YmJlYzFlMGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21t
b25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5
cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9n
cmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDBFNTIx
MjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3Jt
UmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVn
aXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAgKzg1NiwxMCBA
QAogCQkJCUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5oICovLAogCQkJ
CTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJCQkJQThBNDcy
ODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJCQlGRTA1RkFF
NjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFENjUzREE4MjAw
NkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4
MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZG
IC8qIGR0b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRy
YWl0cy5oICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFp
dHMuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICov
LAogCQkJCUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAogCQkJCUE4
QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAgLTEwODMsNiAr
MTA4NCw3IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8s
CiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAogCQkJCUE4
QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlFMzAwRTUyMTIw
M0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBB
MDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2
IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyog
VVVJRC5jcHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIw
MDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyog
VmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFn
cy5oICovLAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLywKIAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwICovLAog
CQkJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJCTk3NENG
QzhEMTZBNEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYgKzExMDIsNyBA
QAogCQkJCTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0
QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUwMDc1
MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBAQAogCQkJCTBG
NjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2Vy
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8q
IENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYx
MzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhFODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIg
LyogV29yZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2
REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTND
MDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZB
RkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYv
QXNzZXJ0aW9ucy5jcHAKaW5kZXggMTU4Y2JlZjc2MTIzZDkzZDdmNDFmMmJmZjIwMTY1NmUyOThl
OGEwOC4uZGJhZGFlZTZjYTU0MDYwMDEyOTY0MzlhMjMwNDU5N2U1YmJhNzYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5jcHAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3Rk
ZXJyX3dpdGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogZm9ybWF0LCB2
CiB7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwogICAgIHNpemVf
dCBmb3JtYXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1hdFdpdGhQcmVm
aXggPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3Ro
ICsgMSk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZpeCwgcHJlZml4
TGVuZ3RoKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHByZWZpeExlbmd0
aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoUHJl
Zml4KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNweShmb3JtYXRX
aXRoUHJlZml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1lbWNweShmb3Jt
YXRXaXRoUHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgp
OwogICAgIGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoXSA9IDA7
CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwgYXJn
cyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBh
cmdzKTsKIH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXds
aW5lKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY3LDEyICsxNjcsMTIg
QEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gZm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZm9ybWF0
TGVuZ3RoICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBmb3JtYXQs
IGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXdsaW5lKGZvcm1h
dExlbmd0aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGZvcm1h
dCwgZm9ybWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGhdID0g
J1xuJzsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9IDA7CiAKLSAg
ICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGFyZ3MpOwor
ICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGFyZ3Mp
OwogfQogCiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRl
eCAyMjBiYWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdkMDYxOTNjMGEx
ZGZmYzgzMGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjMz
LDYgKzIzMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAogICAgIFVuaVN0
ZEV4dHJhcy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAgICAgVW5pcXVl
UmVmLmgKICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmlu
ZGV4IDdlYzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2NzJjZTQ2ZDlm
MWMyYjQzYTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIwMCw2
ICsyMDAsMjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lkIGZyZWUodm9p
ZCogcCkgeyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBGYXN0RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3Bl
cmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3Rf
Y2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKQEAgLTIw
OCw2ICsyMjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZTsK
IAogdXNpbmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFsbG9jOwordXNp
bmcgV1RGOjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsKIHVzaW5n
IFdURjo6ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCmluZGV4
IDdmNmEwMmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEwYWE5YmQ1YmJh
MDlhYzU2MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02Niw2ICs2Niwx
MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0TWFsbG9jPiBj
bGFzcyBNYWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cik7CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggNmVm
ZDA3NGRlMjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJhZTNjN2I1NmE4
YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tT
aG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcgKzM4LDcgQEAg
Y2xhc3MgU3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7CiAgICAgICAg
IGlmIChzaXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTx2b2lk
KltdPihzaXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+
KHNpemUpOwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAgICAgICAgV1RG
R2V0QmFja3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7CkBAIC01NSw3
ICs1Niw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90JiBvcGVyYXRv
cj0oY29uc3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx2b2lkKltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4ob3RoZXIubV9z
aXplKTsKKyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4ob3Ro
ZXIubV9zaXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6ZTsgaS0tOykK
ICAgICAgICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAgICAgICAgbV9z
aXplID0gb3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0YWNrU2hvdCB7
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVlQXJyYXkoKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsg
fQotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5OworCisgICAgVW5p
cXVlQXJyYXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1N5c3RlbUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2ZDA0ZjViYWVj
ZWY1Li43M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93dGYvU3lzdGVt
RnJlZS5oCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRv
cigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0zOSwxMSArNDEs
MTIgQEAgc3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0
IFN5c3RlbUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9p
bnRlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1Nv
dXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U2Y2NmMDcwOTA1N2I2ZTU5
OTY3NGMyN2I5OGRlZTY4MmJlZjVlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZUFycmF5LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgVW5p
cXVlQXJyYXkgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8VFtdLCBGYXN0RnJlZTxUW10+PjsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1VuaXF1ZUFycmF5PFQ+IG1ha2VVbmlxdWVBcnJheShz
aXplX3Qgc2l6ZSkKK3sKKyAgICB1c2luZyBVID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfZXh0ZW50
PFQ+Ojp0eXBlOworICAgIHJldHVybiBVbmlxdWVBcnJheTxUPihuZXcgKGZhc3RNYWxsb2Moc2l6
ZW9mKFUpICogc2l6ZSkpIFVbc2l6ZV0oKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1
c2luZyBXVEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJyYXk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKaW5kZXggYzcxZjM5MjkzNDgxZWNlZThkNTVlYjc2YzRjM2I1NWY0MDhmMmYx
YS4uNWU2MmM1YWMyZGM5Y2MwMTBiNWU5OTNkYjEzY2NhNWU0NjIzZTg1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcApAQCAtNDIxLDggKzQyMSw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpz
ZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKIAogICAgICAgICBvdXRwdXQo
MCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAKLSAgICAgICAgbV9z
b3VyY2VDaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3QgZmxvYXQqW10+KG51bWJlck9m
Q2hhbm5lbHMpOwotICAgICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9zb3VyY2VDaGFubmVs
cyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOworICAg
ICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8ZmxvYXQqPihudW1i
ZXJPZkNoYW5uZWxzKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVy
T2ZDaGFubmVsczsgKytpKSAKICAgICAgICAgICAgIG1fc291cmNlQ2hhbm5lbHNbaV0gPSBidWZm
ZXItPmNoYW5uZWxEYXRhKGkpLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBmNGU2M2E4NTlj
MDFiNDE1ZTFjZjM0N2YyNzg4ZGRkOGI3YjczYmExLi4zMGI3OWI3OTMzMzczMTgyMWZhMjU3YTA4
ZDEzNTgwZmEyNTkwZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTA5LDggKzExMCw4IEBAIGNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1
YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4g
bV9idWZmZXI7CiAKICAgICAvLyBQb2ludGVycyBmb3IgdGhlIGJ1ZmZlciBhbmQgZGVzdGluYXRp
b24uCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxz
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwor
ICAgIFVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlx
dWVBcnJheTxmbG9hdCo+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIC8vIFVzZWQgZm9y
IHRoZSAiZ2FpbiIgYW5kICJwbGF5YmFja1JhdGUiIGF0dHJpYnV0ZXMuCiAgICAgUmVmUHRyPEF1
ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2lu
L0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5j
cHAKaW5kZXggOGNhNGM5NmZlYWY4YmJhZTYxMDgyMTEzMTM4N2FlMzQ1ZjA3ZGMyNS4uMjM3NWQ5
ZGY3NmNkMjdmOGMwOWU5Nzc5ZTZmZmY5YzhiODIyYzVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBQQUwgewpAQCAtNDIsNyArNDMsNyBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgYXV0byBidWZmZXIg
PSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obGVuZ3RoKTsKIAogICAgIGlmICghR2V0RW52aXJvbm1l
bnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0
L0NvbXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAyYmM3
MDg4ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAg
Y2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGlsZWRT
ZWxlY3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlbGVj
dG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYg
Q1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmNkYWM5MTIy
ZWY5ZWE3NzI3OWJjZGMwZDYzYTRlYWRmZTk3OGVkZC4uMDI5N2NlMGFkMjM1NGNmYWU4MjI5ZmFi
M2U4ZWU1MWQ4NzkzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVj
a2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNTUzLDcgKzE1NTQsNyBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIlRleHR1
cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVybzsK
KyAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICAgICAgaWYgKHdp
ZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAgICAgICAgICAg
IEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3Jt
YXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVsbHB0
cik7CkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAg
ICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdlMkQiLCAi
YmFkIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNp
emUpOworICAgICAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihz
aXplKTsKICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1Yklt
YWdlMkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3
NjEsNyArNTc2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51CiAgICAgICAgICAgICB8fCBh
dHRyaWJWYWx1ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQogICAg
ICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVy
VmFsdWVbM10pKSB7CiAKLSAgICAgICAgYXV0byBidWZmZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTxHQzNEZmxvYXRbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IG1h
a2VVbmlxdWVBcnJheTxHQzNEZmxvYXQ+KGJ1ZmZlclNpemUpOwogICAgICAgICBmb3IgKEdDM0R1
aW50IGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAgICAgICAgICAgICBidWZm
ZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKICAgICAgICAgICAgIGJ1ZmZl
ckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKQEAgLTU5MDcsMTUgKzU5
MDgsMTQgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51bGwo
Y29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0eSkK
LSAgICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj5bXT4oY2FwYWNpdHkpKQotICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKKyAgICA6IG1f
YnVmZmVycyhjYXBhY2l0eSkKIHsKIH0KIAogSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNpemUm
IHNpemUpCiB7Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsr
aSkgeworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsK
ICAgICAgICAgaWYgKCFidWYpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MzAsNyArNTkzMCw3
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAg
ICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGkgPSBzdGQ6Om1pbiht
X2NhcGFjaXR5IC0gMSwgaSk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVmZmVycy5zaXplKCkgLSAx
LCBpKTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwogCiAgICAgSW1hZ2VCdWZm
ZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSArNTkzOCw5IEBAIEltYWdl
QnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpp
bWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAotdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KGludCBp
ZHgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OmJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGludCBpID0gaWR4OyBpID4g
MDsgLS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAtLWkpCiAgICAgICAgIG1f
YnVmZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDZh
MzU3NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQyYTM5MTk1OWRiYzE0ZWVj
YWZiMGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUxNyw5ICs1MTcsOCBA
QCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdQVUJhc2VkQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUgcG9pbnRlciByZXR1cm5l
ZCBpcyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwotICAgICAgICBpbnQgbV9j
YXBhY2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVfdCBpZHgpOworICAgICAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJzOwogICAgIH07
CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUgeyAwIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJl
c3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3IuY3BwCmluZGV4IDMwMTI1YWViMzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4NWMxNzMyNmFlZjAuLmIy
NTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjc1
LDggKzI3NSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxz
KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwogICAgIH0KIAot
ICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihu
dW1iZXJPZkNoYW5uZWxzKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBtX3NvdXJjZUNoYW5uZWxz
ID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CisgICAg
bV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZD
aGFubmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJP
ZkNoYW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
aAppbmRleCBhMTFkODdkZTU3NWM1MmVhMzFhMjJiOTgzYTFlMzQ2Y2JkMmFlYmQ1Li5mNzE2Y2Vm
NzNhMzVlZTZlZTg4YmE5OGJiOThkMjYyNTM3YmQ2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIgogI2luY2x1ZGUgIlplcm9Q
b2xlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBjbGFzcyBEeW5hbWlj
c0NvbXByZXNzb3IgewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQ
YWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJv
UG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3Qg
ZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0
aW5hdGlvbkNoYW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyh1
bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVkRnJlcXVlbmN5
IC8qIDAgLT4gMSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQgZ2Fp
biwgZmxvYXQgYW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA0MDYyMGZiODQxMDFmNjZiNWZjMDlh
YTNlZmIxMjU4MTNiZmNkMDcxLi43MjdjOTJhM2EwN2RlZDkzNzM3NjRjYzFhZGNjYmZlYWMwNGQ1
MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgR19FTkRfREVDTFMKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBGRlRGcmFtZSB7CiAjaWYgVVNFKFdF
QkFVRElPX0dTVFJFQU1FUikKICAgICBHc3RGRlRGMzIqIG1fZmZ0OwogICAgIEdzdEZGVEYzMiog
bV9pbnZlcnNlRmZ0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21wbGV4W10+IG1f
Y29tcGxleERhdGE7CisgICAgVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4gbV9jb21wbGV4
RGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKICAgICBBdWRpb0Zsb2F0QXJy
YXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRG
cmFtZUdTdHJlYW1lci5jcHAKaW5kZXggNjU2NmMxODE4YTUyNTE5MzQzNjhlOTVmMmQyYjgyN2Qx
NTllMzE5Ny4uMWI2NmU0MDA2M2I2ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVjMGUzMmE0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDogbV9GRlRTaXpl
KGZmdFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cy
KGZmdFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRG
MzJDb21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2Nv
bXBsZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERh
dGFTaXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXpl
KG1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRT
aXplKSkKIHsKQEAgLTY2LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZyYW1lKCkKIEZGVEZyYW1l
OjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBtX0ZGVFNpemUoZnJhbWUu
bV9GRlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRTaXplKQotICAg
ICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4odW5w
YWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29tcGxleERhdGEobWFrZVVu
aXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXpl
KSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRTaXpl
KSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252
ZXJ0ZXIuaAppbmRleCBkZDk3YjM3Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgzZTY5OWI1NTQwZjUzLi45
ZDgyMDRjOGEyNDY2MGZjNzcyYjBjZjdiNTY1MDg3YTM0NTE1YWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgewog
ICAgIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25lbnRzID0gNDsK
ICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0gNDsKLSAgICAg
ICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4
X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9u
ZW50KTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDhfdD4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVz
UGVyQ29tcG9uZW50KTsKIAogICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVybWVkaWF0ZVNy
Y0RhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVy
dGVyIHsKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0IGludCBtX3NyY1N0
cmlkZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CisgICAgVW5pcXVl
QXJyYXk8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNGU3NTdhMGUxZWY3NDQ3Y2U0Nzkz
NDg2YTc0MWRmODgyZDYyOWQ0MC4uMzIyYmVkMGI4YzU3OWZjOTUxZmI2NTYxMjc3ODRjOGIwMzQw
ODQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgi
CiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0
Niw3ICsxNDcsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXREYXRhRm9ybWF0
KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bQogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdD
M0RpbnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0g
MSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBh
Y2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4g
emVybzsKKyAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgIGlmICh3aWR0
aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAg
ICAgR0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUs
IHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgJnNpemUsIG51bGxwdHIpOwpAQCAtMTU0
LDcgKzE1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNh
ZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
LSAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsK
KyAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihzaXplKTsKICAg
ICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaAppbmRleCAxODFiNDY3MTJlNmE4NDE3MDBiNjJkYzFkMWE5NmUwZjY1YmYzY2ZhLi4yZTc0
ODc5ZDhkMmM2MmI2MGI0MTJjZDhhMjMyYzQyMzkyMzhhNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShD
QSkKQEAgLTEyNjEsNyArMTI2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEIDogcHVibGlj
IFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2Rl
ZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThEYXRhOworICAg
ICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYK
ICAgICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRtbERvbVNvdXJjZSBtX2lt
YWdlSHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcyOWY4NDNk
Zjk3YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJiZWZmYjgzODBmODdhYWQ3
YzVjMDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtNDQsNiAr
NDQsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZmRl
ZiBERUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXREaXJ0eVJlY3Rz
KEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAgICAgfQogCiAgICAgRFdP
UkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgpLCAwLCAwKTsKLSAgICBh
dXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4o
ZGF0YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwogICAgIGlmICgh
OjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRhdGEpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGViNTAyODE1MjJhZjExYjIx
YzE3Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0MzI1OWYzNTA0ZGYxZDlm
ZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJl
Z2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKQEAgLTM0MCw3
ICszNDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KGNhaXJvX3N1cmZhY2Vf
dCogc3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwogCiAg
ICAgdWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNhaXJvX2ltYWdlX3N1
cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+
IHRtcCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUpOworICAgIGF1dG8gdG1w
ID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90KiB0b3AgPSBzb3VyY2Ug
KyAoaSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDhlYjZmNGUzYjZhYWE3
ZGNjMWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZmN2E1YTg5NDg1ZDU0YmY5
MjkxMzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29s
IHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291bGQgcHJlbXVsdGlwbHkg
dGhlIGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAvLyBQcmVmZXIgdG8gbWFu
bnVhbGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRzIHRvIFJHQkE4IGZvcm1h
dHMgaW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAxNikgewotICAgICAgICBt
X2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4obV9pbWFn
ZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERh
dGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdo
dCAqIDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1aW50OF90KiBk
ZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAgICAgY29uc3Qg
cHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNpemVvZih1aW50
MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
VGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVy
ZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1MjY0Ni4uODY5
ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1cmU6OnVwZGF0
ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogICAgIGlu
dCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhlIHNtYWxsZXIg
b2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6ZWQKICAgICAg
ICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1fdGlsZXMuYm9y
ZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAgICAgICAgc3Rk
OjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVzLmJvcmRlclRl
eGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0byB0ZW1wQnVm
ZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsKKyAgICBhdXRv
IHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNpemUpOwogCiAg
ICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxl
cy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90
aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhlNmRiNzIzZTEu
LjQ0MTU1YWFkNmQ2Y2Y4Nzg5YWZmOTcwNmMxMTc4ZGFmNjNhNDgzZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAog
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFsQnl0ZXNDaGVj
a2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVu
c2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBtYWtlVW5pcXVl
QXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhlbHMpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtNjY4LDcgKzY2OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBpZiAobGVuZ3Ro
KSB7CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7CisgICAgICAgIGF1dG8gaW5mbyA9IG1ha2VV
bmlxdWVBcnJheTxHTGNoYXI+KGxlbmd0aCk7CiAgICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9n
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CiAKICAgICAgICAgUGxhdGZvcm0z
RE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKQEAgLTg1MSw3ICs4NTIsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgR0MzRHVpbnQgaQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdM
aW50IG1heEF0dHJpYnV0ZVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
R0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7Ci0gICAg
YXV0byBuYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obWF4QXR0cmlidXRlU2l6ZSk7
IC8vIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0
aW9uLgorICAgIGF1dG8gbmFtZSA9IG1ha2VVbmlxdWVBcnJheTxHTGNoYXI+KG1heEF0dHJpYnV0
ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0
ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUg
PSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKQEAgLTg5OCw3ICs4OTksNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZv
cm1TaXplKTsKIAotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1h
eFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uLgorICAgIGF1dG8gbmFtZSA9IG1ha2VVbmlxdWVBcnJheTxHTGNoYXI+
KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRl
cyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xp
bnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwpAQCAtMTY5OSw3ICsxNzAwLDcgQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNp
emUgPSAwOwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0
aCk7CisgICAgYXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obGVuZ3RoKTsKICAg
ICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQo
KSk7CiAKICAgICBHQzNEc2l6ZWkgY291bnQ7CkBAIC0xNzcwLDcgKzE3NzEsNyBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwot
ICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7CisgICAg
YXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obGVuZ3RoKTsKICAgICA6OmdsR2V0
U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkpOwogCiAgICAg
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hh
ZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGFiZWRmNTM1NTNkZDM1NmQxMGQ5
MGNiY2ZiNjkyOWVhNzk3MWFlZDguLmMzMzJmZjM3NDJhNGIzODVlNDgwOWI3MzdmZDIyNzVjY2Q3
MjA2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ1MCw3ICs0NTEsNyBAQCBzdGF0aWMgQ1N0cmluZyBnZXRTaGFkZXJMb2co
R0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7
CisgICAgYXV0byBpbmZvID0gbWFrZVVuaXF1ZUFycmF5PEdMY2hhcj4obG9nTGVuZ3RoKTsKICAg
ICBHTHNpemVpIGluZm9MZW5ndGggPSAwOwogICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIs
IGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOwogCkBAIC00NjUsNyArNDY2LDcg
QEAgc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJvZ3JhbSkKICAgICBpZiAo
IWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6
bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgYXV0byBpbmZvID0gbWFrZVVu
aXF1ZUFycmF5PEdMY2hhcj4obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9MZW5ndGggPSAw
OwogICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0
aCwgaW5mby5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGUwYThmOWQ0
MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0ZTkyMDI5YWNi
ZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtMzgsNiAr
MzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJl
YW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc3LDcgQEAg
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1I
YW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291dHB1dFN0cmVh
bTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVmUHRy
PEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltd
PiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVmZmVyOwogCiAg
ICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3NmUyMmI2NDYw
N2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2OTU3
NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQoR1JlZlB0cjxH
SU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJlYW0pOwogICAg
IG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9fc3RyZWFtX2dl
dF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAgIG1fcmVhZEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpFKTsKKyAgICBt
X3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJfU0laRSk7CiAK
ICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1fcmVh
ZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpB
c3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVmZDlmM2I2MTVi
N2RiMmVhNTEzODNhLi42MDNmMjExNDg3OWQ2NGI2OTZkN2U2ODdiYmFjOTJmNGIyYTIyMTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Myw3IEBAIFN0cmlu
ZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
bGVuZ3RoKTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5ndGgp
OwogCiAgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRW
YXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3Rl
bVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVBy
b3h5V2luLmNwcAppbmRleCA5NTM2MmZhMTZmMzYwNWI2N2QwYmIzMTIwNzMzOGEwZjUwZWY0ODUz
Li41NzUwMTViNmU2MDg3MmRlNjI0NWYyZDBlMWY1ZTc0MTk3MzY1Zjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwCkBAIC0y
NywxMCArMjcsMTEgQEAKICNpbmNsdWRlICJTeXN0ZW1Qcm94eVdpbi5oIgogCiAjaW5jbHVkZSA8
V2ViQ29yZS9DdXJsQ29udGV4dC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBi
b29sIFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5KGNoYXIqIGJ1ZmZlciwg
aW50IGJ1ZmZlckxlbiwgaW50KiBwb3J0KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUQ0hBUltd
PiB0UmVnQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJMZW4pOworICAg
IFVuaXF1ZUFycmF5PFRDSEFSPiB0UmVnQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PFRDSEFSPihi
dWZmZXJMZW4pOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUQ0hBUltdPiB0SG9zdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKICAgICBpZiAoIXRSZWdCdWZmZXIgfHwgIXRI
b3N0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDIwM2M1NmFkYjYyNjk5ZTMwNmQ5
Mzg0Y2M4NjM3ZDQ2MWM4NzQ2NDUuLmVkMDk3OWI0NWRmYzVjNjk4YTkyOGYwN2IxZWQ5YWY3ZmYx
MjIzNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgVVNFKEdMSUIpCiAj
aW5jbHVkZSA8Z2lvL2dpby5oPgpAQCAtMTQzLDEwICsxNDQsMTAgQEAgYm9vbCBDb25uZWN0aW9u
Ojpwcm9jZXNzTWVzc2FnZSgpCiAKICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9y
Q291bnQgPSAwOwogICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRh
Y2htZW50Q291bnQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0
YWNobWVudEluZm87CisgICAgVW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJ
bmZvOwogCiAgICAgaWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsK
KyAgICAgICAgYXR0YWNobWVudEluZm8gPSBtYWtlVW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+
KGF0dGFjaG1lbnRDb3VudCk7CiAgICAgICAgIG1lbWNweShhdHRhY2htZW50SW5mby5nZXQoKSwg
bWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50Q291bnQpOwog
ICAgICAgICBtZXNzYWdlRGF0YSArPSBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVu
dENvdW50OwogCkBAIC00MTcsNyArNDE4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0
TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICBpb3ZbMF0uaW92X2Jhc2Ug
PSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwogICAgIGlvdlswXS5pb3Zf
bGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2ht
ZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBVbmlxdWVBcnJheTxBdHRhY2htZW50SW5m
bz4gYXR0YWNobWVudEluZm87CiAgICAgTWFsbG9jUHRyPGNoYXI+IGF0dGFjaG1lbnRGREJ1ZmZl
cjsKIAogICAgIGF1dG8mIGF0dGFjaG1lbnRzID0gb3V0cHV0TWVzc2FnZS5hdHRhY2htZW50cygp
OwpAQCAtNDQ0LDcgKzQ0NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2Uo
VW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBmZFB0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50Kj4oQ01TR19EQVRBKGNtc2cpKTsKICAgICAgICAgfQogCi0gICAgICAgIGF0
dGFjaG1lbnRJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxBdHRhY2htZW50SW5mb1tdPihhdHRhY2ht
ZW50cy5zaXplKCkpOworICAgICAgICBhdHRhY2htZW50SW5mbyA9IG1ha2VVbmlxdWVBcnJheTxB
dHRhY2htZW50SW5mbz4oYXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICAgICAgaW50IGZkSW5kZXgg
PSAwOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRUeXBlKGF0dGFjaG1lbnRz
W2ldLnR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dn
aW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCmlu
ZGV4IDZkZTFiYWI4NTkwNzdmODE3MGM4YmQyYmZhNTIxOTVmYWE3MWI3MmQuLjJjMTk2NjIyYjUw
NTM5ODM2NGJlYzk0ODQ1ZDFkZGNmZWFkMmE0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgIUxPR19ESVNBQkxFRCB8
fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Miw3ICs0Myw3IEBAIFN0cmluZyBsb2dM
ZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3Ro
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5ndGgpOwogCiAg
ICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJs
ZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCBlNTI3ZjgxNTI1N2Mw
ODcwOWNiNGZhMTViOWIwNzk1OTIxYzAxM2Y5Li5mMjM3ZDI3YzY2NTk4Njk5OWVlMDAzMWI4ZmFh
MTFlODJlNjNkM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtODYsNyArODcsNyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogICAgICAgIAogICAgIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEhhbmRsZVtdPiBtX2RhdGE7CisgICAgICAgIFVuaXF1ZUFycmF5PEhhbmRsZT4gbV9kYXRhOwog
ICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogI2Vsc2UKICAgICAgICAgSGFuZGxlIG1fZW1w
dHlIYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZlMTVlMDMyODQxOGJjM2IwYWIzM2QuLmY4
YTA3ZDg4ZGQ2NTc3NGRiZGJlMTEzMzMyNzVjMmQwYThjNGZiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC0xNjUsNyArMTY1LDcg
QEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUoc2l6ZV90IHNp
emUpCiAKICAgICBBU1NFUlQoIW1fZGF0YSk7CiAKLSAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsKKyAgICBtX2RhdGEgPSBtYWtl
VW5pcXVlQXJyYXk8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPihzaXplKTsKICAgICBtX3NpemUg
PSBzaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5z
L1BsdWdpblBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCBlMDA5NGI5NmJiMTg5YTY5NjM1NWRlMGRiMDgwMzBi
YzBhODJkNzA5Li40Y2M3ZmEyMzc0OGM4ZjZmMzdmYjk1ZDcxNTMxMjFkZTFlNTRhNTdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdp
bi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAjaW5jbHVkZSA8
c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC93aW4vV0NoYXJTdHJpbmdFeHRyYXMuaD4KIApAQCAtMTcyLDcgKzE3Myw3IEBAIGJv
b2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09
IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdmVyc2lvbkluZm9EYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6ZSk7CisgICAgYXV0byB2ZXJz
aW9uSW5mb0RhdGEgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4odmVyc2lvbkluZm9TaXplKTsKIAog
ICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIo
bV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgp
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4OGIxM2ZmNWUxNTdmOGQ2
MDMuLjhlYzhlMTJmYWNkYWI3OTIxM2RkM2M0OTMxMDBkY2Y3NTc1MmMzNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTMyLDggKzUz
Myw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVm
ZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKICAgICBDRlN0cmluZ1JlZiBkaWRSZW1vdmVE
ZWZhdWx0c0tleSA9IENGU1RSKFdlYktpdERpZE1pZ3JhdGVEZWZhdWx0U2V0dGluZ3NGcm9tU2Fm
YXJpM0JldGFQcmVmZXJlbmNlS2V5KTsKICAgICBib29sIG9taXREZWZhdWx0cyA9ICFib29sZWFu
VmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3QsIGRpZFJl
bW92ZURlZmF1bHRzS2V5KSk7CiAKLSAgICBhdXRvIGtleXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENG
VHlwZVJlZltdPihjb3VudCk7Ci0gICAgYXV0byB2YWx1ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPENG
VHlwZVJlZltdPihjb3VudCk7CisgICAgYXV0byBrZXlzID0gbWFrZVVuaXF1ZUFycmF5PENGVHlw
ZVJlZj4oY291bnQpOworICAgIGF1dG8gdmFsdWVzID0gbWFrZVVuaXF1ZUFycmF5PENGVHlwZVJl
Zj4oY291bnQpOwogICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5n
ZXQoKSwgdmFsdWVzLmdldCgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNWUyN2Y5ODVjMmNkOTk2
ZGU5YTA3ZWVhOWI1OWZkZDBmNDhlNzg3Li41MzI2NTkwZGU0ZTBiMDM5YTgzZmY4MDdiMmI0Zjhj
MWNhNTM2ODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTcwLDYgKzE3
MCw3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFVTRShDRykKQEAgLTE3
ODQsNyArMTc4NSw3IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtKQogICAgIG1lbnVJdGVtSW5mby5mTWFzayA9IE1JSU1fU1RSSU5HOwog
ICAgIDo6R2V0TWVudUl0ZW1JbmZvKGhNZW51LCBpbmRleCwgdHJ1ZSwgJm1lbnVJdGVtSW5mbyk7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V0NIQVJbXT4obWVudUl0ZW1J
bmZvLmNjaCArIDEpOworICAgIGF1dG8gYnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PFdDSEFSPiht
ZW51SXRlbUluZm8uY2NoICsgMSk7CiAgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZm
ZXIuZ2V0KCk7CiAgICAgbWVudUl0ZW1JbmZvLmNjaCsrOwogICAgIG1lbnVJdGVtSW5mby5mTWFz
ayB8PSBNSUlNX0lEOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334351</attachid>
            <date>2018-02-21 02:18:27 -0800</date>
            <delta_ts>2018-02-21 02:33:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221191825.patch</filename>
            <type>text/plain</type>
            <size>75784</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li5jOGJhYWUwODNkMWZmOTE1
NzhiMmRkOWRmNDQ3ZDNjMDJlYjU4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmg6CisKIDIwMTgtMDItMjAgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlIHNob3VsZCBlbGltaW5hdGUgZ2V0dGluZyBhcmd1bWVudCBsZW5ndGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGExYWYw
OGI4NTdjNmM0ZWMzZThkYjk4NjRkZWMxYzE3NjU2OWYwOC4uMDkzOTE4NThlN2MxNjM1N2ExNGE2
NDdiMjY4YmNkZDE3NGMxZGVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxOC0wMi0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIHVzZSBgbWFrZV91bmlxdWU8Y2hh
cltdPihudW0pYCBvciBgbmV3IGNoYXJbbnVtXWAsIGFsbG9jYXRpb24gaXMKKyAgICAgICAgZG9u
ZSBieSB0aGUgc3lzdGVtIG1hbGxvYyBpbnN0ZWFkIG9mIGJtYWxsb2MuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpc3N1ZQorICAgICAgICBieSwKKworICAgICAgICAxLiBJbnRyb2R1Y2UgVW5pcXVl
QXJyYXk8VD4uIEl0IGlzIHVzYWJsZSBmb3IgdHlwZSBUIHdoaWNoIGRvZXMgbm90IGhhdmUKKyAg
ICAgICAgYSBub24gdHJpdmlhbCBkZXN0cnVjdG9yLiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20g
RmFzdE1hbGxvYy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQuCisKKyAgICAg
ICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FMTE9DQVRFRC4g
U2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10gb3BlcmF0b3Jz
LCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAgICAgICAgZnJv
bSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0RnJl
ZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6Om9wZXJhdG9y
KCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAgKFdURjo6TWFs
bG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3RhY2tTaG90Lmg6
CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAgKFdURjo6U3Rh
Y2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6CisgICAgICAg
IChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICogd3RmL1Vu
aXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dp
bmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAgICAgICAqIHd0
Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6OmZvcmNlSW5p
dGlhbGl6ZSk6CisKIDIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5kcyB0byByZXNp
emUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFm
ZmY4OWU5ZTgxNzY5ZWFjMTBkMDAyYTc0ZTY1ODgxZmE5MTJmNy4uM2M2NWE5N2I5MWU5ZTIwYzIy
ZDdhMmIxNzNkN2NmYTU1MWMyMWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE4
LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciwgRkFT
VF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3NqaXQvQ29tcGlsZWRT
ZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1h
Z2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udCk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZG
VEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFt
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFnZVN1cmZhY2VW
ZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4
dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbUxvZyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVj
dGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjEgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVuZGVyVHJlZUJ1aWxkZXJdIE1vdmUgUmVuZGVy
RnVsbFNjcmVlbjo6d2lsbEJlUmVtb3ZlZCgpIG11dGF0aW9uIGxvZ2ljIHRvIFJlbmRlclRyZWVC
dWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBlZTkzNGUxOWIzZDFhNGNh
OGQxYzZiYWQ1ZjIwLi5mYTNkYTlkYWI0NzRiMmRjZTMxMzU5NjY1MTBjZDRhNzc3YzZjYzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3Vu
aXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBV
bmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogcGFsL3dpbi9Mb2dnaW5nV2luLmNwcDoK
KyAgICAgICAgKFBBTDo6bG9nTGV2ZWxTdHJpbmcpOgorCiAyMDE4LTAyLTIwICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBIQVZFKElP
U1VSRkFDRV9BQ0NFTEVSQVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGFlMGRhZWJiYjQ5Y2YyMTgxNDg5YWEy
NDY3MThlMjUxOWZiNmZhMC4uNTM1MjQ5ZjU3NDZlMWY2NWY3YmIwNzE1NDJkYTY1NGU3Y2EzM2Q5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAv
IG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVB
cnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5
V2luLmNwcDoKKyAgICAgICAgKFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29u
bmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL3dpbi9Mb2dn
aW5nV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nTGV2ZWxTdHJpbmcpOgorICAgICAgICAq
IFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlIGNvbnN0KToKKwogMjAxOC0w
Mi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBLZXlib2Fy
ZCBmb2N1cyBub3QgZm9sbG93aW5nIFZvaWNlT3ZlciBjdXJzb3IgaW50byB3ZWIgY29udGVudCBv
ciB3aXRoaW4gd2ViIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDYx
ZmZkMzgyYTgzNmMyZTI0MjViODJhYzE3MWEzMWZlMmZmODgxYy4uMThiMTdjMzA4M2U2N2I5MjE3
OThiZmUwZWI1MWY4NmM3NmI0ZWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lz
dGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisK
KyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om9u
TWVudUNvbW1hbmQpOgorCiAyMDE4LTAyLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KIAogICAgICAgICBVc2UgT1BFTkdMIG1hY3JvcyB0byBiZSBtb3JlIGNsZWFyIGFib3V0IHdo
aWNoIE9wZW5HTC9FUyBXZWJHTCB1c2VzIG9uIENvY29hCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwNTg3MjU5M2Y2ZGJiOWE4NTNhODE2MWE2OWJi
ZGY3NDJhMjMzM2EzLi4xMzY3NzE1M2Q1ZmEwNGRmYjhlOWZlYTdlNDQ4YWM0MTdmOWM2ZTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTQ5LDEw
ICs0OSwxMCBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmlu
Z1JlZiBzdHJpbmcpCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oY29udmVydGVkU2l6ZSkg
PT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1ZmZlckxlbmd0aCkgPT0gbGVu
Z3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJCdWZmZXIu
ZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0
cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBWZWN0b3I8
VW5pQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVW5pQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlVuaUNoYXIgYW5kIFVDaGFy
IG11c3QgYmUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpLmxlYWtSZWYo
KTsKKyAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIH0KIAogQ0ZTdHJpbmdS
ZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBKU1N0cmlu
Z1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
S2lsbHMuaAppbmRleCBlYTg1OWM0YTlhMTJmZTRkZGYyZTUyYzJiODY4NmQyMDg4ODNiODc0Li5h
MjgyMjljNTY4YjQxMmFjNDg4N2MzNTgxNjZmYzIyZGU1OTE5ZmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxTZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEtpbGxTZXQoKQogICAgICAgICAgICAgOiBt
X3dvcmQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBhLi4wYzIwNzAz
ZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDggQEAgdm9pZCBE
aXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFy
KiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9IDA7CiAg
ICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6OmFtb3VudE9m
Tm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSAr
IDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCArIGFtb3VudE9m
Tm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRhdGEoKSwgcHJl
Zml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1vdW50T2ZOb2Rl
V2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZpeExlbmd0aF0g
PSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9mTm9kZVdoaXRl
U3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1Zgog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50
TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNTRVJUKGVu
ZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVB
ZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQu
ZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8
dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJmZWIyZTIyMWQ4
MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2RhNmFhYmQwOTE2
NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUG9seW1vcnBo
aWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBF
eGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVj
dG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291
bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQogICAgICwgbV9m
YXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZDk2YWU1
NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFiMDQ2NWJhMWE4
YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg0LDcg
Kzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVy
LAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBjb25zdCBW
ZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZh
c3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
KCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50MzJf
dD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxOb2Rl
czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDc4Y2E5MzAz
ZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRlNjM5YzkzZTRlYTg5MzA2YTk3
N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIAogICAg
IFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwogICAgIFZlY3Rv
cjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4g
ZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVyQ29kZUJs
b2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBmYXN0Q291
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgpKTsKKyAg
ICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2FsbENhc2VzLnNp
emUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2FzZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDA2MDJlNGQ5NDExNDUwY2M4ODNjMTI4M2Q3M2U1ZGMyN2E1MjdjNzEuLmRjZDdmMzI2ZDQ0OTdk
YTdhOGVkMWQwM2QxN2E0MTU5YTY5ZmMzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03MTgs
MTcgKzcxOCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBjdXJyZW50
V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBpcyB0aGUgVVRG
LTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9k
ZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdPUkQgbGVuZ3Ro
Tm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBi
dWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRvU3RyaW5n
KGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051
bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmRhdGEoKSk7
CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBuZXR3
b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRpcmVjdG9y
eVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KFBBVEhf
TUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkKKyAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZmZXIuZGF0YSgp
LCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGRp
cmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKKyAgICBTdHJp
bmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpKTsKICNl
bmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApp
bmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4zYTFlYTM3NDgy
NDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21h
eE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251bU9w
Y29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0YXRzQXJy
YXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF9l
bnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6c19leGNlcHRp
b25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV07Ci0K
ICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2MWI1YjI2ZmM4
NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQwMjQyZGM2NGZj
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7CiAgICAgc3Rh
dGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2VwdGlvbkluc3Ry
dWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2RlIHNfb3Bjb2Rl
TWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkqIHNfb3Bjb2Rl
U3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4
IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJkZTkxM2ZkZjRk
YjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXI7CiAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCBjZTZlNGMxZjQ1Y2I5ZWI5ZTU4NWU3MmJkYzBlNzBhYjY3YmFlZmJiLi5iNjY3
ZWQ3MmU2NTIzMzE0NzY1YTIwMjgxZmZhYjM0MzUxNmE3MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC01MzYsMTEgKzUzNiw2IEBAIFZNOjp+Vk0oKQogICAgIGRlbGV0
ZSBjbGllbnREYXRhOwogICAgIGRlbGV0ZSBtX3JlZ0V4cENhY2hlOwogCi0jaWYgRU5BQkxFKFlB
UlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYgKG1fcmVnRXhwUGF0dGVybkNv
bnRleEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVy
OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZGVsZXRlIG1fcnRU
cmFjZUxpc3Q7CiAjZW5kaWYKQEAgLTkwNyw4ICs5MDIsOCBAQCBjaGFyKiBWTTo6YWNxdWlyZVJl
Z0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQogCiAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExv
Y2subG9jaygpOwogICAgIGlmICghbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQotICAgICAg
ICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVybkNvbnRl
eHRCdWZmZXJTaXplXTsKLSAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyOwor
ICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hh
cj4oVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIG1fcmVnRXhwUGF0
dGVybkNvbnRleEJ1ZmZlci5nZXQoKTsKIH0KIAogdm9pZCBWTTo6cmVsZWFzZVJlZ0V4cFBhdHRl
cm5Db250ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZDczZmM2
Yjk3NDY4YzhiNDFkYTFlYTBmZjg5MDhkZGZkM2RiNDJhNS4uNzZkYjA1ODJmYWYzYTI2YjE1Njdm
Mjk4NDk1YjY4MWY4OGY1YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC02
OSw2ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJvbFJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxFKFJF
R0VYUF9UUkFDSU5HKQpAQCAtNjg1LDcgKzY4Niw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAK
ICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSA4MTkyOyAvLyBTcGFj
ZSBhbGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAotICAgIGNoYXIq
IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBVbmlxdWVBcnJh
eTxjaGFyPiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CiAgICAgTG9jayBtX3JlZ0V4cFBh
dHRlcm5Db250ZXh0TG9jazsKICAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1
ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAppbmRleCA0ODI0YjFjNmIz
ZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi4yNWI4ZjgxNDAzOGIyYWUxY2E0MmE5MjRm
ZWUzNmU5NTRhZWZhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJp
Zmllci5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAKIHByaXZhdGU6
CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExP
Q0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9yZSgiQmVmb3Jl
IE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGEyNWJmMzYzN2ZhNTk2NjJh
NTViOTU2ZGRhZWRlODNlYWY1Y2UwLi5lYmFhNTUxMWQxMGRkZjRmNDM2YjU2NjlmYmJiZWMxZTBi
MTg3Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYw
Miw2ICs2MDIsNyBAQAogCQlERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRv
U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIg
LyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzAwRTUyMTIwM0Q2NDVG
MDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTUx
RjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1LDEwICs4NTYsMTAgQEAKIAkJCQlB
OEE0NzI3RjE1MUE4MjVBMDA0MTIzRkYgLyogRGlzcGF0Y2hQdHIuaCAqLywKIAkJCQkwRjQ1NzA0
MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovLAogCQkJCUE4QTQ3MjgwMTUxQTgy
NUEwMDQxMjNGRiAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi8sCi0JCQkJRkUwNUZBRTYxRkRCMjE0
MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLywKLQkJCQlBRDY1M0RBODIwMDZCNkMyMDBE
ODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOTcxNTFBODI1QTAwNDEy
M0ZGIC8qIGR0b2EuY3BwICovLAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9h
LmggKi8sCisJCQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAq
LywKKwkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8s
CiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlB
RDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLywKIAkJCQlBOEE0NzI5RjE1
MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCkBAIC0xMDgzLDYgKzEwODQsNyBA
QAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAogCQkJCTgz
RkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlBOEE0NzM1QzE1
MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCisJCQkJRTMwMEU1MjEyMDNENjQ1RjAw
REE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZE
IC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNh
ZmVQb2ludGVyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3Bw
ICovLApAQCAtMTA5Miw3ICsxMDk0LDYgQEAKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYg
LyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRy
YWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywK
LQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJ
CQkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCAqLywKIAkJCQkwRjY2
QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAqLywKIAkJCQk5NzRDRkM4RDE2QTRG
MzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTEwMSw2ICsxMTAyLDcgQEAKIAkJCQkw
RkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFB
OTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1
MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCisJCQkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMw
IC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQyNCw3ICsxNDI2LDYgQEAKIAkJCQkwRjY2QjI4QTFE
Qzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxh
dGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUz
MjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RTg1
REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTE1MzMsNiArMTUzNCw3IEBACiAJCQkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRM
b2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBX
b3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2
IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZGMUZFNTAw
NzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlv
bnMuY3BwCmluZGV4IDE1OGNiZWY3NjEyM2Q5M2Q3ZjQxZjJiZmYyMDE2NTZlMjk4ZThhMDguLmRi
YWRhZWU2Y2E1NDA2MDAxMjk2NDM5YTIzMDQ1OTdlNWJiYTc2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMu
Y3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRo
X3ByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIGZvcm1hdCwgdgogewogICAg
IHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4ocHJlZml4KTsKICAgICBzaXplX3QgZm9ybWF0
TGVuZ3RoID0gc3RybGVuKGZvcm1hdCk7Ci0gICAgYXV0byBmb3JtYXRXaXRoUHJlZml4ID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOwot
ICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7
Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1h
dCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9ybWF0V2l0aFByZWZpeChwcmVm
aXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZp
eC5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aFBy
ZWZpeC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKICAgICBm
b3JtYXRXaXRoUHJlZml4W3ByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aF0gPSAwOwogCi0gICAg
dnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIGFyZ3MpOworICAg
IHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSwgYXJncyk7CiB9
CiAKIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShjb25z
dCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKQEAgLTE2NywxMiArMTY3LDEyIEBAIHN0YXRp
YyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShjb25zdCBjaGFyKiBm
b3JtYXQsIHZhX2xpc3QgYXJnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZv
cm1hdFdpdGhOZXdsaW5lID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZvcm1hdExlbmd0aCAr
IDIpOwotICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5nZXQoKSwgZm9ybWF0LCBmb3JtYXRM
ZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoTmV3bGluZShmb3JtYXRMZW5ndGgg
KyAyKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBmb3JtYXQsIGZvcm1h
dExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoXSA9ICdcbic7CiAg
ICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoICsgMV0gPSAwOwogCi0gICAgdnByaW50
Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBhcmdzKTsKKyAgICB2cHJp
bnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBhcmdzKTsKIH0KIAog
I2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMjIwYmFm
ZDM0OGIzMDYzMzgzYWI3YTU0MmRjMmVkZTExMWFjNzA4NS4uZTk3ZDA2MTkzYzBhMWRmZmM4MzBl
MGNhN2RlNjllNTA5ZDY1OTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIzMyw2ICsyMzMs
NyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBVbmV4cGVjdGVkLmgKICAgICBVbmlTdGRFeHRyYXMu
aAogICAgIFVuaW9uRmluZC5oCisgICAgVW5pcXVlQXJyYXkuaAogICAgIFVuaXF1ZVJlZi5oCiAg
ICAgVW5zYWZlUG9pbnRlci5oCiAgICAgVk1UYWdzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCA3ZWMy
MWFlNzk4NTA3NGY2MzlkZjRiYWNiMDAzNmFlMWZjN2UwMjZhLi42NjcyY2U0NmQ5ZjFjMmI0M2Ez
OTFlNTRiNjYyNDQzZjA4ZjkzOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFs
bG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yMDAsNiArMjAwLDI2
IEBAIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBzdGF0aWMgdm9pZCBmcmVlKHZvaWQqIHApIHsg
ZmFzdEZyZWUocCk7IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFzdEZy
ZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2
PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgRmFzdEZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCko
VCogcG9pbnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC0yMDgsNiArMjI4
LDcgQEAgdXNpbmcgV1RGOjpmYXN0U2V0TWF4U2luZ2xlQWxsb2NhdGlvblNpemU7CiAKIHVzaW5n
IFdURjo6RmFzdEFsbG9jYXRvcjsKIHVzaW5nIFdURjo6RmFzdE1hbGxvYzsKK3VzaW5nIFdURjo6
RmFzdEZyZWU7CiB1c2luZyBXVEY6OmlzRmFzdE1hbGxvY0VuYWJsZWQ7CiB1c2luZyBXVEY6OmZh
c3RDYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RGcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCA3ZjZhMDJj
ZWYzMWIxYTI5ZmFjNjM4NGNkMmFjZTNlOGY3NTBjMGJhLi42NmYxMGFhOWJkNWJiYTA5YWM1NjEx
MzZhZDM1YmY1ZTg0ZTQ4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAtNjYsNiArNjYsMTEgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFsbG9jID0gRmFzdE1hbGxvYz4gY2xhc3MgTWFs
bG9jUHRyIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpOwog
ICAgIH0KIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAhbV9wdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDZlZmQwNzRkZTI3
MDllNjI3YWNlYjNjODNiOTQzMzEzNDJmNzVhZmQuLjdlMzJhMzViYWUzYzdiNTZhOGJlODViN2Qx
OGQxZTU1NzlhMGIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNyw3ICszOCw3IEBAIGNsYXNzIFN0
YWNrU2hvdCB7CiAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgewogICAgICAgICBpZiAoc2l6
ZSkgewotICAgICAgICAgICAgbV9hcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4oc2l6
ZSk7CisgICAgICAgICAgICBtX2FycmF5ID0gbWFrZVVuaXF1ZUFycmF5PHZvaWQqPihzaXplKTsK
ICAgICAgICAgICAgIGludCBpbnRTaXplID0gc2l6ZTsKICAgICAgICAgICAgIFdURkdldEJhY2t0
cmFjZShtX2FycmF5LmdldCgpLCAmaW50U2l6ZSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KGludFNpemUpIDw9IHNpemUpOwpAQCAtNTUsNyArNTYsNyBA
QCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogICAgIFN0YWNrU2hvdCYgb3BlcmF0b3I9KGNvbnN0
IFN0YWNrU2hvdCYgb3RoZXIpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpb
XT4gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+KG90aGVyLm1fc2l6ZSk7Cisg
ICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+KG90aGVyLm1fc2l6
ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvdGhlci5tX3NpemU7IGktLTspCiAgICAgICAg
ICAgICBuZXdBcnJheVtpXSA9IG90aGVyLm1fYXJyYXlbaV07CiAgICAgICAgIG1fc2l6ZSA9IG90
aGVyLm1fc2l6ZTsKQEAgLTEwNiw4ICsxMDcsOCBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgIAog
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCoqIGRlbGV0ZWRWYWx1ZUFycmF5KCkgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PHZvaWQqKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KLSAgICAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbV9hcnJheTsKKworICAgIFVuaXF1ZUFycmF5
PHZvaWQqPiBtX2FycmF5OwogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1G
cmVlLmgKaW5kZXggM2VmNzU2MjgyY2YyMGQ0MGQ4YzYxODU0Nzk0NmQwNGY1YmFlY2VmNS4uNzNi
NjkzZjA2ODM4YmNjOGNjYzgzYTQ2OGQ0ZGJjM2E4YWI4MmY4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU3lzdGVtRnJlZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaApA
QCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IHN0cnVjdCBTeXN0ZW1GcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBw
b2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwpAQCAtMzksMTEgKzQxLDEyIEBAIHN0
cnVjdCBTeXN0ZW1GcmVlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBTeXN0ZW1G
cmVlPFRbXT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CiAgICAgfQotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmggYi9Tb3VyY2UvV1RG
L3d0Zi9VbmlxdWVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYTA4ZWFhNTk0MGUyNGJiNTllNzBjMjIz
MTgwYWVhMDAwM2FhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVB
cnJheS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxUW10s
IEZhc3RGcmVlPFRbXT4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8VD4g
bWFrZVVuaXF1ZUFycmF5KHNpemVfdCBzaXplKQoreworICAgIHVzaW5nIFUgPSB0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgVSogc3RvcmFnZSA9IHN0YXRpY19jYXN0
PFUqPihmYXN0TWFsbG9jKHNpemVvZihVKSAqIHNpemUpKTsKKyAgICBWZWN0b3JUeXBlT3BlcmF0
aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBzaXplKTsKKyAgICBy
ZXR1cm4gVW5pcXVlQXJyYXk8VD4oc3RvcmFnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJyYXk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oCmluZGV4IGFiY2FiZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZjN2M5MmMuLjI3ZmMx
NDUzYTBkMGEwNjcyZTNkNzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02NSwxMCAr
NjUsMTUgQEAgc3RydWN0IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRlbXBsYXRlIDxib29s
IG5lZWRzSW5pdGlhbGl6YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVu
YW1lIFQ+CiBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRlPGJvb2wgaWdub3Jl
LCB0eXBlbmFtZSBUPgotc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBpZ25vcmUsIFQ+
Cit0ZW1wbGF0ZTxib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgorc3Ry
dWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD4K
IHsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKworICAgIHN0YXRpYyB2
b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVj
dG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpmb3JjZUlu
aXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
QEAgLTc5LDYgKzg0LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxzZSwg
VD4KICAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCiAgICAg
ICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBm
b3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxp
emUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTg4
LDYgKzk4LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0cnVlLCBUPgogICAg
IHsKICAgICAgICAgbWVtc2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihlbmQp
IC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGlu
aXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPGJvb2wgY2FuTW92
ZVdpdGhNZW1jcHksIHR5cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBAIHN0cnVjdCBWZWN0
b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8
VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdp
dGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0KIAorICAgIHN0YXRp
YyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAg
VmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBW
ZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJbml0aWFs
aXplKGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBU
KiBzcmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0
czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNv
dXJjZU5vZGUuY3BwCmluZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0YzNiNTVmNDA4ZjJm
MWEuLjVlNjJjNWFjMmRjOWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAKQEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAgICAgb3V0cHV0
KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAgICAgIG1f
c291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1iZXJP
ZkNoYW5uZWxzKTsKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fc291cmNlQ2hhbm5l
bHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKKyAg
ICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVt
YmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mQ2hhbm5lbHM7ICsraSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5uZWxzW2ldID0gYnVm
ZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggZjRlNjNhODU5
YzAxYjQxNWUxY2YzNDdmMjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3MzE4MjFmYTI1N2Ew
OGQxMzU4MGZhMjU5MGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNp
bmNsdWRlICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEwOSw4ICsxMTAsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBw
dWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+
IG1fYnVmZmVyOwogCiAgICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIgYW5kIGRlc3RpbmF0
aW9uLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVs
czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsK
KyAgICBVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5p
cXVlQXJyYXk8ZmxvYXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICAvLyBVc2VkIGZv
ciB0aGUgImdhaW4iIGFuZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgogICAgIFJlZlB0cjxB
dWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dp
bi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4u
Y3BwCmluZGV4IDhjYTRjOTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYwN2RjMjUuLjk1Y2M4
ZDNjNzJhZWU2NjE3NTljNjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xl
dmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgp
OworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJv
bm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwg
bGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9u
bWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1
cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Nv
bXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAyYmM3MDg4
ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xh
c3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGlsZWRTZWxl
Y3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlbGVjdG9y
Q29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYgQ1NT
X1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmNkYWM5MTIyZWY5
ZWE3NzI3OWJjZGMwZDYzYTRlYWRmZTk3OGVkZC4uMDI5N2NlMGFkMjM1NGNmYWU4MjI5ZmFiM2U4
ZWU1MWQ4NzkzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTk5LDYgKzk5LDcgQEAKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DaGVja2Vk
QXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNTUzLDcgKzE1NTQsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIlRleHR1cmUg
aGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVybzsKKyAg
ICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICAgICAgaWYgKHdpZHRo
ICYmIGhlaWdodCkgewogICAgICAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAgICAgICAgICAgIEdD
M0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQs
IHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVsbHB0cik7
CkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNv
cHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdlMkQiLCAiYmFk
IGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUp
OworICAgICAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihzaXpl
KTsKICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1YkltYWdl
MkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3NjEs
NyArNTc2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51CiAgICAgICAgICAgICB8fCBhdHRy
aWJWYWx1ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQogICAgICAg
ICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFs
dWVbM10pKSB7CiAKLSAgICAgICAgYXV0byBidWZmZXJEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxH
QzNEZmxvYXRbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IG1ha2VV
bmlxdWVBcnJheTxHQzNEZmxvYXQ+KGJ1ZmZlclNpemUpOwogICAgICAgICBmb3IgKEdDM0R1aW50
IGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAgICAgICAgICAgICBidWZmZXJE
YXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKICAgICAgICAgICAgIGJ1ZmZlckRh
dGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKQEAgLTU5MDcsMTUgKzU5MDgs
MTQgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51bGwoY29u
c3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpM
UlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0eSkKLSAg
ICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj5bXT4oY2FwYWNpdHkpKQotICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKKyAgICA6IG1fYnVm
ZmVycyhjYXBhY2l0eSkKIHsKIH0KIAogSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNp
emUpCiB7Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG1fY2FwYWNpdHk7ICsraSkg
eworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKICAg
ICAgICAgaWYgKCFidWYpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MzAsNyArNTkzMCw3IEBA
IEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNh
Y2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsKICAgICBp
ZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGkgPSBzdGQ6Om1pbihtX2Nh
cGFjaXR5IC0gMSwgaSk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVmZmVycy5zaXplKCkgLSAxLCBp
KTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwogCiAgICAgSW1hZ2VCdWZmZXIq
IGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSArNTkzOCw5IEBAIEltYWdlQnVm
ZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFn
ZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KGludCBpZHgp
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmJ1
YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGludCBpID0gaWR4OyBpID4gMDsg
LS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAtLWkpCiAgICAgICAgIG1fYnVm
ZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDZhMzU3
NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQyYTM5MTk1OWRiYzE0ZWVjYWZi
MGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUxNyw5ICs1MTcsOCBAQCBj
bGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUgcG9pbnRlciByZXR1cm5lZCBp
cyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZv
aWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwotICAgICAgICBpbnQgbV9jYXBh
Y2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVfdCBpZHgpOworICAgICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJzOwogICAgIH07CiAg
ICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUgeyAwIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwCmluZGV4IDMwMTI1YWViMzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4NWMxNzMyNmFlZjAuLmIyNTUx
OGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjc1LDgg
KzI3NSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwogICAgIH0KIAotICAg
IG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1i
ZXJPZkNoYW5uZWxzKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBtX3NvdXJjZUNoYW5uZWxzID0g
bWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9k
ZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFu
bmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNo
YW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApp
bmRleCBhMTFkODdkZTU3NWM1MmVhMzFhMjJiOTgzYTFlMzQ2Y2JkMmFlYmQ1Li5mNzE2Y2VmNzNh
MzVlZTZlZTg4YmE5OGJiOThkMjYyNTM3YmQ2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIgogI2luY2x1ZGUgIlplcm9Qb2xl
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBjbGFzcyBEeW5hbWljc0Nv
bXByZXNzb3IgewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNr
ND4+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9s
ZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZs
b2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxv
YXQqPiBtX3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5h
dGlvbkNoYW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyh1bnNp
Z25lZCBzdGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVkRnJlcXVlbmN5IC8q
IDAgLT4gMSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQgZ2Fpbiwg
ZmxvYXQgYW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA0MDYyMGZiODQxMDFmNjZiNWZjMDlhYTNl
ZmIxMjU4MTNiZmNkMDcxLi43MjdjOTJhM2EwN2RlZDkzNzM3NjRjYzFhZGNjYmZlYWMwNGQ1MDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ0LDYgKzQ0
LDcgQEAgR19FTkRfREVDTFMKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBGRlRGcmFtZSB7CiAjaWYgVVNFKFdFQkFV
RElPX0dTVFJFQU1FUikKICAgICBHc3RGRlRGMzIqIG1fZmZ0OwogICAgIEdzdEZGVEYzMiogbV9p
bnZlcnNlRmZ0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21wbGV4W10+IG1fY29t
cGxleERhdGE7CisgICAgVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4gbV9jb21wbGV4RGF0
YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkg
bV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFt
ZUdTdHJlYW1lci5jcHAKaW5kZXggNjU2NmMxODE4YTUyNTE5MzQzNjhlOTVmMmQyYjgyN2QxNTll
MzE5Ny4uMWI2NmU0MDA2M2I2ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVjMGUzMmE0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZU
RnJhbWVHU3RyZWFtZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDogbV9GRlRTaXplKGZm
dFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGZm
dFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJD
b21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBs
ZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFT
aXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXpl
KSkKIHsKQEAgLTY2LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZyYW1lKCkKIEZGVEZyYW1lOjpG
RlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBtX0ZGVFNpemUoZnJhbWUubV9G
RlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRTaXplKQotICAgICwg
bV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4odW5wYWNr
ZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29tcGxleERhdGEobWFrZVVuaXF1
ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkp
CiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRTaXplKSkK
ICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29u
dmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaAppbmRleCBkZDk3YjM3Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgzZTY5OWI1NTQwZjUzLi45ZDgy
MDRjOGEyNDY2MGZjNzcyYjBjZjdiNTY1MDg3YTM0NTE1YWFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgewogICAg
IHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25lbnRzID0gNDsKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0gNDsKLSAgICAgICAg
bV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3Rb
XT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9uZW50
KTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5pcXVlQXJy
YXk8dWludDhfdD4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVy
Q29tcG9uZW50KTsKIAogICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0Rh
dGEuZ2V0KCkpOwogICAgIH0KQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVydGVy
IHsKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0IGludCBtX3NyY1N0cmlk
ZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CisgICAgVW5pcXVlQXJy
YXk8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNGU3NTdhMGUxZWY3NDQ3Y2U0NzkzNDg2
YTc0MWRmODgyZDYyOWQ0MC4uMzIyYmVkMGI4YzU3OWZjOTUxZmI2NTYxMjc3ODRjOGIwMzQwODQw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAj
aW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE0Niw3
ICsxNDcsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXREYXRhRm9ybWF0KEdD
M0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bQogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWws
IEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0Rp
bnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQgPT0gMSB8
fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1bnBhY2tB
bGlnbm1lbnQgPT0gOCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVy
bzsKKyAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgIGlmICh3aWR0aCA+
IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAgICAgICAg
R0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdp
ZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgJnNpemUsIG51bGxwdHIpOwpAQCAtMTU0LDcg
KzE1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXplKTsKKyAg
ICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihzaXplKTsKICAgICAg
ICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aAppbmRleCAxODFiNDY3MTJlNmE4NDE3MDBiNjJkYzFkMWE5NmUwZjY1YmYzY2ZhLi4yZTc0ODc5
ZDhkMmM2MmI2MGI0MTJjZDhhMjMyYzQyMzkyMzhhNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDQSkK
QEAgLTEyNjEsNyArMTI2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEIDogcHVibGljIFJl
ZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVjb2RlZElt
YWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThEYXRhOworICAgICAg
ICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZW5kaWYKICAg
ICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRtbERvbVNvdXJjZSBtX2ltYWdl
SHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcyOWY4NDNkZjk3
YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJiZWZmYjgzODBmODdhYWQ3YzVj
MDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNpZmRlZiBE
RUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXREaXJ0eVJlY3RzKEhX
TkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAgICAgfQogCiAgICAgRFdPUkQg
ZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgpLCAwLCAwKTsKLSAgICBhdXRv
IHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oZGF0
YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTx1bnNp
Z25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwogICAgIGlmICghOjpH
ZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRhdGEpKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGViNTAyODE1MjJhZjExYjIxYzE3
Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0MzI1OWYzNTA0ZGYxZDlmZWE2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlZ2lv
bi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKQEAgLTM0MCw3ICsz
NDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwogCiAgICAg
dWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNhaXJvX2ltYWdlX3N1cmZh
Y2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHRt
cCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUpOworICAgIGF1dG8gdG1wID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90KiB0b3AgPSBzb3VyY2UgKyAo
aSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDhlYjZmNGUzYjZhYWE3ZGNj
MWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZmN2E1YTg5NDg1ZDU0YmY5Mjkx
Mzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00NzgsNyArNDc4LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShib29sIHBy
ZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291bGQgcHJlbXVsdGlwbHkgdGhl
IGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAvLyBQcmVmZXIgdG8gbWFubnVh
bGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRzIHRvIFJHQkE4IGZvcm1hdHMg
aW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAxNikgewotICAgICAgICBtX2Zv
cm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4obV9pbWFnZVdp
ZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEg
PSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAq
IDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1aW50OF90KiBkZXN0
aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAgICAgY29uc3QgcHRy
ZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNpemVvZih1aW50MTZf
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1MjY0Ni4uODY5ODEz
NjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1cmU6OnVwZGF0ZVN1
YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogICAgIGludCB0
ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhlIHNtYWxsZXIgb2Yg
dGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6ZWQKICAgICAgICAg
c3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1fdGlsZXMuYm9yZGVy
VGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAgICAgICAgc3RkOjpt
aW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVzLmJvcmRlclRleGVs
cygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0byB0ZW1wQnVmZiA9
IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsKKyAgICBhdXRvIHRl
bXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNpemUpOwogCiAgICAg
Zm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5u
dW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90aWxl
cy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhlNmRiNzIzZTEuLjU0
NzI3NGZmYTY4YTUyZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFsQnl0ZXNDaGVja2Vk
LnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2ln
bmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBtYWtlVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhlbHMpCiAgICAgICAg
IHJldHVybjsKIApAQCAtNjY4LDExICs2NjksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogICAgIGlmIChsZW5ndGgp
IHsKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAgICAgYXV0byBpbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgOjpnbEdldFNoYWRlckluZm9M
b2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICAgICAgVmVjdG9yPEdM
Y2hhcj4gaW5mbyhsZW5ndGgpOworICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIs
IGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgICAgICBlbnRyeS5sb2cgPSBnZXRVbm1h
bmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgICAgIGVu
dHJ5LmxvZyA9IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0
YSgpLCBzaXplKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXBpbGVTdGF0dXMgIT0gR0xfVFJVRSkg
ewpAQCAtODUxLDE4ICs4NTIsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZl
QXR0cmliSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGkKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhBdHRyaWJ1dGVTaXplID0gMDsKICAgICA6
OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwg
Jm1heEF0dHJpYnV0ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xj
aGFyW10+KG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5H
VEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1h
eEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVk
ZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlQXR0
cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUs
ICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGlu
ZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRh
dGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ci0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBT
SEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0
aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3Jh
bSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1l
TGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyB1bmlmb3JtTmFtZShu
YW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5kYXRh
KCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQgaXMgbWFwcGluZyBh
Y3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVu
aWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCkuZGF0YSgpKTsKICNl
bmRpZgogCkBAIC04OTgsMTggKzg5OSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRB
Y3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50CiAgICAg
R0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
R0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKIAotICAgIGF1
dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heFVuaWZvcm1TaXplKTsgLy8g
R0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgor
ICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBHTF9BQ1RJVkVfVU5J
Rk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBu
YW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7
Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXpl
LCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0
aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAm
c2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxT
eW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJpbmcobmFt
ZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5h
bFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmluZyhu
YW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJp
bmcgdW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZv
cm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFt
ICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9n
cmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0ICsxNzAwLDE0IEBAIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsK
LSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAg
IDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgp
KTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFByb2dyYW1J
bmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgIEdDM0Rz
aXplaSBjb3VudDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl07CiAgICAgZ2V0QXR0
YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVycyk7CiAKLSAgICByZXR1cm4g
Z2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZ2V0KCkpKTsK
KyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGlu
Zm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0Rp
bnQqIHZhbHVlKQpAQCAtMTc3MCwxMSArMTc3MSwxMSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwotICAgIGF1dG8gaW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgOjpnbEdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0b3I8R0xj
aGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5n
dGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNb
Ml0gPSB7IHNoYWRlciwgMCB9OwotICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRl
cnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9M
b2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIFN0cmluZyBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggYWJlZGY1
MzU1M2RkMzU2ZDEwZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4uMmU2YzUyYzYzNDg5NjY0OWFmNWM2
YTQ0NDdiOThmMTBhM2QyNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW0uY3BwCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRTaGFkZXJM
b2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0
aCk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgpOwogICAgIEdMc2l6ZWkgaW5m
b0xlbmd0aCA9IDA7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAm
aW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwg
bG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90IHN0cmlu
Z0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGluZm8uZ2V0
KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJpbmdMZW5n
dGggfTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJvZ3JhbSkK
QEAgLTQ2NSwxMiArNDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50
IHByb2dyYW0pCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dMZW5ndGgpOworICAg
IFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9MZW5ndGgg
PSAwOwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAmaW5mb0xl
bmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsb2dM
ZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAgICBzaXplX3Qgc3RyaW5nTGVu
Z3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0dXJuIHsgaW5mby5nZXQoKSwg
c3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRhKCksIHN0cmluZ0xlbmd0aCB9
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGUwYThmOWQ0MmEz
NTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0ZTkyMDI5YWNiZWYw
YWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtMzgsNiArMzgs
NyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJlYW1C
dWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvZ2xp
Yi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc3LDcgQEAgY2xh
c3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5k
bGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291dHB1dFN0cmVhbTsK
ICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVmUHRyPEdD
YW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBt
X3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVmZmVyOwogCiAgICAg
U3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3NmUyMmI2NDYwN2Uz
ZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2OTU3NDVh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQoR1JlZlB0cjxHSU9T
dHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJlYW0pOwogICAgIG1f
b3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9fc3RyZWFtX2dldF9v
dXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGdfaW9f
c3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAgIG1fcmVhZEJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpFKTsKKyAgICBtX3Jl
YWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJfU0laRSk7CiAKICAg
ICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1fcmVhZEJ1
ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpBc3lu
Y0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVmZDlmM2I2MTViN2Ri
MmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUxNzY1ODI2YWJkNTI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIs
MTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAot
ICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFi
bGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFi
bGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVy
LmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dp
bi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2MDViNjdkMGJiMzEyMDczMzhh
MGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5ZjllNjg0OTliYWM1ZjBhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2lu
LmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5
c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG9ydCkKIHsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdEhv
c3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgaWYgKCF0UmVn
QnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3RvcjxUQ0hB
Uj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxUQ0hBUj4gdEhvc3QoYnVmZmVy
TGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7CiAgICAgSEtFWSBrZXk7CkBA
IC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3RlbUh0dHBQ
cm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG8KICAgICAgICAgTCJQcm94
eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0eXBlLAotICAgICAgICAoTFBC
WVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUpdFJlZ0J1ZmZlci5kYXRhKCks
CiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJST1JfU1VDQ0VTUykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5U3RyaW5nKHRSZWdCdWZmZXIu
Z2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQorICAgIGlmICghcGFyc2VQcm94
eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgpLCBidWZmZXJMZW4sIHBvcnQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0Lmdl
dCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwgdEhvc3QuZGF0YSgpLCBidWZm
ZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAnOwogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNjODYzN2Q0NjFjODc0NjQ1Li5l
ZDA5NzliNDVkZmM1YzY5OGE5MjhmMDdiMWVkOWFmN2ZmMTIyMzU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KIAogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPGdpby9naW8uaD4KQEAg
LTE0MywxMCArMTQ0LDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogCiAg
ICAgc2l6ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKICAgICBzaXplX3Qg
YXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAgIFVuaXF1
ZUFycmF5PEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbzsKIAogICAgIGlmIChhdHRhY2ht
ZW50Q291bnQpIHsKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0
dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIGF0dGFjaG1lbnRJbmZv
ID0gbWFrZVVuaXF1ZUFycmF5PEF0dGFjaG1lbnRJbmZvPihhdHRhY2htZW50Q291bnQpOwogICAg
ICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZ2V0KCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0
YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0g
c2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudDsKIApAQCAtNDE3LDcgKzQx
OCw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91
dHB1dE1lc3NhZ2UpCiAgICAgaW92WzBdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oJm1lc3NhZ2VJbmZvKTsKICAgICBpb3ZbMF0uaW92X2xlbiA9IHNpemVvZihtZXNzYWdlSW5m
byk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudElu
Zm87CisgICAgVW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvOwogICAg
IE1hbGxvY1B0cjxjaGFyPiBhdHRhY2htZW50RkRCdWZmZXI7CiAKICAgICBhdXRvJiBhdHRhY2ht
ZW50cyA9IG91dHB1dE1lc3NhZ2UuYXR0YWNobWVudHMoKTsKQEAgLTQ0NCw3ICs0NDUsNyBAQCBi
b29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNz
YWdlKQogICAgICAgICAgICAgZmRQdHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFU
QShjbXNnKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAg
YXR0YWNobWVudEluZm8gPSBtYWtlVW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+KGF0dGFjaG1l
bnRzLnNpemUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXR0
YWNobWVudEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCA2ZGUxYmFiODU5MDc3ZjgxNzBj
OGJkMmJmYTUyMTk1ZmFhNzFiNzJkLi5kMDYzOGQzMTNhNmU3YzkyZWI4MjQxNDgyNDg5M2RiNjY1
NzZiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAt
NDIsMTIgKzQyLDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxl
bmd0aCk7CiAKLSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9u
bWVudFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9u
bWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3Ry
aW5nKGJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5z
aW9uLmgKaW5kZXggZTUyN2Y4MTUyNTdjMDg3MDljYjRmYTE1YjliMDc5NTkyMWMwMTNmOS4uMWY3
NjgwODU2NGVkNGRiNmU1YzBjZTFlYjYzMDIxMTcxZTkwZWQxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC04Niw4ICs4Nyw3IEBAIGNsYXNzIFNh
bmRib3hFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTYW5kYm94RXh0ZW5zaW9uPiB7CiAg
ICAgICAgCiAgICAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFuZGxlW10+IG1fZGF0YTsKLSAgICAgICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKKyAgICAgICAgVmVjdG9yPEhhbmRsZT4gbV9kYXRhOwogI2Vsc2UKICAgICAg
ICAgSGFuZGxlIG1fZW1wdHlIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggOWQ4YjllYjFiN2Y1MGFkMmRhNmUx
NWUwMzI4NDE4YmMzYjBhYjMzZC4uYjhlNzQzZDIzNjBjZmVlZmMxN2JjYTI0ZDU5NzExY2RkNThh
NWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25N
YWMubW0KQEAgLTE2MywzNCArMTYzLDMzIEBAIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKCFtX2RhdGEpOworICAgIEFTU0VSVChtX2RhdGEuaXNFbXB0eSgp
KTsKIAotICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlW10+KHNpemUpOwotICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9kYXRhLnJlc2l6ZShzaXpl
KTsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpIDwgbV9zaXplKTsgCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtp
XTsKIH0KIAogY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKIHsKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9zaXplKTsKKyAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1
cm4gbV9kYXRhW2ldOwogfQogCiBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX3NpemU7CisgICAgcmV0dXJuIG1fZGF0YS5z
aXplKCk7CiB9CiAKIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsg
KytpKQotICAgICAgICBlbmNvZGVyIDw8IG1fZGF0YVtpXTsKKyAgICBmb3IgKGF1dG8mIGhhbmRs
ZSA6IG1fZGF0YSkKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBoYW5kbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggZTAwOTRi
OTZiYjE4OWE2OTYzNTVkZTBkYjA4MDMwYmMwYTgyZDcwOS4uYTUzMWNiNGQ1Y2NmODZiMDFlMmNl
YjY1NDRjNzRmZjY0Nzc3NmM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBib29s
IFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAgICAgaWYgKHZlcnNpb25JbmZvU2l6ZSA9PSAw
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPih2ZXJzaW9uSW5mb1NpemUpOworICAgIFZlY3RvcjxjaGFy
PiB2ZXJzaW9uSW5mb0RhdGEodmVyc2lvbkluZm9TaXplKTsKIAogICAgIGlmICghR2V0RmlsZVZl
cnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAs
IHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdl
dCgpLCAiUHJvZHVjdE5hbWUiKTsKLSAgICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8o
dmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0g
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7Cisg
ICAgbV9kZXNjcmlwdGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCks
ICJGaWxlRGVzY3JpcHRpb24iKTsKICAgICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3Jp
cHRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklM
RUlORk8qIGluZm87CiAgICAgVUlOVCBpbmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVX
KHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgTCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXpl
KSB8fCBpbmZvU2l6ZSA8IHNpemVvZihWU19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1
ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8s
ICZpbmZvU2l6ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBtX21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5k
d0ZpbGVWZXJzaW9uTFM7CiAgICAgbV9tb2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0Zp
bGVWZXJzaW9uTVM7CkBAIC0xOTMsMTEgKzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZl
dGNoSW5mbygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5
cGVzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBl
Iikuc3BsaXQoJ3wnLCB0eXBlcyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRh
LmRhdGEoKSwgIk1JTUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gZXh0ZW5zaW9uTGlzdHM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdl
dCgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRW
ZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgn
fCcsIGV4dGVuc2lvbkxpc3RzKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0g
ICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIiku
c3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZv
RGF0YS5kYXRhKCksICJGaWxlT3Blbk5hbWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAg
ICAgU3RyaW5nIHR5cGUgPSB0eXBlc1tpXS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4
MzQwNTdlNWMzNDY4OGIxM2ZmNWUxNTdmOGQ2MDMuLjI3NWYwMDQ5NWY2MzU0Y2FmNzZiYjU0ZGU2
YWVjZDg2YmE5MmVhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKQEAgLTUzMiw4ICs1MzIsOCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0
UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZT
dHJpbmdSZWYgZGlkUmVtb3ZlRGVmYXVsdHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVm
YXVsdFNldHRpbmdzRnJvbVNhZmFyaTNCZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0
RGVmYXVsdHMgPSAhYm9vbGVhblZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShkaWN0LCBkaWRSZW1vdmVEZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0g
c3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0g
c3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOworICAgIFZlY3RvcjxDRlR5cGVS
ZWY+IGtleXMoY291bnQpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IHZhbHVlcyhjb3VudCk7CiAg
ICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhkaWN0LCBrZXlzLmdldCgpLCB2YWx1ZXMu
Z2V0KCkpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE1ZTI3Zjk4NWMyY2Q5OTZkZTlhMDdlZWE5YjU5
ZmRkMGY0OGU3ODcuLjIyZjVhMjYyYzFkZTFiODE5ZGNlYWYzYWJmYjc3YzBmMzk4MWJjNzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xNzg0LDggKzE3ODQsOCBAQCB2b2lk
IFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAg
ICBtZW51SXRlbUluZm8uZk1hc2sgPSBNSUlNX1NUUklORzsKICAgICA6OkdldE1lbnVJdGVtSW5m
byhoTWVudSwgaW5kZXgsIHRydWUsICZtZW51SXRlbUluZm8pOwogCi0gICAgYXV0byBidWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdDSEFSW10+KG1lbnVJdGVtSW5mby5jY2ggKyAxKTsKLSAgICBt
ZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1ZmZlci5nZXQoKTsKKyAgICBWZWN0b3I8V0NIQVI+
IGJ1ZmZlcihtZW51SXRlbUluZm8uY2NoICsgMSk7CisgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURh
dGEgPSBidWZmZXIuZGF0YSgpOwogICAgIG1lbnVJdGVtSW5mby5jY2grKzsKICAgICBtZW51SXRl
bUluZm8uZk1hc2sgfD0gTUlJTV9JRDsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBXZWJW
aWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgOjpE
ZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0TWVudSk7CiAgICAgbV9jdXJyZW50Q29udGV4dE1l
bnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5nZXQoKSwgbWVudUl0ZW1J
bmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5j
Y2gpOwogICAgIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRN
ZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lEKTsKIAogICAgIGlmIChhY3Rpb24gPj0gQ29udGV4
dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334355</attachid>
            <date>2018-02-21 02:33:52 -0800</date>
            <delta_ts>2018-02-21 03:08:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221193351.patch</filename>
            <type>text/plain</type>
            <size>76105</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li5jOGJhYWUwODNkMWZmOTE1
NzhiMmRkOWRmNDQ3ZDNjMDJlYjU4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmg6CisKIDIwMTgtMDItMjAgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlIHNob3VsZCBlbGltaW5hdGUgZ2V0dGluZyBhcmd1bWVudCBsZW5ndGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGExYWYw
OGI4NTdjNmM0ZWMzZThkYjk4NjRkZWMxYzE3NjU2OWYwOC4uMDk3MjFkN2RmM2M2YTI5Yzg5OTZl
NzI0ZTJmNjJkMGNmYTI0Zjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0wMi0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIHVzZSBgbWFrZV91bmlxdWU8Y2hh
cltdPihudW0pYCBvciBgbmV3IGNoYXJbbnVtXWAsIGFsbG9jYXRpb24gaXMKKyAgICAgICAgZG9u
ZSBieSB0aGUgc3lzdGVtIG1hbGxvYyBpbnN0ZWFkIG9mIGJtYWxsb2MuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpc3N1ZQorICAgICAgICBieSwKKworICAgICAgICAxLiBJbnRyb2R1Y2UgVW5pcXVl
QXJyYXk8VD4uIEl0IGFsbG9jYXRlcyBtZW1vcnkgZnJvbSBGYXN0TWFsbG9jLiBXaGlsZSBDKysK
KyAgICAgICAgYXJyYXkgd2l0aCBgbmV3YCBuZWVkIHRvIGhvbGQgdGhlIHNpemUgdG8gY2FsbCBk
ZXN0cnVjdG9yIGNvcnJlY3RseSwgb3VyCisgICAgICAgIFVuaXF1ZUFycmF5IG9ubHkgc3VwcG9y
dHMgdHlwZSBUIHdoaWNoIGRvZXMgbm90IGhhdmUgYSBub24gdHJpdmlhbCBkZXN0cnVjdG9yLgor
ICAgICAgICBJdCByZWR1Y2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgc2luY2Ugd2UgZG8gbm90IG5l
ZWQgdG8gdHJhY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIGFycmF5IGNvbXBhcmVkIHRvIHN0
YW5kYXJkIGBuZXcgVFtdYC4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQuCisK
KyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FMTE9D
QVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10gb3Bl
cmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAgICAg
ICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpG
YXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6Om9w
ZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAgKFdU
Rjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3RhY2tT
aG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAgKFdU
Rjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6Cisg
ICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICog
d3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAgICAg
ICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6OmZv
cmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5kcyB0
byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggYTFmZmY4OWU5ZTgxNzY5ZWFjMTBkMDAyYTc0ZTY1ODgxZmE5MTJmNy4uM2M2NWE5N2I5MWU5
ZTIwYzIyZDdhMmIxNzNkN2NmYTU1MWMyMWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBA
CisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rv
ciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3NqaXQvQ29t
cGlsZWRTZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVm
ZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9u
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpG
RlRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFnZVN1
cmZhY2VWZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJ
bWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVTdWJS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbUxv
Zyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
Y29ubmVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjEgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVuZGVyVHJlZUJ1aWxkZXJdIE1vdmUg
UmVuZGVyRnVsbFNjcmVlbjo6d2lsbEJlUmVtb3ZlZCgpIG11dGF0aW9uIGxvZ2ljIHRvIFJlbmRl
clRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBlZTkzNGUxOWIz
ZDFhNGNhOGQxYzZiYWQ1ZjIwLi5mYTNkYTlkYWI0NzRiMmRjZTMxMzU5NjY1MTBjZDRhNzc3YzZj
YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVE
LCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogcGFsL3dpbi9Mb2dnaW5nV2lu
LmNwcDoKKyAgICAgICAgKFBBTDo6bG9nTGV2ZWxTdHJpbmcpOgorCiAyMDE4LTAyLTIwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBI
QVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGFlMGRhZWJiYjQ5Y2YyMTgx
NDg5YWEyNDY3MThlMjUxOWZiNmZhMC4uNTM1MjQ5ZjU3NDZlMWY2NWY3YmIwNzE1NDJkYTY1NGU3
Y2EzM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3Vu
aXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBV
bmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3Rl
bVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0
cFByb3h5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6
CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL3dp
bi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nTGV2ZWxTdHJpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICogU2hhcmVkL21hYy9T
YW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlIGNvbnN0KToKKwog
MjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBL
ZXlib2FyZCBmb2N1cyBub3QgZm9sbG93aW5nIFZvaWNlT3ZlciBjdXJzb3IgaW50byB3ZWIgY29u
dGVudCBvciB3aXRoaW4gd2ViIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMDYxZmZkMzgyYTgzNmMyZTI0MjViODJhYzE3MWEzMWZlMmZmODgxYy4uMThiMTdjMzA4M2U2
N2I5MjE3OThiZmUwZWI1MWY4NmM3NmI0ZWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNp
bmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3Rl
YWQuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKiBXZWJQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2Vz
VG9DRlByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZp
ZXc6Om9uTWVudUNvbW1hbmQpOgorCiAyMDE4LTAyLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgT1BFTkdMIG1hY3JvcyB0byBiZSBtb3JlIGNsZWFyIGFi
b3V0IHdoaWNoIE9wZW5HTC9FUyBXZWJHTCB1c2VzIG9uIENvY29hCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwNTg3MjU5M2Y2ZGJiOWE4NTNhODE2
MWE2OWJiZGY3NDJhMjMzM2EzLi4xMzY3NzE1M2Q1ZmEwNGRmYjhlOWZlYTdlNDQ4YWM0MTdmOWM2
ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAg
LTQ5LDEwICs0OSwxMCBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhD
RlN0cmluZ1JlZiBzdHJpbmcpCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oY29udmVydGVk
U2l6ZSkgPT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1ZmZlckxlbmd0aCkg
PT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJC
dWZmZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0
ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBW
ZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
KHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgc3Rh
dGljX2Fzc2VydChzaXplb2YoVW5pQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlVuaUNoYXIgYW5k
IFVDaGFyIG11c3QgYmUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIH0KIAogQ0ZT
dHJpbmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBK
U1N0cmluZ1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlS2lsbHMuaAppbmRleCBlYTg1OWM0YTlhMTJmZTRkZGYyZTUyYzJiODY4NmQyMDg4ODNi
ODc0Li5hMjgyMjljNTY4YjQxMmFjNDg4N2MzNTgxNjZmYzIyZGU1OTE5ZmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKQEAgLTc0LDYgKzc0
LDcgQEAgY2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxTZXQgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEtpbGxTZXQoKQogICAgICAgICAg
ICAgOiBtX3dvcmQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBhLi4w
YzIwNzAzZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDggQEAg
dm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9
IDA7CiAgICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6OmFt
b3VudE9mTm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVT
cGFjZSArIDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJlZml4
TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCArIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRhdGEo
KSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1vdW50
T2ZOb2RlV2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZpeExl
bmd0aF0gPSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9mTm9k
ZVdoaXRlU3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6
ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlu
a0J1ZgogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihj
dXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNT
RVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1
dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRw
dHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0YXJ0
LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJmZWIy
ZTIyMWQ4MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2RhNmFh
YmQwOTE2NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUG9s
eW1vcnBoaWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29u
c3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8dWludDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBm
YXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQogICAg
ICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXgg
ZDk2YWU1NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFiMDQ2
NWJhMWE4YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTg0LDcgKzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
ICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwq
IG93bmVyLAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBj
b25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8dWludDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90
PiYmIGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToK
ICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1
aW50MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2Nh
bGxOb2RlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDc4
Y2E5MzAzZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRlNjM5YzkzZTRlYTg5
MzA2YTk3N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcApAQCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAg
IAogICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwogICAg
IFZlY3RvcjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVy
Q29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBm
YXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgp
KTsKKyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2FsbENh
c2VzLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2FzZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IDA2MDJlNGQ5NDExNDUwY2M4ODNjMTI4M2Q3M2U1ZGMyN2E1MjdjNzEuLmRjZDdmMzI2
ZDQ0OTdkYTdhOGVkMWQwM2QxN2E0MTU5YTY5ZmMzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC03MTgsMTcgKzcxOCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBpcyB0
aGUgVVRGLTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS9kZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdPUkQg
bGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVu
Z3RoLCBidWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRv
U3RyaW5nKGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVjdG9y
PHdjaGFyX3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmRh
dGEoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9y
dCBuZXR3b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRp
cmVjdG9yeVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KFBBVEhfTUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkKKyAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZmZXIu
ZGF0YSgpLCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3Ry
aW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKKyAg
ICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgp
KTsKICNlbmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAppbmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4zYTFl
YTM3NDgyNDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zW21heE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFw
W251bU9wY29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0
YXRzQXJyYXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9pZCBs
bGludF9lbnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6c19l
eGNlcHRpb25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV07Ci0KICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2MWI1
YjI2ZmM4NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQwMjQy
ZGM2NGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNjYs
NyArNjYsNyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNf
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2VwdGlv
bkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2RlIHNf
b3Bjb2RlTWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkqIHNf
b3Bjb2RlU3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5o
CmluZGV4IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJkZTkx
M2ZkZjRkYjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCBjZTZlNGMxZjQ1Y2I5ZWI5ZTU4NWU3MmJkYzBlNzBhYjY3YmFlZmJi
Li5iNjY3ZWQ3MmU2NTIzMzE0NzY1YTIwMjgxZmZhYjM0MzUxNmE3MmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MzYsMTEgKzUzNiw2IEBAIFZNOjp+Vk0oKQogICAg
IGRlbGV0ZSBjbGllbnREYXRhOwogICAgIGRlbGV0ZSBtX3JlZ0V4cENhY2hlOwogCi0jaWYgRU5B
QkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYgKG1fcmVnRXhwUGF0
dGVybkNvbnRleEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZGVsZXRl
IG1fcnRUcmFjZUxpc3Q7CiAjZW5kaWYKQEAgLTkwNyw4ICs5MDIsOCBAQCBjaGFyKiBWTTo6YWNx
dWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQogCiAgICAgbV9yZWdFeHBQYXR0ZXJuQ29u
dGV4dExvY2subG9jaygpOwogICAgIGlmICghbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQot
ICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVy
bkNvbnRleHRCdWZmZXJTaXplXTsKLSAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyOworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBtYWtlVW5pcXVlQXJy
YXk8Y2hhcj4oVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIG1fcmVn
RXhwUGF0dGVybkNvbnRleEJ1ZmZlci5nZXQoKTsKIH0KIAogdm9pZCBWTTo6cmVsZWFzZVJlZ0V4
cFBhdHRlcm5Db250ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
ZDczZmM2Yjk3NDY4YzhiNDFkYTFlYTBmZjg5MDhkZGZkM2RiNDJhNS4uNzZkYjA1ODJmYWYzYTI2
YjE1NjdmMjk4NDk1YjY4MWY4OGY1YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUg
PHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZp
Yy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5
bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5B
QkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtNjg1LDcgKzY4Niw3IEBAIGNsYXNzIFZNIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZN
PiB7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSA4MTkyOyAv
LyBTcGFjZSBhbGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAotICAg
IGNoYXIqIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBVbmlx
dWVBcnJheTxjaGFyPiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CiAgICAgTG9jayBtX3Jl
Z0V4cFBhdHRlcm5Db250ZXh0TG9jazsKICAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNv
bnRleEJ1ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAppbmRleCA0ODI0
YjFjNmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi4yNWI4ZjgxNDAzOGIyYWUxY2E0
MmE5MjRmZWUzNmU5NTRhZWZhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hl
YXBWZXJpZmllci5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAKIHBy
aXZhdGU6CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9yZSgi
QmVmb3JlIE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGEyNWJmMzYzN2Zh
NTk2NjJhNTViOTU2ZGRhZWRlODNlYWY1Y2UwLi5lYmFhNTUxMWQxMGRkZjRmNDM2YjU2NjlmYmJi
ZWMxZTBiMTg3Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTYwMiw2ICs2MDIsNyBAQAogCQlERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9u
Q3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0
b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2
RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBo
aWNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzAwRTUyMTIw
M0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMx
MUZCMTUxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdyb3VwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJl
Z2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lz
dGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1LDEwICs4NTYsMTAgQEAK
IAkJCQlBOEE0NzI3RjE1MUE4MjVBMDA0MTIzRkYgLyogRGlzcGF0Y2hQdHIuaCAqLywKIAkJCQkw
RjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovLAogCQkJCUE4QTQ3Mjgw
MTUxQTgyNUEwMDQxMjNGRiAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi8sCi0JCQkJRkUwNUZBRTYx
RkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLywKLQkJCQlBRDY1M0RBODIwMDZC
NkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOTcxNTFBODI1
QTAwNDEyM0ZGIC8qIGR0b2EuY3BwICovLAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAv
KiBkdG9hLmggKi8sCisJCQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFp
dHMuaCAqLywKKwkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRz
LmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywK
IAkJCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLywKIAkJCQlBOEE0
NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCkBAIC0xMDgzLDYgKzEw
ODQsNyBAQAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAog
CQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlBOEE0
NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCisJCQkJRTMwMEU1MjEyMDNE
NjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAw
OUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAv
KiBVbnNhZmVQb2ludGVyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVV
SUQuY3BwICovLApAQCAtMTA5Miw3ICsxMDk0LDYgQEAKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0
MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZl
Y3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3Mu
aCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAg
Ki8sCiAJCQkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCAqLywKIAkJ
CQkwRjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAqLywKIAkJCQk5NzRDRkM4
RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTEwMSw2ICsxMTAyLDcgQEAK
IAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKIAkJCQlFNEEw
QUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCQlFNEEwQUQzODFB
OTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCisJCQkJRkUwNUZBRkUxRkU1MDA3NTAw
MDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQyNCw3ICsxNDI2LDYgQEAKIAkJCQkwRjY2
QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBD
b21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0
MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTE1MzMsNiArMTUzNCw3IEBACiAJCQkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8q
IFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAw
NTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZG
MUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fz
c2VydGlvbnMuY3BwCmluZGV4IDE1OGNiZWY3NjEyM2Q5M2Q3ZjQxZjJiZmYyMDE2NTZlMjk4ZThh
MDguLmRiYWRhZWU2Y2E1NDA2MDAxMjk2NDM5YTIzMDQ1OTdlNWJiYTc2MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuY3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVy
cl93aXRoX3ByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIGZvcm1hdCwgdgog
ewogICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4ocHJlZml4KTsKICAgICBzaXplX3Qg
Zm9ybWF0TGVuZ3RoID0gc3RybGVuKGZvcm1hdCk7Ci0gICAgYXV0byBmb3JtYXRXaXRoUHJlZml4
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCAr
IDEpOwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBwcmVmaXgsIHByZWZpeExl
bmd0aCk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCkgKyBwcmVmaXhMZW5ndGgs
IGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9ybWF0V2l0aFByZWZp
eChwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0
aFByZWZpeC5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBtZW1jcHkoZm9ybWF0
V2l0aFByZWZpeC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsK
ICAgICBmb3JtYXRXaXRoUHJlZml4W3ByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aF0gPSAwOwog
Ci0gICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIGFyZ3Mp
OworICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSwgYXJn
cyk7CiB9CiAKIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGlu
ZShjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKQEAgLTE2NywxMiArMTY3LDEyIEBA
IHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShjb25zdCBj
aGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGZvcm1hdFdpdGhOZXdsaW5lID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZvcm1hdExl
bmd0aCArIDIpOwotICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5nZXQoKSwgZm9ybWF0LCBm
b3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoTmV3bGluZShmb3JtYXRM
ZW5ndGggKyAyKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBmb3JtYXQs
IGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoXSA9ICdc
bic7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoICsgMV0gPSAwOwogCi0gICAg
dnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBhcmdzKTsKKyAg
ICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBhcmdzKTsK
IH0KIAogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MjIwYmFmZDM0OGIzMDYzMzgzYWI3YTU0MmRjMmVkZTExMWFjNzA4NS4uZTk3ZDA2MTkzYzBhMWRm
ZmM4MzBlMGNhN2RlNjllNTA5ZDY1OTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIzMyw2
ICsyMzMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBVbmV4cGVjdGVkLmgKICAgICBVbmlTdGRF
eHRyYXMuaAogICAgIFVuaW9uRmluZC5oCisgICAgVW5pcXVlQXJyYXkuaAogICAgIFVuaXF1ZVJl
Zi5oCiAgICAgVW5zYWZlUG9pbnRlci5oCiAgICAgVk1UYWdzLmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRl
eCA3ZWMyMWFlNzk4NTA3NGY2MzlkZjRiYWNiMDAzNmFlMWZjN2UwMjZhLi42NjcyY2U0NmQ5ZjFj
MmI0M2EzOTFlNTRiNjYyNDQzZjA4ZjkzOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9G
YXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yMDAsNiAr
MjAwLDI2IEBAIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBzdGF0aWMgdm9pZCBmcmVlKHZvaWQq
IHApIHsgZmFzdEZyZWUocCk7IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
RmFzdEZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPFQ+Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNv
bnN0CisgICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVt
b3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitzdHJ1Y3QgRmFzdEZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJh
dG9yKCkoVCogcG9pbnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nh
c3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQor
fTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC0yMDgs
NiArMjI4LDcgQEAgdXNpbmcgV1RGOjpmYXN0U2V0TWF4U2luZ2xlQWxsb2NhdGlvblNpemU7CiAK
IHVzaW5nIFdURjo6RmFzdEFsbG9jYXRvcjsKIHVzaW5nIFdURjo6RmFzdE1hbGxvYzsKK3VzaW5n
IFdURjo6RmFzdEZyZWU7CiB1c2luZyBXVEY6OmlzRmFzdE1hbGxvY0VuYWJsZWQ7CiB1c2luZyBX
VEY6OmZhc3RDYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RGcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCA3
ZjZhMDJjZWYzMWIxYTI5ZmFjNjM4NGNkMmFjZTNlOGY3NTBjMGJhLi42NmYxMGFhOWJkNWJiYTA5
YWM1NjExMzZhZDM1YmY1ZTg0ZTQ4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxs
b2NQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAtNjYsNiArNjYsMTEg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFsbG9jID0gRmFzdE1hbGxvYz4gY2xh
c3MgTWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxw
dHIpOwogICAgIH0KIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9wdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDZlZmQw
NzRkZTI3MDllNjI3YWNlYjNjODNiOTQzMzEzNDJmNzVhZmQuLjdlMzJhMzViYWUzYzdiNTZhOGJl
ODViN2QxOGQxZTU1NzlhMGIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hv
dC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNyw3ICszOCw3IEBAIGNs
YXNzIFN0YWNrU2hvdCB7CiAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgewogICAgICAgICBp
ZiAoc2l6ZSkgewotICAgICAgICAgICAgbV9hcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpb
XT4oc2l6ZSk7CisgICAgICAgICAgICBtX2FycmF5ID0gbWFrZVVuaXF1ZUFycmF5PHZvaWQqPihz
aXplKTsKICAgICAgICAgICAgIGludCBpbnRTaXplID0gc2l6ZTsKICAgICAgICAgICAgIFdURkdl
dEJhY2t0cmFjZShtX2FycmF5LmdldCgpLCAmaW50U2l6ZSk7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGludFNpemUpIDw9IHNpemUpOwpAQCAtNTUsNyAr
NTYsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogICAgIFN0YWNrU2hvdCYgb3BlcmF0b3I9
KGNvbnN0IFN0YWNrU2hvdCYgb3RoZXIpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
dm9pZCpbXT4gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+KG90aGVyLm1fc2l6
ZSk7CisgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+KG90aGVy
Lm1fc2l6ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvdGhlci5tX3NpemU7IGktLTspCiAg
ICAgICAgICAgICBuZXdBcnJheVtpXSA9IG90aGVyLm1fYXJyYXlbaV07CiAgICAgICAgIG1fc2l6
ZSA9IG90aGVyLm1fc2l6ZTsKQEAgLTEwNiw4ICsxMDcsOCBAQCBjbGFzcyBTdGFja1Nob3Qgewog
ICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCoqIGRlbGV0ZWRWYWx1ZUFycmF5KCkgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0K
LSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbV9hcnJheTsKKworICAgIFVuaXF1
ZUFycmF5PHZvaWQqPiBtX2FycmF5OwogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9T
eXN0ZW1GcmVlLmgKaW5kZXggM2VmNzU2MjgyY2YyMGQ0MGQ4YzYxODU0Nzk0NmQwNGY1YmFlY2Vm
NS4uNzNiNjkzZjA2ODM4YmNjOGNjYzgzYTQ2OGQ0ZGJjM2E4YWI4MmY4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZy
ZWUuaApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIHN0cnVjdCBTeXN0ZW1GcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwogICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwpAQCAtMzksMTEgKzQxLDEy
IEBAIHN0cnVjdCBTeXN0ZW1GcmVlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBT
eXN0ZW1GcmVlPFRbXT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50
ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CiAgICAgfQotCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYTA4ZWFhNTk0MGUyNGJiNTll
NzBjMjIzMTgwYWVhMDAwM2FhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9V
bmlxdWVBcnJheS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0
cjxUW10sIEZhc3RGcmVlPFRbXT4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJy
YXk8VD4gbWFrZVVuaXF1ZUFycmF5KHNpemVfdCBzaXplKQoreworICAgIHVzaW5nIFUgPSB0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgVSogc3RvcmFnZSA9IHN0YXRp
Y19jYXN0PFUqPihmYXN0TWFsbG9jKHNpemVvZihVKSAqIHNpemUpKTsKKyAgICBWZWN0b3JUeXBl
T3BlcmF0aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBzaXplKTsK
KyAgICByZXR1cm4gVW5pcXVlQXJyYXk8VD4oc3RvcmFnZSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCit1c2luZyBXVEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJy
YXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IGFiY2FiZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZjN2M5MmMu
LjI3ZmMxNDUzYTBkMGEwNjcyZTNkNzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02
NSwxMCArNjUsMTUgQEAgc3RydWN0IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRlbXBsYXRl
IDxib29sIG5lZWRzSW5pdGlhbGl6YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQs
IHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRlPGJvb2wg
aWdub3JlLCB0eXBlbmFtZSBUPgotc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBpZ25v
cmUsIFQ+Cit0ZW1wbGF0ZTxib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBU
Pgorc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNl
dCwgVD4KIHsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKworICAgIHN0
YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAg
ICAgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpm
b3JjZUluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTc5LDYgKzg0LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBm
YWxzZSwgVD4KICAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIp
CiAgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGlu
aXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
QEAgLTg4LDYgKzk4LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0cnVlLCBU
PgogICAgIHsKICAgICAgICAgbWVtc2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIq
PihlbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAg
ICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPGJvb2wg
Y2FuTW92ZVdpdGhNZW1jcHksIHR5cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBAIHN0cnVj
dCBWZWN0b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JU
cmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlh
bGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0KIAorICAg
IHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAg
ICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0
aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJ
bml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCog
c3JjLCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3Rv
clRyYWl0czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0YzNiNTVm
NDA4ZjJmMWEuLjVlNjJjNWFjMmRjOWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VO
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHAKQEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAgICAg
b3V0cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAg
ICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihu
dW1iZXJPZkNoYW5uZWxzKTsKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjpt
YWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fc291cmNl
Q2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxz
KTsKKyAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0
Kj4obnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5uZWxzW2ld
ID0gYnVmZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggZjRl
NjNhODU5YzAxYjQxNWUxY2YzNDdmMjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3MzE4MjFm
YTI1N2EwOGQxMzU4MGZhMjU5MGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRlIDx3dGYv
TG9jay5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEwOSw4ICsxMTAsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmlu
YWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8QXVkaW9C
dWZmZXI+IG1fYnVmZmVyOwogCiAgICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIgYW5kIGRl
c3RpbmF0aW9uLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VD
aGFubmVsczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFu
bmVsczsKKyAgICBVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7Cisg
ICAgVW5pcXVlQXJyYXk8ZmxvYXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICAvLyBV
c2VkIGZvciB0aGUgImdhaW4iIGFuZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgogICAgIFJl
ZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dp
bmdXaW4uY3BwCmluZGV4IDhjYTRjOTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYwN2RjMjUu
Ljk1Y2M4ZDNjNzJhZWU2NjE3NTljNjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5n
IGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihs
ZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0
RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5n
ZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdF
bnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAg
ICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
aml0L0NvbXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAy
YmM3MDg4ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcg
QEAgY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGls
ZWRTZWxlY3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNl
bGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykg
JiYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMmNkYWM5
MTIyZWY5ZWE3NzI3OWJjZGMwZDYzYTRlYWRmZTk3OGVkZC4uMDI5N2NlMGFkMjM1NGNmYWU4MjI5
ZmFiM2U4ZWU1MWQ4NzkzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTk5LDYgKzk5LDcgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9D
aGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNTUzLDcgKzE1NTQsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIlRl
eHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gemVy
bzsKKyAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICAgICAgaWYg
KHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAgICAgICAg
ICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhm
b3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVs
bHB0cik7CkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAg
ICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1YkltYWdlMkQi
LCAiYmFkIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+
KHNpemUpOworICAgICAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFy
PihzaXplKTsKICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29weVRleFN1
YkltYWdlMkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTU3NjEsNyArNTc2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51CiAgICAgICAgICAgICB8
fCBhdHRyaWJWYWx1ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsyXQog
ICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVm
ZmVyVmFsdWVbM10pKSB7CiAKLSAgICAgICAgYXV0byBidWZmZXJEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxHQzNEZmxvYXRbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9
IG1ha2VVbmlxdWVBcnJheTxHQzNEZmxvYXQ+KGJ1ZmZlclNpemUpOwogICAgICAgICBmb3IgKEdD
M0R1aW50IGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAgICAgICAgICAgICBi
dWZmZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKICAgICAgICAgICAgIGJ1
ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKQEAgLTU5MDcsMTUg
KzU5MDgsMTQgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3VyZU5vdE51
bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBjYXBhY2l0
eSkKLSAgICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQotICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkKKyAgICA6
IG1fYnVmZmVycyhjYXBhY2l0eSkKIHsKIH0KIAogSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEludFNp
emUmIHNpemUpCiB7Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG1fY2FwYWNpdHk7
ICsraSkgeworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX2J1ZmZlcnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQo
KTsKICAgICAgICAgaWYgKCFidWYpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MzAsNyArNTkz
MCw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGkgPSBzdGQ6Om1p
bihtX2NhcGFjaXR5IC0gMSwgaSk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVmZmVycy5zaXplKCkg
LSAxLCBpKTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSArNTkzOCw5IEBAIElt
YWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hl
OjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAotdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KGlu
dCBpZHgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2Fj
aGU6OmJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGludCBpID0gaWR4OyBp
ID4gMDsgLS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAtLWkpCiAgICAgICAg
IG1fYnVmZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4
IDZhMzU3NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQyYTM5MTk1OWRiYzE0
ZWVjYWZiMGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUxNyw5ICs1MTcs
OCBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdQVUJhc2VkQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUgcG9pbnRlciByZXR1
cm5lZCBpcyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAgICAgSW1hZ2VCdWZm
ZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwotICAgICAgICBpbnQg
bV9jYXBhY2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVfdCBpZHgpOworICAg
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJzOwogICAg
IH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUgeyAwIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3IuY3BwCmluZGV4IDMwMTI1YWViMzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4NWMxNzMyNmFlZjAu
LmIyNTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAt
Mjc1LDggKzI3NSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgICAgIG1fcG9zdEZpbHRlclBhY2tz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwogICAgIH0K
IAotICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0Kltd
PihudW1iZXJPZkNoYW5uZWxzKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBtX3NvdXJjZUNoYW5u
ZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7Cisg
ICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVy
T2ZDaGFubmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVscyhudW1i
ZXJPZkNoYW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNz
b3IuaAppbmRleCBhMTFkODdkZTU3NWM1MmVhMzFhMjJiOTgzYTFlMzQ2Y2JkMmFlYmQ1Li5mNzE2
Y2VmNzNhMzVlZTZlZTg4YmE5OGJiOThkMjYyNTM3YmQ2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIgogI2luY2x1ZGUgIlpl
cm9Qb2xlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBjbGFzcyBEeW5h
bWljc0NvbXByZXNzb3IgewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0
ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxa
ZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29u
c3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9k
ZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVy
cyh1bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVkRnJlcXVl
bmN5IC8qIDAgLT4gMSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQg
Z2FpbiwgZmxvYXQgYW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA0MDYyMGZiODQxMDFmNjZiNWZj
MDlhYTNlZmIxMjU4MTNiZmNkMDcxLi43MjdjOTJhM2EwN2RlZDkzNzM3NjRjYzFhZGNjYmZlYWMw
NGQ1MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgR19FTkRfREVDTFMKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBGRlRGcmFtZSB7CiAjaWYgVVNF
KFdFQkFVRElPX0dTVFJFQU1FUikKICAgICBHc3RGRlRGMzIqIG1fZmZ0OwogICAgIEdzdEZGVEYz
MiogbV9pbnZlcnNlRmZ0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21wbGV4W10+
IG1fY29tcGxleERhdGE7CisgICAgVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4gbV9jb21w
bGV4RGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKICAgICBBdWRpb0Zsb2F0
QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1l
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9G
RlRGcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggNjU2NmMxODE4YTUyNTE5MzQzNjhlOTVmMmQyYjgy
N2QxNTllMzE5Ny4uMWI2NmU0MDA2M2I2ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVjMGUzMmE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1l
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDogbV9GRlRT
aXplKGZmdFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihs
b2cyKGZmdFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RG
RlRGMzJDb21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBt
X2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZG
VERhdGFTaXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFT
aXplKG1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9G
RlRTaXplKSkKIHsKQEAgLTY2LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZyYW1lKCkKIEZGVEZy
YW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBtX0ZGVFNpemUoZnJh
bWUubV9GRlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRTaXplKQot
ICAgICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4o
dW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29tcGxleERhdGEobWFr
ZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRT
aXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRT
aXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNp
emUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9y
bWF0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRD
b252ZXJ0ZXIuaAppbmRleCBkZDk3YjM3Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgzZTY5OWI1NTQwZjUz
Li45ZDgyMDRjOGEyNDY2MGZjNzcyYjBjZjdiNTY1MDg3YTM0NTE1YWFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIg
ewogICAgIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25lbnRzID0g
NDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0gNDsKLSAg
ICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVp
bnQ4X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29t
cG9uZW50KTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5p
cXVlQXJyYXk8dWludDhfdD4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5
dGVzUGVyQ29tcG9uZW50KTsKIAogICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVybWVkaWF0
ZVNyY0RhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgRm9ybWF0Q29u
dmVydGVyIHsKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0IGludCBtX3Ny
Y1N0cmlkZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CisgICAgVW5p
cXVlQXJyYXk8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNGU3NTdhMGUxZWY3NDQ3Y2U0
NzkzNDg2YTc0MWRmODgyZDYyOWQ0MC4uMzIyYmVkMGI4YzU3OWZjOTUxZmI2NTYxMjc3ODRjOGIw
MzQwODQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTE0Niw3ICsxNDcsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXREYXRhRm9y
bWF0KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bQogYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXpl
aSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUs
IEdDM0RpbnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBhY2tBbGlnbm1lbnQg
PT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gNCB8fCB1
bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJb
XT4gemVybzsKKyAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgIGlmICh3
aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZTsKICAg
ICAgICAgR0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5
cGUsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgJnNpemUsIG51bGxwdHIpOwpAQCAt
MTU0LDcgKzE1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJj
ZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLSAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihzaXpl
KTsKKyAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihzaXplKTsK
ICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAppbmRleCAxODFiNDY3MTJlNmE4NDE3MDBiNjJkYzFkMWE5NmUwZjY1YmYzY2ZhLi4y
ZTc0ODc5ZDhkMmM2MmI2MGI0MTJjZDhhMjMyYzQyMzkyMzhhNjlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVT
RShDQSkKQEAgLTEyNjEsNyArMTI2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEIDogcHVi
bGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fZGVj
b2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0YTsKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwor
ICAgICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CiAjZW5k
aWYKICAgICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRtbERvbVNvdXJjZSBt
X2ltYWdlSHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IDcyOWY4
NDNkZjk3YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJiZWZmYjgzODBmODdh
YWQ3YzVjMDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtNDQs
NiArNDQsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+CiAKICNp
ZmRlZiBERUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXREaXJ0eVJl
Y3RzKEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAgICAgfQogCiAgICAg
RFdPUkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgpLCAwLCAwKTsKLSAg
ICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJb
XT4oZGF0YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJh
eTx1bnNpZ25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwogICAgIGlm
ICghOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRhdGEpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGViNTAyODE1MjJhZjEx
YjIxYzE3Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0MzI1OWYzNTA0ZGYx
ZDlmZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKQEAgLTM0
MCw3ICszNDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkgLyAyOwog
CiAgICAgdWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90
W10+IHRtcCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUpOworICAgIGF1dG8g
dG1wID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90KiB0b3AgPSBzb3Vy
Y2UgKyAoaSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDhlYjZmNGUzYjZh
YWE3ZGNjMWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZmN2E1YTg5NDg1ZDU0
YmY5MjkxMzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00NzgsNyArNDc4LDcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZShi
b29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291bGQgcHJlbXVsdGlw
bHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAvLyBQcmVmZXIgdG8g
bWFubnVhbGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRzIHRvIFJHQkE4IGZv
cm1hdHMgaW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAxNikgewotICAgICAg
ICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4obV9p
bWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhl
aWdodCAqIDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1aW50OF90
KiBkZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAgICAgY29u
c3QgcHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNpemVvZih1
aW50MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1MjY0Ni4u
ODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1cmU6OnVw
ZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogICAg
IGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhlIHNtYWxs
ZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6ZWQKICAg
ICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1fdGlsZXMu
Ym9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAgICAgICAg
c3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVzLmJvcmRl
clRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0byB0ZW1w
QnVmZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsKKyAgICBh
dXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNpemUpOwog
CiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90
aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0aWxlICUg
bV90aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhlNmRiNzIz
ZTEuLjU0NzI3NGZmYTY4YTUyZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBiMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiArNTQsNyBA
QAogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFsQnl0ZXND
aGVja2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PHVuc2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBtYWtlVW5p
cXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhlbHMpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNjY4LDExICs2NjksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogICAgIGlmIChs
ZW5ndGgpIHsKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAgICAgYXV0byBpbmZvID0g
c3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgOjpnbEdldFNoYWRl
ckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICAgICAgVmVj
dG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhz
aGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgICAgICBQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgICAgICBlbnRyeS5sb2cgPSBn
ZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAg
ICAgIGVudHJ5LmxvZyA9IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGlu
Zm8uZGF0YSgpLCBzaXplKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXBpbGVTdGF0dXMgIT0gR0xf
VFJVRSkgewpAQCAtODUxLDE4ICs4NTIsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGkKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhBdHRyaWJ1dGVTaXplID0gMDsK
ICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xF
TkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlx
dWU8R0xjaGFyW10+KG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01B
WF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBu
YW1lKG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgg
aW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwog
ICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwg
JnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dy
YW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBu
YW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9n
cmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFt
ZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUo
cHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZGF0YSgp
LCBuYW1lTGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyB1bmlmb3Jt
TmFtZShuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFt
ZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQgaXMgbWFw
cGluZyBhY3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3JhbSwgaW5k
ZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCkuZGF0YSgp
KTsKICNlbmRpZgogCkBAIC04OTgsMTggKzg5OSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50
CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJv
Z3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKIAot
ICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heFVuaWZvcm1TaXpl
KTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0
aW9uLgorICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBHTF9BQ1RJ
VkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xz
aXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlw
ZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZv
cm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6Omds
R2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3Jp
Z2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJp
bmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBv
cmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0
cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAg
ICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5n
IHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQ
cm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRvICclcyci
LCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1l
LnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0ICsxNzAwLDE0IEBAIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXpl
ID0gMDsKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgp
OwotICAgIDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZv
LmdldCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFBy
b2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAg
IEdDM0RzaXplaSBjb3VudDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl07CiAgICAg
Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVycyk7CiAKLSAgICBy
ZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZ2V0
KCkpKTsKKyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3Ry
aW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUs
IEdDM0RpbnQqIHZhbHVlKQpAQCAtMTc3MCwxMSArMTc3MSwxMSBAQCBTdHJpbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwotICAgIGF1dG8g
aW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgOjpnbEdldFNo
YWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0
b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVy
LCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9n
KHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xl
ZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIFN0
cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qg
c2hhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXgg
YWJlZGY1MzU1M2RkMzU2ZDEwZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4uMmU2YzUyYzYzNDg5NjY0
OWFmNWM2YTQ0NDdiOThmMTBhM2QyNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW0uY3BwCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRT
aGFkZXJMb2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0
dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxv
Z0xlbmd0aCk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgpOwogICAgIEdMc2l6
ZWkgaW5mb0xlbmd0aCA9IDA7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVu
Z3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNo
YWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90
IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGlu
Zm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJp
bmdMZW5ndGggfTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJv
Z3JhbSkKQEAgLTQ2NSwxMiArNDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2co
R0x1aW50IHByb2dyYW0pCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dMZW5ndGgp
OworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9M
ZW5ndGggPSAwOwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAm
aW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFt
LCBsb2dMZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAgICBzaXplX3Qgc3Ry
aW5nTGVuZ3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0dXJuIHsgaW5mby5n
ZXQoKSwgc3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRhKCksIHN0cmluZ0xl
bmd0aCB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGUwYThm
OWQ0MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0ZTkyMDI5
YWNiZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtMzgs
NiArMzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJlYW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc3LDcg
QEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJl
YW1IYW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291dHB1dFN0
cmVhbTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVm
UHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hh
cltdPiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVmZmVyOwog
CiAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3NmUyMmI2
NDYwN2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2
OTU3NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQoR1JlZlB0
cjxHSU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJlYW0pOwog
ICAgIG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9fc3RyZWFt
X2dldF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9
IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAgIG1fcmVh
ZEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpFKTsKKyAg
ICBtX3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJfU0laRSk7
CiAKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1f
cmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5
OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVmZDlmM2I2
MTViN2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUxNzY1ODI2YWJkNTI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00Miwx
MiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3Ro
KTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50
VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50
VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5n
dGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmco
YnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2MDViNjdkMGJiMzEy
MDczMzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5ZjllNjg0OTliYWM1ZjBh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVBy
b3h5V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6
OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG9y
dCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJb
XT4gdEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgaWYg
KCF0UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3Rv
cjxUQ0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxUQ0hBUj4gdEhvc3Qo
YnVmZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7CiAgICAgSEtFWSBr
ZXk7CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3Rl
bUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG8KICAgICAgICAg
TCJQcm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0eXBlLAotICAgICAg
ICAoTFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUpdFJlZ0J1ZmZlci5k
YXRhKCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJST1JfU1VDQ0VTUykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5U3RyaW5nKHRSZWdC
dWZmZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQorICAgIGlmICghcGFy
c2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgpLCBidWZmZXJMZW4s
IHBvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21icyhidWZmZXIsIHRI
b3N0LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwgdEhvc3QuZGF0YSgp
LCBidWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAnOwogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNjODYzN2Q0NjFjODc0
NjQ1Li41MjZjMmFmNGI2ODNlMzY3MThjNmY0OGNlMjI3MmE4ZTgwOGE4MTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPGdpby9naW8u
aD4KQEAgLTE0MywxMSArMTQ0LDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2Uo
KQogCiAgICAgc2l6ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKICAgICBz
aXplX3QgYXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAg
IFZlY3RvcjxBdHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm8oYXR0YWNobWVudENvdW50KTsK
IAogICAgIGlmIChhdHRhY2htZW50Q291bnQpIHsKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRDb3VudCk7Ci0gICAg
ICAgIG1lbWNweShhdHRhY2htZW50SW5mby5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRh
Y2htZW50SW5mbykgKiBhdHRhY2htZW50Q291bnQpOworICAgICAgICBtZW1jcHkoYXR0YWNobWVu
dEluZm8uZGF0YSgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFj
aG1lbnRDb3VudCk7CiAgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihBdHRhY2htZW50SW5m
bykgKiBhdHRhY2htZW50Q291bnQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
dHRhY2htZW50Q291bnQ7ICsraSkgewpAQCAtNDE3LDcgKzQxNyw3IEBAIGJvb2wgQ29ubmVjdGlv
bjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgaW92
WzBdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJm1lc3NhZ2VJbmZvKTsKICAg
ICBpb3ZbMF0uaW92X2xlbiA9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVW5pcXVlQXJyYXk8
QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRh
Y2htZW50RkRCdWZmZXI7CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2Uu
YXR0YWNobWVudHMoKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRP
dXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQ
dHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudElu
Zm9bXT4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8gPSBtYWtl
VW5pcXVlQXJyYXk8QXR0YWNobWVudEluZm8+KGF0dGFjaG1lbnRzLnNpemUoKSk7CiAgICAgICAg
IGludCBmZEluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2ht
ZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXR0YWNobWVudEluZm9baV0uc2V0VHlw
ZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dn
aW5nV2luLmNwcAppbmRleCA2ZGUxYmFiODU5MDc3ZjgxNzBjOGJkMmJmYTUyMTk1ZmFhNzFiNzJk
Li5kMDYzOGQzMTNhNmU3YzkyZWI4MjQxNDgyNDg5M2RiNjY1NzZiZDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFN0cmlu
ZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
bGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBpZiAoIUdl
dEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIu
Z2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5n
RW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5nZXQoKSk7Cisg
ICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggZTUyN2Y4MTUy
NTdjMDg3MDljYjRmYTE1YjliMDc5NTkyMWMwMTNmOS4uMWY3NjgwODU2NGVkNGRiNmU1YzBjZTFl
YjYzMDIxMTcxZTkwZWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIElQQyB7CkBAIC04Niw4ICs4Nyw3IEBAIGNsYXNzIFNhbmRib3hFeHRlbnNpb24gOiBwdWJs
aWMgUmVmQ291bnRlZDxTYW5kYm94RXh0ZW5zaW9uPiB7CiAgICAgICAgCiAgICAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SGFuZGxlW10+IG1fZGF0YTsKLSAgICAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKKyAgICAgICAg
VmVjdG9yPEhhbmRsZT4gbV9kYXRhOwogI2Vsc2UKICAgICAgICAgSGFuZGxlIG1fZW1wdHlIYW5k
bGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0KaW5kZXggOWQ4YjllYjFiN2Y1MGFkMmRhNmUxNWUwMzI4NDE4YmMzYjBhYjMzZC4u
YjhlNzQzZDIzNjBjZmVlZmMxN2JjYTI0ZDU5NzExY2RkNThhNWI3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTE2MywzNCArMTYz
LDMzIEBAIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFsbG9jYXRlKHNpemVf
dCBzaXplKQogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFt
X2RhdGEpOworICAgIEFTU0VSVChtX2RhdGEuaXNFbXB0eSgpKTsKIAotICAgIG1fZGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlW10+KHNpemUpOwotICAgIG1f
c2l6ZSA9IHNpemU7CisgICAgbV9kYXRhLnJlc2l6ZShzaXplKTsKIH0KIAogU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShz
aXplX3QgaSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9z
aXplKTsgCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwg
bV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtpXTsKIH0KIAogY29uc3QgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0
b3JbXShzaXplX3QgaSkgY29uc3QKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpIDwgbV9zaXplKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhW2ldOwogfQogCiBz
aXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUoKSBjb25zdAogewotICAg
IHJldHVybiBtX3NpemU7CisgICAgcmV0dXJuIG1fZGF0YS5zaXplKCk7CiB9CiAKIHZvaWQgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsgKytpKQotICAgICAgICBlbmNvZGVy
IDw8IG1fZGF0YVtpXTsKKyAgICBmb3IgKGF1dG8mIGhhbmRsZSA6IG1fZGF0YSkKKyAgICAgICAg
ZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKIGJvb2wgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5JiBoYW5kbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggZTAwOTRiOTZiYjE4OWE2OTYzNTVkZTBkYjA4
MDMwYmMwYTgyZDcwOS4uYTUzMWNiNGQ1Y2NmODZiMDFlMmNlYjY1NDRjNzRmZjY0Nzc3NmM4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2VXaW4uY3BwCkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNo
SW5mbygpCiAgICAgaWYgKHZlcnNpb25JbmZvU2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
Pih2ZXJzaW9uSW5mb1NpemUpOworICAgIFZlY3RvcjxjaGFyPiB2ZXJzaW9uSW5mb0RhdGEodmVy
c2lvbkluZm9TaXplKTsKIAogICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051
bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVy
c2lvbkluZm9EYXRhLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9uYW1l
ID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJvZHVjdE5hbWUiKTsK
LSAgICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgp
LCAiRmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lv
bkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CisgICAgbV9kZXNjcmlwdGlvbiA9IGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRGVzY3JpcHRpb24iKTsK
ICAgICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklMRUlORk8qIGluZm87CiAgICAgVUlO
VCBpbmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0YS5nZXQo
KSwgTCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXplKSB8fCBpbmZvU2l6ZSA8IHNpemVv
ZihWU19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZv
RGF0YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwgaW5mb1Np
emUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBtX21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTFM7CiAgICAg
bV9tb2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTVM7CkBAIC0xOTMs
MTEgKzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGdldFZlcnNpb25J
bmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7
CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIk1JTUVUeXBlIiku
c3BsaXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uTGlzdHM7Ci0g
ICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZUV4dGVudHMiKS5z
cGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5m
b0RhdGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsK
ICAgICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVy
c2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlv
bnMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlT3Bl
bk5hbWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0eXBl
c1tpXS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4OGIxM2ZmNWUx
NTdmOGQ2MDMuLjI3NWYwMDQ5NWY2MzU0Y2FmNzZiYjU0ZGU2YWVjZDg2YmE5MmVhMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTUzMiw4ICs1MzIs
OCBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVy
ZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZTdHJpbmdSZWYgZGlkUmVtb3ZlRGVm
YXVsdHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVmYXVsdFNldHRpbmdzRnJvbVNhZmFy
aTNCZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0RGVmYXVsdHMgPSAhYm9vbGVhblZh
bHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0LCBkaWRSZW1v
dmVEZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5
cGVSZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5
cGVSZWZbXT4oY291bnQpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IGtleXMoY291bnQpOworICAg
IFZlY3RvcjxDRlR5cGVSZWY+IHZhbHVlcyhjb3VudCk7CiAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5
c0FuZFZhbHVlcyhkaWN0LCBrZXlzLmdldCgpLCB2YWx1ZXMuZ2V0KCkpOwogCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CmluZGV4IDE1ZTI3Zjk4NWMyY2Q5OTZkZTlhMDdlZWE5YjU5ZmRkMGY0OGU3ODcuLjIyZjVhMjYy
YzFkZTFiODE5ZGNlYWYzYWJmYjc3YzBmMzk4MWJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCkBAIC0xNzg0LDggKzE3ODQsOCBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1h
bmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBtZW51SXRlbUluZm8uZk1hc2sg
PSBNSUlNX1NUUklORzsKICAgICA6OkdldE1lbnVJdGVtSW5mbyhoTWVudSwgaW5kZXgsIHRydWUs
ICZtZW51SXRlbUluZm8pOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdD
SEFSW10+KG1lbnVJdGVtSW5mby5jY2ggKyAxKTsKLSAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0
YSA9IGJ1ZmZlci5nZXQoKTsKKyAgICBWZWN0b3I8V0NIQVI+IGJ1ZmZlcihtZW51SXRlbUluZm8u
Y2NoICsgMSk7CisgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZGF0YSgpOwog
ICAgIG1lbnVJdGVtSW5mby5jY2grKzsKICAgICBtZW51SXRlbUluZm8uZk1hc2sgfD0gTUlJTV9J
RDsKIApAQCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRD
b250ZXh0TWVudSk7CiAgICAgbV9jdXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAg
U3RyaW5nIHRpdGxlKGJ1ZmZlci5nZXQoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5n
IHRpdGxlKGJ1ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5jY2gpOwogICAgIENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihtZW51SXRlbUlu
Zm8ud0lEKTsKIAogICAgIGlmIChhY3Rpb24gPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0
aW9uVGFnKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334357</attachid>
            <date>2018-02-21 03:08:31 -0800</date>
            <delta_ts>2018-02-21 08:20:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180221200830.patch</filename>
            <type>text/plain</type>
            <size>76355</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li5jOGJhYWUwODNkMWZmOTE1
NzhiMmRkOWRmNDQ3ZDNjMDJlYjU4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmg6CisKIDIwMTgtMDItMjAgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlIHNob3VsZCBlbGltaW5hdGUgZ2V0dGluZyBhcmd1bWVudCBsZW5ndGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGExYWYw
OGI4NTdjNmM0ZWMzZThkYjk4NjRkZWMxYzE3NjU2OWYwOC4uZDViYWYzYjg1ZWM5NTEyYzg5Yjc1
NjJlMjc5MzJlMmJkNzUyMTc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOC0wMi0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIHVzZSBgbWFrZV91bmlxdWU8Y2hh
cltdPihudW0pYCBvciBgbmV3IGNoYXJbbnVtXWAsIGFsbG9jYXRpb24gaXMKKyAgICAgICAgZG9u
ZSBieSB0aGUgc3lzdGVtIG1hbGxvYyBpbnN0ZWFkIG9mIGJtYWxsb2MuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpc3N1ZQorICAgICAgICBieSwKKworICAgICAgICAxLiBJbnRyb2R1Y2UgVW5pcXVl
QXJyYXk8VD4uIEl0IGFsbG9jYXRlcyBtZW1vcnkgZnJvbSBGYXN0TWFsbG9jLiBXaGlsZSBDKysK
KyAgICAgICAgYXJyYXkgd2l0aCBgbmV3YCBuZWVkIHRvIGhvbGQgdGhlIHNpemUgdG8gY2FsbCBk
ZXN0cnVjdG9yIGNvcnJlY3RseSwgb3VyCisgICAgICAgIFVuaXF1ZUFycmF5IG9ubHkgc3VwcG9y
dHMgdHlwZSBUIHdoaWNoIGRvZXMgbm90IGhhdmUgYSBub24gdHJpdmlhbCBkZXN0cnVjdG9yLgor
ICAgICAgICBJdCByZWR1Y2VzIHRoZSBhbGxvY2F0aW9uIHNpemUgc2luY2Ugd2UgZG8gbm90IG5l
ZWQgdG8gdHJhY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIGFycmF5IGNvbXBhcmVkIHRvIHN0
YW5kYXJkIGBuZXcgVFtdYC4gVGhpcyBpcyBiYXNpY2FsbHkgdXNhYmxlIGlmIHdlIHdhbnQgdG8K
KyAgICAgICAgaGF2ZSByYXcgYXJyYXkgd2hpY2ggcG9pbnRlciB3b24ndCBiZSBjaGFuZ2VkIGV2
ZW4gaWYgdGhlIGNvbnRhaW5lciBpcyBtb3ZlZC4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+
IGluc3RlYWQuCisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFL
RV9GQVNUX0FMTE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQg
ZGVsZXRlW10gb3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBt
ZW1vcnkKKyAgICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAg
ICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAg
ICAgICAoV1RGOjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZh
c3RGcmVlPFQ6Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoK
KyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAg
KiB3dGYvU3RhY2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToK
KyAgICAgICAgKFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0
ZW1GcmVlLmg6CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6
CisgICAgICAgICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJy
YXkpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9w
ZXJhdGlvbnM6OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lv
biBjb21tYW5kcyB0byByZXNpemUgYW5kIG1vdmUgdG9wLWxldmVsIGJyb3dzaW5nIGNvbnRleHRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYTFmZmY4OWU5ZTgxNzY5ZWFjMTBkMDAyYTc0ZTY1ODgxZmE5MTJmNy4u
M2M2NWE5N2I5MWU5ZTIwYzIyZDdhMmIxNzNkN2NmYTU1MWMyMWQwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU4IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lz
dGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAg
KiBjc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OkxSVUltYWdlQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6
YnViYmxlVG9Gcm9udCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hh
bm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENv
bnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNv
dXJjZVNhZmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
Ojp1cGRhdGVTdWJSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0UHJvZ3JhbUxvZyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlSW1wbDo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjEg
IFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVuZGVyVHJlZUJ1
aWxkZXJdIE1vdmUgUmVuZGVyRnVsbFNjcmVlbjo6d2lsbEJlUmVtb3ZlZCgpIG11dGF0aW9uIGxv
Z2ljIHRvIFJlbmRlclRyZWVCdWlsZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4
YTBlZTkzNGUxOWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi5mYTNkYTlkYWI0NzRiMmRjZTMxMzU5NjY1
MTBjZDRhNzc3YzZjYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
OC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZB
U1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogcGFsL3dp
bi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFBBTDo6bG9nTGV2ZWxTdHJpbmcpOgorCiAyMDE4
LTAyLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IEludHJvZHVjZSBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGFlMGRh
ZWJiYjQ5Y2YyMTgxNDg5YWEyNDY3MThlMjUxOWZiNmZhMC4uNTM1MjQ5ZjU3NDZlMWY2NWY3YmIw
NzE1NDJkYTY1NGU3Y2EzM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0wMi0y
MSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXgg
c3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxM
T0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdpbmRvd3NTeXN0ZW1Qcm94eTo6
Z2V0U3lzdGVtSHR0cFByb3h5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nlc3NNZXNzYWdlKToK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UpOgorICAgICAgICAq
IFBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bG9nTGV2ZWxT
dHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6CisgICAgICAgICog
U2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2Rl
IGNvbnN0KToKKwogMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYOiBLZXlib2FyZCBmb2N1cyBub3QgZm9sbG93aW5nIFZvaWNlT3ZlciBjdXJzb3Ig
aW50byB3ZWIgY29udGVudCBvciB3aXRoaW4gd2ViIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cKaW5kZXggMDYxZmZkMzgyYTgzNmMyZTI0MjViODJhYzE3MWEzMWZlMmZmODgxYy4u
MThiMTdjMzA4M2U2N2I5MjE3OThiZmUwZWI1MWY4NmM3NmI0ZWZkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAyLTIxICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVl
IC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1
ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAg
KiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktp
dFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6Om9uTWVudUNvbW1hbmQpOgorCiAyMDE4LTAyLTE2ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgT1BFTkdMIG1hY3JvcyB0byBiZSBt
b3JlIGNsZWFyIGFib3V0IHdoaWNoIE9wZW5HTC9FUyBXZWJHTCB1c2VzIG9uIENvY29hCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwNTg3MjU5M2Y2
ZGJiOWE4NTNhODE2MWE2OWJiZGY3NDJhMjMzM2EzLi4xMzY3NzE1M2Q1ZmEwNGRmYjhlOWZlYTdl
NDQ4YWM0MTdmOWM2ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U3RyaW5nUmVmQ0YuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdS
ZWZDRi5jcHAKQEAgLTQ5LDEwICs0OSwxMCBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdp
dGhDRlN0cmluZyhDRlN0cmluZ1JlZiBzdHJpbmcpCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVf
dD4oY29udmVydGVkU2l6ZSkgPT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1
ZmZlckxlbmd0aCkgPT0gbGVuZ3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpj
cmVhdGUobGNoYXJCdWZmZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIAotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7Ci0gICAgQ0ZTdHJp
bmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdl
dCgpKTsKKyAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdH
ZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmRhdGEo
KSk7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVW5pQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwg
IlVuaUNoYXIgYW5kIFVDaGFyIG11c3QgYmUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuICZPcGFx
dWVKU1N0cmluZzo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZ2V0KCkp
LCBsZW5ndGgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5ndGgpLmxlYWtSZWYo
KTsKIH0KIAogQ0ZTdHJpbmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yLCBKU1N0cmluZ1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaAppbmRleCBlYTg1OWM0YTlhMTJmZTRkZGYyZTUyYzJi
ODY4NmQyMDg4ODNiODc0Li5hMjgyMjljNTY4YjQxMmFjNDg4N2MzNTgxNjZmYzIyZGU1OTE5ZmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxs
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgK
QEAgLTc0LDYgKzc0LDcgQEAgY2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAgZnJpZW5kIGNsYXNz
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxTZXQgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEtpbGxTZXQo
KQogICAgICAgICAgICAgOiBtX3dvcmQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYy
NTQ0ZTQzMTBhLi4wYzIwNzAzZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTks
OCArMTU5LDggQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2Rl
V2hpdGVTcGFjZSA9IDA7CiAgICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNl
ID0gR3JhcGg6OmFtb3VudE9mTm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVm
aXhCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50
T2ZOb2RlV2hpdGVTcGFjZSArIDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHBy
ZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZp
eExlbmd0aCArIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4
QnVmZmVyLmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJb
aSArIHByZWZpeExlbmd0aF0gPSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCAr
IGFtb3VudE9mTm9kZVdoaXRlU3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERp
c2Fzc2VtYmxlcjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIq
IHByZWZpeCwgTGlua0J1ZgogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIu
bG9jYXRpb25PZihjdXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFi
ZWw7CiAgICAgQVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3Rh
cnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFy
dCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVB
ZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fz
c2VtYmxlKHN0YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQu
ZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQp
OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1
OGI1NDE3NGJmZWIyZTIyMWQ4MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0
NTkyN2RmM2RhNmFhYmQwOTE2NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHZvaWQgUG9seW1vcnBoaWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
KAogICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25z
dCBKU0NlbGwqIG93bmVyLCBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5m
byYgaW5mbywgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1
aW50MzJfdD4mJiBmYXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVS
ZWYsIHZtKQogICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmgKaW5kZXggZDk2YWU1NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEz
OTU3NzJiNGFiMDQ2NWJhMWE4YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTg0LDcgKzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRp
bmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZSgKICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBj
b25zdCBKU0NlbGwqIG93bmVyLAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxs
TGlua0luZm8mLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFy
cmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsK
IAogcHJpdmF0ZToKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFu
dHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBV
bmlxdWVBcnJheTx1aW50MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0Nh
bGxOb2RlPiBtX2NhbGxOb2RlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCmluZGV4IDc4Y2E5MzAzZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRl
NjM5YzkzZTRlYTg5MzA2YTk3N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcApAQCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBo
aWNDYWxsKAogICAgIAogICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5z
aXplKCkpOwogICAgIFZlY3RvcjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgp
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlx
dWVBcnJheTx1aW50MzJfdD4gZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1i
bHkgJiYgY2FsbGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgp
KQotICAgICAgICBmYXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxs
Q2FzZXMuc2l6ZSgpKTsKKyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50
MzJfdD4oY2FsbENhc2VzLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYWxsQ2FzZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCmluZGV4IDA2MDJlNGQ5NDExNDUwY2M4ODNjMTI4M2Q3M2U1ZGMyN2E1Mjdj
NzEuLmRjZDdmMzI2ZDQ0OTdkYTdhOGVkMWQwM2QxN2E0MTU5YTY5ZmMzNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCkBAIC03MTgsMTcgKzcxOCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJl
Y3RvcnlOYW1lPiBjdXJyZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywg
d2NoYXJfdCBpcyB0aGUgVVRGLTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5j
b20vZW4tdXMvbGlicmFyeS9kZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7
Ci0gICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9y
eVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJp
bmcgPSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7
CisgICAgVmVjdG9yPHdjaGFyX3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxl
bmd0aE5vdEluY2x1ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0
aCwgYnVmZmVyLmRhdGEoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9T
dHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2Ug
ZG9uJ3Qgc3VwcG9ydCBuZXR3b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4u
CiAgICAgaWYgKGRpcmVjdG9yeVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KFBBVEhfTUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBB
VEhfTUFYKSkKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdl
dGN3ZChidWZmZXIuZGF0YSgpLCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVy
LmdldCgpKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChi
dWZmZXIuZGF0YSgpKTsKICNlbmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAppbmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3
YTYwMDZiLi4zYTFlYTM3NDgyNDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6
OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6
OnNfb3Bjb2RlTWFwW251bU9wY29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRh
OjpzX29wY29kZVN0YXRzQXJyYXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVy
biAiQyIgdm9pZCBsbGludF9lbnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0g
ICAgRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bj
b2RlTGVuZ3RoICsgMV07Ci0KICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2
NDZlNTczYjg2MWI1YjI2ZmM4NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2
ODg4NTQ3MWQwMjQyZGM2NGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaApAQCAtNjYsNyArNjYsNyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNl
dFN0YXRzKCk7CiAgICAgc3RhdGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5z
dHJ1Y3Rpb24qIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlv
biBzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0
aWMgT3Bjb2RlIHNfb3Bjb2RlTWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0
YXRzQXJyYXkqIHNfb3Bjb2RlU3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCmluZGV4IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUx
NmUuLjYzYzJkZTkxM2ZkZjRkYjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBN
YXJrZWRBcmd1bWVudEJ1ZmZlciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFz
cyBBcmdMaXN0IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xh
c3MgSW50ZXJwcmV0ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBjZTZlNGMxZjQ1Y2I5ZWI5ZTU4NWU3MmJkYzBl
NzBhYjY3YmFlZmJiLi5iNjY3ZWQ3MmU2NTIzMzE0NzY1YTIwMjgxZmZhYjM0MzUxNmE3MmM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MzYsMTEgKzUzNiw2IEBAIFZN
Ojp+Vk0oKQogICAgIGRlbGV0ZSBjbGllbnREYXRhOwogICAgIGRlbGV0ZSBtX3JlZ0V4cENhY2hl
OwogCi0jaWYgRU5BQkxFKFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYg
KG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcp
CiAgICAgZGVsZXRlIG1fcnRUcmFjZUxpc3Q7CiAjZW5kaWYKQEAgLTkwNyw4ICs5MDIsOCBAQCBj
aGFyKiBWTTo6YWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQogCiAgICAgbV9yZWdF
eHBQYXR0ZXJuQ29udGV4dExvY2subG9jaygpOwogICAgIGlmICghbV9yZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyKQotICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBuZXcgY2hh
cltWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplXTsKLSAgICByZXR1cm4gbV9yZWdFeHBQYXR0
ZXJuQ29udGV4QnVmZmVyOworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBt
YWtlVW5pcXVlQXJyYXk8Y2hhcj4oVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk7CisgICAg
cmV0dXJuIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlci5nZXQoKTsKIH0KIAogdm9pZCBWTTo6
cmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKaW5kZXggZDczZmM2Yjk3NDY4YzhiNDFkYTFlYTBmZjg5MDhkZGZkM2RiNDJhNS4uNzZk
YjA1ODJmYWYzYTI2YjE1NjdmMjk4NDk1YjY4MWY4OGY1YmQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N5bWJvbFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtNjg1LDcgKzY4Niw3IEBAIGNsYXNz
IFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtl
ZExpc3ROb2RlPFZNPiB7CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNT
SU9OUykKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNp
emUgPSA4MTkyOyAvLyBTcGFjZSBhbGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMg
Y29udGV4dAotICAgIGNoYXIqIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciB7IG51bGxwdHIg
fTsKKyAgICBVbmlxdWVBcnJheTxjaGFyPiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CiAg
ICAgTG9jayBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9jazsKICAgICBjaGFyKiBhY3F1aXJlUmVn
RXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5D
b250ZXhCdWZmZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9I
ZWFwVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIu
aAppbmRleCA0ODI0YjFjNmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi4yNWI4Zjgx
NDAzOGIyYWUxY2E0MmE5MjRmZWUzNmU5NTRhZWZhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhlYXBWZXJp
ZmllciB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAg
ICA6IGJlZm9yZSgiQmVmb3JlIE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIg
TWFya2luZyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
MGEyNWJmMzYzN2ZhNTk2NjJhNTViOTU2ZGRhZWRlODNlYWY1Y2UwLi5lYmFhNTUxMWQxMGRkZjRm
NDM2YjU2NjlmYmJiZWMxZTBiMTg3Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTYwMiw2ICs2MDIsNyBAQAogCQlERTVBMDlGQjFCQTM2OTkyMDAzRDQ0
MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZG
MzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8q
IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMxMUZCMTUxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVh
ZEdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdyb3VwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAv
KiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
bGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1LDEw
ICs4NTYsMTAgQEAKIAkJCQlBOEE0NzI3RjE1MUE4MjVBMDA0MTIzRkYgLyogRGlzcGF0Y2hQdHIu
aCAqLywKIAkJCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovLAog
CQkJCUE4QTQ3MjgwMTUxQTgyNUEwMDQxMjNGRiAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi8sCi0J
CQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLywKLQkJCQlB
RDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJQThB
NDcyOTcxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuY3BwICovLAogCQkJCUE4QTQ3Mjk4MTUxQTgy
NUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCisJCQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8q
IER1bWJQdHJUcmFpdHMuaCAqLywKKwkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVt
YlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1U
cmFpdHMuaCAqLywKIAkJCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAq
LywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCkBA
IC0xMDgzLDYgKzEwODQsNyBAQAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlT
dGF0ZS5oICovLAogCQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAq
LywKIAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCisJCQkJ
RTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4
RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEz
Q0EwMDAyNkUyNiAvKiBVbnNhZmVQb2ludGVyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAw
REFERTM2IC8qIFVVSUQuY3BwICovLApAQCAtMTA5Miw3ICsxMDk0LDYgQEAKIAkJCQlBOEE0NzM3
MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAw
NDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNG
RiAvKiBWTVRhZ3MuaCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNz
ZXJ0aW9ucy5jcHAgKi8sCiAJCQkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1l
LmNwcCAqLywKIAkJCQkwRjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAqLywK
IAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTEwMSw2
ICsxMTAyLDcgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAq
LywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJ
CQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCisJCQkJRkUwNUZB
RkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJKTsKIAkJCXBh
dGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQyNCw3ICsxNDI2LDYg
QEAKIAkJCQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxh
dG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAv
KiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjkyMTcyRTAxMDMw
MDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMw
Q0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTE1MzMsNiArMTUzNCw3IEBACiAJCQkJMEZFNDQ3OUMxQjdBQUEw
MzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDM5MUE5
NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFE
M0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDE1OGNiZWY3NjEyM2Q5M2Q3ZjQxZjJiZmYy
MDE2NTZlMjk4ZThhMDguLmRiYWRhZWU2Y2E1NDA2MDAxMjk2NDM5YTIzMDQ1OTdlNWJiYTc2MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBzdGF0aWMgdm9pZCB2
cHJpbnRmX3N0ZGVycl93aXRoX3ByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIq
IGZvcm1hdCwgdgogewogICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4ocHJlZml4KTsK
ICAgICBzaXplX3QgZm9ybWF0TGVuZ3RoID0gc3RybGVuKGZvcm1hdCk7Ci0gICAgYXV0byBmb3Jt
YXRXaXRoUHJlZml4ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGZv
cm1hdExlbmd0aCArIDEpOwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBwcmVm
aXgsIHByZWZpeExlbmd0aCk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCkgKyBw
cmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9y
bWF0V2l0aFByZWZpeChwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKKyAgICBtZW1j
cHkoZm9ybWF0V2l0aFByZWZpeC5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBt
ZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9y
bWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoUHJlZml4W3ByZWZpeExlbmd0aCArIGZvcm1hdExl
bmd0aF0gPSAwOwogCi0gICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXgu
Z2V0KCksIGFyZ3MpOworICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJlZml4
LmRhdGEoKSwgYXJncyk7CiB9CiAKIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJh
aWxpbmdfbmV3bGluZShjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKQEAgLTE2Nywx
MiArMTY3LDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3
bGluZShjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBhdXRvIGZvcm1hdFdpdGhOZXdsaW5lID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KGZvcm1hdExlbmd0aCArIDIpOwotICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5nZXQo
KSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoTmV3
bGluZShmb3JtYXRMZW5ndGggKyAyKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUuZGF0
YSgpLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0
TGVuZ3RoXSA9ICdcbic7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoICsgMV0g
PSAwOwogCi0gICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5lLmdldCgp
LCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZGF0
YSgpLCBhcmdzKTsKIH0KIAogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKaW5kZXggMjIwYmFmZDM0OGIzMDYzMzgzYWI3YTU0MmRjMmVkZTExMWFjNzA4NS4uZTk3
ZDA2MTkzYzBhMWRmZmM4MzBlMGNhN2RlNjllNTA5ZDY1OTdhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKQEAgLTIzMyw2ICsyMzMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBVbmV4cGVjdGVkLmgK
ICAgICBVbmlTdGRFeHRyYXMuaAogICAgIFVuaW9uRmluZC5oCisgICAgVW5pcXVlQXJyYXkuaAog
ICAgIFVuaXF1ZVJlZi5oCiAgICAgVW5zYWZlUG9pbnRlci5oCiAgICAgVk1UYWdzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaAppbmRleCA3ZWMyMWFlNzk4NTA3NGY2MzlkZjRiYWNiMDAzNmFlMWZjN2UwMjZhLi42
NjcyY2U0NmQ5ZjFjMmI0M2EzOTFlNTRiNjYyNDQzZjA4ZjkzOWY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5o
CkBAIC0yMDAsNiArMjAwLDI2IEBAIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBzdGF0aWMgdm9p
ZCBmcmVlKHZvaWQqIHApIHsgZmFzdEZyZWUocCk7IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgRmFzdEZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQq
IHBvaW50ZXIpIGNvbnN0CisgICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFzdEZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAg
ICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RG
cmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVy
KSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNpZiAhZGVmaW5lZChOREVC
VUcpCkBAIC0yMDgsNiArMjI4LDcgQEAgdXNpbmcgV1RGOjpmYXN0U2V0TWF4U2luZ2xlQWxsb2Nh
dGlvblNpemU7CiAKIHVzaW5nIFdURjo6RmFzdEFsbG9jYXRvcjsKIHVzaW5nIFdURjo6RmFzdE1h
bGxvYzsKK3VzaW5nIFdURjo6RmFzdEZyZWU7CiB1c2luZyBXVEY6OmlzRmFzdE1hbGxvY0VuYWJs
ZWQ7CiB1c2luZyBXVEY6OmZhc3RDYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RGcmVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQ
dHIuaAppbmRleCA3ZjZhMDJjZWYzMWIxYTI5ZmFjNjM4NGNkMmFjZTNlOGY3NTBjMGJhLi42NmYx
MGFhOWJkNWJiYTA5YWM1NjExMzZhZDM1YmY1ZTg0ZTQ4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9NYWxsb2NQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAt
NjYsNiArNjYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFsbG9jID0gRmFz
dE1hbGxvYz4gY2xhc3MgTWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9wdHIsIG51bGxwdHIpOwogICAgIH0KIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwogICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9wdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CmluZGV4IDZlZmQwNzRkZTI3MDllNjI3YWNlYjNjODNiOTQzMzEzNDJmNzVhZmQuLjdlMzJhMzVi
YWUzYzdiNTZhOGJlODViN2QxOGQxZTU1NzlhMGIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0YWNrU2hvdC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNyw3
ICszOCw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAg
ewogICAgICAgICBpZiAoc2l6ZSkgewotICAgICAgICAgICAgbV9hcnJheSA9IHN0ZDo6bWFrZV91
bmlxdWU8dm9pZCpbXT4oc2l6ZSk7CisgICAgICAgICAgICBtX2FycmF5ID0gbWFrZVVuaXF1ZUFy
cmF5PHZvaWQqPihzaXplKTsKICAgICAgICAgICAgIGludCBpbnRTaXplID0gc2l6ZTsKICAgICAg
ICAgICAgIFdURkdldEJhY2t0cmFjZShtX2FycmF5LmdldCgpLCAmaW50U2l6ZSk7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGludFNpemUpIDw9IHNpemUp
OwpAQCAtNTUsNyArNTYsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogICAgIFN0YWNrU2hv
dCYgb3BlcmF0b3I9KGNvbnN0IFN0YWNrU2hvdCYgb3RoZXIpCiAgICAgewotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+
KG90aGVyLm1fc2l6ZSk7CisgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8
dm9pZCo+KG90aGVyLm1fc2l6ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvdGhlci5tX3Np
emU7IGktLTspCiAgICAgICAgICAgICBuZXdBcnJheVtpXSA9IG90aGVyLm1fYXJyYXlbaV07CiAg
ICAgICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKQEAgLTEwNiw4ICsxMDcsOCBAQCBjbGFzcyBT
dGFja1Nob3QgewogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCoqIGRlbGV0ZWRWYWx1
ZUFycmF5KCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSk7IH0KLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbV9hcnJheTsK
KworICAgIFVuaXF1ZUFycmF5PHZvaWQqPiBtX2FycmF5OwogICAgIHNpemVfdCBtX3NpemUgeyAw
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKaW5kZXggM2VmNzU2MjgyY2YyMGQ0MGQ4YzYxODU0Nzk0
NmQwNGY1YmFlY2VmNS4uNzNiNjkzZjA2ODM4YmNjOGNjYzgzYTQ2OGQ0ZGJjM2E4YWI4MmY4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1N5c3RlbUZyZWUuaApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBTeXN0ZW1GcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwogICAgIHZv
aWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZnJlZShjb25z
dF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwpAQCAt
MzksMTEgKzQxLDEyIEBAIHN0cnVjdCBTeXN0ZW1GcmVlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIHN0cnVjdCBTeXN0ZW1GcmVlPFRbXT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRv
cigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CiAgICAgfQotCiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFy
cmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxYTA4ZWFh
NTk0MGUyNGJiNTllNzBjMjIzMTgwYWVhMDAwM2FhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
RmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIHN0
ZDo6dW5pcXVlX3B0cjxUW10sIEZhc3RGcmVlPFRbXT4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorVW5pcXVlQXJyYXk8VD4gbWFrZVVuaXF1ZUFycmF5KHNpemVfdCBzaXplKQoreworICAgIHVz
aW5nIFUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgVSogc3Rv
cmFnZSA9IHN0YXRpY19jYXN0PFUqPihmYXN0TWFsbG9jKHNpemVvZihVKSAqIHNpemUpKTsKKyAg
ICBWZWN0b3JUeXBlT3BlcmF0aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3Jh
Z2UgKyBzaXplKTsKKyAgICByZXR1cm4gVW5pcXVlQXJyYXk8VD4oc3RvcmFnZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjpt
YWtlVW5pcXVlQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGFiY2FiZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBh
YjRkNzZjN2M5MmMuLjI3ZmMxNDUzYTBkMGEwNjcyZTNkNzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCkBAIC02NSwxMCArNjUsMTUgQEAgc3RydWN0IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwg
VD4KIHRlbXBsYXRlIDxib29sIG5lZWRzSW5pdGlhbGl6YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6
ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRl
bXBsYXRlPGJvb2wgaWdub3JlLCB0eXBlbmFtZSBUPgotc3RydWN0IFZlY3RvckluaXRpYWxpemVy
PGZhbHNlLCBpZ25vcmUsIFQ+Cit0ZW1wbGF0ZTxib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0
LCB0eXBlbmFtZSBUPgorc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBjYW5Jbml0aWFs
aXplV2l0aE1lbXNldCwgVD4KIHsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqLCBUKikg
e30KKworICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQor
ICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc5LDYgKzg0LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFs
aXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9
IGVuZDsgKytjdXIpCiAgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7
CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTg4LDYgKzk4LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0
cnVlLCB0cnVlLCBUPgogICAgIHsKICAgICAgICAgbWVtc2V0KGJlZ2luLCAwLCByZWludGVycHJl
dF9jYXN0PGNoYXIqPihlbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmVnaW4pKTsKICAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkK
KyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVt
cGxhdGUgPGJvb2wgY2FuTW92ZVdpdGhNZW1jcHksIHR5cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1
LDExIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0b3JJbml0aWFs
aXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxU
Pjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2luLCBlbmQpOwog
ICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5k
KQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVk
c0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0
LCBUPjo6Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyB2
b2lkIG1vdmUoVCogc3JjLCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rv
ck1vdmVyPFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywg
c3JjRW5kLCBkc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1
ZWI3NmM0YzNiNTVmNDA4ZjJmMWEuLjVlNjJjNWFjMmRjOWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYy
M2U4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIp
CiAKICAgICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5l
bHMpOwogCi0gICAgICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0
IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5u
ZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAg
ICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1i
ZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1
ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgCiAgICAgICAgICAgICBtX3NvdXJj
ZUNoYW5uZWxzW2ldID0gYnVmZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmgKaW5kZXggZjRlNjNhODU5YzAxYjQxNWUxY2YzNDdmMjc4OGRkZDhiN2I3M2JhMS4uMzBiNzli
NzkzMzM3MzE4MjFmYTI1N2EwOGQxMzU4MGZhMjU5MGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0y
Niw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKICNp
bmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOSw4ICsxMTAsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNv
dXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBS
ZWZQdHI8QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwogCiAgICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBi
dWZmZXIgYW5kIGRlc3RpbmF0aW9uLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpb
XT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVz
dGluYXRpb25DaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNl
Q2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8ZmxvYXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7
CiAKICAgICAvLyBVc2VkIGZvciB0aGUgImdhaW4iIGFuZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1
dGVzLgogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDhjYTRjOTZmZWFmOGJiYWU2MTA4MjExMzEzODdh
ZTM0NWYwN2RjMjUuLjk1Y2M4ZDNjNzJhZWU2NjE3NTljNjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIs
MTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAot
ICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFi
bGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFi
bGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVy
LmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFk
ZjYzMDhlMTg4ODAyYmM3MDg4ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMz
ODkzMzI1NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAg
LTU1LDYgKzU1LDcgQEAgY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBz
dHJ1Y3QgQ29tcGlsZWRTZWxlY3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklU
X1BST0ZJTElORykgJiYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggMmNkYWM5MTIyZWY5ZWE3NzI3OWJjZGMwZDYzYTRlYWRmZTk3OGVkZC4uMDI5N2NlMGFk
MjM1NGNmYWU4MjI5ZmFiM2U4ZWU1MWQ4NzkzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTk5
LDYgKzk5LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNTUz
LDcgKzE1NTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJ
bWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJ
bWFnZTJEIiwgIlRleHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVk
IGNoYXJbXT4gemVybzsKKyAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsK
ICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgdW5zaWduZWQgc2l6
ZTsKICAgICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VT
aXplSW5CeXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50
LCAmc2l6ZSwgbnVsbHB0cik7CkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbAogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRl
eFN1YkltYWdlMkQiLCAiYmFkIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNp
Z25lZCBjaGFyW10+KHNpemUpOworICAgICAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPihzaXplKTsKICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVF
LCAiY29weVRleFN1YkltYWdlMkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTU3NjEsNyArNTc2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51CiAg
ICAgICAgICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZm
ZXJWYWx1ZVsyXQogICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbM10gIT0gbV92ZXJ0
ZXhBdHRyaWIwQnVmZmVyVmFsdWVbM10pKSB7CiAKLSAgICAgICAgYXV0byBidWZmZXJEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxHQzNEZmxvYXRbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8g
YnVmZmVyRGF0YSA9IG1ha2VVbmlxdWVBcnJheTxHQzNEZmxvYXQ+KGJ1ZmZlclNpemUpOwogICAg
ICAgICBmb3IgKEdDM0R1aW50IGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAg
ICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKICAg
ICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsK
QEAgLTU5MDcsMTUgKzU5MDgsMTQgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmVuc3VyZU5vdE51bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hl
KGludCBjYXBhY2l0eSkKLSAgICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQotICAgICwgbV9jYXBhY2l0eShjYXBh
Y2l0eSkKKyAgICA6IG1fYnVmZmVycyhjYXBhY2l0eSkKIHsKIH0KIAogSW1hZ2VCdWZmZXIqIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVy
KGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8
IG1fY2FwYWNpdHk7ICsraSkgeworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBt
X2J1ZmZlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVm
ZmVyc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFidWYpCiAgICAgICAgICAgICBicmVhazsKQEAg
LTU5MzAsNyArNTkzMCw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFj
Y2VsZXJhdGVkKTsKICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IGkgPSBzdGQ6Om1pbihtX2NhcGFjaXR5IC0gMSwgaSk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVm
ZmVycy5zaXplKCkgLSAxLCBpKTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSAr
NTkzOCw5IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFn
ZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAot
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJi
bGVUb0Zyb250KGludCBpZHgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OmJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGlu
dCBpID0gaWR4OyBpID4gMDsgLS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAt
LWkpCiAgICAgICAgIG1fYnVmZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oCmluZGV4IDZhMzU3NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQy
YTM5MTk1OWRiYzE0ZWVjYWZiMGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAg
LTUxNyw5ICs1MTcsOCBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGlj
IEdQVUJhc2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUg
cG9pbnRlciByZXR1cm5lZCBpcyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAg
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwot
ICAgICAgICBpbnQgbV9jYXBhY2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVf
dCBpZHgpOworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9i
dWZmZXJzOwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdl
Q2FjaGUgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDMwMTI1YWViMzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4
NWMxNzMyNmFlZjAuLmIyNTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmNwcApAQCAtMjc1LDggKzI3NSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXRO
dW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgICAgIG1fcG9z
dEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+
KCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNv
bnN0IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5l
bHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBt
X3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZD
aGFubmVscyk7CisgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZs
b2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZD
aGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1i
ZXJPZkNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3IuaAppbmRleCBhMTFkODdkZTU3NWM1MmVhMzFhMjJiOTgzYTFlMzQ2Y2Jk
MmFlYmQ1Li5mNzE2Y2VmNzNhMzVlZTZlZTg4YmE5OGJiOThkMjYyNTM3YmQ2OTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIgog
I2luY2x1ZGUgIlplcm9Qb2xlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw4ICsxMDIsOCBA
QCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5p
cXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5
PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0
YWdlUGFyYW1ldGVycyh1bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3Jt
YWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFt
ZXRlcnMoZmxvYXQgZ2FpbiwgZmxvYXQgYW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRp
byk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA0MDYyMGZi
ODQxMDFmNjZiNWZjMDlhYTNlZmIxMjU4MTNiZmNkMDcxLi43MjdjOTJhM2EwN2RlZDkzNzM3NjRj
YzFhZGNjYmZlYWMwNGQ1MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZy
YW1lLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgR19FTkRfREVDTFMKIAogI2luY2x1ZGUgPG1lbW9yeT4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBGRlRGcmFt
ZSB7CiAjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKICAgICBHc3RGRlRGMzIqIG1fZmZ0Owog
ICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRG
MzJDb21wbGV4W10+IG1fY29tcGxleERhdGE7CisgICAgVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29t
cGxleD4gbV9jb21wbGV4RGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKICAg
ICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NU
UkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggNjU2NmMxODE4YTUyNTE5MzQz
NjhlOTVmMmQyYjgyN2QxNTllMzE5Ny4uMWI2NmU0MDA2M2I2ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVj
MGUzMmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQog
ICAgIDogbV9GRlRTaXplKGZmdFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0
PHVuc2lnbmVkPihsb2cyKGZmdFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtl
X3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXpl
KSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4
Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBh
Y2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZU
RGF0YVNpemUobV9GRlRTaXplKSkKIHsKQEAgLTY2LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZy
YW1lKCkKIEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBt
X0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xv
ZzJGRlRTaXplKQotICAgICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYz
MkNvbXBsZXhbXT4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29t
cGxleERhdGEobWFrZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0
YVNpemUobV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUo
ZnJhbWUubV9GRlRTaXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShm
cmFtZS5tX0ZGVFNpemUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAppbmRleCBkZDk3YjM3Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgz
ZTY5OWI1NTQwZjUzLi45ZDgyMDRjOGEyNDY2MGZjNzcyYjBjZjdiNTY1MDg3YTM0NTE1YWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBGb3Jt
YXRDb252ZXJ0ZXIgewogICAgIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZD
b21wb25lbnRzID0gNDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25l
bnQgID0gNDsKLSAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPHVpbnQ4X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1h
eEJ5dGVzUGVyQ29tcG9uZW50KTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0Rh
dGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9u
ZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9uZW50KTsKIAogICAgICAgICBBU1NFUlQobV91bnBhY2tl
ZEludGVybWVkaWF0ZVNyY0RhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTY4LDcgKzY5LDcgQEAgY2xh
c3MgRm9ybWF0Q29udmVydGVyIHsKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNv
bnN0IGludCBtX3NyY1N0cmlkZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0Rh
dGE7CisgICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0Rh
dGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNGU3NTdh
MGUxZWY3NDQ3Y2U0NzkzNDg2YTc0MWRmODgyZDYyOWQ0MC4uMzIyYmVkMGI4YzU3OWZjOTUxZmI2
NTYxMjc3ODRjOGIwMzQwODQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VP
YnNlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE0Niw3ICsxNDcsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1h
dCBnZXREYXRhRm9ybWF0KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bQogYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lk
dGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIEdDM0RpbnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBh
Y2tBbGlnbm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1l
bnQgPT0gNCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVu
c2lnbmVkIGNoYXJbXT4gemVybzsKKyAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJv
OwogICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBp
bnQgc2l6ZTsKICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRl
cyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgJnNpemUsIG51
bGxwdHIpOwpAQCAtMTU0LDcgKzE1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleElt
YWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAg
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KLSAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQg
Y2hhcltdPihzaXplKTsKKyAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBj
aGFyPihzaXplKTsKICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAxODFiNDY3MTJlNmE4NDE3MDBiNjJkYzFkMWE5NmUw
ZjY1YmYzY2ZhLi4yZTc0ODc5ZDhkMmM2MmI2MGI0MTJjZDhhMjMyYzQyMzkyMzhhNjlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIFVTRShDQSkKQEAgLTEyNjEsNyArMTI2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDNEIDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1fZGVjb2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3Bp
eGVsRGF0YTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVk
UkdCQThEYXRhOworICAgICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JB
OERhdGE7CiAjZW5kaWYKICAgICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRt
bERvbVNvdXJjZSBtX2ltYWdlSHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDcyOWY4NDNkZjk3YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJi
ZWZmYjgzODBmODdhYWQ3YzVjMDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0
LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2Jq
ZWN0Lmg+CiAKICNpZmRlZiBERUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9p
ZCBnZXREaXJ0eVJlY3RzKEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAg
ICAgfQogCiAgICAgRFdPUkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgp
LCAwLCAwKTsKLSAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVu
c2lnbmVkIGNoYXJbXT4oZGF0YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1h
a2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVn
aW9uRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0
KCkpOwogICAgIGlmICghOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJl
Z2lvbkRhdGEpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGVi
NTAyODE1MjJhZjExYjIxYzE3Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0
MzI1OWYzNTA0ZGYxZDlmZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKQEAgLTM0MCw3ICszNDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVp
Z2h0KCkgLyAyOwogCiAgICAgdWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjx1aW50OF90W10+IHRtcCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUp
OworICAgIGF1dG8gdG1wID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90
KiB0b3AgPSBzb3VyY2UgKyAoaSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4
IDhlYjZmNGUzYjZhYWE3ZGNjMWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZm
N2E1YTg5NDg1ZDU0YmY5MjkxMzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00
NzgsNyArNDc4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4
dHJhY3RJbWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291
bGQgcHJlbXVsdGlwbHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAv
LyBQcmVmZXIgdG8gbWFubnVhbGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRz
IHRvIFJHQkE4IGZvcm1hdHMgaW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAx
NikgewotICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVp
bnQ4X3RbXT4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zv
cm1hbGl6ZWRSR0JBOERhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRo
ICogbV9pbWFnZUhlaWdodCAqIDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAg
ICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsK
ICAgICAgICAgY29uc3QgcHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJv
dyAvIHNpemVvZih1aW50MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0
MjFmYmI1MjY0Ni4uODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lk
IFRleHR1cmU6OnVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRh
dGVSZWN0KQogICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUg
aXMgdGhlIHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RT
YW5pdGl6ZWQKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRo
KCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkp
ICoKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBt
X3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0g
ICAgYXV0byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZT
aXplKTsKKyAgICBhdXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1w
QnVmZlNpemUpOwogCiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRp
bGVzWCgpICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5k
ZXggPSB0aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZh
OWRiYjhlNmRiNzIzZTEuLjU0NzI3NGZmYTY4YTUyZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBiMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAt
NTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1
ZmZlciogaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9
IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhl
bHMgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYg
KCFwaXhlbHMpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY4LDExICs2NjksMTEgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
IAogICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAgICAg
YXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAg
OjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsK
KyAgICAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgICAgICA6OmdsR2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgICAg
ICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgICAgICBl
bnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdl
dCgpKSk7CisgICAgICAgIGVudHJ5LmxvZyA9IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywg
MSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXBpbGVT
dGF0dXMgIT0gR0xfVFJVRSkgewpAQCAtODUxLDE4ICs4NTIsMTggQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdD
M0R1aW50IGkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhBdHRyaWJ1
dGVTaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRS
SUJVVEVfTUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9IHN0
ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVf
QVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBWZWN0
b3I8R0xjaGFyPiBuYW1lKG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVM
ZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAg
ICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAm
bmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZl
QXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNp
emUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3lt
Ym9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFt
ZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5h
bFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5n
KG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0
cmluZyB1bmlmb3JtTmFtZShuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5p
Zm9ybU5hbWUobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dy
YW0gJWQgaXMgbWFwcGluZyBhY3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwg
cHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51
dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCkBAIC04OTgsMTggKzg5OSwxOCBAQCBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZv
cm1TaXplKTsKIAotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1h
eFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uLgorICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUp
OyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRp
b24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAg
ICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5k
ZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgp
KTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNp
emUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5h
bWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcgb3JpZ2lu
YWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9V
TklGT1JNLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmln
aW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBF
X1VOSUZPUk0sIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRl
ZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7
CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBM
T0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAn
JXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwg
b3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0ICsx
NzAwLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAg
R0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hh
cltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgs
ICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7Cisg
ICAgOjpnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0
YSgpKTsKIAogICAgIEdDM0RzaXplaSBjb3VudDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cnNbMl07CiAgICAgZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVy
cyk7CiAKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3Ry
aW5nKGluZm8uZ2V0KCkpKTsKKyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJz
LCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTc3MCwxMSArMTc3MSwxMSBAQCBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAw
OwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0g
ICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgp
KTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgIHJldHVybiBnZXRVbm1h
bmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgcmV0dXJu
IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXpl
KSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5jcHAKaW5kZXggYWJlZGY1MzU1M2RkMzU2ZDEwZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4uMmU2
YzUyYzYzNDg5NjY0OWFmNWM2YTQ0NDdiOThmMTBhM2QyNDI5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0aWMg
Q1N0cmluZyBnZXRTaGFkZXJMb2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8
R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgp
OwogICAgIEdMc2l6ZWkgaW5mb0xlbmd0aCA9IDA7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNo
YWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwog
CiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAg
IHJldHVybiB7IGluZm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8u
ZGF0YSgpLCBzdHJpbmdMZW5ndGggfTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxv
ZyhHTHVpbnQgcHJvZ3JhbSkKQEAgLTQ2NSwxMiArNDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdl
dFByb2dyYW1Mb2coR0x1aW50IHByb2dyYW0pCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltd
Pihsb2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBH
THNpemVpIGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwg
bG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFtSW5m
b0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAg
ICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0
dXJuIHsgaW5mby5nZXQoKSwgc3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRh
KCksIHN0cmluZ0xlbmd0aCB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CmluZGV4IGUwYThmOWQ0MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEz
NmYxMzI0ZTkyMDI5YWNiZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaApAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJlYW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFt
PiBtX291dHB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJj
ZTsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y2hhcltdPiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9y
ZWFkQnVmZmVyOwogCiAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZl
cjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQg
KiAxMDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNk
YjkxYzE3NmUyMmI2NDYwN2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3
OWQyYjIyNGJkMzA2OTU3NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAu
Y3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25u
ZWN0ZWQoR1JlZlB0cjxHSU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92
ZShzdHJlYW0pOwogICAgIG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFN
KGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9p
bnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkp
OwotICAgIG1fcmVhZEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZF
Ul9TSVpFKTsKKyAgICBtX3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9C
VUZGRVJfU0laRSk7CiAKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJl
YW0uZ2V0KCksIG1fcmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNv
dXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0
ZDEzOGVmZDlmM2I2MTViN2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUx
NzY1ODI2YWJkNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9n
Z2luZ1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4u
Y3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2lu
Z0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdl
dEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIu
ZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRh
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2
MDViNjdkMGJiMzEyMDczMzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5Zjll
Njg0OTliYWM1ZjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
aW4vU3lzdGVtUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2luL1N5c3RlbVByb3h5V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dz
U3lzdGVtUHJveHk6OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJM
ZW4sIGludCogcG9ydCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VENIQVJbXT4gdEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxl
bik7Ci0gICAgaWYgKCF0UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFZlY3RvcjxUQ0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxU
Q0hBUj4gdEhvc3QoYnVmZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7
CiAgICAgSEtFWSBrZXk7CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJv
eHk6OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCog
cG8KICAgICAgICAgTCJQcm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0
eXBlLAotICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUp
dFJlZ0J1ZmZlci5kYXRhKCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJS
T1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5
U3RyaW5nKHRSZWdCdWZmZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQor
ICAgIGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgp
LCBidWZmZXJMZW4sIHBvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21i
cyhidWZmZXIsIHRIb3N0LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwg
dEhvc3QuZGF0YSgpLCBidWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAn
OwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNj
ODYzN2Q0NjFjODc0NjQ1Li4zYzQ2Mzk0ZTJlM2QzNDc1MmJiYzY2ZDFhNTUyNTJhYmJjMzcwODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtMTQzLDExICsxNDMsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVz
c2FnZSgpCiAKICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQgPSAwOwog
ICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQo
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87
CisgICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50Q291
bnQpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsK
LSAgICAgICAgbWVtY3B5KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9m
KEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lbWNweShhdHRh
Y2htZW50SW5mby5kYXRhKCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICog
YXR0YWNobWVudENvdW50KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1l
bnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7CkBAIC00MTcsNyArNDE2LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAg
ICBpb3ZbMF0uaW92X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8p
OwogICAgIGlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdHRhY2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBWZWN0b3I8
QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRh
Y2htZW50RkRCdWZmZXI7CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2Uu
YXR0YWNobWVudHMoKTsKQEAgLTQ0NCw3ICs0NDMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRP
dXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQ
dHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudElu
Zm9bXT4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8ucmVzaXpl
KGF0dGFjaG1lbnRzLnNpemUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgYXR0YWNobWVudEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpA
QCAtNDY2LDcgKzQ2NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5p
eE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAg
ICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmRhdGEoKTsKICAg
ICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBh
dHRhY2htZW50cy5zaXplKCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggNmRlMWJhYjg1OTA3N2Y4MTcw
YzhiZDJiZmE1MjE5NWZhYTcxYjcyZC4uZDA2MzhkMzEzYTZlN2M5MmViODI0MTQ4MjQ4OTNkYjY2
NTc2YmQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKQEAg
LTQyLDEyICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3Ro
KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihs
ZW5ndGgpOwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJv
bm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJv
bm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0
cmluZyhidWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCmluZGV4IGU1MjdmODE1MjU3YzA4NzA5Y2I0ZmExNWI5YjA3OTU5MjFjMDEzZjkuLjFm
NzY4MDg1NjRlZDRkYjZlNWMwY2UxZWI2MzAyMTE3MWU5MGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtODYsOCArODcsNyBAQCBjbGFzcyBT
YW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewog
ICAgICAgIAogICAgIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7Ci0gICAgICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CisgICAgICAgIFZlY3RvcjxIYW5kbGU+IG1fZGF0YTsKICNlbHNlCiAgICAg
ICAgIEhhbmRsZSBtX2VtcHR5SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZl
MTVlMDMyODQxOGJjM2IwYWIzM2QuLmI4ZTc0M2QyMzYwY2ZlZWZjMTdiY2EyNGQ1OTcxMWNkZDU4
YTViN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5z
aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tCkBAIC0xNjMsMzQgKzE2MywzMyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVCghbV9kYXRhKTsKKyAgICBBU1NFUlQobV9kYXRhLmlzRW1wdHko
KSk7CiAKLSAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZVtdPihzaXplKTsKLSAgICBtX3NpemUgPSBzaXplOworICAgIG1fZGF0YS5yZXNpemUoc2l6
ZSk7CiB9CiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7IAorICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFb
aV07CiB9CiAKIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7CisgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0
dXJuIG1fZGF0YVtpXTsKIH0KIAogc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zaXplOworICAgIHJldHVybiBtX2RhdGEu
c2l6ZSgpOwogfQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7
ICsraSkKLSAgICAgICAgZW5jb2RlciA8PCBtX2RhdGFbaV07CisgICAgZm9yIChhdXRvJiBoYW5k
bGUgOiBtX2RhdGEpCisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCiBib29sIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmluZGV4IGUwMDk0
Yjk2YmIxODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4MmQ3MDkuLmE1MzFjYjRkNWNjZjg2YjAxZTJj
ZWI2NTQ0Yzc0ZmY2NDc3NzZjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgYm9v
bCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0g
MCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsKKyAgICBWZWN0b3I8Y2hh
cj4gdmVyc2lvbkluZm9EYXRhKHZlcnNpb25JbmZvU2l6ZSk7CiAKICAgICBpZiAoIUdldEZpbGVW
ZXJzaW9uSW5mb1coc3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAw
LCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSwgIlByb2R1Y3ROYW1lIik7Ci0gICAgbV9kZXNjcmlwdGlvbiA9IGdldFZlcnNpb25JbmZv
KHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVEZXNjcmlwdGlvbiIpOworICAgIG1fbmFtZSA9
IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJQcm9kdWN0TmFtZSIpOwor
ICAgIG1fZGVzY3JpcHRpb24gPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgp
LCAiRmlsZURlc2NyaXB0aW9uIik7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSB8fCBtX2Rlc2Ny
aXB0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWU19GSVhFREZJ
TEVJTkZPKiBpbmZvOwogICAgIFVJTlQgaW5mb1NpemU7Ci0gICAgaWYgKCFWZXJRdWVyeVZhbHVl
Vyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6
ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCisgICAgaWYgKCFWZXJR
dWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCBMIlxcIiwgKExQVk9JRCopICZpbmZv
LCAmaW5mb1NpemUpIHx8IGluZm9TaXplIDwgc2l6ZW9mKFZTX0ZJWEVERklMRUlORk8pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9tb2R1bGVWZXJzaW9uLmxlYXN0U2lnID0gaW5mby0+
ZHdGaWxlVmVyc2lvbkxTOwogICAgIG1fbW9kdWxlVmVyc2lvbi5tb3N0U2lnID0gaW5mby0+ZHdG
aWxlVmVyc2lvbk1TOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8oKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKLSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJNSU1FVHlw
ZSIpLnNwbGl0KCd8JywgdHlwZXMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0
YS5kYXRhKCksICJNSU1FVHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOwogICAgIFZlY3RvcjxTdHJp
bmc+IGV4dGVuc2lvbkxpc3RzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBleHRlbnNpb25MaXN0cyk7CisgICAgZ2V0
VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQo
J3wnLCBleHRlbnNpb25MaXN0cyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25zOwot
ICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVPcGVuTmFtZSIp
LnNwbGl0KCd8JywgZGVzY3JpcHRpb25zKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5m
b0RhdGEuZGF0YSgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIFN0cmluZyB0eXBlID0gdHlwZXNbaV0uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBiZTNlYjMxMTkx
ODM0MDU3ZTVjMzQ2ODhiMTNmZjVlMTU3ZjhkNjAzLi4yNzVmMDA0OTVmNjM1NGNhZjc2YmI1NGRl
NmFlY2Q4NmJhOTJlYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwCkBAIC01MzIsOCArNTMyLDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktp
dFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgIENG
U3RyaW5nUmVmIGRpZFJlbW92ZURlZmF1bHRzS2V5ID0gQ0ZTVFIoV2ViS2l0RGlkTWlncmF0ZURl
ZmF1bHRTZXR0aW5nc0Zyb21TYWZhcmkzQmV0YVByZWZlcmVuY2VLZXkpOwogICAgIGJvb2wgb21p
dERlZmF1bHRzID0gIWJvb2xlYW5WYWx1ZUZvclByZWZlcmVuY2VzVmFsdWUoQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdCwgZGlkUmVtb3ZlRGVmYXVsdHNLZXkpKTsKIAotICAgIGF1dG8ga2V5cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKLSAgICBhdXRvIHZhbHVlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKKyAgICBWZWN0b3I8Q0ZUeXBl
UmVmPiBrZXlzKGNvdW50KTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiB2YWx1ZXMoY291bnQpOwog
ICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5nZXQoKSwgdmFsdWVz
LmdldCgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNWUyN2Y5ODVjMmNkOTk2ZGU5YTA3ZWVhOWI1
OWZkZDBmNDhlNzg3Li4yMmY1YTI2MmMxZGUxYjgxOWRjZWFmM2FiZmI3N2MwZjM5ODFiYzc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTc4NCw4ICsxNzg0LDggQEAgdm9p
ZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAg
ICAgbWVudUl0ZW1JbmZvLmZNYXNrID0gTUlJTV9TVFJJTkc7CiAgICAgOjpHZXRNZW51SXRlbUlu
Zm8oaE1lbnUsIGluZGV4LCB0cnVlLCAmbWVudUl0ZW1JbmZvKTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxXQ0hBUltdPihtZW51SXRlbUluZm8uY2NoICsgMSk7Ci0gICAg
bWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZ2V0KCk7CisgICAgVmVjdG9yPFdDSEFS
PiBidWZmZXIobWVudUl0ZW1JbmZvLmNjaCArIDEpOworICAgIG1lbnVJdGVtSW5mby5kd1R5cGVE
YXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICBtZW51SXRlbUluZm8uY2NoKys7CiAgICAgbWVudUl0
ZW1JbmZvLmZNYXNrIHw9IE1JSU1fSUQ7CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQgV2Vi
Vmlldzo6b25NZW51Q29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIDo6
RGVzdHJveU1lbnUobV9jdXJyZW50Q29udGV4dE1lbnUpOwogICAgIG1fY3VycmVudENvbnRleHRN
ZW51ID0gbnVsbHB0cjsKIAotICAgIFN0cmluZyB0aXRsZShidWZmZXIuZ2V0KCksIG1lbnVJdGVt
SW5mby5jY2gpOworICAgIFN0cmluZyB0aXRsZShidWZmZXIuZGF0YSgpLCBtZW51SXRlbUluZm8u
Y2NoKTsKICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0
TWVudUFjdGlvbj4obWVudUl0ZW1JbmZvLndJRCk7CiAKICAgICBpZiAoYWN0aW9uID49IENvbnRl
eHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334378</attachid>
            <date>2018-02-21 08:20:40 -0800</date>
            <delta_ts>2018-02-21 09:08:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180222012039.patch</filename>
            <type>text/plain</type>
            <size>77300</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li5jOGJhYWUwODNkMWZmOTE1
NzhiMmRkOWRmNDQ3ZDNjMDJlYjU4NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVp
cmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6Cisg
ICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmg6CisKIDIwMTgtMDItMjAgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgREZHOjpWYXJhcmdzRm9yd2FyZGluZ1Bo
YXNlIHNob3VsZCBlbGltaW5hdGUgZ2V0dGluZyBhcmd1bWVudCBsZW5ndGgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMGExYWYw
OGI4NTdjNmM0ZWMzZThkYjk4NjRkZWMxYzE3NjU2OWYwOC4uOTMxYzgzOGY0ZWE4NjM0Nzk2Nzg3
ODQ5OTc2NWVhZjU3YTNlMzNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxOC0wMi0yMSAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHdlIHVzZSBgbWFrZV91bmlxdWU8Y2hh
cltdPihudW0pYCBvciBgbmV3IGNoYXJbbnVtXWAsIGFsbG9jYXRpb24gaXMKKyAgICAgICAgZG9u
ZSBieSB0aGUgc3lzdGVtIG1hbGxvYyBpbnN0ZWFkIG9mIGJtYWxsb2MuIFRoaXMgcGF0Y2ggZml4
ZXMgdGhpcyBpc3N1ZQorICAgICAgICBieSBmb2xsb3dpbmcgdGhyZWUgY2hhbmdlcy4KKworICAg
ICAgICAxLiBJbnRyb2R1Y2UgVW5pcXVlQXJyYXk8VD4uIEl0IGFsbG9jYXRlcyBtZW1vcnkgZnJv
bSBGYXN0TWFsbG9jLiBXaGlsZSBDKysKKyAgICAgICAgYXJyYXkgd2l0aCBgbmV3YCBuZWVkIHRv
IGhvbGQgdGhlIHNpemUgdG8gY2FsbCBkZXN0cnVjdG9yIGNvcnJlY3RseSwgb3VyCisgICAgICAg
IFVuaXF1ZUFycmF5IG9ubHkgc3VwcG9ydHMgdHlwZSBUIHdoaWNoIGRvZXMgbm90IGhhdmUgYSBu
b24gdHJpdmlhbCBkZXN0cnVjdG9yLgorICAgICAgICBJdCByZWR1Y2VzIHRoZSBhbGxvY2F0aW9u
IHNpemUgc2luY2Ugd2UgZG8gbm90IG5lZWQgdG8gdHJhY2sgdGhlIHNpemUgb2YgdGhlCisgICAg
ICAgIGFycmF5IGNvbXBhcmVkIHRvIHN0YW5kYXJkIGBuZXcgVFtdYC4gVGhpcyBpcyBiYXNpY2Fs
bHkgdXNhYmxlIGlmIHdlIHdhbnQgdG8KKyAgICAgICAgaGF2ZSByYXcgYXJyYXkgd2hpY2ggcG9p
bnRlciB3b24ndCBiZSBjaGFuZ2VkIGV2ZW4gaWYgdGhlIGNvbnRhaW5lciBpcyBtb3ZlZC4KKwor
ICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQuCisKKyAgICAgICAgMy4gQW5ub3RhdGUg
YWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FMTE9DQVRFRC4gU2luY2UgaXQgaW50cm9k
dWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10gb3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxU
W10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAgICAgICAgZnJvbSBGYXN0TWFsbG9jLgor
CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3Rm
L0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBj
b25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6Om9wZXJhdG9yKCkgY29uc3QpOgorICAg
ICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAgKFdURjo6TWFsbG9jUHRyOjpvcGVyYXRv
ciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3RhY2tTaG90Lmg6CisgICAgICAgIChXVEY6
OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAgKFdURjo6U3RhY2tTaG90OjpvcGVyYXRv
cj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6CisgICAgICAgIChXVEY6OlN5c3RlbUZy
ZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgICogd3RmL1VuaXF1ZUFycmF5Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwLgorICAg
ICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAg
ICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIw
MTgtMDItMTQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEF1
dG9tYXRpb246IGNvbWJpbmUgc2Vzc2lvbiBjb21tYW5kcyB0byByZXNpemUgYW5kIG1vdmUgdG9w
LWxldmVsIGJyb3dzaW5nIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFmZmY4OWU5ZTgxNzY5ZWFj
MTBkMDAyYTc0ZTY1ODgxZmE5MTJmNy4uM2M2NWE5N2I5MWU5ZTIwYzIyZDdhMmIxNzNkN2NmYTU1
MWMyMWQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE4LTAyLTIxICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2Vf
dW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9y
IFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVW
ZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6
aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0Nv
bXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1l
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERpcnR5
UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFj
dEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxl
U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVB
dHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3Rp
dmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJM
b2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbUxvZyk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dMZXZl
bFN0cmluZyk6CisKIDIwMTgtMDItMjEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbUmVuZGVyVHJlZUJ1aWxkZXJdIE1vdmUgUmVuZGVyRnVsbFNjcmVlbjo6d2ls
bEJlUmVtb3ZlZCgpIG11dGF0aW9uIGxvZ2ljIHRvIFJlbmRlclRyZWVCdWlsZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBlZTkzNGUxOWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi4z
MTcwYzIzYTdlNTEyZThmZjMxZTM1MTE2OThhNGI2NzZlOWM3MmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVz
aW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVhZC4KKworICAgICAgICAqIHBhbC93aW4vTG9nZ2lu
Z1dpbi5jcHA6CisgICAgICAgIChQQUw6OmxvZ0xldmVsU3RyaW5nKToKKwogMjAxOC0wMi0yMCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1
Y2UgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRhZTBkYWViYmI0OWNm
MjE4MTQ4OWFhMjQ2NzE4ZTI1MTlmYjZmYTAuLjMwZjIzM2NkYTExZGMyZGIyN2JjNDFlMzY4MjU2
MGIxMmNkODM5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDItMjEgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFr
ZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwOgorICAgICAgICAoV2lu
ZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJveHkpOgorICAgICAgICAqIFBsYXRmb3Jt
L0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVz
c2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAo
V2ViS2l0Ojpsb2dMZXZlbFN0cmluZyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltd
KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJh
dG9yW10gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjplbmNvZGUgY29uc3QpOgorCiAyMDE4LTAyLTIwICBOYW4gV2FuZyAgPG5fd2Fu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEtleWJvYXJkIGZvY3VzIG5vdCBmb2xsb3dpbmcg
Vm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdpdGhpbiB3ZWIgY29udGVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAwNjFmZmQzODJhODM2YzJlMjQyNWI4MmFj
MTcxYTMxZmUyZmY4ODFjLi4zODdkODA5YzMxMTQyNzQyYTQyZjQ0ZDczZjIwNTNjNTQwZGE4MDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDIt
MjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4
IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yIGluc3RlYWQu
CisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNl
cy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9D
RlByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
Om9uTWVudUNvbW1hbmQpOgorCiAyMDE4LTAyLTE2ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAogICAgICAgICBVc2UgT1BFTkdMIG1hY3JvcyB0byBiZSBtb3JlIGNsZWFyIGFib3V0
IHdoaWNoIE9wZW5HTC9FUyBXZWJHTCB1c2VzIG9uIENvY29hCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwNTg3MjU5M2Y2ZGJiOWE4NTNhODE2MWE2
OWJiZGY3NDJhMjMzM2EzLi4xMzY3NzE1M2Q1ZmEwNGRmYjhlOWZlYTdlNDQ4YWM0MTdmOWM2ZTAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTQ5
LDEwICs0OSwxMCBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0
cmluZ1JlZiBzdHJpbmcpCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oY29udmVydGVkU2l6
ZSkgPT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1ZmZlckxlbmd0aCkgPT0g
bGVuZ3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJCdWZm
ZXIuZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJz
KHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBWZWN0
b3I8VW5pQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0
cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoVW5pQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlVuaUNoYXIgYW5kIFVD
aGFyIG11c3QgYmUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpLmxlYWtS
ZWYoKTsKKyAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIH0KIAogQ0ZTdHJp
bmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBKU1N0
cmluZ1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlS2lsbHMuaAppbmRleCBlYTg1OWM0YTlhMTJmZTRkZGYyZTUyYzJiODY4NmQyMDg4ODNiODc0
Li5hMjgyMjljNTY4YjQxMmFjNDg4N2MzNTgxNjZmYzIyZGU1OTE5ZmQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKQEAgLTc0LDYgKzc0LDcg
QEAgY2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxTZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEtpbGxTZXQoKQogICAgICAgICAgICAg
OiBtX3dvcmQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlz
YXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVy
LmNwcAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBhLi4wYzIw
NzAzZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDggQEAgdm9p
ZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBj
aGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9IDA7
CiAgICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6OmFtb3Vu
dE9mTm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFj
ZSArIDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJlZml4TGVu
Z3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCArIGFtb3Vu
dE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRhdGEoKSwg
cHJlZml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1vdW50T2ZO
b2RlV2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZpeExlbmd0
aF0gPSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9mTm9kZVdo
aXRlU3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVt
cERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1
ZgogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjdXJy
ZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNTRVJU
KGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFi
bGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJf
dD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBl
bmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJmZWIyZTIy
MWQ4MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2RhNmFhYmQw
OTE2NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUG9seW1v
cnBoaWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVy
LCBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3Qg
VmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
dWludDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0
Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQogICAgICwg
bV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZDk2
YWU1NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFiMDQ2NWJh
MWE4YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5l
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg0
LDcgKzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NB
d2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAg
ICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwqIG93
bmVyLAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBjb25z
dCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
dWludDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYm
IGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToKICAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxO
b2RlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRj
aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDc4Y2E5
MzAzZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRlNjM5YzkzZTRlYTg5MzA2
YTk3N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cApAQCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIAog
ICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwogICAgIFZl
Y3RvcjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50MzJf
dD4gZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVyQ29k
ZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBmYXN0
Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgpKTsK
KyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2FsbENhc2Vz
LnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2FzZXMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmlu
ZGV4IDA2MDJlNGQ5NDExNDUwY2M4ODNjMTI4M2Q3M2U1ZGMyN2E1MjdjNzEuLmRjZDdmMzI2ZDQ0
OTdkYTdhOGVkMWQwM2QxN2E0MTU5YTY5ZmMzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03
MTgsMTcgKzcxOCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBjdXJy
ZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBpcyB0aGUg
VVRGLTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS9kZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVmZmVyID0g
c3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdPUkQgbGVu
Z3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3Ro
LCBidWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRvU3Ry
aW5nKGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVjdG9yPHdj
aGFyX3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGlu
Z051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmRhdGEo
KSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmRh
dGEoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBu
ZXR3b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRpcmVj
dG9yeVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KFBB
VEhfTUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkKKyAgICBW
ZWN0b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZmZXIuZGF0
YSgpLCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5n
IGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKKyAgICBT
dHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpKTsK
ICNlbmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAppbmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4zYTFlYTM3
NDgyNDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
W21heE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251
bU9wY29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0YXRz
QXJyYXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9pZCBsbGlu
dF9lbnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6c19leGNl
cHRpb25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV07
Ci0KICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2MWI1YjI2
ZmM4NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQwMjQyZGM2
NGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNjYsNyAr
NjYsNyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7CiAgICAg
c3RhdGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2RlIHNfb3Bj
b2RlTWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkqIHNfb3Bj
b2RlU3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmlu
ZGV4IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJkZTkxM2Zk
ZjRkYjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1
ZmZlciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXI7
CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBjZTZlNGMxZjQ1Y2I5ZWI5ZTU4NWU3MmJkYzBlNzBhYjY3YmFlZmJiLi5i
NjY3ZWQ3MmU2NTIzMzE0NzY1YTIwMjgxZmZhYjM0MzUxNmE3MmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MzYsMTEgKzUzNiw2IEBAIFZNOjp+Vk0oKQogICAgIGRl
bGV0ZSBjbGllbnREYXRhOwogICAgIGRlbGV0ZSBtX3JlZ0V4cENhY2hlOwogCi0jaWYgRU5BQkxF
KFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYgKG1fcmVnRXhwUGF0dGVy
bkNvbnRleEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZGVsZXRlIG1f
cnRUcmFjZUxpc3Q7CiAjZW5kaWYKQEAgLTkwNyw4ICs5MDIsOCBAQCBjaGFyKiBWTTo6YWNxdWly
ZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQogCiAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4
dExvY2subG9jaygpOwogICAgIGlmICghbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQotICAg
ICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVybkNv
bnRleHRCdWZmZXJTaXplXTsKLSAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVy
OworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8
Y2hhcj4oVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIG1fcmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlci5nZXQoKTsKIH0KIAogdm9pZCBWTTo6cmVsZWFzZVJlZ0V4cFBh
dHRlcm5Db250ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZDcz
ZmM2Yjk3NDY4YzhiNDFkYTFlYTBmZjg5MDhkZGZkM2RiNDJhNS4uNzZkYjA1ODJmYWYzYTI2YjE1
NjdmMjk4NDk1YjY4MWY4OGY1YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxF
KFJFR0VYUF9UUkFDSU5HKQpAQCAtNjg1LDcgKzY4Niw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSA4MTkyOyAvLyBT
cGFjZSBhbGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAotICAgIGNo
YXIqIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBVbmlxdWVB
cnJheTxjaGFyPiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CiAgICAgTG9jayBtX3JlZ0V4
cFBhdHRlcm5Db250ZXh0TG9jazsKICAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAppbmRleCA0ODI0YjFj
NmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi4yNWI4ZjgxNDAzOGIyYWUxY2E0MmE5
MjRmZWUzNmU5NTRhZWZhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBW
ZXJpZmllci5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9B
TExPQ0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9yZSgiQmVm
b3JlIE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MGEyNWJmMzYzN2ZhNTk2
NjJhNTViOTU2ZGRhZWRlODNlYWY1Y2UwLi5lYmFhNTUxMWQxMGRkZjRmNDM2YjU2NjlmYmJiZWMx
ZTBiMTg3Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTYwMiw2ICs2MDIsNyBAQAogCQlERTVBMDlGQjFCQTM2OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5
cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4
RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNV
dGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhp
Y1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzAwRTUyMTIwM0Q2
NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZC
MTUxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3VwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lz
dGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODU1LDEwICs4NTYsMTAgQEAKIAkJ
CQlBOEE0NzI3RjE1MUE4MjVBMDA0MTIzRkYgLyogRGlzcGF0Y2hQdHIuaCAqLywKIAkJCQkwRjQ1
NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9ycy5oICovLAogCQkJCUE4QTQ3MjgwMTUx
QTgyNUEwMDQxMjNGRiAvKiBEb3VibHlMaW5rZWRMaXN0LmggKi8sCi0JCQkJRkUwNUZBRTYxRkRC
MjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLywKLQkJCQlBRDY1M0RBODIwMDZCNkMy
MDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJQThBNDcyOTcxNTFBODI1QTAw
NDEyM0ZGIC8qIGR0b2EuY3BwICovLAogCQkJCUE4QTQ3Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBk
dG9hLmggKi8sCisJCQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMu
aCAqLywKKwkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmgg
Ki8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJ
CQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLywKIAkJCQlBOEE0NzI5
RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9zLmggKi8sCkBAIC0xMDgzLDYgKzEwODQs
NyBAQAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLAogCQkJ
CTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBlQ2FzdHMuaCAqLywKIAkJCQlBOEE0NzM1
QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmggKi8sCisJCQkJRTMwMEU1MjEyMDNENjQ1
RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQy
RjZEIC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYwMEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBV
bnNhZmVQb2ludGVyLmggKi8sCiAJCQkJN0FGRUM2QjAxRUIyMkI1OTAwREFERTM2IC8qIFVVSUQu
Y3BwICovLApAQCAtMTA5Miw3ICsxMDk0LDYgQEAKIAkJCQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIz
RkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzExNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rv
clRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgyNUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAq
LywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8s
CiAJCQkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmNwcCAqLywKIAkJCQkw
RjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAqLywKIAkJCQk5NzRDRkM4RDE2
QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApAQCAtMTEwMSw2ICsxMTAyLDcgQEAKIAkJ
CQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suaCAqLywKIAkJCQlFNEEwQUQz
NzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLywKIAkJCQlFNEEwQUQzODFBOTYy
NDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCisJCQkJRkUwNUZBRkUxRkU1MDA3NTAwMDkz
MjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQyNCw3ICsxNDI2LDYgQEAKIAkJCQkwRjY2QjI4
QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvckRlZmF1bHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9ySUNVLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21w
aWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0
QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4
RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5nTG9jay5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTE1MzMsNiArMTUzNCw3IEBACiAJCQkJMEZFNDQ3OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdv
cmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAv
KiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2
REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZGMUZF
NTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2Vy
dGlvbnMuY3BwCmluZGV4IDE1OGNiZWY3NjEyM2Q5M2Q3ZjQxZjJiZmYyMDE2NTZlMjk4ZThhMDgu
LmRiYWRhZWU2Y2E1NDA2MDAxMjk2NDM5YTIzMDQ1OTdlNWJiYTc2MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlv
bnMuY3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93
aXRoX3ByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IGNoYXIqIGZvcm1hdCwgdgogewog
ICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4ocHJlZml4KTsKICAgICBzaXplX3QgZm9y
bWF0TGVuZ3RoID0gc3RybGVuKGZvcm1hdCk7Ci0gICAgYXV0byBmb3JtYXRXaXRoUHJlZml4ID0g
c3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEp
OwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0
aCk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCkgKyBwcmVmaXhMZW5ndGgsIGZv
cm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gZm9ybWF0V2l0aFByZWZpeChw
cmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aFBy
ZWZpeC5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0
aFByZWZpeC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKICAg
ICBmb3JtYXRXaXRoUHJlZml4W3ByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aF0gPSAwOwogCi0g
ICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIGFyZ3MpOwor
ICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSwgYXJncyk7
CiB9CiAKIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShj
b25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykKQEAgLTE2NywxMiArMTY3LDEyIEBAIHN0
YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJhaWxpbmdfbmV3bGluZShjb25zdCBjaGFy
KiBmb3JtYXQsIHZhX2xpc3QgYXJnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRv
IGZvcm1hdFdpdGhOZXdsaW5lID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGZvcm1hdExlbmd0
aCArIDIpOwotICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5nZXQoKSwgZm9ybWF0LCBmb3Jt
YXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoTmV3bGluZShmb3JtYXRMZW5n
dGggKyAyKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBmb3JtYXQsIGZv
cm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoXSA9ICdcbic7
CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVuZ3RoICsgMV0gPSAwOwogCi0gICAgdnBy
aW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBhcmdzKTsKKyAgICB2
cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZGF0YSgpLCBhcmdzKTsKIH0K
IAogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMjIw
YmFmZDM0OGIzMDYzMzgzYWI3YTU0MmRjMmVkZTExMWFjNzA4NS4uZTk3ZDA2MTkzYzBhMWRmZmM4
MzBlMGNhN2RlNjllNTA5ZDY1OTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIzMyw2ICsy
MzMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBVbmV4cGVjdGVkLmgKICAgICBVbmlTdGRFeHRy
YXMuaAogICAgIFVuaW9uRmluZC5oCisgICAgVW5pcXVlQXJyYXkuaAogICAgIFVuaXF1ZVJlZi5o
CiAgICAgVW5zYWZlUG9pbnRlci5oCiAgICAgVk1UYWdzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCA3
ZWMyMWFlNzk4NTA3NGY2MzlkZjRiYWNiMDAzNmFlMWZjN2UwMjZhLi42NjcyY2U0NmQ5ZjFjMmI0
M2EzOTFlNTRiNjYyNDQzZjA4ZjkzOWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yMDAsNiArMjAw
LDI2IEBAIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBzdGF0aWMgdm9pZCBmcmVlKHZvaWQqIHAp
IHsgZmFzdEZyZWUocCk7IH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFz
dEZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0
CisgICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgRmFzdEZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9y
KCkoVCogcG9pbnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsK
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC0yMDgsNiAr
MjI4LDcgQEAgdXNpbmcgV1RGOjpmYXN0U2V0TWF4U2luZ2xlQWxsb2NhdGlvblNpemU7CiAKIHVz
aW5nIFdURjo6RmFzdEFsbG9jYXRvcjsKIHVzaW5nIFdURjo6RmFzdE1hbGxvYzsKK3VzaW5nIFdU
Rjo6RmFzdEZyZWU7CiB1c2luZyBXVEY6OmlzRmFzdE1hbGxvY0VuYWJsZWQ7CiB1c2luZyBXVEY6
OmZhc3RDYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RGcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCA3ZjZh
MDJjZWYzMWIxYTI5ZmFjNjM4NGNkMmFjZTNlOGY3NTBjMGJhLi42NmYxMGFhOWJkNWJiYTA5YWM1
NjExMzZhZDM1YmY1ZTg0ZTQ4ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQ
dHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAtNjYsNiArNjYsMTEgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFsbG9jID0gRmFzdE1hbGxvYz4gY2xhc3Mg
TWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIp
OwogICAgIH0KIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiAhbV9wdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCmluZGV4IDZlZmQwNzRk
ZTI3MDllNjI3YWNlYjNjODNiOTQzMzEzNDJmNzVhZmQuLjdlMzJhMzViYWUzYzdiNTZhOGJlODVi
N2QxOGQxZTU1NzlhMGIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC0zNyw3ICszOCw3IEBAIGNsYXNz
IFN0YWNrU2hvdCB7CiAgICAgICAgIDogbV9zaXplKHNpemUpCiAgICAgewogICAgICAgICBpZiAo
c2l6ZSkgewotICAgICAgICAgICAgbV9hcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4o
c2l6ZSk7CisgICAgICAgICAgICBtX2FycmF5ID0gbWFrZVVuaXF1ZUFycmF5PHZvaWQqPihzaXpl
KTsKICAgICAgICAgICAgIGludCBpbnRTaXplID0gc2l6ZTsKICAgICAgICAgICAgIFdURkdldEJh
Y2t0cmFjZShtX2FycmF5LmdldCgpLCAmaW50U2l6ZSk7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGludFNpemUpIDw9IHNpemUpOwpAQCAtNTUsNyArNTYs
NyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogICAgIFN0YWNrU2hvdCYgb3BlcmF0b3I9KGNv
bnN0IFN0YWNrU2hvdCYgb3RoZXIpCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9p
ZCpbXT4gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+KG90aGVyLm1fc2l6ZSk7
CisgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+KG90aGVyLm1f
c2l6ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBvdGhlci5tX3NpemU7IGktLTspCiAgICAg
ICAgICAgICBuZXdBcnJheVtpXSA9IG90aGVyLm1fYXJyYXlbaV07CiAgICAgICAgIG1fc2l6ZSA9
IG90aGVyLm1fc2l6ZTsKQEAgLTEwNiw4ICsxMDcsOCBAQCBjbGFzcyBTdGFja1Nob3QgewogICAg
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCoqIGRlbGV0ZWRWYWx1ZUFycmF5KCkgeyByZXR1
cm4gYml0d2lzZV9jYXN0PHZvaWQqKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KLSAg
ICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbV9hcnJheTsKKworICAgIFVuaXF1ZUFy
cmF5PHZvaWQqPiBtX2FycmF5OwogICAgIHNpemVfdCBtX3NpemUgeyAwIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0
ZW1GcmVlLmgKaW5kZXggM2VmNzU2MjgyY2YyMGQ0MGQ4YzYxODU0Nzk0NmQwNGY1YmFlY2VmNS4u
NzNiNjkzZjA2ODM4YmNjOGNjYzgzYTQ2OGQ0ZGJjM2E4YWI4MmY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUu
aApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIHN0cnVjdCBTeXN0ZW1GcmVlIHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwogICAgIHZvaWQgb3BlcmF0b3IoKShU
KiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOwpAQCAtMzksMTEgKzQxLDEyIEBA
IHN0cnVjdCBTeXN0ZW1GcmVlIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBTeXN0
ZW1GcmVlPFRbXT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1
Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1v
dmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CiAgICAgfQotCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9VbmlxdWVBcnJheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5N2ZlMzk2Njk0OGM3ZDFlYmQzOTk0
NDMwMmZmN2E2OTQ3ZDZkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVBcnJheS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit1c2luZyBVbmlxdWVBcnJheSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxU
W10sIEZhc3RGcmVlPFRbXT4+OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8
VD4gbWFrZVVuaXF1ZUFycmF5KHNpemVfdCBzaXplKQoreworICAgIC8vIEMrKyBgbmV3IFRbTl1g
IHN0b3JlcyBpdHMgYE5gIHRvIHNvbWV3aGVyZS4gT3RoZXJ3aXNlLCBgZGVsZXRlIFtdYCBjYW5u
b3QgZGVzdHJveQorICAgIC8vIHRoZXNlIE4gZWxlbWVudHMuIEJ1dCB3ZSBkbyBub3Qgd2FudCB0
byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBhbGxvY2F0ZWQgbWVtb3J5LgorICAgIC8vIElmIGl0IGlz
IGFjY2VwdGFibGUsIHdlIGNhbiBqdXN0IHVzZSBWZWN0b3I8VD4gaW5zdGVhZC4gU28gdGhpcyBV
bmlxdWVBcnJheTxUPiBvbmx5CisgICAgLy8gYWNjZXB0cyB0aGUgdHlwZSBUIHdoaWNoIGRvZXMg
bm90IGhhdmUgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAv
LyBza2lwIGNhbGxpbmcgZGVzdHJ1Y3RvcnMgZm9yIE4gZWxlbWVudHMuIEFuZCB0aGlzIGFsbG93
cyBVbmlxdWVBcnJheTxUPiBub3QgdG8KKyAgICAvLyBzdG9yZSBpdHMgTiBzaXplLgorICAgIHVz
aW5nIFUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VT46OnZhbHVlLCAiIik7CisK
KyAgICAvLyBEbyBub3QgdXNlIHBsYWNlbWVudCBuZXcgbGlrZSBgbmV3IChzdG9yYWdlKSBVW3Np
emVdKClgLiBgbmV3IFVbc2l6ZV0oKWAgcmVxdWlyZXMKKyAgICAvLyBtb3JlIGxhcmdlciBzdG9y
YWdlIHRoYW4gdGhlIGBzaXplb2YoVSkgKiBzaXplYCBzdG9yYWdlIHNpbmNlIGl0IHdhbnQgdG8g
c3RvcmUKKyAgICAvLyBgc2l6ZWAgdG8gc29tZXdoZXJlLgorICAgIFUqIHN0b3JhZ2UgPSBzdGF0
aWNfY2FzdDxVKj4oZmFzdE1hbGxvYyhzaXplb2YoVSkgKiBzaXplKSk7CisgICAgVmVjdG9yVHlw
ZU9wZXJhdGlvbnM8VT46OmZvcmNlSW5pdGlhbGl6ZShzdG9yYWdlLCBzdG9yYWdlICsgc2l6ZSk7
CisgICAgcmV0dXJuIFVuaXF1ZUFycmF5PFQ+KHN0b3JhZ2UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKKwordXNpbmcgV1RGOjpVbmlxdWVBcnJheTsKK3VzaW5nIFdURjo6bWFrZVVuaXF1ZUFy
cmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAppbmRleCBhYmNhYmQwNmM1YmFlZTQ0NGNhZWY1ZTgwZjQwYWI0ZDc2YzdjOTJj
Li4yN2ZjMTQ1M2EwZDBhMDY3MmUzZDc0MWU3MTU5MjlmNjk3MmQ1NThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAt
NjUsMTAgKzY1LDE1IEBAIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPHRydWUsIFQ+CiB0ZW1wbGF0
ZSA8Ym9vbCBuZWVkc0luaXRpYWxpemF0aW9uLCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0
LCB0eXBlbmFtZSBUPgogc3RydWN0IFZlY3RvckluaXRpYWxpemVyOwogCi10ZW1wbGF0ZTxib29s
IGlnbm9yZSwgdHlwZW5hbWUgVD4KLXN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwgaWdu
b3JlLCBUPgordGVtcGxhdGU8Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgdHlwZW5hbWUg
VD4KK3N0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1z
ZXQsIFQ+CiB7CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiwgVCopIHt9CisKKyAgICBz
dGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAg
ICAgIFZlY3RvckluaXRpYWxpemVyPHRydWUsIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6
Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CkBAIC03OSw2ICs4NCwxMSBAQCBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwg
ZmFsc2UsIFQ+CiAgICAgICAgIGZvciAoVCogY3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsrY3Vy
KQogICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBjdXIpIFQ7CiAgICAgfQorCisgICAgc3RhdGlj
IHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgeworICAgICAgICBp
bml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CkBAIC04OCw2ICs5OCwxMSBAQCBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgdHJ1ZSwg
VD4KICAgICB7CiAgICAgICAgIG1lbXNldChiZWdpbiwgMCwgcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oZW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2luKSk7CiAgICAgfQorCisgICAg
c3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgeworICAg
ICAgICBpbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlIDxib29s
IGNhbk1vdmVXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPgpAQCAtMjMwLDYgKzI0NSwxMSBAQCBzdHJ1
Y3QgVmVjdG9yVHlwZU9wZXJhdGlvbnMKICAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9y
VHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRp
YWxpemVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7Cisg
ICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0aWFsaXph
dGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmZvcmNl
SW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCBtb3ZlKFQq
IHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgewogICAgICAgICBWZWN0b3JNb3ZlcjxWZWN0
b3JUcmFpdHM8VD46OmNhbk1vdmVXaXRoTWVtY3B5LCBUPjo6bW92ZShzcmMsIHNyY0VuZCwgZHN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjNzFmMzkyOTM0ODFlY2VlOGQ1NWViNzZjNGMzYjU1
ZjQwOGYyZjFhLi41ZTYyYzVhYzJkYzljYzAxMGI1ZTk5M2RiMTNjY2E1ZTQ2MjNlODVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuY3BwCkBAIC00MjEsOCArNDIxLDggQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogCiAgICAgICAg
IG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKIAotICAg
ICAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4o
bnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6
bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX3NvdXJj
ZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVs
cyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9h
dCo+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVsc1tp
XSA9IGJ1ZmZlci0+Y2hhbm5lbERhdGEoaSktPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IGY0
ZTYzYTg1OWMwMWI0MTVlMWNmMzQ3ZjI3ODhkZGQ4YjdiNzNiYTEuLjMwYjc5Yjc5MzMzNzMxODIx
ZmEyNTdhMDhkMTM1ODBmYTI1OTBkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMjYsNiArMjYsNyBA
QAogCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMDksOCArMTEwLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIGZp
bmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgUmVmUHRyPEF1ZGlv
QnVmZmVyPiBtX2J1ZmZlcjsKIAogICAgIC8vIFBvaW50ZXJzIGZvciB0aGUgYnVmZmVyIGFuZCBk
ZXN0aW5hdGlvbi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNl
Q2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hh
bm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOwor
ICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAgICAgLy8g
VXNlZCBmb3IgdGhlICJnYWluIiBhbmQgInBsYXliYWNrUmF0ZSIgYXR0cmlidXRlcy4KICAgICBS
ZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dn
aW5nV2luLmNwcAppbmRleCA4Y2E0Yzk2ZmVhZjhiYmFlNjEwODIxMTMxMzg3YWUzNDVmMDdkYzI1
Li45NWNjOGQzYzcyYWVlNjYxNzU5YzYwZmU0NzhhZDNhNTExNjU4NWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFN0cmlu
ZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
bGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBpZiAoIUdl
dEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIu
Z2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5n
RW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5nZXQoKSk7Cisg
ICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9Db21waWxlZFNlbGVjdG9yLmgKaW5kZXggYTgzM2RiYTAyZmYzM2QxZGY2MzA4ZTE4ODgw
MmJjNzA4OGU3NjY5MS4uMDk5YWM5M2I3NTRkMjE0ODE5NzcwMzA4YmViYmYzMzg5MzMyNTY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCkBAIC01NSw2ICs1NSw3
IEBAIGNsYXNzIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgewogfTsKIAogc3RydWN0IENvbXBp
bGVkU2VsZWN0b3IgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBT
ZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHN0YXR1czsKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBjb2RlUmVmOwogI2lmIGRlZmluZWQoQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcp
ICYmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDJjZGFj
OTEyMmVmOWVhNzcyNzliY2RjMGQ2M2E0ZWFkZmU5NzhlZGQuLjAyOTdjZTBhZDIzNTRjZmFlODIy
OWZhYjNlOGVlNTFkODc5MzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC05OSw2ICs5OSw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTU1Myw3ICsxNTU0LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJU
ZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHpl
cm87CisgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAgICAgICAgIGlm
ICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAgICAg
ICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMo
Zm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwgJnNpemUsIG51
bGxwdHIpOwpAQCAtMTU2MSw3ICsxNTYyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAg
ICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJbWFnZTJE
IiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltd
PihzaXplKTsKKyAgICAgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hh
cj4oc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXplcm8pIHsKICAgICAgICAgICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvcHlUZXhT
dWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC01NzYxLDcgKzU3NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEdWludCBudQogICAgICAgICAgICAg
fHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVbMl0K
ICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1
ZmZlclZhbHVlWzNdKSkgewogCi0gICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8R0MzRGZsb2F0W10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1ZmZlckRhdGEg
PSBtYWtlVW5pcXVlQXJyYXk8R0MzRGZsb2F0PihidWZmZXJTaXplKTsKICAgICAgICAgZm9yIChH
QzNEdWludCBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkgewogICAgICAgICAgICAg
YnVmZmVyRGF0YVtpaSAqIDRdID0gYXR0cmliVmFsdWUudmFsdWVbMF07CiAgICAgICAgICAgICBi
dWZmZXJEYXRhW2lpICogNCArIDFdID0gYXR0cmliVmFsdWUudmFsdWVbMV07CkBAIC01OTA3LDE1
ICs1OTA4LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbnN1cmVOb3RO
dWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIH0KIAogV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZShpbnQgY2FwYWNp
dHkpCi0gICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKLSAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCisgICAg
OiBtX2J1ZmZlcnMoY2FwYWNpdHkpCiB7CiB9CiAKIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJbnRT
aXplJiBzaXplKQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBtX2NhcGFjaXR5
OyArK2kpIHsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9idWZmZXJzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0
KCk7CiAgICAgICAgIGlmICghYnVmKQogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTMwLDcgKzU5
MzAsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2NlbGVyYXRlZCk7
CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpID0gc3RkOjpt
aW4obV9jYXBhY2l0eSAtIDEsIGkpOworICAgIGkgPSBzdGQ6Om1pbihtX2J1ZmZlcnMuc2l6ZSgp
IC0gMSwgaSk7CiAgICAgbV9idWZmZXJzW2ldID0gV1RGTW92ZSh0ZW1wKTsKIAogICAgIEltYWdl
QnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0KCk7CkBAIC01OTM4LDkgKzU5MzgsOSBAQCBJ
bWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNo
ZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHJldHVybiBidWY7CiB9CiAKLXZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udChp
bnQgaWR4KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNh
Y2hlOjpidWJibGVUb0Zyb250KHNpemVfdCBpZHgpCiB7Ci0gICAgZm9yIChpbnQgaSA9IGlkeDsg
aSA+IDA7IC0taSkKKyAgICBmb3IgKHNpemVfdCBpID0gaWR4OyBpID4gMDsgLS1pKQogICAgICAg
ICBtX2J1ZmZlcnNbaV0uc3dhcChtX2J1ZmZlcnNbaS0xXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRl
eCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZiNzgwYzVkNzI5YzQ5Li5kMmEzOTE5NTlkYmMx
NGVlY2FmYjBhMGUwMGViN2U4ODk2NjJmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01MTcsOSArNTE3
LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHUFVCYXNlZENh
bnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUKICAgICAgICAgLy8gVGhlIHBvaW50ZXIgcmV0
dXJuZWQgaXMgb3duZWQgYnkgdGhlIGltYWdlIGJ1ZmZlciBtYXAuCiAgICAgICAgIEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2YXRlOgotICAg
ICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKLSAgICAgICAgaW50
IG1fY2FwYWNpdHk7CisgICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChzaXplX3QgaWR4KTsKKyAg
ICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4+IG1fYnVmZmVyczsKICAg
ICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNhY2hlIHsgMCB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmNwcAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVjMTczMjZhZWYw
Li5iMjU1MThkODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAg
LTI3NSw4ICsyNzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFu
bmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9
CiAKLSAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpb
XT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjpt
YWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9zb3VyY2VDaGFu
bmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwor
ICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9hdCo+KG51bWJl
ck9mQ2hhbm5lbHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5lbHMobnVt
YmVyT2ZDaGFubmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVz
c29yLmgKaW5kZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJhZWJkNS4uZjcx
NmNlZjczYTM1ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNpbmNsdWRlICJa
ZXJvUG9sZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAgY2xhc3MgRHlu
YW1pY3NDb21wcmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmls
dGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgc3RkOjp1bmlx
dWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGNv
bnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9hdCo+IG1f
ZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRl
cnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1
ZW5jeSAvKiAwIC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZsb2F0
IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0MTAxZjY2YjVm
YzA5YWEzZWZiMTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2MxYWRjY2JmZWFj
MDRkNTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJh
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC00
NCw2ICs0NCw3IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUgewogI2lmIFVT
RShXRUJBVURJT19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBHc3RGRlRG
MzIqIG1faW52ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29tcGxleFtd
PiBtX2NvbXBsZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+IG1fY29t
cGxleERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVkaW9GbG9h
dEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFt
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
RkZURnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4ZTk1ZjJkMmI4
MjdkMTU5ZTMxOTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBlMzJhNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFt
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAgICA6IG1fRkZU
U2l6ZShmZnRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bG9nMihmZnRTaXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0
RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAgICwg
bV9jb21wbGV4RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRG
RlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRh
U2l6ZShtX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpCiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSgpCiBGRlRG
cmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9GRlRTaXplKGZy
YW1lLm1fRkZUU2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkK
LSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+
KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKG1h
a2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZU
U2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZU
U2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRT
aXplKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
cm1hdENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0
Q29udmVydGVyLmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2OTliNTU0MGY1
My4uOWQ4MjA0YzhhMjQ2NjBmYzc3MmIwY2Y3YjU2NTA4N2EzNDUxNWFhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVydGVy
IHsKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50cyA9
IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7Ci0g
ICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1
aW50OF90W10+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNv
bXBvbmVudCk7CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gbWFrZVVu
aXF1ZUFycmF5PHVpbnQ4X3Q+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhC
eXRlc1BlckNvbXBvbmVudCk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRlcm1lZGlh
dGVTcmNEYXRhLmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZvcm1hdENv
bnZlcnRlciB7CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBpbnQgbV9z
cmNTdHJpZGUsIG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOworICAgIFVu
aXF1ZUFycmF5PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVmNzQ0N2Nl
NDc5MzQ4NmE3NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3Nzg0Yzhi
MDM0MDg0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNDYsNyArMTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0RGF0YUZv
cm1hdChHQzNEZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50
ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFy
W10+IHplcm87CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICBpZiAo
d2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7CiAg
ICAgICAgIEdDM0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0
eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsKQEAg
LTE1NCw3ICsxNTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3Vy
Y2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAgICAgc3lu
dGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6
ZSk7CisgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7
CiAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKaW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJmM2NmYS4u
MmU3NDg3OWQ4ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBV
U0UoQ0EpCkBAIC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1
YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2Rl
Y29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsK
KyAgICAgICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwogI2Vu
ZGlmCiAgICAgICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21Tb3VyY2Ug
bV9pbWFnZUh0bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCA3Mjlm
ODQzZGY5N2JlZWJjYjA0YWEyZTk2NjEzYTM1MzY4MGVjN2Q2Li5hMmVlZjQyYmVmZmI4MzgwZjg3
YWFkN2M1YzAwOGEzZjdkNzc2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAj
aWZkZWYgREVCVUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0RGlydHlS
ZWN0cyhIV05EIHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0KIAogICAg
IERXT1JEIGRhdGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwgMCk7Ci0g
ICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFy
W10+KGRhdGFTaXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRhdGEgPSBy
ZWludGVycHJldF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsKICAgICBp
ZiAoITo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25EYXRhKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgxNTIyYWYx
MWIyMWMxNzc3NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlmMzUwNGRm
MWQ5ZmVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJSZWdpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCkBAIC0z
NDAsNyArMzQxLDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWlyb19zdXJm
YWNlX3QqIHN1cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgpIC8gMjsK
IAogICAgIHVpbnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhf
dFtdPiB0bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAgICBhdXRv
IHRtcCA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9wID0gc291
cmNlICsgKGkgKiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2ZjRlM2I2
YWFhN2RjYzFiMTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi4wNzFkY2NjOTQxMjVmZjdhNWE4OTQ4NWQ1
NGJmOTI5MTM4N2E3YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcgKzQ3OCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2Uo
Ym9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHByZW11bHRp
cGx5IHRoZSBhbHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJlZmVyIHRv
IG1hbm51YWxseSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBSR0JBOCBm
b3JtYXRzIGluc3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsKLSAgICAg
ICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KG1f
aW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxpemVkUkdC
QThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VI
ZWlnaHQgKiA0KTsKICAgICAgICAgY29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxEYXRhKTsKICAgICAgICAgdWludDhf
dCogZGVzdGluYXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CiAgICAgICAgIGNv
bnN0IHB0cmRpZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBzaXplb2Yo
dWludDE2X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rl
eHR1cmUuY3BwCmluZGV4IGFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2NDYu
Ljg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzAsNyArMTcxLDcgQEAgdm9pZCBUZXh0dXJlOjp1
cGRhdGVTdWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKICAg
ICBpbnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFs
bGVyIG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0U2FuaXRpemVkCiAg
ICAgICAgIHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpLCBtX3RpbGVz
LmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAqCiAgICAgICAg
IHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxlcy5ib3Jk
ZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOwotICAgIGF1dG8gdGVt
cEJ1ZmYgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KHRlbXBCdWZmU2l6ZSk7CisgICAg
YXV0byB0ZW1wQnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZTaXplKTsK
IAogICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAqIG1f
dGlsZXMubnVtVGlsZXNZKCk7IHRpbGUrKykgewogICAgICAgICBpbnQgeEluZGV4ID0gdGlsZSAl
IG1fdGlsZXMubnVtVGlsZXNYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCBkZjBhMGI4NTVlM2Q0MDBiMDU0OTdjMzg2YTlkYmI4ZTZkYjcy
M2UxLi41NDcyNzRmZmE2OGE1MmU0NWUwZDcyZDI4YjJhMTM5YzZmNWIwYjFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU0LDYgKzU0LDcg
QEAKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVz
Q2hlY2tlZC51bnNhZmVHZXQoKTsKIAotICAgIGF1dG8gcGl4ZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTx1bnNpZ25lZCBjaGFyW10+KHRvdGFsQnl0ZXMpOworICAgIGF1dG8gcGl4ZWxzID0gbWFrZVVu
aXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcGl4ZWxzKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTY2OCwxMSArNjY5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBpZiAo
bGVuZ3RoKSB7CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgICAgIDo6Z2xHZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgICAgIFZl
Y3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKKyAgICAgICAgOjpnbEdldFNoYWRlckluZm9Mb2co
c2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICAgICAgUGxhdGZvcm0z
RE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICAgICAgZW50cnkubG9nID0g
Z2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAg
ICAgICBlbnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhp
bmZvLmRhdGEoKSwgc2l6ZSkpOwogICAgIH0KIAogICAgIGlmIChjb21waWxlU3RhdHVzICE9IEdM
X1RSVUUpIHsKQEAgLTg1MSwxOCArODUyLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7
CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdMY2hhcltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9N
QVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAgVmVjdG9yPEdMY2hhcj4g
bmFtZShtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
IGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsK
ICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFj
dGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgs
ICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9n
cmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwg
bmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJv
Z3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZ2V0KCksIG5h
bWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1l
KHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRhdGEo
KSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9y
bU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5h
bWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1h
cHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGlu
ZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEo
KSk7CiAjZW5kaWYKIApAQCAtODk4LDE4ICs4OTksMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWlu
dAogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHBy
b2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7CiAK
LSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlmb3JtU2l6
ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5h
dGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNU
SVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdM
c2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5
cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlm
b3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpn
bEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxl
bmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9y
aWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3Ry
aW5nKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0g
b3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBT
dHJpbmcobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0g
ICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpOworICAgIFN0cmlu
ZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAi
UHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAnJXMn
IiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFt
ZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIApAQCAtMTY5OSwxNCArMTcwMCwxNCBAQCBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6
ZSA9IDA7Ci0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3Ro
KTsKLSAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5m
by5nZXQoKSk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRQ
cm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAg
ICBHQzNEc2l6ZWkgY291bnQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdOwogICAg
IGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwogCi0gICAg
cmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmdl
dCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0
cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1l
LCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE3NzAsMTEgKzE3NzEsMTEgQEAgU3RyaW5nIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRv
IGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRT
aGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgVmVj
dG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRl
ciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xv
ZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgIHJldHVybiBnZXRVbm1hbmds
ZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4
IGFiZWRmNTM1NTNkZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLjJlNmM1MmM2MzQ4OTY2
NDlhZjVjNmE0NDQ3Yjk4ZjEwYTNkMjQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmNwcApAQCAtNDUwLDEyICs0NTAsMTIgQEAgc3RhdGljIENTdHJpbmcgZ2V0
U2hhZGVyTG9nKEdMdWludCBzaGFkZXIpCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihs
b2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNp
emVpIGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xl
bmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhz
aGFkZXIsIGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAgIHNpemVf
dCBzdHJpbmdMZW5ndGggPSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1cm4geyBp
bmZvLmdldCgpLCBzdHJpbmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEoKSwgc3Ry
aW5nTGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50IHBy
b2dyYW0pCkBAIC00NjUsMTIgKzQ2NSwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRQcm9ncmFtTG9n
KEdMdWludCBwcm9ncmFtKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9nTGVuZ3Ro
KTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXplaSBpbmZv
TGVuZ3RoID0gMDsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xlbmd0aCwg
JmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3Jh
bSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90IHN0
cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGluZm8u
Z2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJpbmdM
ZW5ndGggfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBlMGE4
ZjlkNDJhMzU5YjM5NDIzNGI5Njk1MTMyNzQ1YmYwMDNiOGRkLi44YTMyZWIxMzZmMTMyNGU5MjAy
OWFjYmVmMGFiNjhmMjY0ZmU4YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTM4
LDYgKzM4LDcgQEAKIAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
U3RyZWFtQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3
IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3Ry
ZWFtSGFuZGxlIHsKICAgICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRT
dHJlYW07CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3dyaXRlUmVhZHlTb3VyY2U7CiAgICAgR1Jl
ZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNo
YXJbXT4gbV9yZWFkQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVhZEJ1ZmZlcjsK
IAogICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAyND4gbV9idWZmZXI7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDQ0YzEzZGI5MWMxNzZlMjJi
NjQ2MDdlM2ZhZmNhMjUxZDg5NzVlNGQuLjE3ODgwNjYzMjlhMzQ2Yjc2YjYxNzlkMmIyMjRiZDMw
Njk1NzQ1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApAQCAtMTI0
LDcgKzEyNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVkKEdSZWZQ
dHI8R0lPU3RyZWFtPiYmIHN0cmVhbSkKICAgICBtX3N0cmVhbSA9IFdURk1vdmUoc3RyZWFtKTsK
ICAgICBtX291dHB1dFN0cmVhbSA9IEdfUE9MTEFCTEVfT1VUUFVUX1NUUkVBTShnX2lvX3N0cmVh
bV9nZXRfb3V0cHV0X3N0cmVhbShtX3N0cmVhbS5nZXQoKSkpOwogICAgIG1faW5wdXRTdHJlYW0g
PSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKTsKLSAgICBtX3Jl
YWRCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUkVBRF9CVUZGRVJfU0laRSk7Cisg
ICAgbV9yZWFkQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KFJFQURfQlVGRkVSX1NJWkUp
OwogCiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBt
X3JlYWRCdWZmZXIuZ2V0KCksIFJFQURfQlVGRkVSX1NJWkUsIFJ1bkxvb3BTb3VyY2VQcmlvcml0
eTo6QXN5bmNJT05ldHdvcmssIG1fY2FuY2VsbGFibGUuZ2V0KCksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggYTllZTRlZDUyZWU5NGQxMzhlZmQ5ZjNi
NjE1YjdkYjJlYTUxMzgzYS4uMzVkNzY5OGQ5ZGRiZmU1ZDY4MjJkMGFkMjA1MTc2NTgyNmFiZDUy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIs
MTIgKzQyLDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0
aCk7CiAKLSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVu
dFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVu
dFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5n
KGJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwCmluZGV4IDk1MzYyZmExNmYzNjA1YjY3ZDBiYjMx
MjA3MzM4YTBmNTBlZjQ4NTMuLmQxNzMyZGRiNGI1MTIxYjgzYjA5OWRhOWY5ZTY4NDk5YmFjNWYw
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVBy
b3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Q
cm94eVdpbi5jcHAKQEAgLTMwLDEwICszMCw4IEBACiAKIGJvb2wgV2luZG93c1N5c3RlbVByb3h5
OjpnZXRTeXN0ZW1IdHRwUHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBv
cnQpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRSZWdCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFS
W10+IHRIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJMZW4pOwotICAgIGlm
ICghdFJlZ0J1ZmZlciB8fCAhdEhvc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0
b3I8VENIQVI+IHRSZWdCdWZmZXIoYnVmZmVyTGVuKTsKKyAgICBWZWN0b3I8VENIQVI+IHRIb3N0
KGJ1ZmZlckxlbik7CiAgICAgRFdPUkQgdHlwZTsKICAgICBEV09SRCBzaXplOwogICAgIEhLRVkg
a2V5OwpAQCAtNTEsMTYgKzQ5LDE2IEBAIGJvb2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0
ZW1IdHRwUHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBvCiAgICAgICAg
IEwiUHJveHlTZXJ2ZXIiLAogICAgICAgICBudWxscHRyLAogICAgICAgICAmdHlwZSwKLSAgICAg
ICAgKExQQllURSl0UmVnQnVmZmVyLmdldCgpLAorICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIu
ZGF0YSgpLAogICAgICAgICAmc2l6ZSk7CiAKICAgICBpZiAocmV0ICE9IEVSUk9SX1NVQ0NFU1Mp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVn
QnVmZmVyLmdldCgpLCB0SG9zdC5nZXQoKSwgYnVmZmVyTGVuLCBwb3J0KSkKKyAgICBpZiAoIXBh
cnNlUHJveHlTdHJpbmcodFJlZ0J1ZmZlci5kYXRhKCksIHRIb3N0LmRhdGEoKSwgYnVmZmVyTGVu
LCBwb3J0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2NzdG9tYnMoYnVmZmVyLCB0
SG9zdC5nZXQoKSwgYnVmZmVyTGVuKTsKKyAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0LmRhdGEo
KSwgYnVmZmVyTGVuKTsKICAgICBidWZmZXJbYnVmZmVyTGVuLTFdID0gJ1wwJzsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgv
Q29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKaW5kZXggMjAzYzU2YWRiNjI2OTllMzA2ZDkzODRjYzg2MzdkNDYxYzg3
NDY0NS4uM2M0NjM5NGUyZTNkMzQ3NTJiYmM2NmQxYTU1MjUyYWJiYzM3MDg1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAg
LTE0MywxMSArMTQzLDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogCiAg
ICAgc2l6ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKICAgICBzaXplX3Qg
YXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAgIFZlY3Rv
cjxBdHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm8oYXR0YWNobWVudENvdW50KTsKIAogICAg
IGlmIChhdHRhY2htZW50Q291bnQpIHsKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRDb3VudCk7Ci0gICAgICAgIG1l
bWNweShhdHRhY2htZW50SW5mby5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50
SW5mbykgKiBhdHRhY2htZW50Q291bnQpOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8u
ZGF0YSgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRD
b3VudCk7CiAgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBh
dHRhY2htZW50Q291bnQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2ht
ZW50Q291bnQ7ICsraSkgewpAQCAtNDE3LDcgKzQxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2Vu
ZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgaW92WzBdLmlv
dl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJm1lc3NhZ2VJbmZvKTsKICAgICBpb3Zb
MF0uaW92X2xlbiA9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVmVjdG9yPEF0dGFjaG1lbnRJ
bmZvPiBhdHRhY2htZW50SW5mbzsKICAgICBNYWxsb2NQdHI8Y2hhcj4gYXR0YWNobWVudEZEQnVm
ZmVyOwogCiAgICAgYXV0byYgYXR0YWNobWVudHMgPSBvdXRwdXRNZXNzYWdlLmF0dGFjaG1lbnRz
KCk7CkBAIC00NDQsNyArNDQzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2Fn
ZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGZkUHRyID0gcmVpbnRl
cnByZXRfY2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwogICAgICAgICB9CiAKLSAgICAgICAg
YXR0YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFj
aG1lbnRzLnNpemUoKSk7CisgICAgICAgIGF0dGFjaG1lbnRJbmZvLnJlc2l6ZShhdHRhY2htZW50
cy5zaXplKCkpOwogICAgICAgICBpbnQgZmRJbmRleCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF0dGFj
aG1lbnRJbmZvW2ldLnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlwZSgpKTsKQEAgLTQ2Niw3ICs0
NjUsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBv
dXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaW92W2lv
dkxlbmd0aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5nZXQoKTsKKyAgICAgICAgaW92W2lv
dkxlbmd0aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5kYXRhKCk7CiAgICAgICAgIGlvdltp
b3ZMZW5ndGhdLmlvdl9sZW4gPSBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudHMu
c2l6ZSgpOwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDZkZTFiYWI4NTkwNzdmODE3MGM4YmQyYmZhNTIx
OTVmYWE3MWI3MmQuLmQwNjM4ZDMxM2E2ZTdjOTJlYjgyNDE0ODI0ODkzZGI2NjU3NmJkODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIs
MTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlx
dWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAot
ICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFi
bGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFi
bGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVy
LmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hF
eHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRl
eCBlNTI3ZjgxNTI1N2MwODcwOWNiNGZhMTViOWIwNzk1OTIxYzAxM2Y5Li4xZjc2ODA4NTY0ZWQ0
ZGI2ZTVjMGNlMWViNjMwMjExNzFlOTBlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTg2LDggKzg3LDcgQEAgY2xhc3MgU2FuZGJveEV4dGVu
c2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbmRib3hFeHRlbnNpb24+IHsKICAgICAgICAKICAg
ICBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxIYW5kbGVbXT4gbV9kYXRhOwotICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9
OworICAgICAgICBWZWN0b3I8SGFuZGxlPiBtX2RhdGE7CiAjZWxzZQogICAgICAgICBIYW5kbGUg
bV9lbXB0eUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2Fu
ZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCA5ZDhiOWViMWI3ZjUwYWQyZGE2ZTE1ZTAzMjg0MThi
YzNiMGFiMzNkLi5iOGU3NDNkMjM2MGNmZWVmYzE3YmNhMjRkNTk3MTFjZGQ1OGE1YjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQpAQCAt
MTYzLDM0ICsxNjMsMzMgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxs
b2NhdGUoc2l6ZV90IHNpemUpCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQoIW1fZGF0YSk7CisgICAgQVNTRVJUKG1fZGF0YS5pc0VtcHR5KCkpOwogCi0gICAg
bV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbXT4oc2l6
ZSk7Ci0gICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2RhdGEucmVzaXplKHNpemUpOwogfQogCiBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpv
cGVyYXRvcltdKHNpemVfdCBpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGkgPCBtX3NpemUpOyAKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhW2ldOwogfQogCiBj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGkgPCBtX3NpemUpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFb
aV07CiB9CiAKIHNpemVfdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc2l6ZTsKKyAgICByZXR1cm4gbV9kYXRhLnNpemUoKTsKIH0K
IAogdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihzaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAg
ICAgIGVuY29kZXIgPDwgbV9kYXRhW2ldOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9kYXRh
KQorICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCBlMDA5NGI5NmJiMTg5YTY5
NjM1NWRlMGRiMDgwMzBiYzBhODJkNzA5Li4xN2VlMTJmNjhlODJmN2FkZTAwOTAwMjBhMDgzYjY1
MjI5NjFjMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblBhY2thZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luUGFja2FnZVdpbi5jcHAKQEAgLTE3MiwxOSArMTcyLDE5IEBAIGJvb2wgUGx1Z2luUGFj
a2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdmVyc2lvbkluZm9EYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6ZSk7CisgICAgVmVjdG9yPGNoYXI+IHZlcnNpb25J
bmZvRGF0YSh2ZXJzaW9uSW5mb1NpemUpOwogCi0gICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9X
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbklu
Zm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZ2V0KCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNpb25J
bmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNp
b25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwg
IlByb2R1Y3ROYW1lIik7Ci0gICAgbV9kZXNjcmlwdGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNp
b25JbmZvRGF0YS5nZXQoKSwgIkZpbGVEZXNjcmlwdGlvbiIpOworICAgIG1fbmFtZSA9IGdldFZl
cnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJQcm9kdWN0TmFtZSIpOworICAgIG1f
ZGVzY3JpcHRpb24gPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmls
ZURlc2NyaXB0aW9uIik7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSB8fCBtX2Rlc2NyaXB0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWU19GSVhFREZJTEVJTkZP
KiBpbmZvOwogICAgIFVJTlQgaW5mb1NpemU7Ci0gICAgaWYgKCFWZXJRdWVyeVZhbHVlVyh2ZXJz
aW9uSW5mb0RhdGEuZ2V0KCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwg
aW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCisgICAgaWYgKCFWZXJRdWVyeVZh
bHVlVyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCBMIlxcIiwgKExQVk9JRCopICZpbmZvLCAmaW5m
b1NpemUpIHx8IGluZm9TaXplIDwgc2l6ZW9mKFZTX0ZJWEVERklMRUlORk8pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgbV9tb2R1bGVWZXJzaW9uLmxlYXN0U2lnID0gaW5mby0+ZHdGaWxl
VmVyc2lvbkxTOwogICAgIG1fbW9kdWxlVmVyc2lvbi5tb3N0U2lnID0gaW5mby0+ZHdGaWxlVmVy
c2lvbk1TOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaElu
Zm8oKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsK
LSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJNSU1FVHlwZSIpLnNw
bGl0KCd8JywgdHlwZXMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRh
KCksICJNSU1FVHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOwogICAgIFZlY3RvcjxTdHJpbmc+IGV4
dGVuc2lvbkxpc3RzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwg
IkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBleHRlbnNpb25MaXN0cyk7CisgICAgZ2V0VmVyc2lv
bkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBl
eHRlbnNpb25MaXN0cyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25zOwotICAgIGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVPcGVuTmFtZSIpLnNwbGl0
KCd8JywgZGVzY3JpcHRpb25zKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEu
ZGF0YSgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFN0
cmluZyB0eXBlID0gdHlwZXNbaV0uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBiZTNlYjMxMTkxODM0MDU3
ZTVjMzQ2ODhiMTNmZjVlMTU3ZjhkNjAzLi4xOTA0ODk3M2ZiMTc2MzBlZjY1ZjVkNjI2MTFhMzY4
NDE2NDNjMWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZl
cmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgIENGU3RyaW5n
UmVmIGRpZFJlbW92ZURlZmF1bHRzS2V5ID0gQ0ZTVFIoV2ViS2l0RGlkTWlncmF0ZURlZmF1bHRT
ZXR0aW5nc0Zyb21TYWZhcmkzQmV0YVByZWZlcmVuY2VLZXkpOwogICAgIGJvb2wgb21pdERlZmF1
bHRzID0gIWJvb2xlYW5WYWx1ZUZvclByZWZlcmVuY2VzVmFsdWUoQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZGljdCwgZGlkUmVtb3ZlRGVmYXVsdHNLZXkpKTsKIAotICAgIGF1dG8ga2V5cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKLSAgICBhdXRvIHZhbHVlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKLSAgICBDRkRpY3Rpb25hcnlHZXRLZXlz
QW5kVmFsdWVzKGRpY3QsIGtleXMuZ2V0KCksIHZhbHVlcy5nZXQoKSk7CisgICAgVmVjdG9yPENG
VHlwZVJlZj4ga2V5cyhjb3VudCk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4gdmFsdWVzKGNvdW50
KTsKKyAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMuZGF0YSgpLCB2
YWx1ZXMuZGF0YSgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewog
ICAgICAgICBpZiAoIWtleXNbaV0gfHwgIXZhbHVlc1tpXSB8fCBDRkdldFR5cGVJRChrZXlzW2ld
KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApp
bmRleCAxNWUyN2Y5ODVjMmNkOTk2ZGU5YTA3ZWVhOWI1OWZkZDBmNDhlNzg3Li4yMmY1YTI2MmMx
ZGUxYjgxOWRjZWFmM2FiZmI3N2MwZjM5ODFiYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcApAQCAtMTc4NCw4ICsxNzg0LDggQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5k
KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrID0g
TUlJTV9TVFJJTkc7CiAgICAgOjpHZXRNZW51SXRlbUluZm8oaE1lbnUsIGluZGV4LCB0cnVlLCAm
bWVudUl0ZW1JbmZvKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXQ0hB
UltdPihtZW51SXRlbUluZm8uY2NoICsgMSk7Ci0gICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEg
PSBidWZmZXIuZ2V0KCk7CisgICAgVmVjdG9yPFdDSEFSPiBidWZmZXIobWVudUl0ZW1JbmZvLmNj
aCArIDEpOworICAgIG1lbnVJdGVtSW5mby5kd1R5cGVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAg
ICBtZW51SXRlbUluZm8uY2NoKys7CiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrIHw9IE1JSU1fSUQ7
CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIDo6RGVzdHJveU1lbnUobV9jdXJyZW50Q29u
dGV4dE1lbnUpOwogICAgIG1fY3VycmVudENvbnRleHRNZW51ID0gbnVsbHB0cjsKIAotICAgIFN0
cmluZyB0aXRsZShidWZmZXIuZ2V0KCksIG1lbnVJdGVtSW5mby5jY2gpOworICAgIFN0cmluZyB0
aXRsZShidWZmZXIuZGF0YSgpLCBtZW51SXRlbUluZm8uY2NoKTsKICAgICBDb250ZXh0TWVudUFj
dGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4obWVudUl0ZW1JbmZv
LndJRCk7CiAKICAgICBpZiAoYWN0aW9uID49IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlv
blRhZykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334385</attachid>
            <date>2018-02-21 09:08:34 -0800</date>
            <delta_ts>2018-02-22 19:09:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180222020833.patch</filename>
            <type>text/plain</type>
            <size>91317</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
OWIzZGY5MTMzMWM4OTU4OTM1ZGVlNmVlYzhhMjAxY2IwYjYzZTM5Li5iOTkwYjcyZWE2NmI5YzBm
ZDZmYzE5MjQ2ZmFiYzg2M2JhZjc5YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOC0wMi0yMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpUeXBl
UHJvZmlsZXJMb2cpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVM
b2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmg6CisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6VHlwZVByb2ZpbGVyTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAg
IChKU0M6OlZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcik6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAocnVuRnJv
bUZpbGVzKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMi0yMCAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OlZhcmFyZ3NG
b3J3YXJkaW5nUGhhc2Ugc2hvdWxkIGVsaW1pbmF0ZSBnZXR0aW5nIGFyZ3VtZW50IGxlbmd0aApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpp
bmRleCAwYTFhZjA4Yjg1N2M2YzRlYzNlOGRiOTg2NGRlYzFjMTc2NTY5ZjA4Li45MzFjODM4ZjRl
YTg2MzQ3OTY3ODc4NDk5NzY1ZWFmNTdhM2UzM2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4
LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgd2UgdXNlIGBtYWtl
X3VuaXF1ZTxjaGFyW10+KG51bSlgIG9yIGBuZXcgY2hhcltudW1dYCwgYWxsb2NhdGlvbiBpcwor
ICAgICAgICBkb25lIGJ5IHRoZSBzeXN0ZW0gbWFsbG9jIGluc3RlYWQgb2YgYm1hbGxvYy4gVGhp
cyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCisgICAgICAgIGJ5IGZvbGxvd2luZyB0aHJlZSBjaGFu
Z2VzLgorCisgICAgICAgIDEuIEludHJvZHVjZSBVbmlxdWVBcnJheTxUPi4gSXQgYWxsb2NhdGVz
IG1lbW9yeSBmcm9tIEZhc3RNYWxsb2MuIFdoaWxlIEMrKworICAgICAgICBhcnJheSB3aXRoIGBu
ZXdgIG5lZWQgdG8gaG9sZCB0aGUgc2l6ZSB0byBjYWxsIGRlc3RydWN0b3IgY29ycmVjdGx5LCBv
dXIKKyAgICAgICAgVW5pcXVlQXJyYXkgb25seSBzdXBwb3J0cyB0eXBlIFQgd2hpY2ggZG9lcyBu
b3QgaGF2ZSBhIG5vbiB0cml2aWFsIGRlc3RydWN0b3IuCisgICAgICAgIEl0IHJlZHVjZXMgdGhl
IGFsbG9jYXRpb24gc2l6ZSBzaW5jZSB3ZSBkbyBub3QgbmVlZCB0byB0cmFjayB0aGUgc2l6ZSBv
ZiB0aGUKKyAgICAgICAgYXJyYXkgY29tcGFyZWQgdG8gc3RhbmRhcmQgYG5ldyBUW11gLiBUaGlz
IGlzIGJhc2ljYWxseSB1c2FibGUgaWYgd2Ugd2FudCB0bworICAgICAgICBoYXZlIHJhdyBhcnJh
eSB3aGljaCBwb2ludGVyIHdvbid0IGJlIGNoYW5nZWQgZXZlbiBpZiB0aGUgY29udGFpbmVyIGlz
IG1vdmVkLgorCisgICAgICAgIDIuIFVzZSBWZWN0b3I8VD4gaW5zdGVhZC4KKworICAgICAgICAz
LiBBbm5vdGF0ZSBhbGxvY2F0ZWQgdHlwZXMgd2l0aCBNQUtFX0ZBU1RfQUxMT0NBVEVELiBTaW5j
ZSBpdCBpbnRyb2R1Y2VzCisgICAgICAgIG5ld1tdIGFuZCBkZWxldGVbXSBvcGVyYXRvcnMsIG1h
a2VfdW5pcXVlPFRbXT4obnVtKSB3aWxsIGFsbG9jYXRlIG1lbW9yeQorICAgICAgICBmcm9tIEZh
c3RNYWxsb2MuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgIChXVEY6OkZhc3RGcmVlOjpv
cGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKFdURjo6RmFzdEZyZWU8VDo6b3BlcmF0b3IoKSBj
b25zdCk6CisgICAgICAgICogd3RmL01hbGxvY1B0ci5oOgorICAgICAgICAoV1RGOjpNYWxsb2NQ
dHI6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAg
ICAgICAgKFdURjo6U3RhY2tTaG90OjpTdGFja1Nob3QpOgorICAgICAgICAoV1RGOjpTdGFja1No
b3Q6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdU
Rjo6U3lzdGVtRnJlZTxUOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVl
QXJyYXkuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dp
bi5jcHAuCisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVBcnJheSk6CisgICAgICAgICogd3RmL1Zl
Y3Rvci5oOgorICAgICAgICAoV1RGOjpWZWN0b3JUeXBlT3BlcmF0aW9uczo6Zm9yY2VJbml0aWFs
aXplKToKKwogMjAxOC0wMi0xNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgQXV0b21hdGlvbjogY29tYmluZSBzZXNzaW9uIGNvbW1hbmRzIHRvIHJlc2l6ZSBh
bmQgbW92ZSB0b3AtbGV2ZWwgYnJvd3NpbmcgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMWZmZjg5
ZTllODE3NjllYWMxMGQwMDJhNzRlNjU4ODFmYTkxMmY3Li43YTMwZDI5MzFhZDAyYThhZThiMzk3
YzFjYmM3NzRlZDk2YzczYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTgtMDIt
MjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4
IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yLCBGQVNUX0FM
TE9DQVRFRCwgb3IgVW5pcXVlQXJyYXkgaW5zdGVhZC4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oOgorICAgICAgICAqIGNzc2ppdC9Db21waWxlZFNlbGVj
dG9yLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkR5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJh
bWVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1hdENvbnZlcnRlcjo6Rm9ybWF0Q29udmVydGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0RGlydHlSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmxpcEltYWdlU3VyZmFjZVZlcnRp
Y2FsbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFj
dG9yOjpleHRyYWN0SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmU6OnVwZGF0ZVN1YlJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmNvbXBpbGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZUF0dHJpYkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZVVuaWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldFNoYWRlckxvZyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtTG9nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpQTkdJbWFnZVJlYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpQTkdJbWFnZVJlYWRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VS
ZWFkZXI6OmludGVybGFjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFn
ZVJlYWRlcjo6Y3JlYXRlSW50ZXJsYWNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsOjpTb2NrZXREYXRhOjpTb2NrZXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpyZWFkRGF0YSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNvbm5lY3RlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bG9nTGV2ZWxTdHJpbmcpOgorCiAyMDE4LTAyLTIxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVyXSBNb3ZlIFJlbmRlckZ1bGxTY3Jl
ZW46OndpbGxCZVJlbW92ZWQoKSBtdXRhdGlvbiBsb2dpYyB0byBSZW5kZXJUcmVlQnVpbGRlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggYjMwNDc2ZjI0OGEwZWU5MzRlMTliM2QxYTRjYThkMWM2YmFk
NWYyMC4uMzE3MGMyM2E3ZTUxMmU4ZmYzMWUzNTExNjk4YTRiNjc2ZTljNzJhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMDItMjEgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBu
ZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBwYWwvd2lu
L0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoUEFMOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgt
MDItMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
SW50cm9kdWNlIEhBVkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYWUwZGFl
YmJiNDljZjIxODE0ODlhYTI0NjcxOGUyNTE5ZmI2ZmEwLi4zMGYyMzNjZGExMWRjMmRiMjdiYzQx
ZTM2ODI1NjBiMTJjZDgzOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTIx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBz
dGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcDoKKyAgICAg
ICAgKFdpbmRvd3NTeXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5KToKKyAgICAgICAgKiBQ
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnByb2Nlc3NNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91
dHB1dE1lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bG9nTGV2ZWxTdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94
RXh0ZW5zaW9uLmg6CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2Nh
dGUpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3Bl
cmF0b3JbXSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlIGNvbnN0KToKKwogMjAxOC0wMi0yMCAgTmFuIFdhbmcg
IDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBLZXlib2FyZCBmb2N1cyBub3QgZm9s
bG93aW5nIFZvaWNlT3ZlciBjdXJzb3IgaW50byB3ZWIgY29udGVudCBvciB3aXRoaW4gd2ViIGNv
bnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDYxZmZkMzgyYTgzNmMyZTI0
MjViODJhYzE3MWEzMWZlMmZmODgxYy4uZmRjOTZkNDM5MzcxYjE5OTRjZjRmYzE2OTc4NzBiN2E4
ZDlmYTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDE4LTAyLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBp
bnN0ZWFkLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKE1h
cnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdBcnJheSk6CisgICAgICAgIChNYXJz
aGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkpOgorICAgICAgICAqIFBsdWdpbnMv
UGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlBy
ZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6b25NZW51Q29tbWFuZCk6CisKIDIw
MTgtMDItMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBP
UEVOR0wgbWFjcm9zIHRvIGJlIG1vcmUgY2xlYXIgYWJvdXQgd2hpY2ggT3BlbkdML0VTIFdlYkdM
IHVzZXMgb24gQ29jb2EKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
dHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0Yu
Y3BwCmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMzYTMuLjEzNjc3
MTUzZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIEpTU3RyaW5n
UmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICBp
ZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVy
biAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVh
a1JlZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4o
bGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgw
LCBsZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIobGVu
Z3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBs
ZW5ndGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFy
KSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUi
KTsKLSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJldHVybiAmT3Bh
cXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmRhdGEo
KSksIGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlDRlN0
cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmluZGV4IGVhODU5
YzRhOWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmEyODIyOWM1NjhiNDEyYWM0ODg3
YzM1ODE2NmZjMjJkZTU5MTlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlS2lsbHMuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxz
IHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogCiAgICAgY2xh
c3MgS2lsbFNldCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgS2lsbFNldCgpCiAgICAgICAgICAgICA6IG1fd29yZCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGFkMDM1NmU4Zjkw
YmRmOGEzNWExZTNlNTNkZjg3NjI1NDRlNDMxMGEuLjBjMjA3MDNlZDhlMmQ4MTNmNWQyMTgwOGFh
YzJmM2NkMjg2MjA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1Zgog
ICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gMDsKICAgICBlbHNlCiAgICAgICAgIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgPSBHcmFwaDo6YW1vdW50T2ZOb2RlV2hpdGVTcGFjZShjb250
ZXh0KTsKLSAgICBhdXRvIHByZWZpeEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihw
cmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7Ci0gICAgbWVtY3B5KHBy
ZWZpeEJ1ZmZlci5nZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIFZlY3RvcjxjaGFy
PiBwcmVmaXhCdWZmZXIocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSArIDEp
OworICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZGF0YSgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlOyArK2kpCiAg
ICAgICAgIHByZWZpeEJ1ZmZlcltpICsgcHJlZml4TGVuZ3RoXSA9ICcgJzsKICAgICBwcmVmaXhC
dWZmZXJbcHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZV0gPSAwOwpAQCAtMTY5
LDcgKzE2OSw3IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHkoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgQ29kZUxvY2F0aW9uTGFi
ZWwgZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGN1cnJlbnRMYWJlbCk7CiAgICAgcHJldmlv
dXNMYWJlbCA9IGN1cnJlbnRMYWJlbDsKICAgICBBU1NFUlQoZW5kLmV4ZWN1dGFibGVBZGRyZXNz
PHVpbnRwdHJfdD4oKSA+PSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkpOwot
ICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90Pigp
IC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZ2V0
KCksIG91dCk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1
aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZp
eEJ1ZmZlci5kYXRhKCksIG91dCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZS5jcHAKaW5kZXggODU4YjU0MTc0YmZlYjJlMjIxZDgzMDZmYTk4OGEyMjkxZDUwMjRl
My4uYmMwZjg0MWRmNzUxNDU5MzQ1OTI3ZGYzZGE2YWFiZDA5MTY3NWI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNlOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6UG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiBj
b2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEV4ZWNTdGF0ZSogY2FsbGVyRnJh
bWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxs
Q2FzZT4mIGNhc2VzLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRz
KQorICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCiAgICAgOiBHQ0F3YXJl
SklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCiAgICAgLCBtX2Zhc3RDb3VudHMoV1RGTW92ZShm
YXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAppbmRleCBkOTZhZTU2YzQ3ZjRhYWI5ZmQ0NzJmZTI0
MzJiY2Y1OTViMjJmOTVkLi4yYTM5NTc3MmI0YWIwNDY1YmExYThjMDhlOGM4ZDIxZGFjOTZlYjM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FsbFZhcmlhbnQu
aCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODQsNyArODUsNyBAQCBjbGFzcyBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewog
ICAgIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBjb25zdCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYmLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgICAgIEV4ZWNTdGF0
ZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYsIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0Nh
bGxDYXNlPiYsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRz
KTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cyk7CiAgICAgCiAg
ICAgdmlydHVhbCB+UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoKTsKICAgICAKQEAgLTEwMCw3
ICsxMDEsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3
YXJlSklUU3R1YlJvdXRpbmUgewogCiBwcml2YXRlOgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8
SlNDZWxsPiwgMj4gbV92YXJpYW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4g
bV9mYXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RDb3VudHM7CiAg
ICAgQmFnPFBvbHltb3JwaGljQ2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNzhjYTkzMDNmYzgyODc3Y2U2MGJmZWNhOTE2
MGVhYzM0ZmY5NjZiYS4uYWUwZGU2MzljOTNlNGVhODkzMDZhOTc3ZmJkMjRmOGQ2MTc4MDUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDQsMTAgKzk0NCwxMCBA
QCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgVmVjdG9yPGludDY0X3Q+IGNh
c2VWYWx1ZXMoY2FsbENhc2VzLnNpemUoKSk7CiAgICAgVmVjdG9yPENhbGxUb0NvZGVQdHI+IGNh
bGxzKGNhbGxDYXNlcy5zaXplKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBm
YXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBmYXN0Q291bnRzOwogICAgIAog
ICAgIGlmICghaXNXZWJBc3NlbWJseSAmJiBjYWxsZXJDb2RlQmxvY2stPmppdFR5cGUoKSAhPSBK
SVRDb2RlOjp0b3BUaWVySklUKCkpCi0gICAgICAgIGZhc3RDb3VudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPHVpbnQzMl90W10+KGNhbGxDYXNlcy5zaXplKCkpOworICAgICAgICBmYXN0Q291bnRzID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90PihjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxDYXNlcy5zaXplKCk7ICsraSkgewogICAgICAgICBp
ZiAoZmFzdENvdW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDYwMmU0ZDk0MTE0NTBjYzg4
M2MxMjgzZDczZTVkYzI3YTUyN2M3MS4uZGNkN2YzMjZkNDQ5N2RhN2E4ZWQxZDAzZDE3YTQxNTlh
NjlmYzM2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcxOCwxNyArNzE4LDE3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCkK
ICAgICAvLyBJbiBXaW5kb3dzLCB3Y2hhcl90IGlzIHRoZSBVVEYtMTZMRS4KICAgICAvLyBodHRw
czovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2RkMzc0MDgxLmFzcHgKICAgICAv
LyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3Rv
cC9mZjM4MTQwNy5hc3B4Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHdjaGFy
X3RbXT4oYnVmZmVyTGVuZ3RoKTsKLSAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0g
OjpHZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5nZXQoKSk7Ci0gICAg
U3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmdldCgpLCBsZW5n
dGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVyKGJ1ZmZlckxl
bmd0aCk7CisgICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERp
cmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZGF0YSgpKTsKKyAgICBTdHJpbmcgZGlyZWN0
b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhOb3RJbmNsdWRp
bmdOdWxsKTsKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG5ldHdvcmsgcGF0aCBsaWtlIFxcaG9z
dFxzaGFyZVw8cGF0aCBuYW1lPi4KICAgICBpZiAoZGlyZWN0b3J5U3RyaW5nLnN0YXJ0c1dpdGgo
IlxcXFwiKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCi0gICAgYXV0byBi
dWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUEFUSF9NQVgpOwotICAgIGlmICghZ2V0
Y3dkKGJ1ZmZlci5nZXQoKSwgUEFUSF9NQVgpKQorICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoUEFU
SF9NQVgpOworICAgIGlmICghZ2V0Y3dkKGJ1ZmZlci5kYXRhKCksIFBBVEhfTUFYKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3Ry
aW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcg
PSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCkpOwogI2VuZGlmCiAgICAgaWYgKGRpcmVj
dG9yeVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDRjZjhjNmQ0ZWQ5ZjFh
MzEyYzQxNDNlNTRiMTAyNmI1NTdhNjAwNmIuLjNhMWVhMzc0ODI0MWE0YzBkNmE1N2YyYmRmMThh
ZDY2NTI1YjFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewog
Ci1JbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSAwOworSW5zdHJ1
Y3Rpb24gRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV0g
PSB7IH07CiBPcGNvZGUgRGF0YTo6c19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXSA9IHsgfTsKIE9w
Y29kZVN0YXRzQXJyYXkqIERhdGE6OnNfb3Bjb2RlU3RhdHNBcnJheSA9IG51bGxwdHI7CiAKQEAg
LTU3LDggKzU3LDYgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VudHJ5KHZvaWQqKTsKIAogdm9p
ZCBpbml0aWFsaXplKCkKIHsKLSAgICBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IG5l
dyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXTsKLQogI2lmICFFTkFCTEUoSklUKQog
ICAgIENMb29wOjppbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuaAppbmRleCA2MDJkZDY0NmU1NzNiODYxYjViMjZmYzg2MzVkZjU0NzQ2MDljYTdiLi4z
MDFkMDc3ZWNiYjU5ZTY2NTU3OTY4ODg1NDcxZDAyNDJkYzY0ZmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIERhdGEgewog
ICAgIHN0YXRpYyB2b2lkIHJlc2V0U3RhdHMoKTsKICAgICBzdGF0aWMgdm9pZCBzYXZlU3RhdHMo
KTsKIAotICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNlcHRpb25JbnN0cnVjdGlvbnM7Cisg
ICAgc3RhdGljIEluc3RydWN0aW9uIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21heE9wY29kZUxl
bmd0aCArIDFdOwogICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXTsK
ICAgICBzdGF0aWMgT3Bjb2RlU3RhdHNBcnJheSogc19vcGNvZGVTdGF0c0FycmF5OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKaW5kZXggMzkxODlmODdkMjVlZGI1N2My
ZWEyMjgzNTA0ZjYxMWY1MjUwZTE2ZS4uNjNjMmRlOTEzZmRmNGRiNWU1NGFjZmUyZWFiNGFkZGY5
MGVjMzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMTY1
LDYgKzE2NSw3IEBAIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGljIFJlY29yZE92
ZXJmbG93IHsKIH07CiAKIGNsYXNzIEFyZ0xpc3QgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBmcmllbmQgY2xhc3MgSklU
OwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlckxvZy5jcHAKaW5kZXggZmYwYTc2MTczOTRhNDlkZDNkOGZiYWM4Y2JjYWU2OGFmM2U0ZjVl
MS4uMDlkNDIyMDVmNmI5OTgzMmYzOWY5OWM3MjkxMTg4NTJmZjhiMzY5YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC00MSwx
MyArNDEsMTMgQEAgbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0ludGVybmFsIHsKIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotdm9pZCBUeXBlUHJvZmlsZXJMb2c6Omlu
aXRpYWxpemVMb2coKQorVHlwZVByb2ZpbGVyTG9nOjpUeXBlUHJvZmlsZXJMb2coKQorICAgIDog
bV9sb2dTaXplKDUwMDAwKQorICAgICwgbV9sb2dTdGFydFB0cihuZXcgTG9nRW50cnlbbV9sb2dT
aXplXSkKKyAgICAsIG1fY3VycmVudExvZ0VudHJ5UHRyKG1fbG9nU3RhcnRQdHIpCisgICAgLCBt
X2xvZ0VuZFB0cihtX2xvZ1N0YXJ0UHRyICsgbV9sb2dTaXplKQogewogICAgIEFTU0VSVCghbV9s
b2dTdGFydFB0cik7Ci0gICAgbV9sb2dTaXplID0gNTAwMDA7Ci0gICAgbV9sb2dTdGFydFB0ciA9
IG5ldyBMb2dFbnRyeVttX2xvZ1NpemVdOwotICAgIG1fY3VycmVudExvZ0VudHJ5UHRyID0gbV9s
b2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3RhcnRQdHIgKyBtX2xvZ1NpemU7
CiB9CiAKIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCmluZGV4IDliNTdjYzU4Njcw
ZjQ1OTkxNWVjZWRlNmMxM2VhYTU1ODU4NDlmMTcuLjM5NDE5MzM0OGM2ZTk0MDQ0MDM5Y2NlYzY3
OGEzMzBiYjg4NDNlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVQcm9maWxlckxvZy5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFR5cGVQcm9maWxlckxvZyB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IExvZ0Vu
dHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1Ymxp
YzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNTIs
MTIgKzUzLDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKICAgICB9OwogCiAKLSAgICBUeXBl
UHJvZmlsZXJMb2coKQotICAgICAgICA6IG1fbG9nU3RhcnRQdHIoMCkKLSAgICB7Ci0gICAgICAg
IGluaXRpYWxpemVMb2coKTsKLSAgICB9Ci0KKyAgICBUeXBlUHJvZmlsZXJMb2coKTsKICAgICB+
VHlwZVByb2ZpbGVyTG9nKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByb2Nlc3NM
b2dFbnRyaWVzKGNvbnN0IFN0cmluZyYpOwpAQCAtNzEsOCArNjcsNiBAQCBjbGFzcyBUeXBlUHJv
ZmlsZXJMb2cgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCi0gICAgdm9pZCBpbml0aWFsaXplTG9nKCk7Ci0KICAgICB1bnNpZ25lZCBtX2xvZ1Np
emU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAgTG9nRW50cnkqIG1fY3VycmVu
dExvZ0VudHJ5UHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGNlNmU0
YzFmNDVjYjllYjllNTg1ZTcyYmRjMGU3MGFiNjdiYWVmYmIuLmI2NjdlZDcyZTY1MjMzMTQ3NjVh
MjAyODFmZmFiMzQzNTE2YTcyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
QEAgLTUzNiwxMSArNTM2LDYgQEAgVk06On5WTSgpCiAgICAgZGVsZXRlIGNsaWVudERhdGE7CiAg
ICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CiAKLSNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVO
U19FWFBSRVNTSU9OUykKLSAgICBpZiAobV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQotICAg
ICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7Ci0jZW5kaWYKLQogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxldGUgbV9ydFRyYWNlTGlzdDsKICNlbmRp
ZgpAQCAtOTA3LDggKzkwMiw4IEBAIGNoYXIqIFZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9jay5sb2NrKCk7CiAgICAg
aWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAgICAgIG1fcmVnRXhwUGF0dGVy
bkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZNOjpwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemVdOwot
ICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CisgICAgICAgIG1fcmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihWTTo6cGF0dGVybkNv
bnRleHRCdWZmZXJTaXplKTsKKyAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVy
LmdldCgpOwogfQogCiB2b2lkIFZNOjpyZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkNzNmYzZiOTc0NjhjOGI0MWRhMWVh
MGZmODkwOGRkZmQzZGI0MmE1Li43NmRiMDU4MmZhZjNhMjZiMTU2N2YyOTg0OTViNjgxZjg4ZjVi
ZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNp
bmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBA
IC02ODUsNyArNjg2LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogI2lmIEVOQUJMRShZQVJS
X0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8vIFNwYWNlIGFsbG9jYXRlZCB0byBz
YXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0Ci0gICAgY2hhciogbV9yZWdFeHBQYXR0ZXJu
Q29udGV4QnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBMb2NrIG1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2Nr
OwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CiAgICAgdm9p
ZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RSZWdFeHAuY3BwCmluZGV4IGU0MzhmNTYwNGI3MGQyNjk4YWIzZjc5OTRhNTQwMWM5Y2JhYjNh
ZGMuLmYxOTg0YjViODA4OGQ1NDk2NTI2NWZmZDQ5MDY4NGYzOWY0NjdmOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxzdGRp
by5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNp
ZiAhT1MoV0lORE9XUykKQEAgLTQxNiw3ICs0MTcsNyBAQCBzdGF0aWMgYm9vbCBydW5Gcm9tRmls
ZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
cwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7CiAgICAgdW5zaWduZWQgdGVzdHMgPSAw
OwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKLSAgICBjaGFyKiBsaW5lQnVmZmVyID0gbmV3
IGNoYXJbTWF4TGluZUxlbmd0aCArIDFdOworICAgIFZlY3RvcjxjaGFyPiBsaW5lQnVmZmVyKE1h
eExpbmVMZW5ndGggKyAxKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApA
QCAtNDM1LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgICAgIHVuc2ln
bmVkIGludCBsaW5lTnVtYmVyID0gMDsKICAgICAgICAgY29uc3QgY2hhciogcmVnZXhwRXJyb3Ig
PSBudWxscHRyOwogCi0gICAgICAgIHdoaWxlICgobGluZVB0ciA9IGZnZXRzKCZsaW5lQnVmZmVy
WzBdLCBNYXhMaW5lTGVuZ3RoLCB0ZXN0Q2FzZXNGaWxlKSkpIHsKKyAgICAgICAgd2hpbGUgKChs
aW5lUHRyID0gZmdldHMobGluZUJ1ZmZlci5kYXRhKCksIE1heExpbmVMZW5ndGgsIHRlc3RDYXNl
c0ZpbGUpKSkgewogICAgICAgICAgICAgbGluZUxlbmd0aCA9IHN0cmxlbihsaW5lUHRyKTsKICAg
ICAgICAgICAgIGlmIChsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9PSAnXG4nKSB7CiAgICAgICAg
ICAgICAgICAgbGluZVB0cltsaW5lTGVuZ3RoIC0gMV0gPSAnXDAnOwpAQCAtNDg0LDggKzQ4NSw2
IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgZWxzZQogICAgICAgICBwcmludGYoIiV1
IHRlc3RzIHBhc3NlZFxuIiwgdGVzdHMpOwogCi0gICAgZGVsZXRlW10gbGluZUJ1ZmZlcjsKLQog
I2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICB2bS5kdW1wUmVnRXhwVHJhY2UoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmll
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCmluZGV4IDQ4
MjRiMWM2YjNlNmZhYjJiYTJhN2Q4MjExZTc5ZTA3ODdmYzQ5NDMuLjI1YjhmODE0MDM4YjJhZTFj
YTQyYTkyNGZlZTM2ZTk1NGFlZmFkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9IZWFwVmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SGVhcFZlcmlmaWVyLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKIAog
cHJpdmF0ZToKICAgICBzdHJ1Y3QgR0NDeWNsZSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKwogICAgICAgICBHQ0N5Y2xlKCkKICAgICAgICAgICAgIDogYmVmb3Jl
KCJCZWZvcmUgTWFya2luZyIpCiAgICAgICAgICAgICAsIGFmdGVyKCJBZnRlciBNYXJraW5nIikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwYTI1YmYzNjM3
ZmE1OTY2MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0MzZiNTY2OWZi
YmJlYzFlMGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21t
b25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5
cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgw
MDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9n
cmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDBFNTIx
MjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3Jt
UmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVn
aXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAgKzg1NiwxMCBA
QAogCQkJCUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5oICovLAogCQkJ
CTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJCQkJQThBNDcy
ODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJCQlGRTA1RkFF
NjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFENjUzREE4MjAw
NkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4
MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZG
IC8qIGR0b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRy
YWl0cy5oICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFp
dHMuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICov
LAogCQkJCUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAogCQkJCUE4
QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAgLTEwODMsNiAr
MTA4NCw3IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8s
CiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAogCQkJCUE4
QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlFMzAwRTUyMTIw
M0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBB
MDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2
IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyog
VVVJRC5jcHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIw
MDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyog
VmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFn
cy5oICovLAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLywKIAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwICovLAog
CQkJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJCTk3NENG
QzhEMTZBNEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYgKzExMDIsNyBA
QAogCQkJCTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0
QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUwMDc1
MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBAQAogCQkJCTBG
NjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2Vy
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8q
IENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYx
MzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhFODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIg
LyogV29yZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2
REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTND
MDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZB
RkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYv
QXNzZXJ0aW9ucy5jcHAKaW5kZXggMTU4Y2JlZjc2MTIzZDkzZDdmNDFmMmJmZjIwMTY1NmUyOThl
OGEwOC4uZGJhZGFlZTZjYTU0MDYwMDEyOTY0MzlhMjMwNDU5N2U1YmJhNzYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5jcHAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3Rk
ZXJyX3dpdGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogZm9ybWF0LCB2
CiB7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwogICAgIHNpemVf
dCBmb3JtYXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1hdFdpdGhQcmVm
aXggPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3Ro
ICsgMSk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZpeCwgcHJlZml4
TGVuZ3RoKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHByZWZpeExlbmd0
aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoUHJl
Zml4KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNweShmb3JtYXRX
aXRoUHJlZml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1lbWNweShmb3Jt
YXRXaXRoUHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgp
OwogICAgIGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoXSA9IDA7
CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwgYXJn
cyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBh
cmdzKTsKIH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXds
aW5lKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY3LDEyICsxNjcsMTIg
QEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNvbnN0
IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gZm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZm9ybWF0
TGVuZ3RoICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBmb3JtYXQs
IGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXdsaW5lKGZvcm1h
dExlbmd0aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGZvcm1h
dCwgZm9ybWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGhdID0g
J1xuJzsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9IDA7CiAKLSAg
ICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGFyZ3MpOwor
ICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGFyZ3Mp
OwogfQogCiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRl
eCAyMjBiYWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdkMDYxOTNjMGEx
ZGZmYzgzMGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjMz
LDYgKzIzMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAogICAgIFVuaVN0
ZEV4dHJhcy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAgICAgVW5pcXVl
UmVmLmgKICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmlu
ZGV4IDdlYzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2NzJjZTQ2ZDlm
MWMyYjQzYTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIwMCw2
ICsyMDAsMjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lkIGZyZWUodm9p
ZCogcCkgeyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj
dCBGYXN0RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3Bl
cmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3Rf
Y2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKQEAgLTIw
OCw2ICsyMjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZTsK
IAogdXNpbmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFsbG9jOwordXNp
bmcgV1RGOjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsKIHVzaW5n
IFdURjo6ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCmluZGV4
IDdmNmEwMmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEwYWE5YmQ1YmJh
MDlhYzU2MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01h
bGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02Niw2ICs2Niwx
MSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0TWFsbG9jPiBj
bGFzcyBNYWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVs
bHB0cik7CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvciEoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggNmVm
ZDA3NGRlMjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJhZTNjN2I1NmE4
YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tT
aG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcgKzM4LDcgQEAg
Y2xhc3MgU3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7CiAgICAgICAg
IGlmIChzaXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTx2b2lk
KltdPihzaXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+
KHNpemUpOwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAgICAgICAgV1RG
R2V0QmFja3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7CkBAIC01NSw3
ICs1Niw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90JiBvcGVyYXRv
cj0oY29uc3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjx2b2lkKltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4ob3RoZXIubV9z
aXplKTsKKyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4ob3Ro
ZXIubV9zaXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6ZTsgaS0tOykK
ICAgICAgICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAgICAgICAgbV9z
aXplID0gb3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0YWNrU2hvdCB7
CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVlQXJyYXkoKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsg
fQotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5OworCisgICAgVW5p
cXVlQXJyYXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJjZS9XVEYvd3Rm
L1N5c3RlbUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2ZDA0ZjViYWVj
ZWY1Li43M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93dGYvU3lzdGVt
RnJlZS5oCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRv
cigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlw
ZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0zOSwxMSArNDEs
MTIgQEAgc3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0
IFN5c3RlbUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9p
bnRlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1Nv
dXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTk3ZmUzOTY2OTQ4YzdkMWVi
ZDM5OTQ0MzAyZmY3YTY5NDdkNmRlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZUFycmF5LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3VzaW5nIFVuaXF1ZUFycmF5ID0gdHlwZW5hbWUgc3RkOjp1bmlxdWVf
cHRyPFRbXSwgRmFzdEZyZWU8VFtdPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitVbmlxdWVB
cnJheTxUPiBtYWtlVW5pcXVlQXJyYXkoc2l6ZV90IHNpemUpCit7CisgICAgLy8gQysrIGBuZXcg
VFtOXWAgc3RvcmVzIGl0cyBgTmAgdG8gc29tZXdoZXJlLiBPdGhlcndpc2UsIGBkZWxldGUgW11g
IGNhbm5vdCBkZXN0cm95CisgICAgLy8gdGhlc2UgTiBlbGVtZW50cy4gQnV0IHdlIGRvIG5vdCB3
YW50IHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgLy8gSWYg
aXQgaXMgYWNjZXB0YWJsZSwgd2UgY2FuIGp1c3QgdXNlIFZlY3RvcjxUPiBpbnN0ZWFkLiBTbyB0
aGlzIFVuaXF1ZUFycmF5PFQ+IG9ubHkKKyAgICAvLyBhY2NlcHRzIHRoZSB0eXBlIFQgd2hpY2gg
ZG9lcyBub3QgaGF2ZSBub24gdHJpdmlhbCBkZXN0cnVjdG9yLiBUaGlzIGFsbG93cyB1cyB0bwor
ICAgIC8vIHNraXAgY2FsbGluZyBkZXN0cnVjdG9ycyBmb3IgTiBlbGVtZW50cy4gQW5kIHRoaXMg
YWxsb3dzIFVuaXF1ZUFycmF5PFQ+IG5vdCB0bworICAgIC8vIHN0b3JlIGl0cyBOIHNpemUuCisg
ICAgdXNpbmcgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxVPjo6dmFsdWUsICIi
KTsKKworICAgIC8vIERvIG5vdCB1c2UgcGxhY2VtZW50IG5ldyBsaWtlIGBuZXcgKHN0b3JhZ2Up
IFVbc2l6ZV0oKWAuIGBuZXcgVVtzaXplXSgpYCByZXF1aXJlcworICAgIC8vIG1vcmUgbGFyZ2Vy
IHN0b3JhZ2UgdGhhbiB0aGUgYHNpemVvZihVKSAqIHNpemVgIHN0b3JhZ2Ugc2luY2UgaXQgd2Fu
dCB0byBzdG9yZQorICAgIC8vIGBzaXplYCB0byBzb21ld2hlcmUuCisgICAgVSogc3RvcmFnZSA9
IHN0YXRpY19jYXN0PFUqPihmYXN0TWFsbG9jKHNpemVvZihVKSAqIHNpemUpKTsKKyAgICBWZWN0
b3JUeXBlT3BlcmF0aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBz
aXplKTsKKyAgICByZXR1cm4gVW5pcXVlQXJyYXk8VD4oc3RvcmFnZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5p
cXVlQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9X
VEYvd3RmL1ZlY3Rvci5oCmluZGV4IGFiY2FiZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZj
N2M5MmMuLjI3ZmMxNDUzYTBkMGEwNjcyZTNkNzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CkBAIC02NSwxMCArNjUsMTUgQEAgc3RydWN0IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRl
bXBsYXRlIDxib29sIG5lZWRzSW5pdGlhbGl6YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRl
PGJvb2wgaWdub3JlLCB0eXBlbmFtZSBUPgotc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNl
LCBpZ25vcmUsIFQ+Cit0ZW1wbGF0ZTxib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBl
bmFtZSBUPgorc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0
aE1lbXNldCwgVD4KIHsKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKwor
ICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsK
KyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQs
IFQ+Ojpmb3JjZUluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTc5LDYgKzg0LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0
cnVlLCBmYWxzZSwgVD4KICAgICAgICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsg
KytjdXIpCiAgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAg
ICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KQEAgLTg4LDYgKzk4LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0
cnVlLCBUPgogICAgIHsKICAgICAgICAgbWVtc2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0
PGNoYXIqPihlbmQpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisK
KyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7
CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUg
PGJvb2wgY2FuTW92ZVdpdGhNZW1jcHksIHR5cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBA
IHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9ucwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxW
ZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2Fu
SW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojppbml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0K
IAorICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAg
IHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRp
YWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6
Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1v
dmUoVCogc3JjLCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVy
PFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5k
LCBkc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0
YzNiNTVmNDA4ZjJmMWEuLjVlNjJjNWFjMmRjOWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJT
b3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVy
U291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAg
ICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwog
Ci0gICAgICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0
KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1f
c291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNo
YW5uZWxzKTsKKyAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5
PGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5u
ZWxzW2ldID0gYnVmZmVyLT5jaGFubmVsRGF0YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5k
ZXggZjRlNjNhODU5YzAxYjQxNWUxY2YzNDdmMjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3
MzE4MjFmYTI1N2EwOGQxMzU4MGZhMjU5MGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAKICNpbmNsdWRlICJBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRl
IDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEwOSw4ICsxMTAsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8
QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwogCiAgICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIg
YW5kIGRlc3RpbmF0aW9uLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9z
b3VyY2VDaGFubmVsczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRp
b25DaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5l
bHM7CisgICAgVW5pcXVlQXJyYXk8ZmxvYXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAg
ICAvLyBVc2VkIGZvciB0aGUgImdhaW4iIGFuZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgog
ICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2lu
L0xvZ2dpbmdXaW4uY3BwCmluZGV4IDhjYTRjOTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYw
N2RjMjUuLjk1Y2M4ZDNjNzJhZWU2NjE3NTljNjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAg
U3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlm
ICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1
ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxv
Z2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgp
KTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhl
MTg4ODAyYmM3MDg4ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1
NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYg
KzU1LDcgQEAgY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3Qg
Q29tcGlsZWRTZWxlY3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJ
TElORykgJiYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXgg
MmNkYWM5MTIyZWY5ZWE3NzI3OWJjZGMwZDYzYTRlYWRmZTk3OGVkZC4uMDI5N2NlMGFkMjM1NGNm
YWU4MjI5ZmFiM2U4ZWU1MWQ4NzkzNjhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTk5LDYgKzk5
LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNTUzLDcgKzE1
NTQsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbAogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgImNvcHlUZXhTdWJJbWFnZTJE
IiwgIlRleHR1cmUgaGFzIHVua25vd24gaW50ZXJuYWwgZm9ybWF0Iik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJb
XT4gemVybzsKKyAgICAgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICAg
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgdW5zaWduZWQgc2l6ZTsKICAg
ICAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5C
eXRlcyhmb3JtYXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIG1fdW5wYWNrQWxpZ25tZW50LCAmc2l6
ZSwgbnVsbHB0cik7CkBAIC0xNTYxLDcgKzE1NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bAogICAgICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAiY29weVRleFN1Yklt
YWdlMkQiLCAiYmFkIGRpbWVuc2lvbnMiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBj
aGFyW10+KHNpemUpOworICAgICAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25l
ZCBjaGFyPihzaXplKTsKICAgICAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZBTFVFLCAiY29w
eVRleFN1YkltYWdlMkQiLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTU3NjEsNyArNTc2Miw3IEBAIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKEdDM0R1aW50IG51CiAgICAgICAg
ICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVsyXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1
ZVsyXQogICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbM10gIT0gbV92ZXJ0ZXhBdHRy
aWIwQnVmZmVyVmFsdWVbM10pKSB7CiAKLSAgICAgICAgYXV0byBidWZmZXJEYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxHQzNEZmxvYXRbXT4oYnVmZmVyU2l6ZSk7CisgICAgICAgIGF1dG8gYnVmZmVy
RGF0YSA9IG1ha2VVbmlxdWVBcnJheTxHQzNEZmxvYXQ+KGJ1ZmZlclNpemUpOwogICAgICAgICBm
b3IgKEdDM0R1aW50IGlpID0gMDsgaWkgPCBudW1WZXJ0ZXggKyAxOyArK2lpKSB7CiAgICAgICAg
ICAgICBidWZmZXJEYXRhW2lpICogNF0gPSBhdHRyaWJWYWx1ZS52YWx1ZVswXTsKICAgICAgICAg
ICAgIGJ1ZmZlckRhdGFbaWkgKiA0ICsgMV0gPSBhdHRyaWJWYWx1ZS52YWx1ZVsxXTsKQEAgLTU5
MDcsMTUgKzU5MDgsMTQgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmVuc3Vy
ZU5vdE51bGwoY29uc3QgU3RyaW5nJiB0ZXh0KSBjb25zdAogfQogCiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlKGludCBj
YXBhY2l0eSkKLSAgICA6IG1fYnVmZmVycyhzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj5bXT4oY2FwYWNpdHkpKQotICAgICwgbV9jYXBhY2l0eShjYXBhY2l0eSkK
KyAgICA6IG1fYnVmZmVycyhjYXBhY2l0eSkKIHsKIH0KIAogSW1hZ2VCdWZmZXIqIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0
IEludFNpemUmIHNpemUpCiB7Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG1fY2Fw
YWNpdHk7ICsraSkgeworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBtX2J1ZmZl
cnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tp
XS5nZXQoKTsKICAgICAgICAgaWYgKCFidWYpCiAgICAgICAgICAgICBicmVhazsKQEAgLTU5MzAs
NyArNTkzMCw3IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJ
bWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBVbmFjY2VsZXJh
dGVkKTsKICAgICBpZiAoIXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGkgPSBz
dGQ6Om1pbihtX2NhcGFjaXR5IC0gMSwgaSk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVmZmVycy5z
aXplKCkgLSAxLCBpKTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwogCiAgICAg
SW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSArNTkzOCw5
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAotdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zy
b250KGludCBpZHgpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVm
ZmVyQ2FjaGU6OmJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGludCBpID0g
aWR4OyBpID4gMDsgLS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAtLWkpCiAg
ICAgICAgIG1fYnVmZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5o
CmluZGV4IDZhMzU3NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQyYTM5MTk1
OWRiYzE0ZWVjYWZiMGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUxNyw5
ICs1MTcsOCBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdQVUJh
c2VkQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUgcG9pbnRl
ciByZXR1cm5lZCBpcyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAgICAgSW1h
Z2VCdWZmZXIqIGltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwotICAgICAg
ICBpbnQgbV9jYXBhY2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVfdCBpZHgp
OworICAgICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJz
OwogICAgIH07CiAgICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUg
eyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwCmluZGV4IDMwMTI1YWViMzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4NWMxNzMy
NmFlZjAuLmIyNTUxOGQ4ODBhOGQyZDk5NGE3Njk2YjhmYWRhOWU1NTQ4YzI5ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cApAQCAtMjc1LDggKzI3NSw4IEBAIHZvaWQgRHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJP
ZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiAgICAgICAgIG1fcG9zdEZpbHRl
clBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwog
ICAgIH0KIAotICAgIG1fc291cmNlQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZs
b2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBtX3NvdXJj
ZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVs
cyk7CisgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4o
bnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBtX2NvbXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVs
cyhudW1iZXJPZkNoYW5uZWxzKTsKICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNo
YW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaAppbmRleCBhMTFkODdkZTU3NWM1MmVhMzFhMjJiOTgzYTFlMzQ2Y2JkMmFlYmQ1
Li5mNzE2Y2VmNzNhMzVlZTZlZTg4YmE5OGJiOThkMjYyNTM3YmQ2OTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvcktlcm5lbC5oIgogI2luY2x1
ZGUgIlplcm9Qb2xlLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBjbGFz
cyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1Bv
bGVGaWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFja3M7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJy
YXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0
Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAgICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFy
YW1ldGVycyh1bnNpZ25lZCBzdGFnZUluZGV4LCBmbG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVk
RnJlcXVlbmN5IC8qIDAgLT4gMSAqLyk7CiAgICAgdm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMo
ZmxvYXQgZ2FpbiwgZmxvYXQgYW5jaG9yRnJlcSwgZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAppbmRleCA0MDYyMGZiODQxMDFm
NjZiNWZjMDlhYTNlZmIxMjU4MTNiZmNkMDcxLi43MjdjOTJhM2EwN2RlZDkzNzM3NjRjYzFhZGNj
YmZlYWMwNGQ1MDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9G
RlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgK
QEAgLTQ0LDYgKzQ0LDcgQEAgR19FTkRfREVDTFMKIAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNyw3ICsxMDgsNyBAQCBjbGFzcyBGRlRGcmFtZSB7CiAj
aWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKICAgICBHc3RGRlRGMzIqIG1fZmZ0OwogICAgIEdz
dEZGVEYzMiogbV9pbnZlcnNlRmZ0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21w
bGV4W10+IG1fY29tcGxleERhdGE7CisgICAgVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4g
bV9jb21wbGV4RGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9yZWFsRGF0YTsKICAgICBBdWRp
b0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRpZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZG
VEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKaW5kZXggNjU2NmMxODE4YTUyNTE5MzQzNjhlOTVm
MmQyYjgyN2QxNTllMzE5Ny4uMWI2NmU0MDA2M2I2ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVjMGUzMmE0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZG
VEZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIEZGVEZyYW1lOjpGRlRGcmFtZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDog
bV9GRlRTaXplKGZmdFNpemUpCiAgICAgLCBtX2xvZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsb2cyKGZmdFNpemUpKSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1
ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisg
ICAgLCBtX2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBh
Y2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZG
VERhdGFTaXplKG1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNp
emUobV9GRlRTaXplKSkKIHsKQEAgLTY2LDcgKzY2LDcgQEAgRkZURnJhbWU6OkZGVEZyYW1lKCkK
IEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCiAgICAgOiBtX0ZGVFNp
emUoZnJhbWUubV9GRlRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRT
aXplKQotICAgICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBs
ZXhbXT4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29tcGxleERh
dGEobWFrZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUo
bV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUu
bV9GRlRTaXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5t
X0ZGVFNpemUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9ybWF0Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3JtYXRDb252ZXJ0ZXIuaAppbmRleCBkZDk3YjM3Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgzZTY5OWI1
NTQwZjUzLi45ZDgyMDRjOGEyNDY2MGZjNzcyYjBjZjdiNTY1MDg3YTM0NTE1YWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBGb3JtYXRDb252
ZXJ0ZXIgewogICAgIHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25l
bnRzID0gNDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0g
NDsKLSAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPHVpbnQ4X3RbXT4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVz
UGVyQ29tcG9uZW50KTsKKyAgICAgICAgbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBt
YWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV93aWR0aCAqIE1heE51bWJlck9mQ29tcG9uZW50cyAq
IE1heEJ5dGVzUGVyQ29tcG9uZW50KTsKIAogICAgICAgICBBU1NFUlQobV91bnBhY2tlZEludGVy
bWVkaWF0ZVNyY0RhdGEuZ2V0KCkpOwogICAgIH0KQEAgLTY4LDcgKzY5LDcgQEAgY2xhc3MgRm9y
bWF0Q29udmVydGVyIHsKICAgICB2b2lkKiBjb25zdCBtX2RzdFN0YXJ0OwogICAgIGNvbnN0IGlu
dCBtX3NyY1N0cmlkZSwgbV9kc3RTdHJpZGU7CiAgICAgYm9vbCBtX3N1Y2Nlc3M7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7Cisg
ICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV91bnBhY2tlZEludGVybWVkaWF0ZVNyY0RhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggNGU3NTdhMGUxZWY3
NDQ3Y2U0NzkzNDg2YTc0MWRmODgyZDYyOWQ0MC4uMzIyYmVkMGI4YzU3OWZjOTUxZmI2NTYxMjc3
ODRjOGIwMzQwODQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE0Niw3ICsxNDcsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6RGF0YUZvcm1hdCBnZXRE
YXRhRm9ybWF0KEdDM0RlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHQzNEZW51bQogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyLCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIEdDM0RpbnQgdW5wYWNrQWxpZ25tZW50KQogewogICAgIEFTU0VSVCh1bnBhY2tBbGln
bm1lbnQgPT0gMSB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gMiB8fCB1bnBhY2tBbGlnbm1lbnQgPT0g
NCB8fCB1bnBhY2tBbGlnbm1lbnQgPT0gOCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVk
IGNoYXJbXT4gemVybzsKKyAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAg
IGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgICAgICB1bnNpZ25lZCBpbnQgc2l6
ZTsKICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBjb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3Jt
YXQsIHR5cGUsIHdpZHRoLCBoZWlnaHQsIHVucGFja0FsaWdubWVudCwgJnNpemUsIG51bGxwdHIp
OwpAQCAtMTU0LDcgKzE1NSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRS
ZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHCiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KLSAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltd
PihzaXplKTsKKyAgICAgICAgemVybyA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPihz
aXplKTsKICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSk7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaAppbmRleCAxODFiNDY3MTJlNmE4NDE3MDBiNjJkYzFkMWE5NmUwZjY1YmYz
Y2ZhLi4yZTc0ODc5ZDhkMmM2MmI2MGI0MTJjZDhhMjMyYzQyMzkyMzhhNjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFVTRShDQSkKQEAgLTEyNjEsNyArMTI2Miw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
IDogcHVibGljIFJlZkNvdW50ZWQ8R3JhcGhpY3NDb250ZXh0M0Q+IHsKICAgICAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IG1fY2dJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IG1fZGVjb2RlZEltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBtX3BpeGVsRGF0
YTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gbV9mb3JtYWxpemVkUkdCQThE
YXRhOworICAgICAgICBVbmlxdWVBcnJheTx1aW50OF90PiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7
CiAjZW5kaWYKICAgICAgICAgSW1hZ2UqIG1faW1hZ2U7CiAgICAgICAgIEltYWdlSHRtbERvbVNv
dXJjZSBtX2ltYWdlSHRtbERvbVNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4
IDcyOWY4NDNkZjk3YmVlYmNiMDRhYTJlOTY2MTNhMzUzNjgwZWM3ZDYuLmEyZWVmNDJiZWZmYjgz
ODBmODdhYWQ3YzVjMDA4YTNmN2Q3NzZmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApA
QCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ0FCYXNlLmg+CiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi93aW4vR0RJT2JqZWN0Lmg+
CiAKICNpZmRlZiBERUJVR19BTEwKQEAgLTI2Miw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBnZXRE
aXJ0eVJlY3RzKEhXTkQgd2luZG93LCBWZWN0b3I8Q0dSZWN0PiYgb3V0UmVjdHMpCiAgICAgfQog
CiAgICAgRFdPUkQgZGF0YVNpemUgPSA6OkdldFJlZ2lvbkRhdGEocmVnaW9uLmdldCgpLCAwLCAw
KTsKLSAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVk
IGNoYXJbXT4oZGF0YVNpemUpOworICAgIGF1dG8gcmVnaW9uRGF0YUJ1ZmZlciA9IG1ha2VVbmlx
dWVBcnJheTx1bnNpZ25lZCBjaGFyPihkYXRhU2l6ZSk7CiAgICAgUkdOREFUQSogcmVnaW9uRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UkdOREFUQSo+KHJlZ2lvbkRhdGFCdWZmZXIuZ2V0KCkpOwog
ICAgIGlmICghOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgZGF0YVNpemUsIHJlZ2lvbkRh
dGEpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKaW5kZXggMjRkNGViNTAyODE1
MjJhZjExYjIxYzE3Nzc2YTg1MGEzMDM1ZjAwOS4uMDRkNjgyZjk0N2Y1ZTQxYjY4MzY0MzI1OWYz
NTA0ZGYxZDlmZWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
QEAgLTM0MCw3ICszNDEsNyBAQCB2b2lkIGZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKICAgICBpbnQgaGFsZkhlaWdodCA9IHNpemUuaGVpZ2h0KCkg
LyAyOwogCiAgICAgdWludDhfdCogc291cmNlID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X2RhdGEoc3VyZmFjZSkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IHRtcCA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihzdHJpZGUpOworICAg
IGF1dG8gdG1wID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHN0cmlkZSk7CiAKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGhhbGZIZWlnaHQ7ICsraSkgewogICAgICAgICB1aW50OF90KiB0b3Ag
PSBzb3VyY2UgKyAoaSAqIHN0cmlkZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDhlYjZm
NGUzYjZhYWE3ZGNjMWIxNzk0YmNjMTlmY2Q3NGIwNmJkNGYuLjA3MWRjY2M5NDEyNWZmN2E1YTg5
NDg1ZDU0YmY5MjkxMzg3YTdhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC00NzgsNyAr
NDc4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJ
bWFnZShib29sIHByZW11bHRpcGx5QWxwaGEsIGJvb2wKICAgICAvLyBidXQgaXQgd291bGQgcHJl
bXVsdGlwbHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgYSBzaWRlIGVmZmVjdC4KICAgICAvLyBQcmVm
ZXIgdG8gbWFubnVhbGx5IENvbnZlcnQgMTZiaXQgcGVyLWNvbXBvbmVudCBmb3JtYXRzIHRvIFJH
QkE4IGZvcm1hdHMgaW5zdGVhZC4KICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSAxNikgewot
ICAgICAgICBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3Rb
XT4obV9pbWFnZVdpZHRoICogbV9pbWFnZUhlaWdodCAqIDQpOworICAgICAgICBtX2Zvcm1hbGl6
ZWRSR0JBOERhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4obV9pbWFnZVdpZHRoICogbV9p
bWFnZUhlaWdodCAqIDQpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1
aW50OF90KiBkZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAg
ICAgY29uc3QgcHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNp
emVvZih1aW50MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvVGV4dHVyZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1
MjY0Ni4uODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1
cmU6OnVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0
KQogICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhl
IHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6
ZWQKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1f
dGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAg
ICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVz
LmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0
byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsK
KyAgICBhdXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNp
emUpOwogCiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgp
ICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0
aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhl
NmRiNzIzZTEuLjU0NzI3NGZmYTY4YTUyZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBiMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiAr
NTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciog
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFs
Qnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBt
YWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhl
bHMpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY4LDExICs2NjksMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogICAg
IGlmIChsZW5ndGgpIHsKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAgICAgYXV0byBp
bmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgOjpnbEdl
dFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICAg
ICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgICAgICA6OmdsR2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgICAgICBQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgICAgICBlbnRyeS5s
b2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7
CisgICAgICAgIGVudHJ5LmxvZyA9IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3Ry
aW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXBpbGVTdGF0dXMg
IT0gR0xfVFJVRSkgewpAQCAtODUxLDE4ICs4NTIsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50
IGkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhBdHRyaWJ1dGVTaXpl
ID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVf
TUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0xjaGFyW10+KG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBWZWN0b3I8R0xj
aGFyPiBuYW1lKG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9M
RU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGgg
PSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6Omds
R2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxl
bmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlQXR0cmli
KHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0
eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFt
ZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5nZXQo
KSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJv
bE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUu
ZGF0YSgpLCBuYW1lTGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyB1
bmlmb3JtTmFtZShuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5pZm9ybU5h
bWUobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQg
aXMgbWFwcGluZyBhY3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3Jh
bSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgogCkBAIC04OTgsMTggKzg5OSwxOCBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdD
M0R1aW50CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXpl
KTsKIAotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heFVuaWZv
cm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRl
cm1pbmF0aW9uLgorICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBH
TF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAg
ICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVu
dW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1h
eFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZu
YW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcgb3JpZ2luYWxOYW1l
ID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JN
LCBTdHJpbmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5h
bWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZP
Uk0sIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVC
VUcKLSAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAg
U3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2Vi
R0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRv
ICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2lu
YWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0ICsxNzAwLDE0
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXpl
aSBzaXplID0gMDsKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihs
ZW5ndGgpOwotICAgIDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXpl
LCBpbmZvLmdldCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpn
bEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsK
IAogICAgIEdDM0RzaXplaSBjb3VudDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl07
CiAgICAgZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVycyk7CiAK
LSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGlu
Zm8uZ2V0KCkpKTsKKyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3Vu
dCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTc3MCwxMSArMTc3MSwxMSBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIp
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwotICAg
IGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgOjpn
bEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAg
ICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRlckluZm9Mb2co
c2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgIHJldHVybiBnZXRVbm1hbmdsZWRJ
bmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVu
bWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9
CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAK
aW5kZXggYWJlZGY1MzU1M2RkMzU2ZDEwZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4uMmU2YzUyYzYz
NDg5NjY0OWFmNWM2YTQ0NDdiOThmMTBhM2QyNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW0uY3BwCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0aWMgQ1N0cmlu
ZyBnZXRTaGFkZXJMb2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFy
W10+KGxvZ0xlbmd0aCk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgpOwogICAg
IEdMc2l6ZWkgaW5mb0xlbmd0aCA9IDA7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwg
bG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRTaGFkZXJJbmZv
TG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAg
c2l6ZV90IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVy
biB7IGluZm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgp
LCBzdHJpbmdMZW5ndGggfTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVp
bnQgcHJvZ3JhbSkKQEAgLTQ2NSwxMiArNDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdldFByb2dy
YW1Mb2coR0x1aW50IHByb2dyYW0pCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dM
ZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVp
IGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVu
Z3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhw
cm9ncmFtLCBsb2dMZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAgICBzaXpl
X3Qgc3RyaW5nTGVuZ3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0dXJuIHsg
aW5mby5nZXQoKSwgc3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRhKCksIHN0
cmluZ0xlbmd0aCB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3Bw
CmluZGV4IDNlZGFkMTgyMWVjNDZkY2I0MGZlNTA2MmNhMjg5NGZiNDU4ZmQ3ZmUuLmYwZTI1ODA5
MjA1Mzg1NGNkNTE1OTZjN2UwNzE3NTllZjdjYmY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURp
cmVjdDJELmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1Vp
bnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTM0LDcgKzEzNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRh
KGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljCiAgICAg
dW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgpOwogICAgIGNv
bnN0IHVpbnQ4X3QqIHNyY1Jvd3MgPSBzb3VyY2UuZGF0YSgpICsgKG9yaWdpbnkgKiBzcmNCeXRl
c1BlclJvdyArIG9yaWdpbnggKiA0KS51bnNhZmVHZXQoKTsKIAotICAgIHVpbnQ4X3QqIHJvdyA9
IG5ldyB1aW50OF90W3NyY0J5dGVzUGVyUm93XTsKKyAgICBhdXRvIHJvdyA9IG1ha2VVbmlxdWVB
cnJheTx1aW50OF90PihzcmNCeXRlc1BlclJvdyk7CiAKICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5KSB7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
d2lkdGgudW5zYWZlR2V0KCk7IHgrKykgewpAQCAtMTQ2LDE3ICsxNDcsMTUgQEAgdm9pZCBJbWFn
ZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxw
aGFQcmVtdWx0aXBsaWMKICAgICAgICAgICAgICAgICByb3dbYmFzZXggKyAyXSA9IChzcmNSb3dz
W2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CiAgICAgICAgICAgICAgICAgcm93W2Jh
c2V4ICsgM10gPSBhbHBoYTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihyb3cgKyBiYXNleClbMF0gPSByZWludGVycHJldF9j
YXN0PHVpbnQzMl90Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKKyAgICAgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4ocm93LmdldCgpICsgYmFzZXgpWzBdID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07CiAgICAgICAgIH0KIAogICAg
ICAgICBEMkQxX1JFQ1RfVSBkc3RSZWN0ID0gRDJEMTo6UmVjdFUoZGVzdFBvaW50LngoKSwgZGVz
dFBvaW50LnkoKSArIHksIGRlc3RQb2ludC54KCkgKyBzaXplLndpZHRoKCksIGRlc3RQb2ludC55
KCkgKyB5ICsgMSk7Ci0gICAgICAgIGhyID0gYml0bWFwLT5Db3B5RnJvbU1lbW9yeSgmZHN0UmVj
dCwgcm93LCBzcmNCeXRlc1BlclJvdyk7CisgICAgICAgIGhyID0gYml0bWFwLT5Db3B5RnJvbU1l
bW9yeSgmZHN0UmVjdCwgcm93LmdldCgpLCBzcmNCeXRlc1BlclJvdyk7CiAgICAgICAgIEFTU0VS
VChTVUNDRUVERUQoaHIpKTsKIAogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93Owog
ICAgIH0KLQotICAgIGRlbGV0ZVtdIHJvdzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiYjNmZDJkMTliNDdjNzY4YjFjMDJhMTNm
ODYzMjE3YjQxODc0MWE1Li5hY2MyMWFkYzE5ZTMyNzEwMDAyY2RhZTJlZTNiN2U0MjgyNzkwY2I0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8cG5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgZGVmaW5lZChQTkdfTElC
UE5HX1ZFUl9NQUpPUikgJiYgZGVmaW5lZChQTkdfTElCUE5HX1ZFUl9NSU5PUikgJiYgKFBOR19M
SUJQTkdfVkVSX01BSk9SID4gMSB8fCAoUE5HX0xJQlBOR19WRVJfTUFKT1IgPT0gMSAmJiBQTkdf
TElCUE5HX1ZFUl9NSU5PUiA+PSA0KSkKICNkZWZpbmUgSk1QQlVGKHBuZ19wdHIpIHBuZ19qbXBi
dWYocG5nX3B0cikKQEAgLTEyMCw3ICsxMjEsNiBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAg
ICAgICAgICwgbV9jdXJyZW50QnVmZmVyU2l6ZSgwKQogICAgICAgICAsIG1fZGVjb2RpbmdTaXpl
T25seShmYWxzZSkKICAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQotICAgICAgICAsIG1faW50
ZXJsYWNlQnVmZmVyKDApCiAgICAgewogICAgICAgICBtX3BuZyA9IHBuZ19jcmVhdGVfcmVhZF9z
dHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAwLCBkZWNvZGluZ0ZhaWxlZCwgZGVjb2RpbmdX
YXJuaW5nKTsKICAgICAgICAgbV9pbmZvID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChtX3BuZyk7
CkBAIC0xNDMsOCArMTQzLDcgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewogICAgICAgICBpZiAo
bV9wbmcgJiYgbV9pbmZvKQogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHplcm8gdGhlIHBvaW50
ZXJzLgogICAgICAgICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoJm1fcG5nLCAmbV9pbmZv
LCAwKTsKLSAgICAgICAgZGVsZXRlW10gbV9pbnRlcmxhY2VCdWZmZXI7Ci0gICAgICAgIG1faW50
ZXJsYWNlQnVmZmVyID0gMDsKKyAgICAgICAgbV9pbnRlcmxhY2VCdWZmZXIucmVzZXQoKTsKICAg
ICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKQEAgLTE4OCw4ICsxODcsOCBAQCBjbGFz
cyBQTkdJbWFnZVJlYWRlciB7CiAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGhhc0FscGhhKSB7
IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0FscGhhOyB9CiAKLSAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcmxhY2VCdWZmZXI7IH0KLSAgICB2b2lkIGNyZWF0ZUludGVybGFj
ZUJ1ZmZlcihpbnQgc2l6ZSkgeyBtX2ludGVybGFjZUJ1ZmZlciA9IG5ldyBwbmdfYnl0ZVtzaXpl
XTsgfQorICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybGFjZUJ1ZmZlci5nZXQoKTsgfQorICAgIHZvaWQgY3JlYXRlSW50ZXJsYWNlQnVmZmVyKGlu
dCBzaXplKSB7IG1faW50ZXJsYWNlQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PHBuZ19ieXRlPihz
aXplKTsgfQogCiBwcml2YXRlOgogICAgIHBuZ19zdHJ1Y3RwIG1fcG5nOwpAQCAtMTk4LDcgKzE5
Nyw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRCdWZm
ZXJTaXplOwogICAgIGJvb2wgbV9kZWNvZGluZ1NpemVPbmx5OwogICAgIGJvb2wgbV9oYXNBbHBo
YTsKLSAgICBwbmdfYnl0ZXAgbV9pbnRlcmxhY2VCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8cG5n
X2J5dGU+IG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAogUE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5jcHAKaW5kZXggZmU4MjkwZTk1NzU2YmQxNDI1YWE5ZjA4YjkxNTJjYmY2NzE1OWU3Zi4uYTI5
ZTU2NjgxMThhNDY5NTk5MGE5MTI3ODMxNWE1NDIwZjViOGNmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAKICNpZiBVU0UoV0VCUCkKIApAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgV0VCUEltYWdl
RGVjb2Rlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFdlYlBEZW11eGVyKiBkZW11
eGVyKQogICAgIGRlY29kZXJCdWZmZXIudS5SR0JBLnN0cmlkZSA9IHdlYnBGcmFtZS53aWR0aCAq
IHNpemVvZihSR0JBMzIpOwogICAgIGRlY29kZXJCdWZmZXIudS5SR0JBLnNpemUgPSBkZWNvZGVy
QnVmZmVyLnUuUkdCQS5zdHJpZGUgKiB3ZWJwRnJhbWUuaGVpZ2h0OwogICAgIGRlY29kZXJCdWZm
ZXIuaXNfZXh0ZXJuYWxfbWVtb3J5ID0gMTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQg
Y2hhcltdPiBwKG5ldyB1aW50OF90W2RlY29kZXJCdWZmZXIudS5SR0JBLnNpemVdKCkpOworICAg
IGF1dG8gcCA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihkZWNvZGVyQnVmZmVyLnUuUkdCQS5z
aXplKTsKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5yZ2JhID0gcC5nZXQoKTsKICAgICBpZiAo
IWRlY29kZXJCdWZmZXIudS5SR0JBLnJnYmEpIHsKICAgICAgICAgc2V0RmFpbGVkKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCAzNDJiZTU2OWI0NzMyZjJjOTZkNWQwY2M1YWVjZjEw
N2NjYTMyYmIyLi41YzRjYTI5MTVmYzE4NGRmZWFlNTMyZWVjYWQ2OWQ1NDFjYmYzMDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDx3dGYv
U2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJlYW1CdWZmZXIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBs
IDogcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiAgICAgdm9pZCBkaWRPcGVuU29ja2V0KCk7
CiAKICAgICBzdHJ1Y3QgU29ja2V0RGF0YSB7Ci0gICAgICAgIFNvY2tldERhdGEoc3RkOjp1bmlx
dWVfcHRyPGNoYXJbXT4mJiBzb3VyY2UsIHNpemVfdCBsZW5ndGgpCisgICAgICAgIFNvY2tldERh
dGEoVW5pcXVlQXJyYXk8Y2hhcj4mJiBzb3VyY2UsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHNvdXJjZSk7CiAgICAgICAgICAgICBzaXplID0g
bGVuZ3RoOwpAQCAtODksNyArOTAsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIDog
cHVibGljIFNvY2tldFN0cmVhbUhhbmRsZSB7CiAgICAgICAgICAgICBvdGhlci5zaXplID0gMDsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGRhdGE7CisgICAg
ICAgIFVuaXF1ZUFycmF5PGNoYXI+IGRhdGE7CiAgICAgICAgIHNpemVfdCBzaXplIHsgMCB9Owog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCmluZGV4IDZmY2Jm
ODM3OGNhMzc1Y2Y5MjFhZGY5YWE2NGFjZTU1YWQyYzZkYzEuLjVhNDVkZDhkYjUyZGE4YmYxZWY1
YmFlZjQ0YjExNWRlNzY1NzIwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJs
LmNwcApAQCAtNDQsOSArNDQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjcmVhdGVDb3B5KGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCitzdGF0aWMgVW5pcXVlQXJyYXk8Y2hhcj4gY3JlYXRlQ29weShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgbGVuZ3RoKQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGNvcHkobmV3
IGNoYXJbbGVuZ3RoXSk7CisgICAgYXV0byBjb3B5ID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGxl
bmd0aCk7CiAgICAgbWVtY3B5KGNvcHkuZ2V0KCksIGRhdGEsIGxlbmd0aCk7CiAKICAgICByZXR1
cm4gY29weTsKQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpy
ZWFkRGF0YShDVVJMKiBjdXJsSGFuZGxlKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
CiAgICAgY29uc3Qgc2l6ZV90IGJ1ZmZlclNpemUgPSAxMDI0OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxjaGFyW10+IGRhdGEobmV3IGNoYXJbYnVmZmVyU2l6ZV0pOworICAgIGF1dG8gZGF0YSA9IG1h
a2VVbmlxdWVBcnJheTxjaGFyPihidWZmZXJTaXplKTsKICAgICBzaXplX3QgYnl0ZXNSZWFkID0g
MDsKIAogICAgIENVUkxjb2RlIHJldCA9IGN1cmxfZWFzeV9yZWN2KGN1cmxIYW5kbGUsIGRhdGEu
Z2V0KCksIGJ1ZmZlclNpemUsICZieXRlc1JlYWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgK
aW5kZXggZTBhOGY5ZDQyYTM1OWIzOTQyMzRiOTY5NTEzMjc0NWJmMDAzYjhkZC4uOGEzMmViMTM2
ZjEzMjRlOTIwMjlhY2JlZjBhYjY4ZjI2NGZlOGIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5j
bHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NzYsNyArNzcsNyBAQCBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsIGZpbmFsIDogcHVibGlj
IFNvY2tldFN0cmVhbUhhbmRsZSB7CiAgICAgR1JlZlB0cjxHUG9sbGFibGVPdXRwdXRTdHJlYW0+
IG1fb3V0cHV0U3RyZWFtOwogICAgIEdSZWZQdHI8R1NvdXJjZT4gbV93cml0ZVJlYWR5U291cmNl
OwogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxhYmxlOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxjaGFyW10+IG1fcmVhZEJ1ZmZlcjsKKyAgICBVbmlxdWVBcnJheTxjaGFyPiBtX3Jl
YWRCdWZmZXI7CiAKICAgICBTdHJlYW1CdWZmZXI8Y2hhciwgMTAyNCAqIDEwMjQ+IG1fYnVmZmVy
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhCdWZmZXJTaXplID0gMTAwICogMTAyNCAq
IDEwMjQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAppbmRleCA0NGMxM2Ri
OTFjMTc2ZTIyYjY0NjA3ZTNmYWZjYTI1MWQ4OTc1ZTRkLi4xNzg4MDY2MzI5YTM0NmI3NmI2MTc5
ZDJiMjI0YmQzMDY5NTc0NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5j
cHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNvbm5l
Y3RlZChHUmVmUHRyPEdJT1N0cmVhbT4mJiBzdHJlYW0pCiAgICAgbV9zdHJlYW0gPSBXVEZNb3Zl
KHN0cmVhbSk7CiAgICAgbV9vdXRwdXRTdHJlYW0gPSBHX1BPTExBQkxFX09VVFBVVF9TVFJFQU0o
Z19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpKTsKICAgICBtX2lu
cHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShtX3N0cmVhbS5nZXQoKSk7
Ci0gICAgbV9yZWFkQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KFJFQURfQlVGRkVS
X1NJWkUpOworICAgIG1fcmVhZEJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihSRUFEX0JV
RkZFUl9TSVpFKTsKIAogICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGVJbXBsPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMobV9pbnB1dFN0cmVh
bS5nZXQoKSwgbV9yZWFkQnVmZmVyLmdldCgpLCBSRUFEX0JVRkZFUl9TSVpFLCBSdW5Mb29wU291
cmNlUHJpb3JpdHk6OkFzeW5jSU9OZXR3b3JrLCBtX2NhbmNlbGxhYmxlLmdldCgpLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IGE5ZWU0ZWQ1MmVlOTRk
MTM4ZWZkOWYzYjYxNWI3ZGIyZWE1MTM4M2EuLjM1ZDc2OThkOWRkYmZlNWQ2ODIyZDBhZDIwNTE3
NjU4MjZhYmQ1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dn
aW5nV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHAKQEAgLTQyLDEyICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1
ZmZlcihsZW5ndGgpOwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5n
RW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0
RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5k
YXRhKCksIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0
dXJuIFN0cmluZyhidWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcAppbmRleCA5NTM2MmZhMTZmMzYw
NWI2N2QwYmIzMTIwNzMzOGEwZjUwZWY0ODUzLi5kMTczMmRkYjRiNTEyMWI4M2IwOTlkYTlmOWU2
ODQ5OWJhYzVmMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dp
bi9TeXN0ZW1Qcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
aW4vU3lzdGVtUHJveHlXaW4uY3BwCkBAIC0zMCwxMCArMzAsOCBAQAogCiBib29sIFdpbmRvd3NT
eXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5KGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlckxl
biwgaW50KiBwb3J0KQogewotICAgIHN0ZDo6dW5pcXVlX3B0cjxUQ0hBUltdPiB0UmVnQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJMZW4pOwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxUQ0hBUltdPiB0SG9zdCA9IHN0ZDo6bWFrZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVu
KTsKLSAgICBpZiAoIXRSZWdCdWZmZXIgfHwgIXRIb3N0KQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgVmVjdG9yPFRDSEFSPiB0UmVnQnVmZmVyKGJ1ZmZlckxlbik7CisgICAgVmVjdG9yPFRD
SEFSPiB0SG9zdChidWZmZXJMZW4pOwogICAgIERXT1JEIHR5cGU7CiAgICAgRFdPUkQgc2l6ZTsK
ICAgICBIS0VZIGtleTsKQEAgLTUxLDE2ICs0OSwxNiBAQCBib29sIFdpbmRvd3NTeXN0ZW1Qcm94
eTo6Z2V0U3lzdGVtSHR0cFByb3h5KGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlckxlbiwgaW50KiBw
bwogICAgICAgICBMIlByb3h5U2VydmVyIiwKICAgICAgICAgbnVsbHB0ciwKICAgICAgICAgJnR5
cGUsCi0gICAgICAgIChMUEJZVEUpdFJlZ0J1ZmZlci5nZXQoKSwKKyAgICAgICAgKExQQllURSl0
UmVnQnVmZmVyLmRhdGEoKSwKICAgICAgICAgJnNpemUpOwogCiAgICAgaWYgKHJldCAhPSBFUlJP
Ul9TVUNDRVNTKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXBhcnNlUHJveHlT
dHJpbmcodFJlZ0J1ZmZlci5nZXQoKSwgdEhvc3QuZ2V0KCksIGJ1ZmZlckxlbiwgcG9ydCkpCisg
ICAgaWYgKCFwYXJzZVByb3h5U3RyaW5nKHRSZWdCdWZmZXIuZGF0YSgpLCB0SG9zdC5kYXRhKCks
IGJ1ZmZlckxlbiwgcG9ydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHdjc3RvbWJz
KGJ1ZmZlciwgdEhvc3QuZ2V0KCksIGJ1ZmZlckxlbik7CisgICAgd2NzdG9tYnMoYnVmZmVyLCB0
SG9zdC5kYXRhKCksIGJ1ZmZlckxlbik7CiAgICAgYnVmZmVyW2J1ZmZlckxlbi0xXSA9ICdcMCc7
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDIwM2M1NmFkYjYyNjk5ZTMwNmQ5Mzg0Y2M4
NjM3ZDQ2MWM4NzQ2NDUuLjNjNDYzOTRlMmUzZDM0NzUyYmJjNjZkMWE1NTI1MmFiYmMzNzA4NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCkBAIC0xNDMsMTEgKzE0MywxMCBAQCBib29sIENvbm5lY3Rpb246OnByb2Nlc3NNZXNz
YWdlKCkKIAogICAgIHNpemVfdCBhdHRhY2htZW50RmlsZURlc2NyaXB0b3JDb3VudCA9IDA7CiAg
ICAgc2l6ZV90IGF0dGFjaG1lbnRDb3VudCA9IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgp
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdHRhY2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsK
KyAgICBWZWN0b3I8QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvKGF0dGFjaG1lbnRDb3Vu
dCk7CiAKICAgICBpZiAoYXR0YWNobWVudENvdW50KSB7Ci0gICAgICAgIGF0dGFjaG1lbnRJbmZv
ID0gc3RkOjptYWtlX3VuaXF1ZTxBdHRhY2htZW50SW5mb1tdPihhdHRhY2htZW50Q291bnQpOwot
ICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZ2V0KCksIG1lc3NhZ2VEYXRhLCBzaXplb2Yo
QXR0YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50KTsKKyAgICAgICAgbWVtY3B5KGF0dGFj
aG1lbnRJbmZvLmRhdGEoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50SW5mbykgKiBh
dHRhY2htZW50Q291bnQpOwogICAgICAgICBtZXNzYWdlRGF0YSArPSBzaXplb2YoQXR0YWNobWVu
dEluZm8pICogYXR0YWNobWVudENvdW50OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXR0YWNobWVudENvdW50OyArK2kpIHsKQEAgLTQxNyw3ICs0MTYsNyBAQCBib29sIENvbm5l
Y3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAg
IGlvdlswXS5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KCZtZXNzYWdlSW5mbyk7
CiAgICAgaW92WzBdLmlvdl9sZW4gPSBzaXplb2YobWVzc2FnZUluZm8pOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAgIFZlY3RvcjxB
dHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm87CiAgICAgTWFsbG9jUHRyPGNoYXI+IGF0dGFj
aG1lbnRGREJ1ZmZlcjsKIAogICAgIGF1dG8mIGF0dGFjaG1lbnRzID0gb3V0cHV0TWVzc2FnZS5h
dHRhY2htZW50cygpOwpAQCAtNDQ0LDcgKzQ0Myw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91
dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICBmZFB0
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Kj4oQ01TR19EQVRBKGNtc2cpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGF0dGFjaG1lbnRJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxBdHRhY2htZW50SW5m
b1tdPihhdHRhY2htZW50cy5zaXplKCkpOworICAgICAgICBhdHRhY2htZW50SW5mby5yZXNpemUo
YXR0YWNobWVudHMuc2l6ZSgpKTsKICAgICAgICAgaW50IGZkSW5kZXggPSAwOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBhdHRhY2htZW50SW5mb1tpXS5zZXRUeXBlKGF0dGFjaG1lbnRzW2ldLnR5cGUoKSk7CkBA
IC00NjYsNyArNDY1LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4
TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAg
ICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9iYXNlID0gYXR0YWNobWVudEluZm8uZ2V0KCk7CisgICAg
ICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9iYXNlID0gYXR0YWNobWVudEluZm8uZGF0YSgpOwogICAg
ICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfbGVuID0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0
dGFjaG1lbnRzLnNpemUoKTsKICAgICAgICAgKytpb3ZMZW5ndGg7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCA2ZGUxYmFiODU5MDc3ZjgxNzBj
OGJkMmJmYTUyMTk1ZmFhNzFiNzJkLi5kMDYzOGQzMTNhNmU3YzkyZWI4MjQxNDgyNDg5M2RiNjY1
NzZiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAt
NDIsMTIgKzQyLDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxl
bmd0aCk7CiAKLSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9u
bWVudFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9u
bWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwg
bGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3Ry
aW5nKGJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5z
aW9uLmgKaW5kZXggZTUyN2Y4MTUyNTdjMDg3MDljYjRmYTE1YjliMDc5NTkyMWMwMTNmOS4uMWY3
NjgwODU2NGVkNGRiNmU1YzBjZTFlYjYzMDIxMTcxZTkwZWQxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC04Niw4ICs4Nyw3IEBAIGNsYXNzIFNh
bmRib3hFeHRlbnNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTYW5kYm94RXh0ZW5zaW9uPiB7CiAg
ICAgICAgCiAgICAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0FOREJPWF9FWFRFTlNJT05TKQotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFuZGxlW10+IG1fZGF0YTsKLSAgICAgICAgc2l6ZV90IG1f
c2l6ZSB7IDAgfTsKKyAgICAgICAgVmVjdG9yPEhhbmRsZT4gbV9kYXRhOwogI2Vsc2UKICAgICAg
ICAgSGFuZGxlIG1fZW1wdHlIYW5kbGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggOWQ4YjllYjFiN2Y1MGFkMmRhNmUx
NWUwMzI4NDE4YmMzYjBhYjMzZC4uYjhlNzQzZDIzNjBjZmVlZmMxN2JjYTI0ZDU5NzExY2RkNThh
NWI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25N
YWMubW0KQEAgLTE2MywzNCArMTYzLDMzIEBAIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogICAgIGlmICghc2l6ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKCFtX2RhdGEpOworICAgIEFTU0VSVChtX2RhdGEuaXNFbXB0eSgp
KTsKIAotICAgIG1fZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlW10+KHNpemUpOwotICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9kYXRhLnJlc2l6ZShzaXpl
KTsKIH0KIAogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpIDwgbV9zaXplKTsgCisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtp
XTsKIH0KIAogY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QKIHsKLSAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9zaXplKTsKKyAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1
cm4gbV9kYXRhW2ldOwogfQogCiBzaXplX3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OnNpemUoKSBjb25zdAogewotICAgIHJldHVybiBtX3NpemU7CisgICAgcmV0dXJuIG1fZGF0YS5z
aXplKCk7CiB9CiAKIHZvaWQgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc2l6ZTsg
KytpKQotICAgICAgICBlbmNvZGVyIDw8IG1fZGF0YVtpXTsKKyAgICBmb3IgKGF1dG8mIGhhbmRs
ZSA6IG1fZGF0YSkKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKIGJvb2wgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBoYW5kbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKaW5kZXggZmI4YjczNWY4NzNhMTUzYTU5
MTczZjcyNDk1ODAyNGY1OGQ2NTJkMy4uNmFmMzE1MTMxNjUxOGEyY2Y1NjI4ODgxYjQ4NWMyMjMz
MGNjODA5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBl
cnMuY3BwCkBAIC0yMTAsMTggKzIxMCwxNiBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVy
czo6c2FmZUFycmF5VG9TdHJpbmdBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgaWYgKFNV
Q0NFRURFRChocikpCiAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRVQm91bmQoaW5BcnJheSwg
MSwgJnVCb3VuZCk7CiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAodUJvdW5kLWxC
b3VuZCsxKSA6IDA7Ci0gICAgQ0ZTdHJpbmdSZWYqIGl0ZW1zID0gMDsKKyAgICBWZWN0b3I8Q0ZT
dHJpbmdSZWY+IGl0ZW1zOwogICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgIGl0ZW1zID0gbmV3
IENGU3RyaW5nUmVmW2xlbl07CisgICAgICAgIGl0ZW1zLnJlc2l6ZShsZW4pOwogICAgICAgICBm
b3IgKDsgbEJvdW5kIDw9IHVCb3VuZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIEJTdHJpbmcg
c3RyOwogICAgICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxC
b3VuZCwgJnN0cik7CiAgICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gQlNUUlRvQ0ZTdHJpbmdS
ZWYoc3RyKTsKICAgICAgICAgfQogICAgIH0KLSAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJy
YXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcywgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKTsKLSAgICBpZiAoaXRlbXMpCi0gICAgICAgIGRlbGV0ZVtdIGl0ZW1zOworICAgIENGQXJy
YXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEo
KSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC0yMzIsMTggKzIzMCwxNiBAQCBDRkFycmF5UmVmIE1hcnNoYWxsaW5nSGVscGVyczo6c2Fm
ZUFycmF5VG9JbnRBcnJheShTQUZFQVJSQVkqIGluQXJyYXkpCiAgICAgaWYgKFNVQ0NFRURFRCho
cikpCiAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRVQm91bmQoaW5BcnJheSwgMSwgJnVCb3Vu
ZCk7CiAgICAgbG9uZyBsZW4gPSAoU1VDQ0VFREVEKGhyKSkgPyAodUJvdW5kLWxCb3VuZCsxKSA6
IDA7Ci0gICAgQ0ZOdW1iZXJSZWYqIGl0ZW1zID0gMDsKKyAgICBWZWN0b3I8Q0ZOdW1iZXJSZWY+
IGl0ZW1zOwogICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgIGl0ZW1zID0gbmV3IENGTnVtYmVy
UmVmW2xlbl07CisgICAgICAgIGl0ZW1zLnJlc2l6ZShsZW4pOwogICAgICAgICBmb3IgKDsgbEJv
dW5kIDw9IHVCb3VuZDsgbEJvdW5kKyspIHsKICAgICAgICAgICAgIGludCBudW0gPSAwOwogICAg
ICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdldEVsZW1lbnQoaW5BcnJheSwgJmxCb3VuZCwgJm51
bSk7CiAgICAgICAgICAgICBpdGVtc1tsQm91bmRdID0gU1VDQ0VFREVEKGhyKSA/IGludFRvQ0ZO
dW1iZXJSZWYobnVtKSA6IGtDRk51bWJlck5hTjsKICAgICAgICAgfQogICAgIH0KLSAgICBDRkFy
cmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKikgaXRlbXMsIGxl
biwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgaWYgKGl0ZW1zKQotICAgICAgICBkZWxl
dGVbXSBpdGVtczsKKyAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNv
bnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKaW5kZXggZTAwOTRiOTZiYjE4OWE2OTYzNTVk
ZTBkYjA4MDMwYmMwYTgyZDcwOS4uMTdlZTEyZjY4ZTgyZjdhZGUwMDkwMDIwYTA4M2I2NTIyOTYx
YzM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwCkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBib29sIFBsdWdpblBhY2thZ2U6
OmZldGNoSW5mbygpCiAgICAgaWYgKHZlcnNpb25JbmZvU2l6ZSA9PSAwKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhdXRvIHZlcnNpb25JbmZvRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPih2ZXJzaW9uSW5mb1NpemUpOworICAgIFZlY3RvcjxjaGFyPiB2ZXJzaW9uSW5mb0Rh
dGEodmVyc2lvbkluZm9TaXplKTsKIAotICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJp
bmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6
ZSwgdmVyc2lvbkluZm9EYXRhLmdldCgpKSkKKyAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1co
c3RyaW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5m
b1NpemUsIHZlcnNpb25JbmZvRGF0YS5kYXRhKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX25hbWUgPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJQcm9k
dWN0TmFtZSIpOwotICAgIG1fZGVzY3JpcHRpb24gPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5m
b0RhdGEuZ2V0KCksICJGaWxlRGVzY3JpcHRpb24iKTsKKyAgICBtX25hbWUgPSBnZXRWZXJzaW9u
SW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiUHJvZHVjdE5hbWUiKTsKKyAgICBtX2Rlc2Ny
aXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIkZpbGVEZXNj
cmlwdGlvbiIpOwogICAgIGlmIChtX25hbWUuaXNOdWxsKCkgfHwgbV9kZXNjcmlwdGlvbi5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVlNfRklYRURGSUxFSU5GTyogaW5m
bzsKICAgICBVSU5UIGluZm9TaXplOwotICAgIGlmICghVmVyUXVlcnlWYWx1ZVcodmVyc2lvbklu
Zm9EYXRhLmdldCgpLCBMIlxcIiwgKExQVk9JRCopICZpbmZvLCAmaW5mb1NpemUpIHx8IGluZm9T
aXplIDwgc2l6ZW9mKFZTX0ZJWEVERklMRUlORk8pKQorICAgIGlmICghVmVyUXVlcnlWYWx1ZVco
dmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgTCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXpl
KSB8fCBpbmZvU2l6ZSA8IHNpemVvZihWU19GSVhFREZJTEVJTkZPKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1fbW9kdWxlVmVyc2lvbi5sZWFzdFNpZyA9IGluZm8tPmR3RmlsZVZlcnNp
b25MUzsKICAgICBtX21vZHVsZVZlcnNpb24ubW9zdFNpZyA9IGluZm8tPmR3RmlsZVZlcnNpb25N
UzsKQEAgLTE5MywxMSArMTkzLDExIEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gdHlwZXM7Ci0gICAg
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiTUlNRVR5cGUiKS5zcGxpdCgn
fCcsIHR5cGVzKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAi
TUlNRVR5cGUiKS5zcGxpdCgnfCcsIHR5cGVzKTsKICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNp
b25MaXN0czsKLSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJGaWxl
RXh0ZW50cyIpLnNwbGl0KCd8JywgZXh0ZW5zaW9uTGlzdHMpOworICAgIGdldFZlcnNpb25JbmZv
KHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRXh0ZW50cyIpLnNwbGl0KCd8JywgZXh0ZW5z
aW9uTGlzdHMpOwogICAgIFZlY3RvcjxTdHJpbmc+IGRlc2NyaXB0aW9uczsKLSAgICBnZXRWZXJz
aW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJGaWxlT3Blbk5hbWUiKS5zcGxpdCgnfCcs
IGRlc2NyaXB0aW9ucyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEo
KSwgIkZpbGVPcGVuTmFtZSIpLnNwbGl0KCd8JywgZGVzY3JpcHRpb25zKTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0eXBlcy5zaXplKCk7IGkrKykgewogICAgICAgICBTdHJpbmcg
dHlwZSA9IHR5cGVzW2ldLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggYmUzZWIzMTE5MTgzNDA1N2U1YzM0
Njg4YjEzZmY1ZTE1N2Y4ZDYwMy4uMTkwNDg5NzNmYjE3NjMwZWY2NWY1ZDYyNjExYTM2ODQxNjQz
YzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAt
NTMyLDkgKzUzMiw5IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNl
c1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKICAgICBDRlN0cmluZ1JlZiBk
aWRSZW1vdmVEZWZhdWx0c0tleSA9IENGU1RSKFdlYktpdERpZE1pZ3JhdGVEZWZhdWx0U2V0dGlu
Z3NGcm9tU2FmYXJpM0JldGFQcmVmZXJlbmNlS2V5KTsKICAgICBib29sIG9taXREZWZhdWx0cyA9
ICFib29sZWFuVmFsdWVGb3JQcmVmZXJlbmNlc1ZhbHVlKENGRGljdGlvbmFyeUdldFZhbHVlKGRp
Y3QsIGRpZFJlbW92ZURlZmF1bHRzS2V5KSk7CiAKLSAgICBhdXRvIGtleXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENGVHlwZVJlZltdPihjb3VudCk7Ci0gICAgYXV0byB2YWx1ZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENGVHlwZVJlZltdPihjb3VudCk7Ci0gICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhkaWN0LCBrZXlzLmdldCgpLCB2YWx1ZXMuZ2V0KCkpOworICAgIFZlY3RvcjxDRlR5cGVS
ZWY+IGtleXMoY291bnQpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IHZhbHVlcyhjb3VudCk7Cisg
ICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhkaWN0LCBrZXlzLmRhdGEoKSwgdmFsdWVz
LmRhdGEoKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAg
ICAgaWYgKCFrZXlzW2ldIHx8ICF2YWx1ZXNbaV0gfHwgQ0ZHZXRUeXBlSUQoa2V5c1tpXSkgIT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXgg
MTVlMjdmOTg1YzJjZDk5NmRlOWEwN2VlYTliNTlmZGQwZjQ4ZTc4Ny4uMjJmNWEyNjJjMWRlMWI4
MTlkY2VhZjNhYmZiNzdjMGYzOTgxYmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTE3ODQsOCArMTc4NCw4IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIG1lbnVJdGVtSW5mby5mTWFzayA9IE1JSU1f
U1RSSU5HOwogICAgIDo6R2V0TWVudUl0ZW1JbmZvKGhNZW51LCBpbmRleCwgdHJ1ZSwgJm1lbnVJ
dGVtSW5mbyk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8V0NIQVJbXT4o
bWVudUl0ZW1JbmZvLmNjaCArIDEpOwotICAgIG1lbnVJdGVtSW5mby5kd1R5cGVEYXRhID0gYnVm
ZmVyLmdldCgpOworICAgIFZlY3RvcjxXQ0hBUj4gYnVmZmVyKG1lbnVJdGVtSW5mby5jY2ggKyAx
KTsKKyAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1ZmZlci5kYXRhKCk7CiAgICAgbWVu
dUl0ZW1JbmZvLmNjaCsrOwogICAgIG1lbnVJdGVtSW5mby5mTWFzayB8PSBNSUlNX0lEOwogCkBA
IC0xNzk0LDcgKzE3OTQsNyBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICA6OkRlc3Ryb3lNZW51KG1fY3VycmVudENvbnRleHRN
ZW51KTsKICAgICBtX2N1cnJlbnRDb250ZXh0TWVudSA9IG51bGxwdHI7CiAKLSAgICBTdHJpbmcg
dGl0bGUoYnVmZmVyLmdldCgpLCBtZW51SXRlbUluZm8uY2NoKTsKKyAgICBTdHJpbmcgdGl0bGUo
YnVmZmVyLmRhdGEoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CiAgICAgQ29udGV4dE1lbnVBY3Rpb24g
YWN0aW9uID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KG1lbnVJdGVtSW5mby53SUQp
OwogCiAgICAgaWYgKGFjdGlvbiA+PSBDb250ZXh0TWVudUl0ZW1CYXNlQXBwbGljYXRpb25UYWcp
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334499</attachid>
            <date>2018-02-22 19:09:19 -0800</date>
            <delta_ts>2018-02-23 10:18:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180223120918.patch</filename>
            <type>text/plain</type>
            <size>91301</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MWYzYzEzZGQ2MjYxOTk4NzFmM2Y2NjQ4ZWI5Nzc4OTFjMzI2YTUzLi4yYjliYWViODU4MTA3OTQ4
MmMxY2M4NzE1MjY0MzhjZWFjMTc4NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MSBAQAorMjAxOC0wMi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpUeXBl
UHJvZmlsZXJMb2cpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVM
b2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmg6CisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6VHlwZVByb2ZpbGVyTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAg
IChKU0M6OlZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcik6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAocnVuRnJv
bUZpbGVzKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMi0yMiAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgTWFjcm9B
c3NlbWJsZXIgY29kZSB0byBpbXByb3ZlIHJldXNlIGFuZCBleHRlbnNpYmlsaXR5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0
ZDQ5ZGI0OTUwM2VjNzE5YTYwY2JiZDg1N2Y1NWI0YzQ0YzVlYWM2Li5lNmVjZDdkNWMxZmRjYzI4
NWZiMWI5ZDQzMGM1MDFmNDQ4ZDBmNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ3IEBACiAyMDE4LTAyLTIy
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCisgICAgICAgIEZpeCBz
dGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgd2UgdXNlIGBtYWtlX3VuaXF1
ZTxjaGFyW10+KG51bSlgIG9yIGBuZXcgY2hhcltudW1dYCwgYWxsb2NhdGlvbiBpcworICAgICAg
ICBkb25lIGJ5IHRoZSBzeXN0ZW0gbWFsbG9jIGluc3RlYWQgb2YgYm1hbGxvYy4gVGhpcyBwYXRj
aCBmaXhlcyB0aGlzIGlzc3VlCisgICAgICAgIGJ5IGZvbGxvd2luZyB0aHJlZSBjaGFuZ2VzLgor
CisgICAgICAgIDEuIEludHJvZHVjZSBVbmlxdWVBcnJheTxUPi4gSXQgYWxsb2NhdGVzIG1lbW9y
eSBmcm9tIEZhc3RNYWxsb2MuIFdoaWxlIEMrKworICAgICAgICBhcnJheSB3aXRoIGBuZXdgIG5l
ZWQgdG8gaG9sZCB0aGUgc2l6ZSB0byBjYWxsIGRlc3RydWN0b3IgY29ycmVjdGx5LCBvdXIKKyAg
ICAgICAgVW5pcXVlQXJyYXkgb25seSBzdXBwb3J0cyB0eXBlIFQgd2hpY2ggZG9lcyBub3QgaGF2
ZSBhIG5vbiB0cml2aWFsIGRlc3RydWN0b3IuCisgICAgICAgIEl0IHJlZHVjZXMgdGhlIGFsbG9j
YXRpb24gc2l6ZSBzaW5jZSB3ZSBkbyBub3QgbmVlZCB0byB0cmFjayB0aGUgc2l6ZSBvZiB0aGUK
KyAgICAgICAgYXJyYXkgY29tcGFyZWQgdG8gc3RhbmRhcmQgYG5ldyBUW11gLiBUaGlzIGlzIGJh
c2ljYWxseSB1c2FibGUgaWYgd2Ugd2FudCB0bworICAgICAgICBoYXZlIHJhdyBhcnJheSB3aGlj
aCBwb2ludGVyIHdvbid0IGJlIGNoYW5nZWQgZXZlbiBpZiB0aGUgY29udGFpbmVyIGlzIG1vdmVk
LgorCisgICAgICAgIDIuIFVzZSBWZWN0b3I8VD4gaW5zdGVhZC4KKworICAgICAgICAzLiBBbm5v
dGF0ZSBhbGxvY2F0ZWQgdHlwZXMgd2l0aCBNQUtFX0ZBU1RfQUxMT0NBVEVELiBTaW5jZSBpdCBp
bnRyb2R1Y2VzCisgICAgICAgIG5ld1tdIGFuZCBkZWxldGVbXSBvcGVyYXRvcnMsIG1ha2VfdW5p
cXVlPFRbXT4obnVtKSB3aWxsIGFsbG9jYXRlIG1lbW9yeQorICAgICAgICBmcm9tIEZhc3RNYWxs
b2MuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQXNzZXJ0aW9ucy5jcHA6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIHd0Zi9GYXN0TWFsbG9jLmg6CisgICAgICAgIChXVEY6OkZhc3RGcmVlOjpvcGVyYXRv
cigpIGNvbnN0KToKKyAgICAgICAgKFdURjo6RmFzdEZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6
CisgICAgICAgICogd3RmL01hbGxvY1B0ci5oOgorICAgICAgICAoV1RGOjpNYWxsb2NQdHI6Om9w
ZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAqIHd0Zi9TdGFja1Nob3QuaDoKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpTdGFja1Nob3QpOgorICAgICAgICAoV1RGOjpTdGFja1Nob3Q6Om9w
ZXJhdG9yPSk6CisgICAgICAgICogd3RmL1N5c3RlbUZyZWUuaDoKKyAgICAgICAgKFdURjo6U3lz
dGVtRnJlZTxUOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAgKiB3dGYvVW5pcXVlQXJyYXku
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAu
CisgICAgICAgIChXVEY6Om1ha2VVbmlxdWVBcnJheSk6CisgICAgICAgICogd3RmL1ZlY3Rvci5o
OgorICAgICAgICAoV1RGOjpWZWN0b3JUeXBlT3BlcmF0aW9uczo6Zm9yY2VJbml0aWFsaXplKToK
KworMjAxOC0wMi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBSZW1vdmUgc2xlZXAoZG91YmxlKSBhbmQgc2xlZXBNUyhkb3VibGUpIGludGVyZmFj
ZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzAz
OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZWI5ZjczZDY5MGM5ZDczNmI1Nzc1ZDJkYzZkZjNkODViZGY4MDE1
ZC4uMzEyYTRjZDQyODc2ODUzMWQ1NWU0ZmI5MTAwMmUwNmFhZmNjODRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDczIEBACisyMDE4LTAyLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcg
c3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNlIFZlY3RvciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAg
ICAgKiBjc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2Fj
aGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNo
ZTo6YnViYmxlVG9Gcm9udCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9m
Q2hhbm5lbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9y
bWF0Q29udmVydGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1h
dENvbnZlcnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRS
ZXNvdXJjZVNhZmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmZsaXBJbWFnZVN1cmZhY2VWZXJ0aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlOjp1cGRhdGVTdWJSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0UHJvZ3JhbUxvZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
QnVmZmVyRGF0YURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0
YTo6cHV0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6UE5HSW1h
Z2VSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OmNsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjppbnRlcmxhY2VCdWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OmNyZWF0ZUludGVybGFjZUJ1ZmZlcik6
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURlY29kZXI6OmRlY29kZUZyYW1lKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
OgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0RGF0YTo6
U29ja2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZERhdGEpOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpjb25uZWN0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvZ0xldmVsU3RyaW5nKToKKwogMjAxOC0wMi0yMiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIFdlYkNv
bnRlbnQgcHJvY2VzcyBzaG91bGQgbm90IHVzZSBOU1NjcmVlbiBpbiB0aGUgc2NyZWVuRGVwdGgg
aW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBlZTkzNGUx
OWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi5kY2JhODFlMmU2ZDk4Mzk0MDQ0NDg0OTZmZjZiMDQwZmU3
YWI0N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMiAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3Rk
OjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVhZC4KKwor
ICAgICAgICAqIHBhbC93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChQQUw6OmxvZ0xldmVs
U3RyaW5nKToKKwogMjAxOC0wMi0yMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGUzNTE3MGViZGFmNTljNTFlOGRlZjVjMGM5ZDNlMzE2MDllZDk1YjEuLmRkZjNi
N2RlODM2NTBmMmU5NzEwN2M3NDVjN2RlM2Y4OGVmM2JmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjcgQEAKKzIwMTgtMDItMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFs
bG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
VmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJv
eHlXaW4uY3BwOgorICAgICAgICAoV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJv
eHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAg
ICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0vd2luL0xv
Z2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojpsb2dMZXZlbFN0cmluZyk6CisgICAgICAg
ICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRi
b3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUgY29uc3QpOgorCiAyMDE4
LTAyLTIyICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSRUdSRVNTSU9OIChyMjI4MzQ5KTogSW1hZ2VCaXRtYXAgYnVpbHRpbiBpcyBu
b3cgcnVudGltZSBndWFyZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGRlZGJi
NmI2YTVmOGM1ODg0ZDczMmIzZTExN2I4NTQwMTEyMmJiYi4uMTM3Y2IxOTUyODI0MjVmYzY0MWUy
YjcxMjMwZjVlNDg5ZjlhNzUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDE4LTAyLTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVt
IG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXNlIFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoK
KyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdBcnJheSk6Cisg
ICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkpOgorICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAg
ICAgICAgKFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5j
ZXMpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6b25NZW51Q29t
bWFuZCk6CisKIDIwMTgtMDItMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNv
bT4KIAogICAgICAgICBbQ01ha2VdW1dpbl0gVXNlIGNtYWtlY29uZmlnLmggcmF0aGVyIHRoYW4g
Y29uZmlnLmggYW5kIFBsYXRmb3JtLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmQ0YuY3BwCmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMz
YTMuLjEzNjc3MTUzZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBA
IEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmlu
ZykKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGgg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAg
ICAgIHJldHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkubGVha1JlZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVu
aUNoYXJbXT4obGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJh
bmdlTWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBi
dWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdl
TWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBz
YW1lIHNpemUiKTsKLSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJl
dHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVm
ZmVyLmRhdGEoKSksIGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmlu
Z0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtp
bGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmlu
ZGV4IGVhODU5YzRhOWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmEyODIyOWM1Njhi
NDEyYWM0ODg3YzM1ODE2NmZjMjJkZTU5MTlmZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBCeXRl
Y29kZUtpbGxzIHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwog
CiAgICAgY2xhc3MgS2lsbFNldCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgS2lsbFNldCgpCiAgICAgICAgICAgICA6IG1fd29yZCgwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCmluZGV4IGFk
MDM1NmU4ZjkwYmRmOGEzNWExZTNlNTNkZjg3NjI1NDRlNDMxMGEuLjBjMjA3MDNlZDhlMmQ4MTNm
NWQyMTgwOGFhYzJmM2NkMjg2MjA0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHAKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIERpc2Fzc2VtYmxl
cjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwg
TGlua0J1ZgogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gMDsKICAgICBlbHNlCiAg
ICAgICAgIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgPSBHcmFwaDo6YW1vdW50T2ZOb2RlV2hpdGVT
cGFjZShjb250ZXh0KTsKLSAgICBhdXRvIHByZWZpeEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8
Y2hhcltdPihwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7Ci0gICAg
bWVtY3B5KHByZWZpeEJ1ZmZlci5nZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIFZl
Y3RvcjxjaGFyPiBwcmVmaXhCdWZmZXIocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVT
cGFjZSArIDEpOworICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZGF0YSgpLCBwcmVmaXgsIHByZWZp
eExlbmd0aCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbW91bnRPZk5vZGVXaGl0ZVNwYWNl
OyArK2kpCiAgICAgICAgIHByZWZpeEJ1ZmZlcltpICsgcHJlZml4TGVuZ3RoXSA9ICcgJzsKICAg
ICBwcmVmaXhCdWZmZXJbcHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZV0gPSAw
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHko
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgQ29kZUxv
Y2F0aW9uTGFiZWwgZW5kID0gbGlua0J1ZmZlci5sb2NhdGlvbk9mKGN1cnJlbnRMYWJlbCk7CiAg
ICAgcHJldmlvdXNMYWJlbCA9IGN1cnJlbnRMYWJlbDsKICAgICBBU1NFUlQoZW5kLmV4ZWN1dGFi
bGVBZGRyZXNzPHVpbnRwdHJfdD4oKSA+PSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRy
X3Q+KCkpOwotICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWlu
dHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhC
dWZmZXIuZ2V0KCksIG91dCk7CisgICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxl
QWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+
KCksIHByZWZpeEJ1ZmZlci5kYXRhKCksIG91dCk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAKaW5kZXggODU4YjU0MTc0YmZlYjJlMjIxZDgzMDZmYTk4OGEy
MjkxZDUwMjRlMy4uYmMwZjg0MWRmNzUxNDU5MzQ1OTI3ZGYzZGE2YWFiZDA5MTY3NWI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBQb2x5bW9ycGhpY0NhbGxDYXNl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmJiBjb2RlUmVmLCBWTSYgdm0sIGNvbnN0IEpTQ2VsbCogb3duZXIsIEV4ZWNTdGF0ZSog
Y2FsbGVyRnJhbWUsCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZvLCBjb25zdCBWZWN0b3I8UG9seW1v
cnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBm
YXN0Q291bnRzKQorICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZhc3RDb3VudHMpCiAgICAg
OiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUoY29kZVJlZiwgdm0pCiAgICAgLCBtX2Zhc3RDb3VudHMo
V1RGTW92ZShmYXN0Q291bnRzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAppbmRleCBkOTZhZTU2YzQ3ZjRhYWI5
ZmQ0NzJmZTI0MzJiY2Y1OTViMjJmOTVkLi4yYTM5NTc3MmI0YWIwNDY1YmExYThjMDhlOGM4ZDIx
ZGFjOTZlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2Fs
bFZhcmlhbnQuaCIKICNpbmNsdWRlICJHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODQsNyArODUsNyBAQCBj
bGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1YmxpYyBHQ0F3YXJlSklUU3R1YlJv
dXRpbmUgewogICAgIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgICAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYmLCBWTSYsIGNvbnN0IEpTQ2VsbCogb3duZXIsCiAgICAgICAg
IEV4ZWNTdGF0ZSogY2FsbGVyRnJhbWUsIENhbGxMaW5rSW5mbyYsIGNvbnN0IFZlY3RvcjxQb2x5
bW9ycGhpY0NhbGxDYXNlPiYsCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBm
YXN0Q291bnRzKTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cyk7
CiAgICAgCiAgICAgdmlydHVhbCB+UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoKTsKICAgICAK
QEAgLTEwMCw3ICsxMDEsNyBAQCBjbGFzcyBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSA6IHB1
YmxpYyBHQ0F3YXJlSklUU3R1YlJvdXRpbmUgewogCiBwcml2YXRlOgogICAgIFZlY3RvcjxXcml0
ZUJhcnJpZXI8SlNDZWxsPiwgMj4gbV92YXJpYW50czsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDMyX3RbXT4gbV9mYXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBtX2Zhc3RD
b3VudHM7CiAgICAgQmFnPFBvbHltb3JwaGljQ2FsbE5vZGU+IG1fY2FsbE5vZGVzOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKaW5kZXggNzhjYTkzMDNmYzgyODc3Y2U2
MGJmZWNhOTE2MGVhYzM0ZmY5NjZiYS4uYWUwZGU2MzljOTNlNGVhODkzMDZhOTc3ZmJkMjRmOGQ2
MTc4MDUxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCkBAIC05NDQsMTAg
Kzk0NCwxMCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwoCiAgICAgCiAgICAgVmVjdG9yPGlu
dDY0X3Q+IGNhc2VWYWx1ZXMoY2FsbENhc2VzLnNpemUoKSk7CiAgICAgVmVjdG9yPENhbGxUb0Nv
ZGVQdHI+IGNhbGxzKGNhbGxDYXNlcy5zaXplKCkpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50
MzJfdFtdPiBmYXN0Q291bnRzOworICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiBmYXN0Q291bnRz
OwogICAgIAogICAgIGlmICghaXNXZWJBc3NlbWJseSAmJiBjYWxsZXJDb2RlQmxvY2stPmppdFR5
cGUoKSAhPSBKSVRDb2RlOjp0b3BUaWVySklUKCkpCi0gICAgICAgIGZhc3RDb3VudHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KGNhbGxDYXNlcy5zaXplKCkpOworICAgICAgICBmYXN0
Q291bnRzID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90PihjYWxsQ2FzZXMuc2l6ZSgpKTsKICAg
ICAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxDYXNlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBpZiAoZmFzdENvdW50cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggMDYwMmU0ZDk0
MTE0NTBjYzg4M2MxMjgzZDczZTVkYzI3YTUyN2M3MS4uZGNkN2YzMjZkNDQ5N2RhN2E4ZWQxZDAz
ZDE3YTQxNTlhNjlmYzM2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcxOCwxNyArNzE4LDE3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPERpcmVjdG9yeU5hbWU+IGN1cnJlbnRXb3JraW5nRGly
ZWN0b3J5KCkKICAgICAvLyBJbiBXaW5kb3dzLCB3Y2hhcl90IGlzIHRoZSBVVEYtMTZMRS4KICAg
ICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2RkMzc0MDgxLmFz
cHgKICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRv
d3MvZGVza3RvcC9mZjM4MTQwNy5hc3B4Ci0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPHdjaGFyX3RbXT4oYnVmZmVyTGVuZ3RoKTsKLSAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRp
bmdOdWxsID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5nZXQo
KSk7Ci0gICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmdl
dCgpLCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsKTsKKyAgICBWZWN0b3I8d2NoYXJfdD4gYnVmZmVy
KGJ1ZmZlckxlbmd0aCk7CisgICAgRFdPUkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0
Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBidWZmZXIuZGF0YSgpKTsKKyAgICBTdHJp
bmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZGF0YSgpLCBsZW5ndGhO
b3RJbmNsdWRpbmdOdWxsKTsKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IG5ldHdvcmsgcGF0aCBs
aWtlIFxcaG9zdFxzaGFyZVw8cGF0aCBuYW1lPi4KICAgICBpZiAoZGlyZWN0b3J5U3RyaW5nLnN0
YXJ0c1dpdGgoIlxcXFwiKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCi0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUEFUSF9NQVgpOwotICAg
IGlmICghZ2V0Y3dkKGJ1ZmZlci5nZXQoKSwgUEFUSF9NQVgpKQorICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIoUEFUSF9NQVgpOworICAgIGlmICghZ2V0Y3dkKGJ1ZmZlci5kYXRhKCksIFBBVEhfTUFY
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBTdHJpbmcgZGlyZWN0b3J5U3Ry
aW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOworICAgIFN0cmluZyBkaXJlY3Rv
cnlTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5kYXRhKCkpOwogI2VuZGlmCiAgICAg
aWYgKGRpcmVjdG9yeVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDRjZjhj
NmQ0ZWQ5ZjFhMzEyYzQxNDNlNTRiMTAyNmI1NTdhNjAwNmIuLjNhMWVhMzc0ODI0MWE0YzBkNmE1
N2YyYmRmMThhZDY2NTI1YjFmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgewogCi1JbnN0cnVjdGlvbiogRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSAw
OworSW5zdHJ1Y3Rpb24gRGF0YTo6c19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVu
Z3RoICsgMV0gPSB7IH07CiBPcGNvZGUgRGF0YTo6c19vcGNvZGVNYXBbbnVtT3Bjb2RlSURzXSA9
IHsgfTsKIE9wY29kZVN0YXRzQXJyYXkqIERhdGE6OnNfb3Bjb2RlU3RhdHNBcnJheSA9IG51bGxw
dHI7CiAKQEAgLTU3LDggKzU3LDYgQEAgZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VudHJ5KHZvaWQq
KTsKIAogdm9pZCBpbml0aWFsaXplKCkKIHsKLSAgICBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0
aW9ucyA9IG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXTsKLQogI2lmICFFTkFC
TEUoSklUKQogICAgIENMb29wOjppbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaAppbmRleCA2MDJkZDY0NmU1NzNiODYxYjViMjZmYzg2MzVkZjU0NzQ2
MDljYTdiLi4zMDFkMDc3ZWNiYjU5ZTY2NTU3OTY4ODg1NDcxZDAyNDJkYzY0ZmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNz
IERhdGEgewogICAgIHN0YXRpYyB2b2lkIHJlc2V0U3RhdHMoKTsKICAgICBzdGF0aWMgdm9pZCBz
YXZlU3RhdHMoKTsKIAotICAgIHN0YXRpYyBJbnN0cnVjdGlvbiogc19leGNlcHRpb25JbnN0cnVj
dGlvbnM7CisgICAgc3RhdGljIEluc3RydWN0aW9uIHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21h
eE9wY29kZUxlbmd0aCArIDFdOwogICAgIHN0YXRpYyBPcGNvZGUgc19vcGNvZGVNYXBbbnVtT3Bj
b2RlSURzXTsKICAgICBzdGF0aWMgT3Bjb2RlU3RhdHNBcnJheSogc19vcGNvZGVTdGF0c0FycmF5
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKaW5kZXggMzkxODlmODdk
MjVlZGI1N2MyZWEyMjgzNTA0ZjYxMWY1MjUwZTE2ZS4uNjNjMmRlOTEzZmRmNGRiNWU1NGFjZmUy
ZWFiNGFkZGY5MGVjMzIxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJnTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3Qu
aApAQCAtMTY1LDYgKzE2NSw3IEBAIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyIDogcHVibGlj
IFJlY29yZE92ZXJmbG93IHsKIH07CiAKIGNsYXNzIEFyZ0xpc3QgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBJbnRlcnByZXRlcjsKICAgICBmcmllbmQg
Y2xhc3MgSklUOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVQcm9maWxlckxvZy5jcHAKaW5kZXggZmYwYTc2MTczOTRhNDlkZDNkOGZiYWM4Y2JjYWU2
OGFmM2U0ZjVlMS4uMDlkNDIyMDVmNmI5OTgzMmYzOWY5OWM3MjkxMTg4NTJmZjhiMzY5YyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3Bw
CkBAIC00MSwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0ludGVybmFsIHsK
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotdm9pZCBUeXBlUHJvZmls
ZXJMb2c6OmluaXRpYWxpemVMb2coKQorVHlwZVByb2ZpbGVyTG9nOjpUeXBlUHJvZmlsZXJMb2co
KQorICAgIDogbV9sb2dTaXplKDUwMDAwKQorICAgICwgbV9sb2dTdGFydFB0cihuZXcgTG9nRW50
cnlbbV9sb2dTaXplXSkKKyAgICAsIG1fY3VycmVudExvZ0VudHJ5UHRyKG1fbG9nU3RhcnRQdHIp
CisgICAgLCBtX2xvZ0VuZFB0cihtX2xvZ1N0YXJ0UHRyICsgbV9sb2dTaXplKQogewogICAgIEFT
U0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAgbV9sb2dTaXplID0gNTAwMDA7Ci0gICAgbV9sb2dT
dGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2xvZ1NpemVdOwotICAgIG1fY3VycmVudExvZ0VudHJ5
UHRyID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3RhcnRQdHIgKyBt
X2xvZ1NpemU7CiB9CiAKIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxvZygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCmluZGV4IDli
NTdjYzU4NjcwZjQ1OTkxNWVjZWRlNmMxM2VhYTU1ODU4NDlmMTcuLjM5NDE5MzM0OGM2ZTk0MDQ0
MDM5Y2NlYzY3OGEzMzBiYjg4NDNlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVQcm9maWxlckxvZy5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFR5cGVQcm9m
aWxlckxvZyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IExvZ0VudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IApAQCAtNTIsMTIgKzUzLDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKICAgICB9OwogCiAK
LSAgICBUeXBlUHJvZmlsZXJMb2coKQotICAgICAgICA6IG1fbG9nU3RhcnRQdHIoMCkKLSAgICB7
Ci0gICAgICAgIGluaXRpYWxpemVMb2coKTsKLSAgICB9Ci0KKyAgICBUeXBlUHJvZmlsZXJMb2co
KTsKICAgICB+VHlwZVByb2ZpbGVyTG9nKCk7CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYpOwpAQCAtNzEsOCArNjcsNiBAQCBjbGFz
cyBUeXBlUHJvZmlsZXJMb2cgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBpbml0aWFsaXplTG9nKCk7Ci0KICAgICB1bnNpZ25l
ZCBtX2xvZ1NpemU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAgTG9nRW50cnkq
IG1fY3VycmVudExvZ0VudHJ5UHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmlu
ZGV4IGNlNmU0YzFmNDVjYjllYjllNTg1ZTcyYmRjMGU3MGFiNjdiYWVmYmIuLmI2NjdlZDcyZTY1
MjMzMTQ3NjVhMjAyODFmZmFiMzQzNTE2YTcyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKQEAgLTUzNiwxMSArNTM2LDYgQEAgVk06On5WTSgpCiAgICAgZGVsZXRlIGNsaWVu
dERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CiAKLSNpZiBFTkFCTEUoWUFSUl9KSVRf
QUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBpZiAobV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyKQotICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7Ci0jZW5k
aWYKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxldGUgbV9ydFRyYWNlTGlz
dDsKICNlbmRpZgpAQCAtOTA3LDggKzkwMiw4IEBAIGNoYXIqIFZNOjphY3F1aXJlUmVnRXhwUGF0
dGVybkNvbnRleEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0TG9jay5sb2Nr
KCk7CiAgICAgaWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAgICAgIG1fcmVn
RXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZNOjpwYXR0ZXJuQ29udGV4dEJ1ZmZl
clNpemVdOwotICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CisgICAgICAg
IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihWTTo6
cGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTsKKyAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyLmdldCgpOwogfQogCiB2b2lkIFZNOjpyZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkNzNmYzZiOTc0Njhj
OGI0MWRhMWVhMGZmODkwOGRkZmQzZGI0MmE1Li43NmRiMDU4MmZhZjNhMjZiMTU2N2YyOTg0OTVi
NjgxZjg4ZjViZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTY5LDYgKzY5
LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9sUmVnaXN0cnku
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUoUkVHRVhQX1RS
QUNJTkcpCkBAIC02ODUsNyArNjg2LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKIAogI2lmIEVO
QUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8vIFNwYWNlIGFsbG9j
YXRlZCB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0Ci0gICAgY2hhciogbV9yZWdF
eHBQYXR0ZXJuQ29udGV4QnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFVuaXF1ZUFycmF5PGNoYXI+
IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBMb2NrIG1fcmVnRXhwUGF0dGVybkNv
bnRleHRMb2NrOwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7
CiAgICAgdm9pZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IGU0MzhmNTYwNGI3MGQyNjk4YWIzZjc5OTRhNTQw
MWM5Y2JhYjNhZGMuLmYxOTg0YjViODA4OGQ1NDk2NTI2NWZmZDQ5MDY4NGYzOWY0NjdmOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKICNpZiAhT1MoV0lORE9XUykKQEAgLTQxNiw3ICs0MTcsNyBAQCBzdGF0aWMgYm9vbCBy
dW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBmaWxlcwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7CiAgICAgdW5zaWduZWQg
dGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKLSAgICBjaGFyKiBsaW5lQnVm
ZmVyID0gbmV3IGNoYXJbTWF4TGluZUxlbmd0aCArIDFdOworICAgIFZlY3RvcjxjaGFyPiBsaW5l
QnVmZmVyKE1heExpbmVMZW5ndGggKyAxKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKIApAQCAtNDM1LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAg
ICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyID0gMDsKICAgICAgICAgY29uc3QgY2hhciogcmVn
ZXhwRXJyb3IgPSBudWxscHRyOwogCi0gICAgICAgIHdoaWxlICgobGluZVB0ciA9IGZnZXRzKCZs
aW5lQnVmZmVyWzBdLCBNYXhMaW5lTGVuZ3RoLCB0ZXN0Q2FzZXNGaWxlKSkpIHsKKyAgICAgICAg
d2hpbGUgKChsaW5lUHRyID0gZmdldHMobGluZUJ1ZmZlci5kYXRhKCksIE1heExpbmVMZW5ndGgs
IHRlc3RDYXNlc0ZpbGUpKSkgewogICAgICAgICAgICAgbGluZUxlbmd0aCA9IHN0cmxlbihsaW5l
UHRyKTsKICAgICAgICAgICAgIGlmIChsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9PSAnXG4nKSB7
CiAgICAgICAgICAgICAgICAgbGluZVB0cltsaW5lTGVuZ3RoIC0gMV0gPSAnXDAnOwpAQCAtNDg0
LDggKzQ4NSw2IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgZWxzZQogICAgICAgICBw
cmludGYoIiV1IHRlc3RzIHBhc3NlZFxuIiwgdGVzdHMpOwogCi0gICAgZGVsZXRlW10gbGluZUJ1
ZmZlcjsKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICB2bS5kdW1wUmVnRXhwVHJh
Y2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hl
YXBWZXJpZmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5o
CmluZGV4IDQ4MjRiMWM2YjNlNmZhYjJiYTJhN2Q4MjExZTc5ZTA3ODdmYzQ5NDMuLjI1YjhmODE0
MDM4YjJhZTFjYTQyYTkyNGZlZTM2ZTk1NGFlZmFkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmgKQEAgLTY0LDYgKzY0LDggQEAgY2xhc3MgSGVhcFZlcmlm
aWVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgR0NDeWNsZSB7CisgICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKwogICAgICAgICBHQ0N5Y2xlKCkKICAgICAgICAgICAg
IDogYmVmb3JlKCJCZWZvcmUgTWFya2luZyIpCiAgICAgICAgICAgICAsIGFmdGVyKCJBZnRlciBN
YXJraW5nIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYw
YTI1YmYzNjM3ZmE1OTY2MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0
MzZiNTY2OWZiYmJlYzFlMGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtNjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQy
NCAvKiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29tbW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYz
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyog
Q3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFk
R3JvdXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8q
IFBsYXRmb3JtUmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtUmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAg
Kzg1NiwxMCBAQAogCQkJCUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5o
ICovLAogCQkJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJ
CQkJQThBNDcyODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJ
CQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFE
NjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0
NzI5NzE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1
QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyog
RHVtYlB0clRyYWl0cy5oICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1i
VmFsdWVUcmFpdHMuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRy
YWl0cy5oICovLAogCQkJCUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICov
LAogCQkJCUE4QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAg
LTEwODMsNiArMTA4NCw3IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0
YXRlLmggKi8sCiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICov
LAogCQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlF
MzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhE
MzFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTND
QTAwMDI2RTI2IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBE
QURFMzYgLyogVVVJRC5jcHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3Mzcw
MTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0
MTIzRkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZG
IC8qIFZNVGFncy5oICovLAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3Nl
cnRpb25zLmNwcCAqLywKIAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUu
Y3BwICovLAogCQkJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAog
CQkJCTk3NENGQzhEMTZBNEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYg
KzExMDIsNyBAQAogCQkJCTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICov
LAogCQkJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJ
CUU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFG
RTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0
aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBA
QAogCQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0
b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8q
IFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAw
N0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBD
QjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjhFODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAz
MDA5NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2
MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQz
RDFBOTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNl
L1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggMTU4Y2JlZjc2MTIzZDkzZDdmNDFmMmJmZjIw
MTY1NmUyOThlOGEwOC4uZGJhZGFlZTZjYTU0MDYwMDEyOTY0MzlhMjMwNDU5N2U1YmJhNzYzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTE1MSwxMiArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHZw
cmludGZfc3RkZXJyX3dpdGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciog
Zm9ybWF0LCB2CiB7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwog
ICAgIHNpemVfdCBmb3JtYXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1h
dFdpdGhQcmVmaXggPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9y
bWF0TGVuZ3RoICsgMSk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZp
eCwgcHJlZml4TGVuZ3RoKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHBy
ZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3Jt
YXRXaXRoUHJlZml4KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNw
eShmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1l
bWNweShmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3Jt
YXRMZW5ndGgpOwogICAgIGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVu
Z3RoXSA9IDA7CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5n
ZXQoKSwgYXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXgu
ZGF0YSgpLCBhcmdzKTsKIH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFp
bGluZ19uZXdsaW5lKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY3LDEy
ICsxNjcsMTIgQEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXds
aW5lKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGF1dG8gZm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4oZm9ybWF0TGVuZ3RoICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgp
LCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXds
aW5lKGZvcm1hdExlbmd0aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRh
KCksIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRM
ZW5ndGhdID0gJ1xuJzsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9
IDA7CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCks
IGFyZ3MpOworICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRh
KCksIGFyZ3MpOwogfQogCiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3Rz
LnR4dAppbmRleCAyMjBiYWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdk
MDYxOTNjMGExZGZmYzgzMGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dApAQCAtMjMzLDYgKzIzMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAog
ICAgIFVuaVN0ZEV4dHJhcy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAg
ICAgVW5pcXVlUmVmLmgKICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCmluZGV4IDdlYzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2
NzJjZTQ2ZDlmMWMyYjQzYTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgK
QEAgLTIwMCw2ICsyMDAsMjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lk
IGZyZWUodm9pZCogcCkgeyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBGYXN0RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCog
cG9pbnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5h
bWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAg
IHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZy
ZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIp
KTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJV
RykKQEAgLTIwOCw2ICsyMjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0
aW9uU2l6ZTsKIAogdXNpbmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFs
bG9jOwordXNpbmcgV1RGOjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxl
ZDsKIHVzaW5nIFdURjo6ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0
ci5oCmluZGV4IDdmNmEwMmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEw
YWE5YmQ1YmJhMDlhYzU2MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02
Niw2ICs2NiwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0
TWFsbG9jPiBjbGFzcyBNYWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZSht
X3B0ciwgbnVsbHB0cik7CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgK
aW5kZXggNmVmZDA3NGRlMjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJh
ZTNjN2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU3RhY2tTaG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcg
KzM4LDcgQEAgY2xhc3MgU3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7
CiAgICAgICAgIGlmIChzaXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3Vu
aXF1ZTx2b2lkKltdPihzaXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJy
YXk8dm9pZCo+KHNpemUpOwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAg
ICAgICAgV1RGR2V0QmFja3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7
CkBAIC01NSw3ICs1Niw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90
JiBvcGVyYXRvcj0oY29uc3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjx2b2lkKltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4o
b3RoZXIubV9zaXplKTsKKyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2
b2lkKj4ob3RoZXIubV9zaXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6
ZTsgaS0tOykKICAgICAgICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAg
ICAgICAgbV9zaXplID0gb3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0
YWNrU2hvdCB7CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVl
QXJyYXkoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KDEpKTsgfQotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5Owor
CisgICAgVW5pcXVlQXJyYXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAg
fTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJj
ZS9XVEYvd3RmL1N5c3RlbUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2
ZDA0ZjViYWVjZWY1Li43M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93
dGYvU3lzdGVtRnJlZS5oCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9p
ZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0
X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0z
OSwxMSArNDEsMTIgQEAgc3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgogc3RydWN0IFN5c3RlbUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9y
KCkoVCogcG9pbnRlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBl
bmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJy
YXkuaCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmY1MjlkMzA4
NTg5ZTk4MTM3ZjM4MTI4ZmI5MGM5MTJmMWM1MmFkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFVuaXF1ZUFycmF5ID0gdHlwZW5hbWUgc3Rk
Ojp1bmlxdWVfcHRyPFRbXSwgRmFzdEZyZWU8VFtdPj47CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitVbmlxdWVBcnJheTxUPiBtYWtlVW5pcXVlQXJyYXkoc2l6ZV90IHNpemUpCit7CisgICAgLy8g
QysrIGBuZXcgVFtOXWAgc3RvcmVzIGl0cyBgTmAgdG8gc29tZXdoZXJlLiBPdGhlcndpc2UsIGBk
ZWxldGUgW11gIGNhbm5vdCBkZXN0cm95CisgICAgLy8gdGhlc2UgTiBlbGVtZW50cy4gQnV0IHdl
IGRvIG5vdCB3YW50IHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkuCisg
ICAgLy8gSWYgaXQgaXMgYWNjZXB0YWJsZSwgd2UgY2FuIGp1c3QgdXNlIFZlY3RvcjxUPiBpbnN0
ZWFkLiBTbyB0aGlzIFVuaXF1ZUFycmF5PFQ+IG9ubHkKKyAgICAvLyBhY2NlcHRzIHRoZSB0eXBl
IFQgd2hpY2ggaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBUaGlzIGFsbG93cyB1cyB0byBza2lw
IGNhbGxpbmcKKyAgICAvLyBkZXN0cnVjdG9ycyBmb3IgTiBlbGVtZW50cy4gQW5kIHRoaXMgYWxs
b3dzIFVuaXF1ZUFycmF5PFQ+IG5vdCB0byBzdG9yZSBpdHMgTiBzaXplLgorICAgIHVzaW5nIFUg
PSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VT46OnZhbHVlLCAiIik7CisKKyAgICAv
LyBEbyBub3QgdXNlIHBsYWNlbWVudCBuZXcgbGlrZSBgbmV3IChzdG9yYWdlKSBVW3NpemVdKClg
LiBgbmV3IFVbc2l6ZV0oKWAgcmVxdWlyZXMKKyAgICAvLyBsYXJnZXIgc3RvcmFnZSB0aGFuIHRo
ZSBgc2l6ZW9mKFUpICogc2l6ZWAgc3RvcmFnZSBzaW5jZSBpdCB3YW50IHRvIHN0b3JlIGBzaXpl
YAorICAgIC8vIHRvIHNvbWV3aGVyZS4KKyAgICBVKiBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8VSo+
KGZhc3RNYWxsb2Moc2l6ZW9mKFUpICogc2l6ZSkpOworICAgIFZlY3RvclR5cGVPcGVyYXRpb25z
PFU+Ojpmb3JjZUluaXRpYWxpemUoc3RvcmFnZSwgc3RvcmFnZSArIHNpemUpOworICAgIHJldHVy
biBVbmlxdWVBcnJheTxUPihzdG9yYWdlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3Vz
aW5nIFdURjo6VW5pcXVlQXJyYXk7Cit1c2luZyBXVEY6Om1ha2VVbmlxdWVBcnJheTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgK
aW5kZXggYWJjYWJkMDZjNWJhZWU0NDRjYWVmNWU4MGY0MGFiNGQ3NmM3YzkyYy4uMjdmYzE0NTNh
MGQwYTA2NzJlM2Q3NDFlNzE1OTI5ZjY5NzJkNTU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTY1LDEwICs2NSwx
NSBAQCBzdHJ1Y3QgVmVjdG9yRGVzdHJ1Y3Rvcjx0cnVlLCBUPgogdGVtcGxhdGUgPGJvb2wgbmVl
ZHNJbml0aWFsaXphdGlvbiwgYm9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgdHlwZW5hbWUg
VD4KIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjsKIAotdGVtcGxhdGU8Ym9vbCBpZ25vcmUsIHR5
cGVuYW1lIFQ+Ci1zdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8ZmFsc2UsIGlnbm9yZSwgVD4KK3Rl
bXBsYXRlPGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CitzdHJ1Y3Qg
VmVjdG9ySW5pdGlhbGl6ZXI8ZmFsc2UsIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPgogewog
ICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCosIFQqKSB7fQorCisgICAgc3RhdGljIHZvaWQg
Zm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgeworICAgICAgICBWZWN0b3JJ
bml0aWFsaXplcjx0cnVlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmZvcmNlSW5pdGlh
bGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
NzksNiArODQsMTEgQEAgc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIGZhbHNlLCBUPgog
ICAgICAgICBmb3IgKFQqIGN1ciA9IGJlZ2luOyBjdXIgIT0gZW5kOyArK2N1cikKICAgICAgICAg
ICAgIG5ldyAoTm90TnVsbCwgY3VyKSBUOwogICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvcmNl
SW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShi
ZWdpbiwgZW5kKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtODgsNiAr
OTgsMTEgQEAgc3RydWN0IFZlY3RvckluaXRpYWxpemVyPHRydWUsIHRydWUsIFQ+CiAgICAgewog
ICAgICAgICBtZW1zZXQoYmVnaW4sIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGVuZCkgLSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihiZWdpbikpOwogICAgIH0KKworICAgIHN0YXRpYyB2b2lk
IGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgaW5pdGlh
bGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CiB9OwogCiB0ZW1wbGF0ZSA8Ym9vbCBjYW5Nb3ZlV2l0
aE1lbWNweSwgdHlwZW5hbWUgVD4KQEAgLTIzMCw2ICsyNDUsMTEgQEAgc3RydWN0IFZlY3RvclR5
cGVPcGVyYXRpb25zCiAgICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6
bmVlZHNJbml0aWFsaXphdGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1l
bXNldCwgVD46OmluaXRpYWxpemUoYmVnaW4sIGVuZCk7CiAgICAgfQogCisgICAgc3RhdGljIHZv
aWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgeworICAgICAgICBWZWN0
b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3Rv
clRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUo
YmVnaW4sIGVuZCk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgbW92ZShUKiBzcmMsIFQqIHNy
Y0VuZCwgVCogZHN0KQogICAgIHsKICAgICAgICAgVmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRzPFQ+
OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1vdmUoc3JjLCBzcmNFbmQsIGRzdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAKaW5kZXggYzcxZjM5MjkzNDgxZWNlZThkNTVlYjc2YzRjM2I1NWY0MDhmMmYxYS4u
NWU2MmM1YWMyZGM5Y2MwMTBiNWU5OTNkYjEzY2NhNWU0NjIzZTg1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
LmNwcApAQCAtNDIxLDggKzQyMSw4IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRC
dWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKIAogICAgICAgICBvdXRwdXQoMCkt
PnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAKLSAgICAgICAgbV9zb3Vy
Y2VDaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3QgZmxvYXQqW10+KG51bWJlck9mQ2hh
bm5lbHMpOwotICAgICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9zb3VyY2VDaGFubmVscyA9
IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOworICAgICAg
ICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8ZmxvYXQqPihudW1iZXJP
ZkNoYW5uZWxzKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZD
aGFubmVsczsgKytpKSAKICAgICAgICAgICAgIG1fc291cmNlQ2hhbm5lbHNbaV0gPSBidWZmZXIt
PmNoYW5uZWxEYXRhKGkpLT5kYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaAppbmRleCBmNGU2M2E4NTljMDFi
NDE1ZTFjZjM0N2YyNzg4ZGRkOGI3YjczYmExLi4zMGI3OWI3OTMzMzczMTgyMWZhMjU3YTA4ZDEz
NTgwZmEyNTkwZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1
ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTA5LDggKzExMCw4IEBAIGNsYXNzIEF1ZGlvQnVmZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1Ymxp
YyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewogICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9i
dWZmZXI7CiAKICAgICAvLyBQb2ludGVycyBmb3IgdGhlIGJ1ZmZlciBhbmQgZGVzdGluYXRpb24u
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAg
IFVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVB
cnJheTxmbG9hdCo+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIC8vIFVzZWQgZm9yIHRo
ZSAiZ2FpbiIgYW5kICJwbGF5YmFja1JhdGUiIGF0dHJpYnV0ZXMuCiAgICAgUmVmUHRyPEF1ZGlv
UGFyYW0+IG1fZ2FpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xv
Z2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAK
aW5kZXggOGNhNGM5NmZlYWY4YmJhZTYxMDgyMTEzMTM4N2FlMzQ1ZjA3ZGMyNS4uOTVjYzhkM2M3
MmFlZTY2MTc1OWM2MGZlNDc4YWQzYTUxMTY1ODViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTQyLDEyICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxT
dHJpbmcoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7Cisg
ICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVu
dFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5n
dGgpKQorICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50
VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBT
dHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGls
ZWRTZWxlY3Rvci5oCmluZGV4IGE4MzNkYmEwMmZmMzNkMWRmNjMwOGUxODg4MDJiYzcwODhlNzY2
OTEuLjA5OWFjOTNiNzU0ZDIxNDgxOTc3MDMwOGJlYmJmMzM4OTMzMjU2NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBT
ZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHsKIH07CiAKIHN0cnVjdCBDb21waWxlZFNlbGVjdG9y
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2VsZWN0b3JDb21w
aWxhdGlvblN0YXR1cyBzdGF0dXM7CiAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29k
ZVJlZjsKICNpZiBkZWZpbmVkKENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HKSAmJiBDU1NfU0VM
RUNUT1JfSklUX1BST0ZJTElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyY2RhYzkxMjJlZjllYTc3
Mjc5YmNkYzBkNjNhNGVhZGZlOTc4ZWRkLi4wMjk3Y2UwYWQyMzU0Y2ZhZTgyMjlmYWIzZThlZTUx
ZDg3OTM2OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtOTksNiArOTksNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE1NTMsNyArMTU1NCw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29weVRleFN1YkltYWdlMkQiLCAiVGV4dHVyZSBoYXMg
dW5rbm93biBpbnRlcm5hbCBmb3JtYXQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOworICAgICAg
ICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgICAgICBpZiAod2lkdGggJiYg
aGVpZ2h0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICAgICAgR0MzRGVu
dW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlw
ZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsKQEAg
LTE1NjEsNyArMTU2Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQgZGlt
ZW5zaW9ucyIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7Cisg
ICAgICAgICAgICB6ZXJvID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHNpemUpOwog
ICAgICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIs
ICJvdXQgb2YgbWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTc2MSw3ICs1
NzYyLDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpz
aW11bGF0ZVZlcnRleEF0dHJpYjAoR0MzRHVpbnQgbnUKICAgICAgICAgICAgIHx8IGF0dHJpYlZh
bHVlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCiAgICAgICAgICAg
ICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVsz
XSkpIHsKIAotICAgICAgICBhdXRvIGJ1ZmZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDM0Rm
bG9hdFtdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXJEYXRhID0gbWFrZVVuaXF1
ZUFycmF5PEdDM0RmbG9hdD4oYnVmZmVyU2l6ZSk7CiAgICAgICAgIGZvciAoR0MzRHVpbnQgaWkg
PSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKICAgICAgICAgICAgIGJ1ZmZlckRhdGFb
aWkgKiA0XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOwogICAgICAgICAgICAgYnVmZmVyRGF0YVtp
aSAqIDQgKyAxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOwpAQCAtNTkwNywxNSArNTkwOCwxNCBA
QCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25zdCBT
dHJpbmcmIHRleHQpIGNvbnN0CiB9CiAKIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAgIDog
bV9idWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltd
PihjYXBhY2l0eSkpCi0gICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgIDogbV9idWZmZXJz
KGNhcGFjaXR5KQogewogfQogCiBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKLSAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbV9jYXBhY2l0eTsgKytpKSB7Cisg
ICAgc2l6ZV90IGk7CisgICAgZm9yIChpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7ICsraSkg
ewogICAgICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ldLmdldCgpOwogICAgICAg
ICBpZiAoIWJ1ZikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkzMCw3ICs1OTMwLDcgQEAgSW1h
Z2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OmltYWdlQnVmZmVyKGNvbnN0IEkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRl
bXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICgh
dGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNp
dHkgLSAxLCBpKTsKKyAgICBpID0gc3RkOjptaW4obV9idWZmZXJzLnNpemUoKSAtIDEsIGkpOwog
ICAgIG1fYnVmZmVyc1tpXSA9IFdURk1vdmUodGVtcCk7CiAKICAgICBJbWFnZUJ1ZmZlciogYnVm
ID0gbV9idWZmZXJzW2ldLmdldCgpOwpAQCAtNTkzOCw5ICs1OTM4LDkgQEAgSW1hZ2VCdWZmZXIq
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVm
ZmVyKGNvbnN0IEkKICAgICByZXR1cm4gYnVmOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmJ1YmJsZVRvRnJvbnQoaW50IGlkeCkKK3Zv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxl
VG9Gcm9udChzaXplX3QgaWR4KQogewotICAgIGZvciAoaW50IGkgPSBpZHg7IGkgPiAwOyAtLWkp
CisgICAgZm9yIChzaXplX3QgaSA9IGlkeDsgaSA+IDA7IC0taSkKICAgICAgICAgbV9idWZmZXJz
W2ldLnN3YXAobV9idWZmZXJzW2ktMV0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNmEzNTc0Yjg4
ZjNmNmEwZDdmNGIwMTRlN2FmYjc4MGM1ZDcyOWM0OS4uZDJhMzkxOTU5ZGJjMTRlZWNhZmIwYTBl
MDBlYjdlODg5NjYyZjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApAQCAtNTE3LDkgKzUxNyw4IEBAIGNsYXNz
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UgOiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJp
bmdDb250ZXh0LCBwcml2YXRlCiAgICAgICAgIC8vIFRoZSBwb2ludGVyIHJldHVybmVkIGlzIG93
bmVkIGJ5IHRoZSBpbWFnZSBidWZmZXIgbWFwLgogICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBi
dWJibGVUb0Zyb250KGludCBpZHgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPltdPiBtX2J1ZmZlcnM7Ci0gICAgICAgIGludCBtX2NhcGFjaXR5
OworICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCk7CisgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+PiBtX2J1ZmZlcnM7CiAgICAgfTsKICAgICBM
UlVJbWFnZUJ1ZmZlckNhY2hlIG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZSB7IDAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAK
aW5kZXggMzAxMjVhZWIzMmFhMTMxZDcwY2IzNGE4ZjljZDg1YzE3MzI2YWVmMC4uYjI1NTE4ZDg4
MGE4ZDJkOTk0YTc2OTZiOGZhZGE5ZTU1NDhjMjllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCkBAIC0yNzUsOCArMjc1
LDggQEAgdm9pZCBEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHModW5zaWdu
ZWQgbnVtYmVyT2ZDaGFubmVscykKICAgICAgICAgbV9wb3N0RmlsdGVyUGFja3MuYXBwZW5kKHN0
ZDo6bWFrZV91bmlxdWU8WmVyb1BvbGVGaWx0ZXJQYWNrND4oKSk7CiAgICAgfQogCi0gICAgbV9z
b3VyY2VDaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8Y29uc3QgZmxvYXQqW10+KG51bWJlck9m
Q2hhbm5lbHMpOwotICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8
ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOworICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtl
VW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBtX2Rlc3Rp
bmF0aW9uQ2hhbm5lbHMgPSBtYWtlVW5pcXVlQXJyYXk8ZmxvYXQqPihudW1iZXJPZkNoYW5uZWxz
KTsKIAogICAgIG1fY29tcHJlc3Nvci5zZXROdW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5l
bHMpOwogICAgIG1fbnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCmluZGV4
IGExMWQ4N2RlNTc1YzUyZWEzMWEyMmI5ODNhMWUzNDZjYmQyYWViZDUuLmY3MTZjZWY3M2EzNWVl
NmVlODhiYTk4YmI5OGQyNjI1MzdiZDY5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiRHluYW1pY3NDb21wcmVzc29yS2VybmVsLmgiCiAjaW5jbHVkZSAiWmVyb1BvbGUuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTAxLDggKzEwMiw4IEBAIGNsYXNzIER5bmFtaWNzQ29tcHJl
c3NvciB7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4g
bV9wcmVGaWx0ZXJQYWNrczsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmls
dGVyUGFjazQ+PiBtX3Bvc3RGaWx0ZXJQYWNrczsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxjb25z
dCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXQq
W10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+
IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8ZmxvYXQqPiBtX2Rlc3RpbmF0aW9u
Q2hhbm5lbHM7CiAKICAgICB2b2lkIHNldEVtcGhhc2lzU3RhZ2VQYXJhbWV0ZXJzKHVuc2lnbmVk
IHN0YWdlSW5kZXgsIGZsb2F0IGdhaW4sIGZsb2F0IG5vcm1hbGl6ZWRGcmVxdWVuY3kgLyogMCAt
PiAxICovKTsKICAgICB2b2lkIHNldEVtcGhhc2lzUGFyYW1ldGVycyhmbG9hdCBnYWluLCBmbG9h
dCBhbmNob3JGcmVxLCBmbG9hdCBmaWx0ZXJTdGFnZVJhdGlvKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5oCmluZGV4IDQwNjIwZmI4NDEwMWY2NmI1ZmMwOWFhM2VmYjEy
NTgxM2JmY2QwNzEuLjcyN2M5MmEzYTA3ZGVkOTM3Mzc2NGNjMWFkY2NiZmVhYzA0ZDUwMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaApAQCAtNDQsNiArNDQsNyBA
QCBHX0VORF9ERUNMUwogCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTA3LDcgKzEwOCw3IEBAIGNsYXNzIEZGVEZyYW1lIHsKICNpZiBVU0UoV0VCQVVESU9f
R1NUUkVBTUVSKQogICAgIEdzdEZGVEYzMiogbV9mZnQ7CiAgICAgR3N0RkZURjMyKiBtX2ludmVy
c2VGZnQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdzdEZGVEYzMkNvbXBsZXhbXT4gbV9jb21wbGV4
RGF0YTsKKyAgICBVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4PiBtX2NvbXBsZXhEYXRhOwog
ICAgIEF1ZGlvRmxvYXRBcnJheSBtX3JlYWxEYXRhOwogICAgIEF1ZGlvRmxvYXRBcnJheSBtX2lt
YWdEYXRhOwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0
cmVhbWVyLmNwcAppbmRleCA2NTY2YzE4MThhNTI1MTkzNDM2OGU5NWYyZDJiODI3ZDE1OWUzMTk3
Li4xYjY2ZTQwMDYzYjZmZDQ4ZDhlODQxYjkyMzRmNzg5ZWMwZTMyYTRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFt
ZUdTdHJlYW1lci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRkZU
RnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVkIGZmdFNpemUpCiAgICAgOiBtX0ZGVFNpemUoZmZ0U2l6
ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIoZmZ0U2l6
ZSkpKQotICAgICwgbV9jb21wbGV4RGF0YShzdGQ6Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBs
ZXhbXT4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKKyAgICAsIG1fY29tcGxleERh
dGEobWFrZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUo
bV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRT
aXplKSkKICAgICAsIG1faW1hZ0RhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKQog
ewpAQCAtNjYsNyArNjYsNyBAQCBGRlRGcmFtZTo6RkZURnJhbWUoKQogRkZURnJhbWU6OkZGVEZy
YW1lKGNvbnN0IEZGVEZyYW1lJiBmcmFtZSkKICAgICA6IG1fRkZUU2l6ZShmcmFtZS5tX0ZGVFNp
emUpCiAgICAgLCBtX2xvZzJGRlRTaXplKGZyYW1lLm1fbG9nMkZGVFNpemUpCi0gICAgLCBtX2Nv
bXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZG
VERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAgICwgbV9jb21wbGV4RGF0YShtYWtlVW5pcXVlQXJy
YXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKICAg
ICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQogICAg
ICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5o
CmluZGV4IGRkOTdiMzdjNzdkODEyYjc4MzZkMmMyYWI0ODNlNjk5YjU1NDBmNTMuLjlkODIwNGM4
YTI0NjYwZmM3NzJiMGNmN2I1NjUwODdhMzQ1MTVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEZvcm1hdENvbnZlcnRlciB7CiAgICAgewog
ICAgICAgICBjb25zdCB1bnNpZ25lZCBNYXhOdW1iZXJPZkNvbXBvbmVudHMgPSA0OwogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBNYXhCeXRlc1BlckNvbXBvbmVudCAgPSA0OwotICAgICAgICBtX3Vu
cGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPiht
X3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0ZXNQZXJDb21wb25lbnQpOwor
ICAgICAgICBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YSA9IG1ha2VVbmlxdWVBcnJheTx1
aW50OF90PihtX3dpZHRoICogTWF4TnVtYmVyT2ZDb21wb25lbnRzICogTWF4Qnl0ZXNQZXJDb21w
b25lbnQpOwogCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5n
ZXQoKSk7CiAgICAgfQpAQCAtNjgsNyArNjksNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgewog
ICAgIHZvaWQqIGNvbnN0IG1fZHN0U3RhcnQ7CiAgICAgY29uc3QgaW50IG1fc3JjU3RyaWRlLCBt
X2RzdFN0cmlkZTsKICAgICBib29sIG1fc3VjY2VzczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDhfdFtdPiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKKyAgICBVbmlxdWVBcnJheTx1
aW50OF90PiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcAppbmRleCA0ZTc1N2EwZTFlZjc0NDdjZTQ3OTM0ODZhNzQx
ZGY4ODJkNjI5ZDQwLi4zMjJiZWQwYjhjNTc5ZmM5NTFmYjY1NjEyNzc4NGM4YjAzNDA4NDBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNs
dWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSA8
d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ2LDcgKzE0
Nyw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGdldERhdGFGb3JtYXQoR0MzRGVu
dW0gZGVzdGluYXRpb25Gb3JtYXQsIEdDM0RlbnVtCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0
ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGludCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCB1
bnBhY2tBbGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVu
cGFja0FsaWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdu
bWVudCA9PSA4KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOwor
ICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAgICAgaWYgKHdpZHRoID4gMCAm
JiBoZWlnaHQgPiAwKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgICBHQzNE
ZW51bSBlcnJvciA9IGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgs
IGhlaWdodCwgdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVsbHB0cik7CkBAIC0xNTQsNyArMTU1
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAg
ICB6ZXJvID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOworICAgICAg
ICB6ZXJvID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHNpemUpOwogICAgICAgICBp
ZiAoIXplcm8pIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4
dDNEOjpJTlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmlu
ZGV4IDE4MWI0NjcxMmU2YTg0MTcwMGI2MmRjMWQxYTk2ZTBmNjViZjNjZmEuLjJlNzQ4NzlkOGQy
YzYyYjYwYjQxMmNkOGEyMzJjNDIzOTIzOGE2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJh
eS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENBKQpAQCAt
MTI2MSw3ICsxMjYyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0QgOiBwdWJsaWMgUmVmQ291
bnRlZDxHcmFwaGljc0NvbnRleHQzRD4gewogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
bV9jZ0ltYWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7
CiAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CisgICAgICAgIFVu
aXF1ZUFycmF5PHVpbnQ4X3Q+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKICNlbmRpZgogICAgICAg
ICBJbWFnZSogbV9pbWFnZTsKICAgICAgICAgSW1hZ2VIdG1sRG9tU291cmNlIG1faW1hZ2VIdG1s
RG9tU291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNzI5Zjg0M2RmOTdiZWVi
Y2IwNGFhMmU5NjYxM2EzNTM2ODBlYzdkNi4uYTJlZWY0MmJlZmZiODM4MGY4N2FhZDdjNWMwMDhh
M2Y3ZDc3NmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSA8UXVhcnR6Q29yZS9DQUJhc2UuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogI2lmZGVmIERFQlVH
X0FMTApAQCAtMjYyLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIGdldERpcnR5UmVjdHMoSFdORCB3
aW5kb3csIFZlY3RvcjxDR1JlY3Q+JiBvdXRSZWN0cykKICAgICB9CiAKICAgICBEV09SRCBkYXRh
U2l6ZSA9IDo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIDAsIDApOwotICAgIGF1dG8gcmVn
aW9uRGF0YUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihkYXRhU2l6
ZSk7CisgICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVk
IGNoYXI+KGRhdGFTaXplKTsKICAgICBSR05EQVRBKiByZWdpb25EYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxSR05EQVRBKj4ocmVnaW9uRGF0YUJ1ZmZlci5nZXQoKSk7CiAgICAgaWYgKCE6OkdldFJl
Z2lvbkRhdGEocmVnaW9uLmdldCgpLCBkYXRhU2l6ZSwgcmVnaW9uRGF0YSkpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvVXRpbGl0aWVzLmNwcAppbmRleCAyNGQ0ZWI1MDI4MTUyMmFmMTFiMjFjMTc3NzZh
ODUwYTMwMzVmMDA5Li4wNGQ2ODJmOTQ3ZjVlNDFiNjgzNjQzMjU5ZjM1MDRkZjFkOWZlYTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9VdGlsaXRpZXMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVnaW9uLmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQpAQCAtMzQwLDcgKzM0MSw3
IEBAIHZvaWQgZmxpcEltYWdlU3VyZmFjZVZlcnRpY2FsbHkoY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlKQogICAgIGludCBoYWxmSGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKSAvIDI7CiAKICAgICB1aW50
OF90KiBzb3VyY2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfZGF0YShzdXJmYWNlKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gdG1wID0g
c3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KHN0cmlkZSk7CisgICAgYXV0byB0bXAgPSBtYWtl
VW5pcXVlQXJyYXk8dWludDhfdD4oc3RyaWRlKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
aGFsZkhlaWdodDsgKytpKSB7CiAgICAgICAgIHVpbnQ4X3QqIHRvcCA9IHNvdXJjZSArIChpICog
c3RyaWRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggOGViNmY0ZTNiNmFhYTdkY2MxYjE3
OTRiY2MxOWZjZDc0YjA2YmQ0Zi4uMDcxZGNjYzk0MTI1ZmY3YTVhODk0ODVkNTRiZjkyOTEzODdh
N2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwgYm9vbAogICAgIC8vIGJ1dCBpdCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxw
aGEgY2hhbm5lbCBhcyBhIHNpZGUgZWZmZWN0LgogICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkg
Q29udmVydCAxNmJpdCBwZXItY29tcG9uZW50IGZvcm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0
ZWFkLgogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDE2KSB7Ci0gICAgICAgIG1fZm9ybWFs
aXplZFJHQkE4RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihtX2ltYWdlV2lkdGgg
KiBtX2ltYWdlSGVpZ2h0ICogNCk7CisgICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IG1h
a2VVbmlxdWVBcnJheTx1aW50OF90PihtX2ltYWdlV2lkdGggKiBtX2ltYWdlSGVpZ2h0ICogNCk7
CiAgICAgICAgIGNvbnN0IHVpbnQxNl90KiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQxNl90Kj4obV9pbWFnZVBpeGVsRGF0YSk7CiAgICAgICAgIHVpbnQ4X3QqIGRlc3RpbmF0
aW9uID0gbV9mb3JtYWxpemVkUkdCQThEYXRhLmdldCgpOwogICAgICAgICBjb25zdCBwdHJkaWZm
X3Qgc3JjU3RyaWRlSW5FbGVtZW50cyA9IGJ5dGVzUGVyUm93IC8gc2l6ZW9mKHVpbnQxNl90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApp
bmRleCBhZDIyYjQ3YjFhZDJiYjEwZTJmMWNiZTg5ZWZkNTQyMWZiYjUyNjQ2Li44Njk4MTM2NDUx
M2I4ZTZmMGQ3YjJkZGE1YmI4ZDFmODcyZTdmNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTcwLDcgKzE3MSw3IEBAIHZvaWQgVGV4dHVyZTo6dXBkYXRlU3ViUmVj
dCh2b2lkKiBwaXhlbHMsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QpCiAgICAgaW50IHRlbXBC
dWZmU2l6ZSA9IC8vIFRlbXBvcmFyeSBidWZmZXIgc2l6ZSBpcyB0aGUgc21hbGxlciBvZiB0aGUg
bWF4IHRleHR1cmUgc2l6ZSBvciB0aGUgdXBkYXRlUmVjdFNhbml0aXplZAogICAgICAgICBzdGQ6
Om1pbihtX3RpbGVzLm1heFRleHR1cmVTaXplKCkud2lkdGgoKSwgbV90aWxlcy5ib3JkZXJUZXhl
bHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQud2lkdGgoKSkgKgogICAgICAgICBzdGQ6Om1pbiht
X3RpbGVzLm1heFRleHR1cmVTaXplKCkuaGVpZ2h0KCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkg
KyB1cGRhdGVSZWN0U2FuaXRpemVkLmhlaWdodCgpKTsKLSAgICBhdXRvIHRlbXBCdWZmID0gc3Rk
OjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPih0ZW1wQnVmZlNpemUpOworICAgIGF1dG8gdGVtcEJ1
ZmYgPSBtYWtlVW5pcXVlQXJyYXk8dWludDMyX3Q+KHRlbXBCdWZmU2l6ZSk7CiAKICAgICBmb3Ig
KGludCB0aWxlID0gMDsgdGlsZSA8IG1fdGlsZXMubnVtVGlsZXNYKCkgKiBtX3RpbGVzLm51bVRp
bGVzWSgpOyB0aWxlKyspIHsKICAgICAgICAgaW50IHhJbmRleCA9IHRpbGUgJSBtX3RpbGVzLm51
bVRpbGVzWCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggZGYwYTBiODU1ZTNkNDAwYjA1NDk3YzM4NmE5ZGJiOGU2ZGI3MjNlMS4uNTQ3Mjc0
ZmZhNjhhNTJlNDVlMGQ3MmQyOGIyYTEzOWM2ZjViMGIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk
ZSA8d3RmL0hleE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIApAQCAtMTY4LDcgKzE2OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIGludCB0b3RhbEJ5dGVzID0gdG90YWxCeXRlc0NoZWNrZWQudW5z
YWZlR2V0KCk7CiAKLSAgICBhdXRvIHBpeGVscyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQg
Y2hhcltdPih0b3RhbEJ5dGVzKTsKKyAgICBhdXRvIHBpeGVscyA9IG1ha2VVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPih0b3RhbEJ5dGVzKTsKICAgICBpZiAoIXBpeGVscykKICAgICAgICAgcmV0
dXJuOwogCkBAIC02NjgsMTEgKzY2OSwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21w
aWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogCiAgICAgaWYgKGxlbmd0aCkgewog
ICAgICAgICBHTHNpemVpIHNpemUgPSAwOwotICAgICAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhz
aGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkpOworICAgICAgICBWZWN0b3I8R0xjaGFy
PiBpbmZvKGxlbmd0aCk7CisgICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVu
Z3RoLCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgc2hh
ZGVyc1syXSA9IHsgc2hhZGVyLCAwIH07Ci0gICAgICAgIGVudHJ5LmxvZyA9IGdldFVubWFuZ2xl
ZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZ2V0KCkpKTsKKyAgICAgICAgZW50cnku
bG9nID0gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5kYXRhKCks
IHNpemUpKTsKICAgICB9CiAKICAgICBpZiAoY29tcGlsZVN0YXR1cyAhPSBHTF9UUlVFKSB7CkBA
IC04NTEsMTggKzg1MiwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRy
aWJJbXBsKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaQogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1heEF0dHJpYnV0ZVNpemUgPSAwOwogICAgIDo6Z2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4
QXR0cmlidXRlU2l6ZSk7Ci0gICAgYXV0byBuYW1lID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJb
XT4obWF4QXR0cmlidXRlU2l6ZSk7IC8vIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBp
bmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgorICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4QXR0
cmlidXRlU2l6ZSk7IC8vIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQg
c2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVBdHRyaWIo
cHJvZ3JhbSwgaW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5
cGUsIG5hbWUuZ2V0KCkpOworICAgIDo6Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgs
IG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgp
KTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKSk7
CisgICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBT
SEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5kYXRhKCksIG5hbWVMZW5n
dGgpKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUu
Z2V0KCksIG5hbWVMZW5ndGgpOworICAgIFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwg
bmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2
ZSBhdHRyaWJ1dGUgJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9y
bU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlm
CiAKQEAgLTg5OCwxOCArODk5LDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2
ZVVuaWZvcm1JbXBsKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQKICAgICBHTGlu
dCBtYXhVbmlmb3JtU2l6ZSA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9B
Q1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwogCi0gICAgYXV0byBu
YW1lID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obWF4VW5pZm9ybVNpemUpOyAvLyBHTF9B
Q1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAg
VmVjdG9yPEdMY2hhcj4gbmFtZShtYXhVbmlmb3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JN
X01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVM
ZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAg
ICA6OmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZu
YW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZ2V0KCkpOworICAgIDo6Z2xHZXRBY3RpdmVV
bmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXpl
LCAmdHlwZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJv
bE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmluZyhuYW1lLmdl
dCgpLCBuYW1lTGVuZ3RoKSk7CisgICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3lt
Ym9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3RyaW5nKG5hbWUu
ZGF0YSgpLCBuYW1lTGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyB1
bmlmb3JtTmFtZShuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5pZm9ybU5h
bWUobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQg
aXMgbWFwcGluZyBhY3RpdmUgdW5pZm9ybSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0s
IGluZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKICAgICAKQEAgLTE2OTksMTQgKzE3MDAsMTQgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwotICAg
IGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgOjpn
bEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkpOwor
ICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKKyAgICA6OmdsR2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgR0MzRHNpemVp
IGNvdW50OwogICAgIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXTsKICAgICBnZXRBdHRhY2hl
ZFNoYWRlcnMocHJvZ3JhbSwgMiwgJmNvdW50LCBzaGFkZXJzKTsKIAotICAgIHJldHVybiBnZXRV
bm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAg
IHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIGNvdW50LCBTdHJpbmcoaW5mby5k
YXRhKCksIHNpemUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCog
dmFsdWUpCkBAIC0xNzcwLDExICsxNzcxLDExIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgYXV0byBpbmZvID0gc3Rk
OjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICA6OmdsR2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZ2V0KCkpOworICAgIFZlY3RvcjxHTGNoYXI+
IGluZm8obGVuZ3RoKTsKKyAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwg
JnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyc1syXSA9
IHsgc2hhZGVyLCAwIH07Ci0gICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywg
MSwgU3RyaW5nKGluZm8uZ2V0KCkpKTsKKyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhz
aGFkZXJzLCAxLCBTdHJpbmcoaW5mby5kYXRhKCksIHNpemUpKTsKIH0KIAogU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAppbmRleCBhYmVkZjUzNTUz
ZGQzNTZkMTBkOTBjYmNmYjY5MjllYTc5NzFhZWQ4Li4yZTZjNTJjNjM0ODk2NjQ5YWY1YzZhNDQ0
N2I5OGYxMGEzZDI0Mjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3Jh
bS5jcHAKQEAgLTQ1MCwxMiArNDUwLDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdldFNoYWRlckxvZyhH
THVpbnQgc2hhZGVyKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9Owog
Ci0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9nTGVuZ3RoKTsK
KyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXplaSBpbmZvTGVu
Z3RoID0gMDsKLSAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsb2dMZW5ndGgsICZpbmZv
TGVuZ3RoLCBpbmZvLmdldCgpKTsKKyAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsb2dM
ZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAgICBzaXplX3Qgc3RyaW5nTGVu
Z3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0dXJuIHsgaW5mby5nZXQoKSwg
c3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRhKCksIHN0cmluZ0xlbmd0aCB9
OwogfQogCiBzdGF0aWMgQ1N0cmluZyBnZXRQcm9ncmFtTG9nKEdMdWludCBwcm9ncmFtKQpAQCAt
NDY1LDEyICs0NjUsMTIgQEAgc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJv
Z3JhbSkKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1
dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgVmVj
dG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgpOwogICAgIEdMc2l6ZWkgaW5mb0xlbmd0aCA9IDA7
Ci0gICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZpbmZvTGVuZ3Ro
LCBpbmZvLmdldCgpKTsKKyAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xlbmd0
aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAgIHNpemVfdCBzdHJpbmdMZW5ndGgg
PSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1cm4geyBpbmZvLmdldCgpLCBzdHJp
bmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEoKSwgc3RyaW5nTGVuZ3RoIH07CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKaW5kZXggM2VkYWQxODIx
ZWM0NmRjYjQwZmU1MDYyY2EyODk0ZmI0NThmZDdmZS4uZjBlMjU4MDkyMDUzODU0Y2Q1MTU5NmM3
ZTA3MTc1OWVmN2NiZjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhDbGFtcGVkQXJyYXku
aD4KICNpbmNsdWRlIDxkMmQxLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMzQs
NyArMTM1LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFt
cGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWMKICAgICB1bnNpZ25lZCBzcmNCeXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VTaXplLndpZHRoKCk7CiAgICAgY29uc3QgdWludDhfdCogc3Jj
Um93cyA9IHNvdXJjZS5kYXRhKCkgKyAob3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lu
eCAqIDQpLnVuc2FmZUdldCgpOwogCi0gICAgdWludDhfdCogcm93ID0gbmV3IHVpbnQ4X3Rbc3Jj
Qnl0ZXNQZXJSb3ddOworICAgIGF1dG8gcm93ID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KHNy
Y0J5dGVzUGVyUm93KTsKIAogICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0LnVuc2FmZUdl
dCgpOyArK3kpIHsKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aC51bnNhZmVHZXQo
KTsgeCsrKSB7CkBAIC0xNDYsMTcgKzE0NywxNSBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0
RGF0YShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpYwog
ICAgICAgICAgICAgICAgIHJvd1tiYXNleCArIDJdID0gKHNyY1Jvd3NbYmFzZXggKyAyXSAqIGFs
cGhhICsgMjU0KSAvIDI1NTsKICAgICAgICAgICAgICAgICByb3dbYmFzZXggKyAzXSA9IGFscGhh
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHJvdyArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihz
cmNSb3dzICsgYmFzZXgpWzBdOworICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3QqPihyb3cuZ2V0KCkgKyBiYXNleClbMF0gPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKICAgICAgICAgfQogCiAgICAgICAgIEQyRDFfUkVDVF9V
IGRzdFJlY3QgPSBEMkQxOjpSZWN0VShkZXN0UG9pbnQueCgpLCBkZXN0UG9pbnQueSgpICsgeSwg
ZGVzdFBvaW50LngoKSArIHNpemUud2lkdGgoKSwgZGVzdFBvaW50LnkoKSArIHkgKyAxKTsKLSAg
ICAgICAgaHIgPSBiaXRtYXAtPkNvcHlGcm9tTWVtb3J5KCZkc3RSZWN0LCByb3csIHNyY0J5dGVz
UGVyUm93KTsKKyAgICAgICAgaHIgPSBiaXRtYXAtPkNvcHlGcm9tTWVtb3J5KCZkc3RSZWN0LCBy
b3cuZ2V0KCksIHNyY0J5dGVzUGVyUm93KTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChocikp
OwogCiAgICAgICAgIHNyY1Jvd3MgKz0gc3JjQnl0ZXNQZXJSb3c7CiAgICAgfQotCi0gICAgZGVs
ZXRlW10gcm93OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGJiM2ZkMmQxOWI0N2M3NjhiMWMwMmExM2Y4NjMyMTdiNDE4NzQxYTUu
LmFjYzIxYWRjMTllMzI3MTAwMDJjZGFlMmVlM2I3ZTQyODI3OTBjYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNp
bmNsdWRlIDxwbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZUFycmF5Lmg+CiAKICNpZiBkZWZpbmVkKFBOR19MSUJQTkdfVkVSX01BSk9SKSAm
JiBkZWZpbmVkKFBOR19MSUJQTkdfVkVSX01JTk9SKSAmJiAoUE5HX0xJQlBOR19WRVJfTUFKT1Ig
PiAxIHx8IChQTkdfTElCUE5HX1ZFUl9NQUpPUiA9PSAxICYmIFBOR19MSUJQTkdfVkVSX01JTk9S
ID49IDQpKQogI2RlZmluZSBKTVBCVUYocG5nX3B0cikgcG5nX2ptcGJ1ZihwbmdfcHRyKQpAQCAt
MTIwLDcgKzEyMSw2IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICAgICAgLCBtX2N1cnJl
bnRCdWZmZXJTaXplKDApCiAgICAgICAgICwgbV9kZWNvZGluZ1NpemVPbmx5KGZhbHNlKQogICAg
ICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCi0gICAgICAgICwgbV9pbnRlcmxhY2VCdWZmZXIoMCkK
ICAgICB7CiAgICAgICAgIG1fcG5nID0gcG5nX2NyZWF0ZV9yZWFkX3N0cnVjdChQTkdfTElCUE5H
X1ZFUl9TVFJJTkcsIDAsIGRlY29kaW5nRmFpbGVkLCBkZWNvZGluZ1dhcm5pbmcpOwogICAgICAg
ICBtX2luZm8gPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KG1fcG5nKTsKQEAgLTE0Myw4ICsxNDMs
NyBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAgICAgIGlmIChtX3BuZyAmJiBtX2luZm8p
CiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgemVybyB0aGUgcG9pbnRlcnMuCiAgICAgICAgICAg
ICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgmbV9wbmcsICZtX2luZm8sIDApOwotICAgICAgICBk
ZWxldGVbXSBtX2ludGVybGFjZUJ1ZmZlcjsKLSAgICAgICAgbV9pbnRlcmxhY2VCdWZmZXIgPSAw
OworICAgICAgICBtX2ludGVybGFjZUJ1ZmZlci5yZXNldCgpOwogICAgICAgICBtX3JlYWRPZmZz
ZXQgPSAwOwogICAgIH0KIApAQCAtMTg4LDggKzE4Nyw4IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVy
IHsKICAgICB2b2lkIHNldEhhc0FscGhhKGJvb2wgaGFzQWxwaGEpIHsgbV9oYXNBbHBoYSA9IGhh
c0FscGhhOyB9CiAgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWxwaGE7
IH0KIAotICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVybGFjZUJ1ZmZlcjsgfQotICAgIHZvaWQgY3JlYXRlSW50ZXJsYWNlQnVmZmVyKGludCBzaXpl
KSB7IG1faW50ZXJsYWNlQnVmZmVyID0gbmV3IHBuZ19ieXRlW3NpemVdOyB9CisgICAgcG5nX2J5
dGVwIGludGVybGFjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJsYWNlQnVmZmVyLmdl
dCgpOyB9CisgICAgdm9pZCBjcmVhdGVJbnRlcmxhY2VCdWZmZXIoaW50IHNpemUpIHsgbV9pbnRl
cmxhY2VCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8cG5nX2J5dGU+KHNpemUpOyB9CiAKIHByaXZh
dGU6CiAgICAgcG5nX3N0cnVjdHAgbV9wbmc7CkBAIC0xOTgsNyArMTk3LDcgQEAgY2xhc3MgUE5H
SW1hZ2VSZWFkZXIgewogICAgIHVuc2lnbmVkIG1fY3VycmVudEJ1ZmZlclNpemU7CiAgICAgYm9v
bCBtX2RlY29kaW5nU2l6ZU9ubHk7CiAgICAgYm9vbCBtX2hhc0FscGhhOwotICAgIHBuZ19ieXRl
cCBtX2ludGVybGFjZUJ1ZmZlcjsKKyAgICBVbmlxdWVBcnJheTxwbmdfYnl0ZT4gbV9pbnRlcmxh
Y2VCdWZmZXI7CiB9OwogCiBQTkdJbWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZTgy
OTBlOTU3NTZiZDE0MjVhYTlmMDhiOTE1MmNiZjY3MTU5ZTdmLi5hMjllNTY2ODExOGE0Njk1OTkw
YTkxMjc4MzE1YTU0MjBmNWI4Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldFQlBJ
bWFnZURlY29kZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIFVTRShX
RUJQKQogCkBAIC0xODUsNyArMTg2LDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGVG
cmFtZShzaXplX3QgZnJhbWVJbmRleCwgV2ViUERlbXV4ZXIqIGRlbXV4ZXIpCiAgICAgZGVjb2Rl
ckJ1ZmZlci51LlJHQkEuc3RyaWRlID0gd2VicEZyYW1lLndpZHRoICogc2l6ZW9mKFJHQkEzMik7
CiAgICAgZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZSA9IGRlY29kZXJCdWZmZXIudS5SR0JBLnN0
cmlkZSAqIHdlYnBGcmFtZS5oZWlnaHQ7CiAgICAgZGVjb2RlckJ1ZmZlci5pc19leHRlcm5hbF9t
ZW1vcnkgPSAxOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHAobmV3IHVp
bnQ4X3RbZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZV0oKSk7CisgICAgYXV0byBwID0gbWFrZVVu
aXF1ZUFycmF5PHVpbnQ4X3Q+KGRlY29kZXJCdWZmZXIudS5SR0JBLnNpemUpOwogICAgIGRlY29k
ZXJCdWZmZXIudS5SR0JBLnJnYmEgPSBwLmdldCgpOwogICAgIGlmICghZGVjb2RlckJ1ZmZlci51
LlJHQkEucmdiYSkgewogICAgICAgICBzZXRGYWlsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oCmluZGV4IDM0MmJlNTY5YjQ3MzJmMmM5NmQ1ZDBjYzVhZWNmMTA3Y2NhMzJiYjIuLjVjNGNh
MjkxNWZjMTg0ZGZlYWU1MzJlZWNhZDY5ZDU0MWNiZjMwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5j
bHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03
Niw3ICs3Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0
U3RyZWFtSGFuZGxlIHsKICAgICB2b2lkIGRpZE9wZW5Tb2NrZXQoKTsKIAogICAgIHN0cnVjdCBT
b2NrZXREYXRhIHsKLSAgICAgICAgU29ja2V0RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiYm
IHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKKyAgICAgICAgU29ja2V0RGF0YShVbmlxdWVBcnJheTxj
aGFyPiYmIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewogICAgICAgICAgICAgZGF0
YSA9IFdURk1vdmUoc291cmNlKTsKICAgICAgICAgICAgIHNpemUgPSBsZW5ndGg7CkBAIC04OSw3
ICs5MCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3Ry
ZWFtSGFuZGxlIHsKICAgICAgICAgICAgIG90aGVyLnNpemUgPSAwOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gZGF0YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8
Y2hhcj4gZGF0YTsKICAgICAgICAgc2l6ZV90IHNpemUgeyAwIH07CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNmZjYmY4Mzc4Y2EzNzVjZjkyMWFk
ZjlhYTY0YWNlNTVhZDJjNmRjMS4uNWE0NWRkOGRiNTJkYThiZjFlZjViYWVmNDRiMTE1ZGU3NjU3
MjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC00NCw5ICs0
NCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxj
aGFyW10+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3N0YXRpYyBV
bmlxdWVBcnJheTxjaGFyPiBjcmVhdGVDb3B5KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gY29weShuZXcgY2hhcltsZW5ndGhdKTsK
KyAgICBhdXRvIGNvcHkgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obGVuZ3RoKTsKICAgICBtZW1j
cHkoY29weS5nZXQoKSwgZGF0YSwgbGVuZ3RoKTsKIAogICAgIHJldHVybiBjb3B5OwpAQCAtOTgs
NyArOTgsNyBAQCBib29sIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWREYXRhKENVUkwqIGN1
cmxIYW5kbGUpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBzaXpl
X3QgYnVmZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gZGF0YShu
ZXcgY2hhcltidWZmZXJTaXplXSk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZUFycmF5PGNo
YXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlYWQgPSAwOwogCiAgICAgQ1VSTGNv
ZGUgcmV0ID0gY3VybF9lYXN5X3JlY3YoY3VybEhhbmRsZSwgZGF0YS5nZXQoKSwgYnVmZmVyU2l6
ZSwgJmJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBlMGE4ZjlkNDJh
MzU5YjM5NDIzNGI5Njk1MTMyNzQ1YmYwMDNiOGRkLi44YTMyZWIxMzZmMTMyNGU5MjAyOWFjYmVm
MGFiNjhmMjY0ZmU4YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTM4LDYgKzM4
LDcgQEAKIAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvU3RyZWFt
QnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIGNs
YXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFu
ZGxlIHsKICAgICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJlYW07
CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3dyaXRlUmVhZHlTb3VyY2U7CiAgICAgR1JlZlB0cjxH
Q2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4g
bV9yZWFkQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVhZEJ1ZmZlcjsKIAogICAg
IFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAyND4gbV9idWZmZXI7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDQ0YzEzZGI5MWMxNzZlMjJiNjQ2MDdl
M2ZhZmNhMjUxZDg5NzVlNGQuLjE3ODgwNjYzMjlhMzQ2Yjc2YjYxNzlkMmIyMjRiZDMwNjk1NzQ1
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVkKEdSZWZQdHI8R0lP
U3RyZWFtPiYmIHN0cmVhbSkKICAgICBtX3N0cmVhbSA9IFdURk1vdmUoc3RyZWFtKTsKICAgICBt
X291dHB1dFN0cmVhbSA9IEdfUE9MTEFCTEVfT1VUUFVUX1NUUkVBTShnX2lvX3N0cmVhbV9nZXRf
b3V0cHV0X3N0cmVhbShtX3N0cmVhbS5nZXQoKSkpOwogICAgIG1faW5wdXRTdHJlYW0gPSBnX2lv
X3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKTsKLSAgICBtX3JlYWRCdWZm
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUkVBRF9CVUZGRVJfU0laRSk7CisgICAgbV9y
ZWFkQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KFJFQURfQlVGRkVSX1NJWkUpOwogCiAg
ICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBtX3JlYWRC
dWZmZXIuZ2V0KCksIFJFQURfQlVGRkVSX1NJWkUsIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6QXN5
bmNJT05ldHdvcmssIG1fY2FuY2VsbGFibGUuZ2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggYTllZTRlZDUyZWU5NGQxMzhlZmQ5ZjNiNjE1Yjdk
YjJlYTUxMzgzYS4uMzVkNzY5OGQ5ZGRiZmU1ZDY4MjJkMGFkMjA1MTc2NTgyNmFiZDUyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQy
LDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAK
LSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlh
YmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlh
YmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkK
ICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93aW4vU3lzdGVtUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
aW4vU3lzdGVtUHJveHlXaW4uY3BwCmluZGV4IDk1MzYyZmExNmYzNjA1YjY3ZDBiYjMxMjA3MzM4
YTBmNTBlZjQ4NTMuLmQxNzMyZGRiNGI1MTIxYjgzYjA5OWRhOWY5ZTY4NDk5YmFjNWYwYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdp
bi5jcHAKQEAgLTMwLDEwICszMCw4IEBACiAKIGJvb2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRT
eXN0ZW1IdHRwUHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBvcnQpCiB7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRSZWdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRI
b3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJMZW4pOwotICAgIGlmICghdFJl
Z0J1ZmZlciB8fCAhdEhvc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8VENI
QVI+IHRSZWdCdWZmZXIoYnVmZmVyTGVuKTsKKyAgICBWZWN0b3I8VENIQVI+IHRIb3N0KGJ1ZmZl
ckxlbik7CiAgICAgRFdPUkQgdHlwZTsKICAgICBEV09SRCBzaXplOwogICAgIEhLRVkga2V5OwpA
QCAtNTEsMTYgKzQ5LDE2IEBAIGJvb2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRw
UHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBvCiAgICAgICAgIEwiUHJv
eHlTZXJ2ZXIiLAogICAgICAgICBudWxscHRyLAogICAgICAgICAmdHlwZSwKLSAgICAgICAgKExQ
QllURSl0UmVnQnVmZmVyLmdldCgpLAorICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIuZGF0YSgp
LAogICAgICAgICAmc2l6ZSk7CiAKICAgICBpZiAocmV0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVy
LmdldCgpLCB0SG9zdC5nZXQoKSwgYnVmZmVyTGVuLCBwb3J0KSkKKyAgICBpZiAoIXBhcnNlUHJv
eHlTdHJpbmcodFJlZ0J1ZmZlci5kYXRhKCksIHRIb3N0LmRhdGEoKSwgYnVmZmVyTGVuLCBwb3J0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2NzdG9tYnMoYnVmZmVyLCB0SG9zdC5n
ZXQoKSwgYnVmZmVyTGVuKTsKKyAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0LmRhdGEoKSwgYnVm
ZmVyTGVuKTsKICAgICBidWZmZXJbYnVmZmVyTGVuLTFdID0gJ1wwJzsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKaW5kZXggMjAzYzU2YWRiNjI2OTllMzA2ZDkzODRjYzg2MzdkNDYxYzg3NDY0NS4u
M2M0NjM5NGUyZTNkMzQ3NTJiYmM2NmQxYTU1MjUyYWJiYzM3MDg1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE0Mywx
MSArMTQzLDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogCiAgICAgc2l6
ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKICAgICBzaXplX3QgYXR0YWNo
bWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAgIFZlY3RvcjxBdHRh
Y2htZW50SW5mbz4gYXR0YWNobWVudEluZm8oYXR0YWNobWVudENvdW50KTsKIAogICAgIGlmIChh
dHRhY2htZW50Q291bnQpIHsKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5p
cXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRDb3VudCk7Ci0gICAgICAgIG1lbWNweShh
dHRhY2htZW50SW5mby5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50SW5mbykg
KiBhdHRhY2htZW50Q291bnQpOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZGF0YSgp
LCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7
CiAgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2ht
ZW50Q291bnQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50Q291
bnQ7ICsraSkgewpAQCAtNDE3LDcgKzQxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1
dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgaW92WzBdLmlvdl9iYXNl
ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJm1lc3NhZ2VJbmZvKTsKICAgICBpb3ZbMF0uaW92
X2xlbiA9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNo
bWVudEluZm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBh
dHRhY2htZW50SW5mbzsKICAgICBNYWxsb2NQdHI8Y2hhcj4gYXR0YWNobWVudEZEQnVmZmVyOwog
CiAgICAgYXV0byYgYXR0YWNobWVudHMgPSBvdXRwdXRNZXNzYWdlLmF0dGFjaG1lbnRzKCk7CkBA
IC00NDQsNyArNDQzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4
TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGZkUHRyID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwogICAgICAgICB9CiAKLSAgICAgICAgYXR0YWNo
bWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRz
LnNpemUoKSk7CisgICAgICAgIGF0dGFjaG1lbnRJbmZvLnJlc2l6ZShhdHRhY2htZW50cy5zaXpl
KCkpOwogICAgICAgICBpbnQgZmRJbmRleCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF0dGFjaG1lbnRJ
bmZvW2ldLnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlwZSgpKTsKQEAgLTQ2Niw3ICs0NjUsNyBA
QCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRN
ZXNzYWdlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaW92W2lvdkxlbmd0
aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5nZXQoKTsKKyAgICAgICAgaW92W2lvdkxlbmd0
aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5kYXRhKCk7CiAgICAgICAgIGlvdltpb3ZMZW5n
dGhdLmlvdl9sZW4gPSBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudHMuc2l6ZSgp
OwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L0xvZ2dpbmdXaW4uY3BwCmluZGV4IDZkZTFiYWI4NTkwNzdmODE3MGM4YmQyYmZhNTIxOTVmYWE3
MWI3MmQuLmQwNjM4ZDMxM2E2ZTdjOTJlYjgyNDE0ODI0ODkzZGI2NjU3NmJkODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAg
U3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlm
ICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1
ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxv
Z2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgp
KTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCBlNTI3
ZjgxNTI1N2MwODcwOWNiNGZhMTViOWIwNzk1OTIxYzAxM2Y5Li4xZjc2ODA4NTY0ZWQ0ZGI2ZTVj
MGNlMWViNjMwMjExNzFlOTBlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTg2LDggKzg3LDcgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFNhbmRib3hFeHRlbnNpb24+IHsKICAgICAgICAKICAgICBwcml2
YXRlOgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxIYW5kbGVbXT4gbV9kYXRhOwotICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OworICAg
ICAgICBWZWN0b3I8SGFuZGxlPiBtX2RhdGE7CiAjZWxzZQogICAgICAgICBIYW5kbGUgbV9lbXB0
eUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1Nh
bmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbQppbmRleCA5ZDhiOWViMWI3ZjUwYWQyZGE2ZTE1ZTAzMjg0MThiYzNiMGFi
MzNkLi5iOGU3NDNkMjM2MGNmZWVmYzE3YmNhMjRkNTk3MTFjZGQ1OGE1YjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQpAQCAtMTYzLDM0
ICsxNjMsMzMgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUo
c2l6ZV90IHNpemUpCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlQoIW1fZGF0YSk7CisgICAgQVNTRVJUKG1fZGF0YS5pc0VtcHR5KCkpOwogCi0gICAgbV9kYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbXT4oc2l6ZSk7Ci0g
ICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2RhdGEucmVzaXplKHNpemUpOwogfQogCiBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRv
cltdKHNpemVfdCBpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkg
PCBtX3NpemUpOyAKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhW2ldOwogfQogCiBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpv
cGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGkgPCBtX3NpemUpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaV07CiB9
CiAKIHNpemVfdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fc2l6ZTsKKyAgICByZXR1cm4gbV9kYXRhLnNpemUoKTsKIH0KIAogdm9p
ZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXpl
KCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgIGVu
Y29kZXIgPDwgbV9kYXRhW2ldOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9kYXRhKQorICAg
ICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXkmIGhhbmRsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hh
bGxpbmdIZWxwZXJzLmNwcAppbmRleCBmYjhiNzM1Zjg3M2ExNTNhNTkxNzNmNzI0OTU4MDI0ZjU4
ZDY1MmQzLi42YWYzMTUxMzE2NTE4YTJjZjU2Mjg4ODFiNDg1YzIyMzMwY2M4MDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKQEAgLTIxMCwx
OCArMjEwLDE2IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0
cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAg
ICAgICAgaHIgPSA6OlNhZmVBcnJheUdldFVCb3VuZChpbkFycmF5LCAxLCAmdUJvdW5kKTsKICAg
ICBsb25nIGxlbiA9IChTVUNDRUVERUQoaHIpKSA/ICh1Qm91bmQtbEJvdW5kKzEpIDogMDsKLSAg
ICBDRlN0cmluZ1JlZiogaXRlbXMgPSAwOworICAgIFZlY3RvcjxDRlN0cmluZ1JlZj4gaXRlbXM7
CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgaXRlbXMgPSBuZXcgQ0ZTdHJpbmdSZWZbbGVu
XTsKKyAgICAgICAgaXRlbXMucmVzaXplKGxlbik7CiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0g
dUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBzdHI7CiAgICAgICAgICAg
ICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmc3RyKTsKICAg
ICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpOwogICAgICAg
ICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29u
c3Qgdm9pZCoqKWl0ZW1zLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGlmIChp
dGVtcykKLSAgICAgICAgZGVsZXRlW10gaXRlbXM7CisgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBD
RkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzMiwxOCArMjMw
LDE2IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5
KFNBRkVBUlJBWSogaW5BcnJheSkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAgICAgICAgaHIg
PSA6OlNhZmVBcnJheUdldFVCb3VuZChpbkFycmF5LCAxLCAmdUJvdW5kKTsKICAgICBsb25nIGxl
biA9IChTVUNDRUVERUQoaHIpKSA/ICh1Qm91bmQtbEJvdW5kKzEpIDogMDsKLSAgICBDRk51bWJl
clJlZiogaXRlbXMgPSAwOworICAgIFZlY3RvcjxDRk51bWJlclJlZj4gaXRlbXM7CiAgICAgaWYg
KGxlbiA+IDApIHsKLSAgICAgICAgaXRlbXMgPSBuZXcgQ0ZOdW1iZXJSZWZbbGVuXTsKKyAgICAg
ICAgaXRlbXMucmVzaXplKGxlbik7CiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0gdUJvdW5kOyBs
Qm91bmQrKykgewogICAgICAgICAgICAgaW50IG51bSA9IDA7CiAgICAgICAgICAgICBociA9IDo6
U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmbnVtKTsKICAgICAgICAgICAg
IGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQoaHIpID8gaW50VG9DRk51bWJlclJlZihudW0pIDog
a0NGTnVtYmVyTmFOOwogICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0g
Q0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKSBpdGVtcywgbGVuLCAma0NGVHlwZUFycmF5
Q2FsbEJhY2tzKTsKLSAgICBpZiAoaXRlbXMpCi0gICAgICAgIGRlbGV0ZVtdIGl0ZW1zOworICAg
IENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1z
LmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlV2luLmNwcAppbmRleCBlMDA5NGI5NmJiMTg5YTY5NjM1NWRlMGRiMDgwMzBiYzBhODJk
NzA5Li4xN2VlMTJmNjhlODJmN2FkZTAwOTAwMjBhMDgzYjY1MjI5NjFjMzc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAK
QEAgLTE3MiwxOSArMTcyLDE5IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAg
ICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gdmVyc2lvbkluZm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25J
bmZvU2l6ZSk7CisgICAgVmVjdG9yPGNoYXI+IHZlcnNpb25JbmZvRGF0YSh2ZXJzaW9uSW5mb1Np
emUpOwogCi0gICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0
ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0Rh
dGEuZ2V0KCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJt
aW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbklu
Zm9EYXRhLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbmFtZSA9IGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIlByb2R1Y3ROYW1lIik7Ci0gICAg
bV9kZXNjcmlwdGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZp
bGVEZXNjcmlwdGlvbiIpOworICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZv
RGF0YS5kYXRhKCksICJQcm9kdWN0TmFtZSIpOworICAgIG1fZGVzY3JpcHRpb24gPSBnZXRWZXJz
aW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZURlc2NyaXB0aW9uIik7CiAgICAg
aWYgKG1fbmFtZS5pc051bGwoKSB8fCBtX2Rlc2NyaXB0aW9uLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBWU19GSVhFREZJTEVJTkZPKiBpbmZvOwogICAgIFVJTlQgaW5m
b1NpemU7Ci0gICAgaWYgKCFWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksIEwi
XFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNf
RklYRURGSUxFSU5GTykpCisgICAgaWYgKCFWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEu
ZGF0YSgpLCBMIlxcIiwgKExQVk9JRCopICZpbmZvLCAmaW5mb1NpemUpIHx8IGluZm9TaXplIDwg
c2l6ZW9mKFZTX0ZJWEVERklMRUlORk8pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9t
b2R1bGVWZXJzaW9uLmxlYXN0U2lnID0gaW5mby0+ZHdGaWxlVmVyc2lvbkxTOwogICAgIG1fbW9k
dWxlVmVyc2lvbi5tb3N0U2lnID0gaW5mby0+ZHdGaWxlVmVyc2lvbk1TOwpAQCAtMTkzLDExICsx
OTMsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBnZXRWZXJzaW9uSW5mbyh2
ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJNSU1FVHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOworICAg
IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJNSU1FVHlwZSIpLnNwbGl0
KCd8JywgdHlwZXMpOwogICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbkxpc3RzOwotICAgIGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQo
J3wnLCBleHRlbnNpb25MaXN0cyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRh
LmRhdGEoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBleHRlbnNpb25MaXN0cyk7CiAgICAg
VmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25zOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25J
bmZvRGF0YS5nZXQoKSwgIkZpbGVPcGVuTmFtZSIpLnNwbGl0KCd8JywgZGVzY3JpcHRpb25zKTsK
KyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZU9wZW5OYW1l
Iikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHR5cGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdHlwZXNbaV0u
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcAppbmRleCBiZTNlYjMxMTkxODM0MDU3ZTVjMzQ2ODhiMTNmZjVlMTU3Zjhk
NjAzLi4xOTA0ODk3M2ZiMTc2MzBlZjY1ZjVkNjI2MTFhMzY4NDE2NDNjMWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01MzIsOSArNTMyLDkgQEAg
dm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2Vz
KENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgIENGU3RyaW5nUmVmIGRpZFJlbW92ZURlZmF1bHRz
S2V5ID0gQ0ZTVFIoV2ViS2l0RGlkTWlncmF0ZURlZmF1bHRTZXR0aW5nc0Zyb21TYWZhcmkzQmV0
YVByZWZlcmVuY2VLZXkpOwogICAgIGJvb2wgb21pdERlZmF1bHRzID0gIWJvb2xlYW5WYWx1ZUZv
clByZWZlcmVuY2VzVmFsdWUoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdCwgZGlkUmVtb3ZlRGVm
YXVsdHNLZXkpKTsKIAotICAgIGF1dG8ga2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVm
W10+KGNvdW50KTsKLSAgICBhdXRvIHZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVm
W10+KGNvdW50KTsKLSAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMu
Z2V0KCksIHZhbHVlcy5nZXQoKSk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4ga2V5cyhjb3VudCk7
CisgICAgVmVjdG9yPENGVHlwZVJlZj4gdmFsdWVzKGNvdW50KTsKKyAgICBDRkRpY3Rpb25hcnlH
ZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKIAogICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoIWtleXNbaV0g
fHwgIXZhbHVlc1tpXSB8fCBDRkdldFR5cGVJRChrZXlzW2ldKSAhPSBDRlN0cmluZ0dldFR5cGVJ
RCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAxNWUyN2Y5ODVjMmNkOTk2
ZGU5YTA3ZWVhOWI1OWZkZDBmNDhlNzg3Li4yMmY1YTI2MmMxZGUxYjgxOWRjZWFmM2FiZmI3N2Mw
ZjM5ODFiYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTc4NCw4ICsx
Nzg0LDggQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJB
TSBsUGFyYW0pCiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrID0gTUlJTV9TVFJJTkc7CiAgICAgOjpH
ZXRNZW51SXRlbUluZm8oaE1lbnUsIGluZGV4LCB0cnVlLCAmbWVudUl0ZW1JbmZvKTsKIAotICAg
IGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXQ0hBUltdPihtZW51SXRlbUluZm8uY2No
ICsgMSk7Ci0gICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZ2V0KCk7CisgICAg
VmVjdG9yPFdDSEFSPiBidWZmZXIobWVudUl0ZW1JbmZvLmNjaCArIDEpOworICAgIG1lbnVJdGVt
SW5mby5kd1R5cGVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICBtZW51SXRlbUluZm8uY2NoKys7
CiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrIHw9IE1JSU1fSUQ7CiAKQEAgLTE3OTQsNyArMTc5NCw3
IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBh
cmFtKQogICAgIDo6RGVzdHJveU1lbnUobV9jdXJyZW50Q29udGV4dE1lbnUpOwogICAgIG1fY3Vy
cmVudENvbnRleHRNZW51ID0gbnVsbHB0cjsKIAotICAgIFN0cmluZyB0aXRsZShidWZmZXIuZ2V0
KCksIG1lbnVJdGVtSW5mby5jY2gpOworICAgIFN0cmluZyB0aXRsZShidWZmZXIuZGF0YSgpLCBt
ZW51SXRlbUluZm8uY2NoKTsKICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNf
Y2FzdDxDb250ZXh0TWVudUFjdGlvbj4obWVudUl0ZW1JbmZvLndJRCk7CiAKICAgICBpZiAoYWN0
aW9uID49IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334538</attachid>
            <date>2018-02-23 10:18:58 -0800</date>
            <delta_ts>2018-02-24 08:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180224031856.patch</filename>
            <type>text/plain</type>
            <size>93082</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MmU3YmExMTJkZDBiYTRmZWE3NDg5YTg0MDU3YzBmMDE2YTg4YWNiLi4xOTRmNTQwOGIxNjc5OWEz
MzY4MmVkZWNiZWI4MjBkMzIwN2NjZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MyBAQAogMjAxOC0wMi0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEaXNhc3Nl
bWJsZXI6OmR1bXBEaXNhc3NlbWJseSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaDoKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChK
U0M6OmxpbmtQb2x5bW9ycGhpY0NhbGwpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDoK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmluaXRpYWxpemUpOgorICAgICAgICAqIGxsaW50L0xMSW50
RGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9nOjpUeXBl
UHJvZmlsZXJMb2cpOgorICAgICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVM
b2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmg6CisgICAg
ICAgIChKU0M6OlR5cGVQcm9maWxlckxvZzo6VHlwZVByb2ZpbGVyTG9nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06On5WTSk6CisgICAgICAg
IChKU0M6OlZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcik6CisgICAgICAgICog
cnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAocnVuRnJv
bUZpbGVzKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKworMjAxOC0wMi0yMyAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBbSlNDXSBJ
bXBsZW1lbnQgJHZtLmZ0bFRydWUgZnVuY3Rpb24gZm9yIEZUTCB0ZXN0aW5nCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODMwNzEKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyY2Uy
ZjVkYmQzMTFmZGEyNjkyZmRjNWI4MWM5YjY0MWYyZDczMmJlLi43NTgyMWZjYzBiNGZjZGUyMzI2
N2JlM2EzZWJkNjFkMzBjNjUxMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAyLTIzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6
Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgd2UgdXNlIGBtYWtlX3VuaXF1ZTxj
aGFyW10+KG51bSlgIG9yIGBuZXcgY2hhcltudW1dYCwgYWxsb2NhdGlvbiBpcworICAgICAgICBk
b25lIGJ5IHRoZSBzeXN0ZW0gbWFsbG9jIGluc3RlYWQgb2YgYm1hbGxvYy4gVGhpcyBwYXRjaCBm
aXhlcyB0aGlzIGlzc3VlCisgICAgICAgIGJ5IGZvbGxvd2luZyB0aHJlZSBjaGFuZ2VzLgorCisg
ICAgICAgIDEuIEludHJvZHVjZSBVbmlxdWVBcnJheTxUPi4gSXQgYWxsb2NhdGVzIG1lbW9yeSBm
cm9tIEZhc3RNYWxsb2MuIFdoaWxlIEMrKworICAgICAgICBhcnJheSB3aXRoIGBuZXdgIG5lZWQg
dG8gaG9sZCB0aGUgc2l6ZSB0byBjYWxsIGRlc3RydWN0b3IgY29ycmVjdGx5LCBvdXIKKyAgICAg
ICAgVW5pcXVlQXJyYXkgb25seSBzdXBwb3J0cyB0eXBlIFQgd2hpY2ggZG9lcyBub3QgaGF2ZSBh
IG5vbiB0cml2aWFsIGRlc3RydWN0b3IuCisgICAgICAgIEl0IHJlZHVjZXMgdGhlIGFsbG9jYXRp
b24gc2l6ZSBzaW5jZSB3ZSBkbyBub3QgbmVlZCB0byB0cmFjayB0aGUgc2l6ZSBvZiB0aGUKKyAg
ICAgICAgYXJyYXkgY29tcGFyZWQgdG8gc3RhbmRhcmQgYG5ldyBUW11gLiBUaGlzIGlzIGJhc2lj
YWxseSB1c2FibGUgaWYgd2Ugd2FudCB0bworICAgICAgICBoYXZlIHJhdyBhcnJheSB3aGljaCBw
b2ludGVyIHdvbid0IGJlIGNoYW5nZWQgZXZlbiBpZiB0aGUgY29udGFpbmVyIGlzIG1vdmVkLgor
ICAgICAgICBJbiBhZGRpdGlvbiwgd2UgYWxzbyBleHRlbmQgVW5pcXVlQXJyYXk8VD4gZm9yIHR5
cGVzIHdoaWNoIGhhdmUgbm9uIHRyaXZpYWwKKyAgICAgICAgZGVzdHJ1Y3RvcnMuCisKKyAgICAg
ICAgMi4gVXNlIFZlY3RvcjxUPiBpbnN0ZWFkLgorCisgICAgICAgIDMuIEFubm90YXRlIGFsbG9j
YXRlZCB0eXBlcyB3aXRoIE1BS0VfRkFTVF9BTExPQ0FURUQuIFNpbmNlIGl0IGludHJvZHVjZXMK
KyAgICAgICAgbmV3W10gYW5kIGRlbGV0ZVtdIG9wZXJhdG9ycywgbWFrZV91bmlxdWU8VFtdPihu
dW0pIHdpbGwgYWxsb2NhdGUgbWVtb3J5CisgICAgICAgIGZyb20gRmFzdE1hbGxvYy4KKworICAg
ICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9Bc3Nl
cnRpb25zLmNwcDoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3Rm
L0Zhc3RNYWxsb2MuaDoKKyAgICAgICAgKFdURjo6RmFzdEZyZWU6Om9wZXJhdG9yKCkgY29uc3Qp
OgorICAgICAgICAoV1RGOjpGYXN0RnJlZTxUOjpvcGVyYXRvcigpIGNvbnN0KToKKyAgICAgICAg
KiB3dGYvTWFsbG9jUHRyLmg6CisgICAgICAgIChXVEY6Ok1hbGxvY1B0cjo6b3BlcmF0b3IgYm9v
bCBjb25zdCk6CisgICAgICAgICogd3RmL1N0YWNrU2hvdC5oOgorICAgICAgICAoV1RGOjpTdGFj
a1Nob3Q6OlN0YWNrU2hvdCk6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6b3BlcmF0b3I9KToK
KyAgICAgICAgKiB3dGYvU3lzdGVtRnJlZS5oOgorICAgICAgICAoV1RGOjpTeXN0ZW1GcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9VbmlxdWVBcnJheS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcC4KKyAgICAgICAg
KFdURjo6bWFrZVVuaXF1ZUFycmF5KToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAg
IChXVEY6OlZlY3RvclR5cGVPcGVyYXRpb25zOjpmb3JjZUluaXRpYWxpemUpOgorCiAyMDE4LTAy
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJl
bW92ZSBjdXJyZW50VGltZSgpIC8gY3VycmVudFRpbWVNUygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIwYWM5
NDFhOGM0ODE0NmY2OTEwYzVkNTNmOTJmZGY3MmJhZDhkMS4uNTZiOGM3YzVjODAzYTU3ODg1NDA5
MmNiYjk4YTg0MTZhMTAxNGI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE4LTAy
LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZp
eCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciwgRkFTVF9B
TExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3NqaXQvQ29tcGlsZWRTZWxl
Y3Rvci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRl
eFN1YkltYWdlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6c2ltdWxhdGVWZXJ0ZXhBdHRyaWIwKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEeW5hbWljc0NvbXByZXNzb3I6OnNldE51bWJlck9mQ2hhbm5lbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL0ZGVEZyYW1lLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZy
YW1lR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpGRlRGcmFtZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtYXRDb252ZXJ0ZXI6OkZvcm1hdENvbnZlcnRlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldERpcnR5UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZsaXBJbWFnZVN1cmZhY2VWZXJ0
aWNhbGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQz
RENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJh
Y3Rvcjo6ZXh0cmFjdEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4
dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjp1cGRhdGVTdWJSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVBdHRyaWJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRTaGFkZXJMb2cpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbUxvZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6UE5HSW1hZ2VSZWFkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UE5HSW1hZ2VSZWFkZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdl
UmVhZGVyOjppbnRlcmxhY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1h
Z2VSZWFkZXI6OmNyZWF0ZUludGVybGFjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldFQlBJbWFnZURlY29kZXI6OmRlY29kZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0RGF0YTo6U29ja2V0RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvcHkpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6cmVhZERhdGEpOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmxvZ0xldmVsU3RyaW5nKToKKwogMjAxOC0wMi0yMyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtSZW5kZXJUcmVlQnVpbGRlcl0gTW92ZSBSZW5kZXJGdWxsU2Ny
ZWVuOjpjcmVhdGVQbGFjZWhvbGRlciB0byBSZW5kZXJUcmVlQnVpbGRlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKaW5kZXggYjMwNDc2ZjI0OGEwZWU5MzRlMTliM2QxYTRjYThkMWM2YmFkNWYyMC4uZmI2MjRj
YzJkOTQzZTkzMWY5N2E0MGVkOWE1M2U0NjM1NTU2MzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTgtMDItMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBwYWwvd2luL0xvZ2dpbmdXaW4u
Y3BwOgorICAgICAgICAoUEFMOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjAgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIEhB
VkUoSU9TVVJGQUNFX0FDQ0VMRVJBVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1OTkwMDk1NDc4ZjEyOWM3ZmQz
ZmRmZjU5YTI2ZDY5NTJkOTI1ZGJlLi40ZGQ5M2JjZmZkZDNiMzg1MGU4ZmVjZTU2YmQyMzdkNjZh
NGJhZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTIzICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5p
cXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcDoKKyAgICAgICAgKFdpbmRvd3NT
eXN0ZW1Qcm94eTo6Z2V0U3lzdGVtSHR0cFByb3h5KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
dW5peC9Db25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnByb2Nl
c3NNZXNzYWdlKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2Up
OgorICAgICAgICAqIFBsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bG9nTGV2ZWxTdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmg6
CisgICAgICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltd
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheTo6ZW5jb2RlIGNvbnN0KToKKwogMjAxOC0wMi0yMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bTWluaUJyb3dzZXJd
IEhvbm9yIEdTdHJlYW1lciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBpbiBNaW5pQnJvd3Nlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IGM1Y2ViMzA1NmYxM2ZiNTVlM2ExM2Q1NWM3
MWE1NGZmYTU0YzI3Y2UuLjdlZjBmN2FiYjA4YWY1MWIwNzMyZTNjM2ZmY2Q5ZTA2NzE1NDg3N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wMi0y
MyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXgg
c3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVhZC4K
KworICAgICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGlu
Z0hlbHBlcnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBh
Y2thZ2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZv
KToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNl
czo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om9uTWVudUNvbW1hbmQpOgorCiAyMDE4LTAyLTIy
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92
ZSBjdXJyZW50VGltZSgpIC8gY3VycmVudFRpbWVNUygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1N0cmluZ1JlZkNGLmNwcAppbmRleCAwNTg3MjU5M2Y2ZGJiOWE4NTNhODE2MWE2OWJi
ZGY3NDJhMjMzM2EzLi4xMzY3NzE1M2Q1ZmEwNGRmYjhlOWZlYTdlNDQ4YWM0MTdmOWM2ZTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTQ5LDEw
ICs0OSwxMCBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmlu
Z1JlZiBzdHJpbmcpCiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oY29udmVydGVkU2l6ZSkg
PT0gbGVuZ3RoICYmIHN0YXRpY19jYXN0PHNpemVfdD4odXNlZEJ1ZmZlckxlbmd0aCkgPT0gbGVu
Z3RoKQogICAgICAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUobGNoYXJCdWZmZXIu
ZGF0YSgpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxVbmlDaGFyW10+KGxlbmd0aCk7Ci0gICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0
cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKKyAgICBWZWN0b3I8
VW5pQ2hhcj4gYnVmZmVyKGxlbmd0aCk7CisgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmlu
ZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmRhdGEoKSk7CiAgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVW5pQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlVuaUNoYXIgYW5kIFVDaGFy
IG11c3QgYmUgc2FtZSBzaXplIik7Ci0gICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZ2V0KCkpLCBsZW5ndGgpLmxlYWtSZWYo
KTsKKyAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxV
Q2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBsZW5ndGgpLmxlYWtSZWYoKTsKIH0KIAogQ0ZTdHJpbmdS
ZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBKU1N0cmlu
Z1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVLaWxscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
S2lsbHMuaAppbmRleCBlYTg1OWM0YTlhMTJmZTRkZGYyZTUyYzJiODY4NmQyMDg4ODNiODc0Li5h
MjgyMjljNTY4YjQxMmFjNDg4N2MzNTgxNjZmYzIyZGU1OTE5ZmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKQEAgLTc0LDYgKzc0LDcgQEAg
Y2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxTZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIEtpbGxTZXQoKQogICAgICAgICAgICAgOiBt
X3dvcmQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBhLi4wYzIwNzAz
ZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDggQEAgdm9pZCBE
aXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBjaGFy
KiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9IDA7CiAg
ICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6OmFtb3VudE9m
Tm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSAr
IDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCArIGFtb3VudE9m
Tm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRhdGEoKSwgcHJl
Zml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1vdW50T2ZOb2Rl
V2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZpeExlbmd0aF0g
PSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9mTm9kZVdoaXRl
U3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6ZHVtcERp
c2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlua0J1Zgog
ICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihjdXJyZW50
TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNTRVJUKGVu
ZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJsZUFkZHJl
c3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVB
ZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0YXJ0LCBlbmQu
ZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFkZHJlc3M8
dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJmZWIyZTIyMWQ4
MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2RhNmFhYmQwOTE2
NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUG9seW1vcnBo
aWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93bmVyLCBF
eGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29uc3QgVmVj
dG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291
bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQogICAgICwgbV9m
YXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggZDk2YWU1
NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFiMDQ2NWJhMWE4
YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgi
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTg0LDcg
Kzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2Fy
ZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICAg
ICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwqIG93bmVy
LAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBjb25zdCBW
ZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90PiYmIGZh
c3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
KCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToKICAgICBW
ZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50MzJf
dD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2NhbGxOb2Rl
czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDc4Y2E5MzAz
ZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRlNjM5YzkzZTRlYTg5MzA2YTk3
N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcApA
QCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAgIAogICAg
IFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwogICAgIFZlY3Rv
cjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4g
ZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVyQ29kZUJs
b2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBmYXN0Q291
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgpKTsKKyAg
ICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2FsbENhc2VzLnNp
emUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2FzZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IDNiODgzOWNmYzViYmQzNzg4M2VjZmY3Y2Q5YjA1YjhiMDU2ZDNiYzguLjU3NjI0MmYwYWVhNDVl
OWJmMmMzZGI5NTllNTU3Mjk5ODY3NDU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03MTYs
MTcgKzcxNiwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBjdXJyZW50
V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBpcyB0aGUgVVRG
LTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9k
ZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdPUkQgbGVuZ3Ro
Tm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVuZ3RoLCBi
dWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRvU3RyaW5n
KGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVjdG9yPHdjaGFy
X3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051
bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmRhdGEoKSk7
CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVyLmRhdGEo
KSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBuZXR3
b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRpcmVjdG9y
eVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KFBBVEhf
TUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkKKyAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZmZXIuZGF0YSgp
LCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3RyaW5nIGRp
cmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKKyAgICBTdHJp
bmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgpKTsKICNl
bmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApp
bmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4zYTFlYTM3NDgy
NDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW21h
eE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFwW251bU9w
Y29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0YXRzQXJy
YXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9pZCBsbGludF9l
bnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6c19leGNlcHRp
b25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV07Ci0K
ICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2MWI1YjI2ZmM4
NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQwMjQyZGM2NGZj
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNjYsNyArNjYs
NyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7CiAgICAgc3Rh
dGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNfZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2VwdGlvbkluc3Ry
dWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2RlIHNfb3Bjb2Rl
TWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkqIHNfb3Bjb2Rl
U3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4
IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJkZTkxM2ZkZjRk
YjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0ZXI7CiAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCmluZGV4IGZmMGE3NjE3Mzk0YTQ5ZGQzZDhm
YmFjOGNiY2FlNjhhZjNlNGY1ZTEuLjA5ZDQyMjA1ZjZiOTk4MzJmMzlmOTljNzI5MTE4ODUyZmY4
YjM2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9m
aWxlckxvZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmNwcApAQCAtNDEsMTMgKzQxLDEzIEBAIG5hbWVzcGFjZSBUeXBlUHJvZmlsZXJMb2dJ
bnRlcm5hbCB7CiBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiB9CiAKLXZvaWQg
VHlwZVByb2ZpbGVyTG9nOjppbml0aWFsaXplTG9nKCkKK1R5cGVQcm9maWxlckxvZzo6VHlwZVBy
b2ZpbGVyTG9nKCkKKyAgICA6IG1fbG9nU2l6ZSg1MDAwMCkKKyAgICAsIG1fbG9nU3RhcnRQdHIo
bmV3IExvZ0VudHJ5W21fbG9nU2l6ZV0pCisgICAgLCBtX2N1cnJlbnRMb2dFbnRyeVB0cihtX2xv
Z1N0YXJ0UHRyKQorICAgICwgbV9sb2dFbmRQdHIobV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZSkK
IHsKICAgICBBU1NFUlQoIW1fbG9nU3RhcnRQdHIpOwotICAgIG1fbG9nU2l6ZSA9IDUwMDAwOwot
ICAgIG1fbG9nU3RhcnRQdHIgPSBuZXcgTG9nRW50cnlbbV9sb2dTaXplXTsKLSAgICBtX2N1cnJl
bnRMb2dFbnRyeVB0ciA9IG1fbG9nU3RhcnRQdHI7Ci0gICAgbV9sb2dFbmRQdHIgPSBtX2xvZ1N0
YXJ0UHRyICsgbV9sb2dTaXplOwogfQogCiBUeXBlUHJvZmlsZXJMb2c6On5UeXBlUHJvZmlsZXJM
b2coKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cu
aAppbmRleCA5YjU3Y2M1ODY3MGY0NTk5MTVlY2VkZTZjMTNlYWE1NTg1ODQ5ZjE3Li4zOTQxOTMz
NDhjNmU5NDA0NDAzOWNjZWM2NzhhMzMwYmI4ODQzZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaApAQCAtMzksNiArMzksNyBAQCBjbGFz
cyBUeXBlUHJvZmlsZXJMb2cgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHN0cnVjdCBMb2dFbnRyeSB7CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKQEAgLTUyLDEyICs1Myw3IEBAIGNsYXNzIFR5cGVQcm9maWxlckxvZyB7CiAg
ICAgfTsKIAogCi0gICAgVHlwZVByb2ZpbGVyTG9nKCkKLSAgICAgICAgOiBtX2xvZ1N0YXJ0UHRy
KDApCi0gICAgewotICAgICAgICBpbml0aWFsaXplTG9nKCk7Ci0gICAgfQotCisgICAgVHlwZVBy
b2ZpbGVyTG9nKCk7CiAgICAgflR5cGVQcm9maWxlckxvZygpOwogCiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBwcm9jZXNzTG9nRW50cmllcyhjb25zdCBTdHJpbmcmKTsKQEAgLTcxLDggKzY3
LDYgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZUxvZygpOwotCiAg
ICAgdW5zaWduZWQgbV9sb2dTaXplOwogICAgIExvZ0VudHJ5KiBtX2xvZ1N0YXJ0UHRyOwogICAg
IExvZ0VudHJ5KiBtX2N1cnJlbnRMb2dFbnRyeVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBjZTZlNGMxZjQ1Y2I5ZWI5ZTU4NWU3MmJkYzBlNzBhYjY3YmFlZmJiLi5i
NjY3ZWQ3MmU2NTIzMzE0NzY1YTIwMjgxZmZhYjM0MzUxNmE3MmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC01MzYsMTEgKzUzNiw2IEBAIFZNOjp+Vk0oKQogICAgIGRl
bGV0ZSBjbGllbnREYXRhOwogICAgIGRlbGV0ZSBtX3JlZ0V4cENhY2hlOwogCi0jaWYgRU5BQkxF
KFlBUlJfSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCi0gICAgaWYgKG1fcmVnRXhwUGF0dGVy
bkNvbnRleEJ1ZmZlcikKLSAgICAgICAgZGVsZXRlW10gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyOwotI2VuZGlmCi0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgZGVsZXRlIG1f
cnRUcmFjZUxpc3Q7CiAjZW5kaWYKQEAgLTkwNyw4ICs5MDIsOCBAQCBjaGFyKiBWTTo6YWNxdWly
ZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKQogCiAgICAgbV9yZWdFeHBQYXR0ZXJuQ29udGV4
dExvY2subG9jaygpOwogICAgIGlmICghbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQotICAg
ICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBuZXcgY2hhcltWTTo6cGF0dGVybkNv
bnRleHRCdWZmZXJTaXplXTsKLSAgICByZXR1cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVy
OworICAgICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8
Y2hhcj4oVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSk7CisgICAgcmV0dXJuIG1fcmVnRXhw
UGF0dGVybkNvbnRleEJ1ZmZlci5nZXQoKTsKIH0KIAogdm9pZCBWTTo6cmVsZWFzZVJlZ0V4cFBh
dHRlcm5Db250ZXhCdWZmZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZDcz
ZmM2Yjk3NDY4YzhiNDFkYTFlYTBmZjg5MDhkZGZkM2RiNDJhNS4uNzZkYjA1ODJmYWYzYTI2YjE1
NjdmMjk4NDk1YjY4MWY4OGY1YmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N5bWJv
bFJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaWYgRU5BQkxF
KFJFR0VYUF9UUkFDSU5HKQpAQCAtNjg1LDcgKzY4Niw3IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUgPSA4MTkyOyAvLyBT
cGFjZSBhbGxvY2F0ZWQgdG8gc2F2ZSBuZXN0ZWQgcGFyZW50aGVzaXMgY29udGV4dAotICAgIGNo
YXIqIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciB7IG51bGxwdHIgfTsKKyAgICBVbmlxdWVB
cnJheTxjaGFyPiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7CiAgICAgTG9jayBtX3JlZ0V4
cFBhdHRlcm5Db250ZXh0TG9jazsKICAgICBjaGFyKiBhY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcigpOwogICAgIHZvaWQgcmVsZWFzZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRleCBlNDM4ZjU2MDRiNzBkMjY5OGFi
M2Y3OTk0YTU0MDFjOWNiYWIzYWRjLi5mMTk4NGI1YjgwODhkNTQ5NjUyNjVmZmQ0OTA2ODRmMzlm
NDY3ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxz
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiAjaWYgIU9TKFdJTkRPV1MpCkBAIC00MTYsNyArNDE3LDcgQEAgc3Rh
dGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0QnVmZmVyOwogICAg
IHVuc2lnbmVkIHRlc3RzID0gMDsKICAgICB1bnNpZ25lZCBmYWlsdXJlcyA9IDA7Ci0gICAgY2hh
ciogbGluZUJ1ZmZlciA9IG5ldyBjaGFyW01heExpbmVMZW5ndGggKyAxXTsKKyAgICBWZWN0b3I8
Y2hhcj4gbGluZUJ1ZmZlcihNYXhMaW5lTGVuZ3RoICsgMSk7CiAKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKQEAgLTQzNSw3ICs0MzYsNyBAQCBzdGF0aWMgYm9vbCBydW5Gcm9t
RmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlcwogICAgICAgICB1bnNpZ25lZCBpbnQgbGluZU51bWJlciA9IDA7CiAgICAgICAgIGNvbnN0
IGNoYXIqIHJlZ2V4cEVycm9yID0gbnVsbHB0cjsKIAotICAgICAgICB3aGlsZSAoKGxpbmVQdHIg
PSBmZ2V0cygmbGluZUJ1ZmZlclswXSwgTWF4TGluZUxlbmd0aCwgdGVzdENhc2VzRmlsZSkpKSB7
CisgICAgICAgIHdoaWxlICgobGluZVB0ciA9IGZnZXRzKGxpbmVCdWZmZXIuZGF0YSgpLCBNYXhM
aW5lTGVuZ3RoLCB0ZXN0Q2FzZXNGaWxlKSkpIHsKICAgICAgICAgICAgIGxpbmVMZW5ndGggPSBz
dHJsZW4obGluZVB0cik7CiAgICAgICAgICAgICBpZiAobGluZVB0cltsaW5lTGVuZ3RoIC0gMV0g
PT0gJ1xuJykgewogICAgICAgICAgICAgICAgIGxpbmVQdHJbbGluZUxlbmd0aCAtIDFdID0gJ1ww
JzsKQEAgLTQ4NCw4ICs0ODUsNiBAQCBzdGF0aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcwogICAgIGVsc2UK
ICAgICAgICAgcHJpbnRmKCIldSB0ZXN0cyBwYXNzZWRcbiIsIHRlc3RzKTsKIAotICAgIGRlbGV0
ZVtdIGxpbmVCdWZmZXI7Ci0KICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCiAgICAgdm0uZHVt
cFJlZ0V4cFRyYWNlKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9IZWFwVmVyaWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFw
VmVyaWZpZXIuaAppbmRleCA0ODI0YjFjNmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQz
Li4yNWI4ZjgxNDAzOGIyYWUxY2E0MmE5MjRmZWUzNmU5NTRhZWZhZGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCkBAIC02NCw2ICs2NCw4IEBAIGNsYXNz
IEhlYXBWZXJpZmllciB7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAg
ICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAg
ICAgICAgICAgICA6IGJlZm9yZSgiQmVmb3JlIE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRl
cigiQWZ0ZXIgTWFya2luZyIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2MGEyNWJmMzYzN2ZhNTk2NjJhNTViOTU2ZGRhZWRlODNlYWY1Y2UwLi5lYmFhNTUx
MWQxMGRkZjRmNDM2YjU2NjlmYmJiZWMxZTBiMTg3Y2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYwMiw2ICs2MDIsNyBAQAogCQlERTVBMDlGQjFCQTM2
OTkyMDAzRDQ0MjQgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMTU1NTZGMzE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9ncmFwaGljVXRpbGl0
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjQxOEEwQ0MxODAw
NkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzAwRTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5pcXVlQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTUxRjBBNTY4QjAwM0MwOERFIC8qIFRocmVhZEdyb3Vw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocmVhZEdyb3VwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMxMUZCMTYxRjBBNTY4QjAwM0MwOERF
IC8qIFRocmVhZEdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVh
ZEdyb3VwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjAwQUI0MUU5QTUzNkQw
MDNCNTlEMiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQbGF0Zm9ybVJlZ2lzdGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtODU1LDEwICs4NTYsMTAgQEAKIAkJCQlBOEE0NzI3RjE1MUE4MjVBMDA0MTIzRkYgLyogRGlz
cGF0Y2hQdHIuaCAqLywKIAkJCQkwRjQ1NzA0MjFCRTVCNThGMDA2MkE2MjkgLyogRG9taW5hdG9y
cy5oICovLAogCQkJCUE4QTQ3MjgwMTUxQTgyNUEwMDQxMjNGRiAvKiBEb3VibHlMaW5rZWRMaXN0
LmggKi8sCi0JCQkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAq
LywKLQkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIwRDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8s
CiAJCQkJQThBNDcyOTcxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuY3BwICovLAogCQkJCUE4QTQ3
Mjk4MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmggKi8sCisJCQkJRkUwNUZBRTYxRkRCMjE0MzAw
MDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLywKKwkJCQlBRDY1M0RBODIwMDZCNkMyMDBEODIw
RDcgLyogRHVtYlZhbHVlVHJhaXRzLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0
IC8qIEVudW1UcmFpdHMuaCAqLywKIAkJCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhw
ZWN0ZWQuaCAqLywKIAkJCQlBOEE0NzI5RjE1MUE4MjVBMDA0MTIzRkYgLyogRXhwb3J0TWFjcm9z
LmggKi8sCkBAIC0xMDgzLDYgKzEwODQsNyBAQAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMz
MSAvKiBUcmlTdGF0ZS5oICovLAogCQkJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFEQiAvKiBUeXBl
Q2FzdHMuaCAqLywKIAkJCQlBOEE0NzM1QzE1MUE4MjVCMDA0MTIzRkYgLyogVW5pb25GaW5kLmgg
Ki8sCisJCQkJRTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFycmF5LmggKi8sCiAJ
CQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCUNENzYw
MEZGMUY5MEEzQ0EwMDAyNkUyNiAvKiBVbnNhZmVQb2ludGVyLmggKi8sCiAJCQkJN0FGRUM2QjAx
RUIyMkI1OTAwREFERTM2IC8qIFVVSUQuY3BwICovLApAQCAtMTA5Miw3ICsxMDk0LDYgQEAKIAkJ
CQlBOEE0NzM3MDE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9yLmggKi8sCiAJCQkJQThBNDczNzEx
NTFBODI1QjAwNDEyM0ZGIC8qIFZlY3RvclRyYWl0cy5oICovLAogCQkJCUE4QTQ3MzcyMTUxQTgy
NUIwMDQxMjNGRiAvKiBWTVRhZ3MuaCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAg
LyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkJMEY2NkIyODgxREM5N0JBQjAwNEExRDNGIC8q
IFdhbGxUaW1lLmNwcCAqLywKIAkJCQkwRjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRp
bWUuaCAqLywKIAkJCQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLApA
QCAtMTEwMSw2ICsxMTAyLDcgQEAKIAkJCQkwRkU0NDc5QjFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suaCAqLywKIAkJCQlFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNw
cCAqLywKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCisJ
CQkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJ
KTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQyNCw3
ICsxNDI2LDYgQEAKIAkJCQkwRjY2QjI4QTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tUeXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYwMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
ckRlZmF1bHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0NjMxNTFBODI1QjAwNDEyM0ZG
IC8qIENvbGxhdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUZGMUZFNTAwNzUw
MDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYyQjky
MTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50aW5n
TG9jay5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE1MzMsNiArMTUzNCw3IEBACiAJCQkJMEZFNDQ3
OUMxQjdBQUEwMzAwOTQ5OEVCIC8qIFdvcmRMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0
QTBBRDM5MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCmluZGV4IDE1OGNiZWY3NjEyM2Q5M2Q3
ZjQxZjJiZmYyMDE2NTZlMjk4ZThhMDguLmRiYWRhZWU2Y2E1NDA2MDAxMjk2NDM5YTIzMDQ1OTdl
NWJiYTc2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBzdGF0
aWMgdm9pZCB2cHJpbnRmX3N0ZGVycl93aXRoX3ByZWZpeChjb25zdCBjaGFyKiBwcmVmaXgsIGNv
bnN0IGNoYXIqIGZvcm1hdCwgdgogewogICAgIHNpemVfdCBwcmVmaXhMZW5ndGggPSBzdHJsZW4o
cHJlZml4KTsKICAgICBzaXplX3QgZm9ybWF0TGVuZ3RoID0gc3RybGVuKGZvcm1hdCk7Ci0gICAg
YXV0byBmb3JtYXRXaXRoUHJlZml4ID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExl
bmd0aCArIGZvcm1hdExlbmd0aCArIDEpOwotICAgIG1lbWNweShmb3JtYXRXaXRoUHJlZml4Lmdl
dCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXgu
Z2V0KCkgKyBwcmVmaXhMZW5ndGgsIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8
Y2hhcj4gZm9ybWF0V2l0aFByZWZpeChwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsK
KyAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5kYXRhKCkgKyBwcmVmaXhMZW5ndGgsIGZv
cm1hdCwgZm9ybWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoUHJlZml4W3ByZWZpeExlbmd0aCAr
IGZvcm1hdExlbmd0aF0gPSAwOwogCi0gICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdp
dGhQcmVmaXguZ2V0KCksIGFyZ3MpOworICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRX
aXRoUHJlZml4LmRhdGEoKSwgYXJncyk7CiB9CiAKIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJy
X3dpdGhfdHJhaWxpbmdfbmV3bGluZShjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJncykK
QEAgLTE2NywxMiArMTY3LDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dpdGhfdHJh
aWxpbmdfbmV3bGluZShjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QgYXJnCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZvcm1hdFdpdGhOZXdsaW5lID0gc3RkOjptYWtlX3Vu
aXF1ZTxjaGFyW10+KGZvcm1hdExlbmd0aCArIDIpOwotICAgIG1lbWNweShmb3JtYXRXaXRoTmV3
bGluZS5nZXQoKSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3Jt
YXRXaXRoTmV3bGluZShmb3JtYXRMZW5ndGggKyAyKTsKKyAgICBtZW1jcHkoZm9ybWF0V2l0aE5l
d2xpbmUuZGF0YSgpLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aE5ld2xp
bmVbZm9ybWF0TGVuZ3RoXSA9ICdcbic7CiAgICAgZm9ybWF0V2l0aE5ld2xpbmVbZm9ybWF0TGVu
Z3RoICsgMV0gPSAwOwogCi0gICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhOZXds
aW5lLmdldCgpLCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5l
d2xpbmUuZGF0YSgpLCBhcmdzKTsKIH0KIAogI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKaW5kZXggMjIwYmFmZDM0OGIzMDYzMzgzYWI3YTU0MmRjMmVkZTExMWFj
NzA4NS4uZTk3ZDA2MTkzYzBhMWRmZmM4MzBlMGNhN2RlNjllNTA5ZDY1OTdhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKQEAgLTIzMyw2ICsyMzMsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBVbmV4
cGVjdGVkLmgKICAgICBVbmlTdGRFeHRyYXMuaAogICAgIFVuaW9uRmluZC5oCisgICAgVW5pcXVl
QXJyYXkuaAogICAgIFVuaXF1ZVJlZi5oCiAgICAgVW5zYWZlUG9pbnRlci5oCiAgICAgVk1UYWdz
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYv
d3RmL0Zhc3RNYWxsb2MuaAppbmRleCA3ZWMyMWFlNzk4NTA3NGY2MzlkZjRiYWNiMDAzNmFlMWZj
N2UwMjZhLi42NjcyY2U0NmQ5ZjFjMmI0M2EzOTFlNTRiNjYyNDQzZjA4ZjkzOWY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFz
dE1hbGxvYy5oCkBAIC0yMDAsNiArMjAwLDI2IEBAIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBz
dGF0aWMgdm9pZCBmcmVlKHZvaWQqIHApIHsgZmFzdEZyZWUocCk7IH0KIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFzdEZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVy
YXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CisgICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9j
YXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0K
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgRmFzdEZyZWU8VFtdPiB7CisgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAi
Iik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUq
Pihwb2ludGVyKSk7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNpZiAhZGVm
aW5lZChOREVCVUcpCkBAIC0yMDgsNiArMjI4LDcgQEAgdXNpbmcgV1RGOjpmYXN0U2V0TWF4U2lu
Z2xlQWxsb2NhdGlvblNpemU7CiAKIHVzaW5nIFdURjo6RmFzdEFsbG9jYXRvcjsKIHVzaW5nIFdU
Rjo6RmFzdE1hbGxvYzsKK3VzaW5nIFdURjo6RmFzdEZyZWU7CiB1c2luZyBXVEY6OmlzRmFzdE1h
bGxvY0VuYWJsZWQ7CiB1c2luZyBXVEY6OmZhc3RDYWxsb2M7CiB1c2luZyBXVEY6OmZhc3RGcmVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0
Zi9NYWxsb2NQdHIuaAppbmRleCA3ZjZhMDJjZWYzMWIxYTI5ZmFjNjM4NGNkMmFjZTNlOGY3NTBj
MGJhLi42NmYxMGFhOWJkNWJiYTA5YWM1NjExMzZhZDM1YmY1ZTg0ZTQ4ZmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQ
dHIuaApAQCAtNjYsNiArNjYsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgTWFs
bG9jID0gRmFzdE1hbGxvYz4gY2xhc3MgTWFsbG9jUHRyIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UobV9wdHIsIG51bGxwdHIpOwogICAgIH0KIAorICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHRyOworICAgIH0KKwogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9wdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaCBiL1NvdXJjZS9XVEYvd3RmL1N0
YWNrU2hvdC5oCmluZGV4IDZlZmQwNzRkZTI3MDllNjI3YWNlYjNjODNiOTQzMzEzNDJmNzVhZmQu
LjdlMzJhMzViYWUzYzdiNTZhOGJlODViN2QxOGQxZTU1NzlhMGIzZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYgewog
CkBAIC0zNyw3ICszOCw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgICAgIDogbV9zaXplKHNp
emUpCiAgICAgewogICAgICAgICBpZiAoc2l6ZSkgewotICAgICAgICAgICAgbV9hcnJheSA9IHN0
ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4oc2l6ZSk7CisgICAgICAgICAgICBtX2FycmF5ID0gbWFr
ZVVuaXF1ZUFycmF5PHZvaWQqPihzaXplKTsKICAgICAgICAgICAgIGludCBpbnRTaXplID0gc2l6
ZTsKICAgICAgICAgICAgIFdURkdldEJhY2t0cmFjZShtX2FycmF5LmdldCgpLCAmaW50U2l6ZSk7
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGludFNpemUp
IDw9IHNpemUpOwpAQCAtNTUsNyArNTYsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogICAg
IFN0YWNrU2hvdCYgb3BlcmF0b3I9KGNvbnN0IFN0YWNrU2hvdCYgb3RoZXIpCiAgICAgewotICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4gbmV3QXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVl
PHZvaWQqW10+KG90aGVyLm1fc2l6ZSk7CisgICAgICAgIGF1dG8gbmV3QXJyYXkgPSBtYWtlVW5p
cXVlQXJyYXk8dm9pZCo+KG90aGVyLm1fc2l6ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBv
dGhlci5tX3NpemU7IGktLTspCiAgICAgICAgICAgICBuZXdBcnJheVtpXSA9IG90aGVyLm1fYXJy
YXlbaV07CiAgICAgICAgIG1fc2l6ZSA9IG90aGVyLm1fc2l6ZTsKQEAgLTEwNiw4ICsxMDcsOCBA
QCBjbGFzcyBTdGFja1Nob3QgewogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCoqIGRl
bGV0ZWRWYWx1ZUFycmF5KCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSk7IH0KLSAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dm9pZCpbXT4g
bV9hcnJheTsKKworICAgIFVuaXF1ZUFycmF5PHZvaWQqPiBtX2FycmF5OwogICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKaW5kZXggM2VmNzU2MjgyY2YyMGQ0MGQ4
YzYxODU0Nzk0NmQwNGY1YmFlY2VmNS4uNzNiNjkzZjA2ODM4YmNjOGNjYzgzYTQ2OGQ0ZGJjM2E4
YWI4MmY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaApAQCAtMzEsNiArMzEsOCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBTeXN0ZW1GcmVlIHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsK
KwogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
ZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRl
cikpOwpAQCAtMzksMTEgKzQxLDEyIEBAIHN0cnVjdCBTeXN0ZW1GcmVlIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHN0cnVjdCBTeXN0ZW1GcmVlPFRbXT4geworICAgIHN0YXRpY19hc3NlcnQo
c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9p
ZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0
X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CiAgICAg
fQotCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1VuaXF1ZUFycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgyMTk2NzNiNmEyOWFiOWVjMzY5NTJmOTU5YjY3YTdiOTM5MGQ3MTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTxib29sIGlzVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlLCB0eXBl
bmFtZSBUPiBzdHJ1Y3QgVW5pcXVlQXJyYXlNYWtlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBVbmlxdWVBcnJheU1ha2VyPHRydWUsIFQ+IHsKKyAgICB1c2luZyBSZXN1bHRUeXBl
ID0gdHlwZW5hbWUgc3RkOjp1bmlxdWVfcHRyPFRbXSwgRmFzdEZyZWU8VFtdPj47CisKKyAgICBz
dGF0aWMgUmVzdWx0VHlwZSBtYWtlKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgLy8gQysr
IGBuZXcgVFtOXWAgc3RvcmVzIGl0cyBgTmAgdG8gc29tZXdoZXJlLiBPdGhlcndpc2UsIGBkZWxl
dGUgW11gIGNhbm5vdCBkZXN0cm95CisgICAgICAgIC8vIHRoZXNlIE4gZWxlbWVudHMuIEJ1dCB3
ZSBkbyBub3Qgd2FudCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBhbGxvY2F0ZWQgbWVtb3J5Lgor
ICAgICAgICAvLyBJZiBpdCBpcyBhY2NlcHRhYmxlLCB3ZSBjYW4ganVzdCB1c2UgVmVjdG9yPFQ+
IGluc3RlYWQuIFNvIHRoaXMgVW5pcXVlQXJyYXk8VD4gb25seQorICAgICAgICAvLyBhY2NlcHRz
IHRoZSB0eXBlIFQgd2hpY2ggaGFzIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiBUaGlzIGFsbG93cyB1
cyB0byBza2lwIGNhbGxpbmcKKyAgICAgICAgLy8gZGVzdHJ1Y3RvcnMgZm9yIE4gZWxlbWVudHMu
IEFuZCB0aGlzIGFsbG93cyBVbmlxdWVBcnJheTxUPiBub3QgdG8gc3RvcmUgaXRzIE4gc2l6ZS4K
KyAgICAgICAgdXNpbmcgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZTsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VT46
OnZhbHVlLCAiIik7CisKKyAgICAgICAgLy8gRG8gbm90IHVzZSBwbGFjZW1lbnQgbmV3IGxpa2Ug
YG5ldyAoc3RvcmFnZSkgVVtzaXplXSgpYC4gYG5ldyBVW3NpemVdKClgIHJlcXVpcmVzCisgICAg
ICAgIC8vIGxhcmdlciBzdG9yYWdlIHRoYW4gdGhlIGBzaXplb2YoVSkgKiBzaXplYCBzdG9yYWdl
IHNpbmNlIGl0IHdhbnQgdG8gc3RvcmUgYHNpemVgCisgICAgICAgIC8vIHRvIHNvbWV3aGVyZS4K
KyAgICAgICAgVSogc3RvcmFnZSA9IHN0YXRpY19jYXN0PFUqPihmYXN0TWFsbG9jKHNpemVvZihV
KSAqIHNpemUpKTsKKyAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VT46OmZvcmNlSW5pdGlh
bGl6ZShzdG9yYWdlLCBzdG9yYWdlICsgc2l6ZSk7CisgICAgICAgIHJldHVybiBSZXN1bHRUeXBl
KHN0b3JhZ2UpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVW5p
cXVlQXJyYXlNYWtlcjxmYWxzZSwgVD4geworICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IGhv
dyB0byBzdG9yZS9yZXRyaWV2ZSBOIHNpemUgdG8vZnJvbSBhbGxvY2F0ZWQgbWVtb3J5IHdoZW4g
Y2FsbGluZyBuZXcgW10gYW5kIGRlbGV0ZSBbXSwKKyAgICAvLyB3ZSB1c2UgbmV3IFtdIGFuZCBk
ZWxldGUgW10gb3BlcmF0b3JzIHNpbXBseS4gV2UgY3JlYXRlIFVuaXF1ZUFycmF5RWxlbWVudCBj
b250YWluZXIgZm9yIHRoZSB0eXBlIFQuCisgICAgLy8gVW5pcXVlQXJyYXlFbGVtZW50IGhhcyBu
ZXcgW10gYW5kIGRlbGV0ZSBbXSBvcGVyYXRvcnMgZm9yIEZhc3RNYWxsb2MuIFdlIGFsbG9jYXRl
IFVuaXF1ZUFycmF5RWxlbWVudFtdIGFuZCBjYXN0CisgICAgLy8gaXQgdG8gVFtdLiBXaGVuIGRl
bGV0aW5nLCB0aGUgY3VzdG9tIGRlbGV0ZXIgY2FzdHMgVFtdIHRvIFVuaXF1ZUFycmF5RWxlbWVu
dFtdIGFuZCBkZWxldGVzIGl0LgorICAgIHVzaW5nIFUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9l
eHRlbnQ8VD46OnR5cGU7CisKKyAgICBjbGFzcyBVbmlxdWVBcnJheUVsZW1lbnQgeworICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0cnVjdCBE
ZWxldGVyIHsKKyAgICAgICAgICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGRlbGV0ZSBbXSBiaXR3aXNlX2Nhc3Q8VW5pcXVlQXJy
YXlFbGVtZW50Kj4ocG9pbnRlcik7CisgICAgICAgICAgICB9OworICAgICAgICB9OworCisgICAg
ICAgIFVuaXF1ZUFycmF5RWxlbWVudCgpID0gZGVmYXVsdDsKKworICAgICAgICBVIHZhbHVlIHsg
fTsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFUpID09IHNpemVvZihVbmlxdWVB
cnJheUVsZW1lbnQpLCAiIik7CisKKyAgICB1c2luZyBSZXN1bHRUeXBlID0gdHlwZW5hbWUgc3Rk
Ojp1bmlxdWVfcHRyPFRbXSwgdHlwZW5hbWUgVW5pcXVlQXJyYXlFbGVtZW50OjpEZWxldGVyPjsK
KworICAgIHN0YXRpYyBSZXN1bHRUeXBlIG1ha2Uoc2l6ZV90IHNpemUpCisgICAgeworICAgICAg
ICByZXR1cm4gUmVzdWx0VHlwZShiaXR3aXNlX2Nhc3Q8VCo+KG5ldyBVbmlxdWVBcnJheUVsZW1l
bnRbc2l6ZV0oKSkpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit1c2luZyBV
bmlxdWVBcnJheSA9IHR5cGVuYW1lIFVuaXF1ZUFycmF5TWFrZXI8c3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZT46OnZhbHVl
LCBUPjo6UmVzdWx0VHlwZTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1VuaXF1ZUFycmF5PFQ+
IG1ha2VVbmlxdWVBcnJheShzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gVW5pcXVlQXJyYXlN
YWtlcjxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
ZXh0ZW50PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+OjptYWtlKHNpemUpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwordXNpbmcgV1RGOjpVbmlxdWVBcnJheTsKK3VzaW5nIFdURjo6bWFrZVVuaXF1
ZUFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9WZWN0b3IuaAppbmRleCBhYmNhYmQwNmM1YmFlZTQ0NGNhZWY1ZTgwZjQwYWI0ZDc2Yzdj
OTJjLi4yN2ZjMTQ1M2EwZDBhMDY3MmUzZDc0MWU3MTU5MjlmNjk3MmQ1NThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApA
QCAtNjUsMTAgKzY1LDE1IEBAIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9yPHRydWUsIFQ+CiB0ZW1w
bGF0ZSA8Ym9vbCBuZWVkc0luaXRpYWxpemF0aW9uLCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVt
c2V0LCB0eXBlbmFtZSBUPgogc3RydWN0IFZlY3RvckluaXRpYWxpemVyOwogCi10ZW1wbGF0ZTxi
b29sIGlnbm9yZSwgdHlwZW5hbWUgVD4KLXN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwg
aWdub3JlLCBUPgordGVtcGxhdGU8Ym9vbCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgdHlwZW5h
bWUgVD4KK3N0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwgY2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQsIFQ+CiB7CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShUKiwgVCopIHt9CisKKyAg
ICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7Cisg
ICAgICAgIFZlY3RvckluaXRpYWxpemVyPHRydWUsIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBU
Pjo6Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CkBAIC03OSw2ICs4NCwxMSBAQCBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1
ZSwgZmFsc2UsIFQ+CiAgICAgICAgIGZvciAoVCogY3VyID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsr
Y3VyKQogICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBjdXIpIFQ7CiAgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgeworICAgICAg
ICBpbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CkBAIC04OCw2ICs5OCwxMSBAQCBzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8dHJ1ZSwgdHJ1
ZSwgVD4KICAgICB7CiAgICAgICAgIG1lbXNldChiZWdpbiwgMCwgcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oZW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2luKSk7CiAgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQpCisgICAgewor
ICAgICAgICBpbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRlbXBsYXRlIDxi
b29sIGNhbk1vdmVXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPgpAQCAtMjMwLDYgKzI0NSwxMSBAQCBz
dHJ1Y3QgVmVjdG9yVHlwZU9wZXJhdGlvbnMKICAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8VmVj
dG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46OmNhbklu
aXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7
CisgICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0aWFs
aXphdGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmZv
cmNlSW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCBtb3Zl
KFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgewogICAgICAgICBWZWN0b3JNb3ZlcjxW
ZWN0b3JUcmFpdHM8VD46OmNhbk1vdmVXaXRoTWVtY3B5LCBUPjo6bW92ZShzcmMsIHNyY0VuZCwg
ZHN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjNzFmMzkyOTM0ODFlY2VlOGQ1NWViNzZjNGMz
YjU1ZjQwOGYyZjFhLi41ZTYyYzVhYzJkYzljYzAxMGI1ZTk5M2RiMTNjY2E1ZTQ2MjNlODVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00MjEsOCArNDIxLDggQEAgdm9pZCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogCiAgICAg
ICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKIAot
ICAgICAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpb
XT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IHN0
ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX3Nv
dXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFu
bmVscyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxm
bG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAgbV9zb3VyY2VDaGFubmVs
c1tpXSA9IGJ1ZmZlci0+Y2hhbm5lbERhdGEoaSktPmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4
IGY0ZTYzYTg1OWMwMWI0MTVlMWNmMzQ3ZjI3ODhkZGQ4YjdiNzNiYTEuLjMwYjc5Yjc5MzMzNzMx
ODIxZmEyNTdhMDhkMTM1ODBmYTI1OTBkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtMjYsNiArMjYs
NyBAQAogCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmgiCiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMDksOCArMTEwLDggQEAgY2xhc3MgQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
IGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7CiAgICAgUmVmUHRyPEF1
ZGlvQnVmZmVyPiBtX2J1ZmZlcjsKIAogICAgIC8vIFBvaW50ZXJzIGZvciB0aGUgYnVmZmVyIGFu
ZCBkZXN0aW5hdGlvbi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291
cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9u
Q2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5uZWxz
OworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAgICAg
Ly8gVXNlZCBmb3IgdGhlICJnYWluIiBhbmQgInBsYXliYWNrUmF0ZSIgYXR0cmlidXRlcy4KICAg
ICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9M
b2dnaW5nV2luLmNwcAppbmRleCA4Y2E0Yzk2ZmVhZjhiYmFlNjEwODIxMTMxMzg3YWUzNDVmMDdk
YzI1Li45NWNjOGQzYzcyYWVlNjYxNzU5YzYwZmU0NzhhZDNhNTExNjU4NWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFN0
cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJb
XT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBpZiAo
IUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZm
ZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dn
aW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5nZXQoKSk7
CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKaW5kZXggYTgzM2RiYTAyZmYzM2QxZGY2MzA4ZTE4
ODgwMmJjNzA4OGU3NjY5MS4uMDk5YWM5M2I3NTRkMjE0ODE5NzcwMzA4YmViYmYzMzg5MzMyNTY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCkBAIC01NSw2ICs1
NSw3IEBAIGNsYXNzIFNlbGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgewogfTsKIAogc3RydWN0IENv
bXBpbGVkU2VsZWN0b3IgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAg
ICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVzIHN0YXR1czsKICAgICBKU0M6Ok1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBjb2RlUmVmOwogI2lmIGRlZmluZWQoQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJ
TkcpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDJj
ZGFjOTEyMmVmOWVhNzcyNzliY2RjMGQ2M2E0ZWFkZmU5NzhlZGQuLjAyOTdjZTBhZDIzNTRjZmFl
ODIyOWZhYjNlOGVlNTFkODc5MzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC05OSw2ICs5OSw3
IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4KICNpbmNsdWRlIDx3
dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTU1Myw3ICsxNTU0
LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4U3ViSW1hZ2UyRCIs
ICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+
IHplcm87CisgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAgICAgICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7CiAgICAg
ICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6ZUluQnl0
ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwgJnNpemUs
IG51bGxwdHIpOwpAQCAtMTU2MSw3ICsxNTYyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwK
ICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhTdWJJbWFn
ZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hh
cltdPihzaXplKTsKKyAgICAgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4oc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXplcm8pIHsKICAgICAgICAgICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImNvcHlU
ZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC01NzYxLDcgKzU3NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEdWludCBudQogICAgICAgICAg
ICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVyVmFsdWVb
Ml0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmli
MEJ1ZmZlclZhbHVlWzNdKSkgewogCi0gICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0MzRGZsb2F0W10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1ZmZlckRh
dGEgPSBtYWtlVW5pcXVlQXJyYXk8R0MzRGZsb2F0PihidWZmZXJTaXplKTsKICAgICAgICAgZm9y
IChHQzNEdWludCBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkgewogICAgICAgICAg
ICAgYnVmZmVyRGF0YVtpaSAqIDRdID0gYXR0cmliVmFsdWUudmFsdWVbMF07CiAgICAgICAgICAg
ICBidWZmZXJEYXRhW2lpICogNCArIDFdID0gYXR0cmliVmFsdWUudmFsdWVbMV07CkBAIC01OTA3
LDE1ICs1OTA4LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjplbnN1cmVO
b3ROdWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIH0KIAogV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZShpbnQgY2Fw
YWNpdHkpCi0gICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKLSAgICAsIG1fY2FwYWNpdHkoY2FwYWNpdHkpCisg
ICAgOiBtX2J1ZmZlcnMoY2FwYWNpdHkpCiB7CiB9CiAKIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJ
bnRTaXplJiBzaXplKQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBtX2NhcGFj
aXR5OyArK2kpIHsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9idWZmZXJz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0u
Z2V0KCk7CiAgICAgICAgIGlmICghYnVmKQogICAgICAgICAgICAgYnJlYWs7CkBAIC01OTMwLDcg
KzU5MzAsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1h
Z2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2NlbGVyYXRl
ZCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpID0gc3Rk
OjptaW4obV9jYXBhY2l0eSAtIDEsIGkpOworICAgIGkgPSBzdGQ6Om1pbihtX2J1ZmZlcnMuc2l6
ZSgpIC0gMSwgaSk7CiAgICAgbV9idWZmZXJzW2ldID0gV1RGTW92ZSh0ZW1wKTsKIAogICAgIElt
YWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0KCk7CkBAIC01OTM4LDkgKzU5MzgsOSBA
QCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJD
YWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHJldHVybiBidWY7CiB9CiAKLXZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9u
dChpbnQgaWR4KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlOjpidWJibGVUb0Zyb250KHNpemVfdCBpZHgpCiB7Ci0gICAgZm9yIChpbnQgaSA9IGlk
eDsgaSA+IDA7IC0taSkKKyAgICBmb3IgKHNpemVfdCBpID0gaWR4OyBpID4gMDsgLS1pKQogICAg
ICAgICBtX2J1ZmZlcnNbaV0uc3dhcChtX2J1ZmZlcnNbaS0xXSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaApp
bmRleCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZiNzgwYzVkNzI5YzQ5Li5kMmEzOTE5NTlk
YmMxNGVlY2FmYjBhMGUwMGViN2U4ODk2NjJmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01MTcsOSAr
NTE3LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBHUFVCYXNl
ZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUKICAgICAgICAgLy8gVGhlIHBvaW50ZXIg
cmV0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGltYWdlIGJ1ZmZlciBtYXAuCiAgICAgICAgIEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2YXRlOgot
ICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKLSAgICAgICAg
aW50IG1fY2FwYWNpdHk7CisgICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChzaXplX3QgaWR4KTsK
KyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4+IG1fYnVmZmVyczsK
ICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNhY2hlIHsg
MCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWlj
c0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmNwcAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVjMTczMjZh
ZWYwLi5iMjU1MThkODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAK
QEAgLTI3NSw4ICsyNzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZD
aGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RGaWx0ZXJQ
YWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAg
ICB9CiAKLSAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9h
dCpbXT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3Rk
OjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9zb3VyY2VD
aGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMp
OworICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9hdCo+KG51
bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5lbHMo
bnVtYmVyT2ZDaGFubmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFu
bmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNz
Q29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmgKaW5kZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJhZWJkNS4u
ZjcxNmNlZjczYTM1ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNpbmNsdWRl
ICJaZXJvUG9sZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJy
YXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAgY2xhc3Mg
RHluYW1pY3NDb21wcmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xl
RmlsdGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6dW5p
cXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5
PGNvbnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9hdCo+
IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFt
ZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZy
ZXF1ZW5jeSAvKiAwIC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZs
b2F0IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0MTAxZjY2
YjVmYzA5YWEzZWZiMTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2MxYWRjY2Jm
ZWFjMDRkNTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBA
IC00NCw2ICs0NCw3IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUgewogI2lm
IFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBHc3RG
RlRGMzIqIG1faW52ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29tcGxl
eFtdPiBtX2NvbXBsZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+IG1f
Y29tcGxleERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVkaW9G
bG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRG
cmFtZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4ZTk1ZjJk
MmI4MjdkMTU5ZTMxOTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBlMzJhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRG
cmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAgICA6IG1f
RkZUU2l6ZShmZnRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obG9nMihmZnRTaXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8
R3N0RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAg
ICwgbV9jb21wbGV4RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNr
ZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlRE
YXRhU2l6ZShtX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXpl
KG1fRkZUU2l6ZSkpCiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSgpCiBG
RlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9GRlRTaXpl
KGZyYW1lLm1fRkZUU2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6
ZSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4
W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhEYXRh
KG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1f
RkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1f
RkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9G
RlRTaXplKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zvcm1hdENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9y
bWF0Q29udmVydGVyLmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2OTliNTU0
MGY1My4uOWQ4MjA0YzhhMjQ2NjBmYzc3MmIwY2Y3YjU2NTA4N2EzNDUxNWFhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVy
dGVyIHsKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50
cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7
Ci0gICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtlX3VuaXF1
ZTx1aW50OF90W10+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1Bl
ckNvbXBvbmVudCk7CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gbWFr
ZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBN
YXhCeXRlc1BlckNvbXBvbmVudCk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRlcm1l
ZGlhdGVTcmNEYXRhLmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZvcm1h
dENvbnZlcnRlciB7CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBpbnQg
bV9zcmNTdHJpZGUsIG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOworICAg
IFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVmNzQ0
N2NlNDc5MzQ4NmE3NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3Nzg0
YzhiMDM0MDg0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJ
bWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIu
aCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xNDYsNyArMTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0RGF0
YUZvcm1hdChHQzNEZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNE
c2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25t
ZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQg
fHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBj
aGFyW10+IHplcm87CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICBp
ZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7
CiAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0
LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsK
QEAgLTE1NCw3ICsxNTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9Ci0gICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4o
c2l6ZSk7CisgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6
ZSk7CiAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKaW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJmM2Nm
YS4uMmU3NDg3OWQ4ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNp
ZiBVU0UoQ0EpCkBAIC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6
IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBt
X2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0
YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwog
I2VuZGlmCiAgICAgICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21Tb3Vy
Y2UgbV9pbWFnZUh0bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCA3
MjlmODQzZGY5N2JlZWJjYjA0YWEyZTk2NjEzYTM1MzY4MGVjN2Q2Li5hMmVlZjQyYmVmZmI4Mzgw
Zjg3YWFkN2M1YzAwOGEzZjdkNzc2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAg
LTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgog
CiAjaWZkZWYgREVCVUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0RGly
dHlSZWN0cyhIV05EIHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0KIAog
ICAgIERXT1JEIGRhdGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwgMCk7
Ci0gICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBj
aGFyW10+KGRhdGFTaXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5pcXVl
QXJyYXk8dW5zaWduZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRhdGEg
PSByZWludGVycHJldF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsKICAg
ICBpZiAoITo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25EYXRh
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgxNTIy
YWYxMWIyMWMxNzc3NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlmMzUw
NGRmMWQ5ZmVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJSZWdpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCkBA
IC0zNDAsNyArMzQxLDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgpIC8g
MjsKIAogICAgIHVpbnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWlu
dDhfdFtdPiB0bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAgICBh
dXRvIHRtcCA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9wID0g
c291cmNlICsgKGkgKiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2ZjRl
M2I2YWFhN2RjYzFiMTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi4wNzFkY2NjOTQxMjVmZjdhNWE4OTQ4
NWQ1NGJmOTI5MTM4N2E3YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcgKzQ3
OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHByZW11
bHRpcGx5IHRoZSBhbHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJlZmVy
IHRvIG1hbm51YWxseSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBSR0JB
OCBmb3JtYXRzIGluc3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsKLSAg
ICAgICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+
KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxpemVk
UkdCQThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1faW1hZ2VXaWR0aCAqIG1faW1h
Z2VIZWlnaHQgKiA0KTsKICAgICAgICAgY29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxEYXRhKTsKICAgICAgICAgdWlu
dDhfdCogZGVzdGluYXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CiAgICAgICAg
IGNvbnN0IHB0cmRpZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBzaXpl
b2YodWludDE2X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwCmluZGV4IGFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2
NDYuLjg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzAsNyArMTcxLDcgQEAgdm9pZCBUZXh0dXJl
Ojp1cGRhdGVTdWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkK
ICAgICBpbnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBz
bWFsbGVyIG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0U2FuaXRpemVk
CiAgICAgICAgIHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpLCBtX3Rp
bGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAqCiAgICAg
ICAgIHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxlcy5i
b3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOwotICAgIGF1dG8g
dGVtcEJ1ZmYgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KHRlbXBCdWZmU2l6ZSk7Cisg
ICAgYXV0byB0ZW1wQnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZTaXpl
KTsKIAogICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAq
IG1fdGlsZXMubnVtVGlsZXNZKCk7IHRpbGUrKykgewogICAgICAgICBpbnQgeEluZGV4ID0gdGls
ZSAlIG1fdGlsZXMubnVtVGlsZXNYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAppbmRleCBkZjBhMGI4NTVlM2Q0MDBiMDU0OTdjMzg2YTlkYmI4ZTZk
YjcyM2UxLi41NDcyNzRmZmE2OGE1MmU0NWUwZDcyZDI4YjJhMTM5YzZmNWIwYjFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU0LDYgKzU0
LDcgQEAKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5
dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKIAotICAgIGF1dG8gcGl4ZWxzID0gc3RkOjptYWtlX3Vu
aXF1ZTx1bnNpZ25lZCBjaGFyW10+KHRvdGFsQnl0ZXMpOworICAgIGF1dG8gcGl4ZWxzID0gbWFr
ZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcGl4ZWxz
KQogICAgICAgICByZXR1cm47CiAKQEAgLTY2OCwxMSArNjY5LDExIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBp
ZiAobGVuZ3RoKSB7CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgICAgIDo6Z2xHZXRT
aGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgICAg
IFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKKyAgICAgICAgOjpnbEdldFNoYWRlckluZm9M
b2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICAgICAgUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICAgICAgZW50cnkubG9n
ID0gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOwor
ICAgICAgICBlbnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmlu
ZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogICAgIH0KIAogICAgIGlmIChjb21waWxlU3RhdHVzICE9
IEdMX1RSVUUpIHsKQEAgLTg1MSwxOCArODUyLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBp
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9
IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01B
WF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEdMY2hhcltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVU
RV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAgVmVjdG9yPEdMY2hh
cj4gbmFtZShtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVO
R1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0g
MDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdl
dEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5n
dGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2ZUF0dHJpYihw
cm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlw
ZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUo
cHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZ2V0KCks
IG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xO
YW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRh
dGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5p
Zm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1l
KG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlz
IG1hcHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0s
IGluZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKIApAQCAtODk4LDE4ICs4OTksMTggQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
dWludAogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7
CiAKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlmb3Jt
U2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJt
aW5hdGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8gR0xf
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAg
IEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVt
IHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhV
bmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAg
OjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFt
ZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3Ro
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9
IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwg
U3RyaW5nKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1l
ID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JN
LCBTdHJpbmcobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsKICAgICAKICNpZm5kZWYgTkRFQlVH
Ci0gICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpOworICAgIFN0
cmluZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdM
LCAiUHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAn
JXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFs
TmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIApAQCAtMTY5OSwxNCArMTcwMCwxNCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkg
c2l6ZSA9IDA7Ci0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVu
Z3RoKTsKLSAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwg
aW5mby5nZXQoKSk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xH
ZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAK
ICAgICBHQzNEc2l6ZWkgY291bnQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdOwog
ICAgIGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwogCi0g
ICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZv
LmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQs
IFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBu
YW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE3NzAsMTEgKzE3NzEsMTEgQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBh
dXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xH
ZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAg
VmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNo
YWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5m
b0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgIHJldHVybiBnZXRVbm1h
bmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQog
CiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2Jq
ZWN0IHNoYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmlu
ZGV4IGFiZWRmNTM1NTNkZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLjJlNmM1MmM2MzQ4
OTY2NDlhZjVjNmE0NDQ3Yjk4ZjEwYTNkMjQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtLmNwcApAQCAtNDUwLDEyICs0NTAsMTIgQEAgc3RhdGljIENTdHJpbmcg
Z2V0U2hhZGVyTG9nKEdMdWludCBzaGFkZXIpCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltd
Pihsb2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBH
THNpemVpIGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxv
Z0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0U2hhZGVySW5mb0xv
ZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAgIHNp
emVfdCBzdHJpbmdMZW5ndGggPSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1cm4g
eyBpbmZvLmdldCgpLCBzdHJpbmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEoKSwg
c3RyaW5nTGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50
IHByb2dyYW0pCkBAIC00NjUsMTIgKzQ2NSwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRQcm9ncmFt
TG9nKEdMdWludCBwcm9ncmFtKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9nTGVu
Z3RoKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXplaSBp
bmZvTGVuZ3RoID0gMDsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xlbmd0
aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJv
Z3JhbSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90
IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGlu
Zm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJp
bmdMZW5ndGggfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcApp
bmRleCAzZWRhZDE4MjFlYzQ2ZGNiNDBmZTUwNjJjYTI4OTRmYjQ1OGZkN2ZlLi5mMGUyNTgwOTIw
NTM4NTRjZDUxNTk2YzdlMDcxNzU5ZWY3Y2JmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJl
Y3QyRC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50
OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShj
b25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpYwogICAgIHVu
c2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKICAgICBjb25z
dCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlLmRhdGEoKSArIChvcmlnaW55ICogc3JjQnl0ZXNQ
ZXJSb3cgKyBvcmlnaW54ICogNCkudW5zYWZlR2V0KCk7CiAKLSAgICB1aW50OF90KiByb3cgPSBu
ZXcgdWludDhfdFtzcmNCeXRlc1BlclJvd107CisgICAgYXV0byByb3cgPSBtYWtlVW5pcXVlQXJy
YXk8dWludDhfdD4oc3JjQnl0ZXNQZXJSb3cpOwogCiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBo
ZWlnaHQudW5zYWZlR2V0KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdp
ZHRoLnVuc2FmZUdldCgpOyB4KyspIHsKQEAgLTE0NiwxNyArMTQ3LDE1IEBAIHZvaWQgSW1hZ2VC
dWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhh
UHJlbXVsdGlwbGljCiAgICAgICAgICAgICAgICAgcm93W2Jhc2V4ICsgMl0gPSAoc3JjUm93c1ti
YXNleCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OwogICAgICAgICAgICAgICAgIHJvd1tiYXNl
eCArIDNdID0gYWxwaGE7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4ocm93ICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07CisgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdCo+KHJvdy5nZXQoKSArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwogICAgICAgICB9CiAKICAgICAg
ICAgRDJEMV9SRUNUX1UgZHN0UmVjdCA9IEQyRDE6OlJlY3RVKGRlc3RQb2ludC54KCksIGRlc3RQ
b2ludC55KCkgKyB5LCBkZXN0UG9pbnQueCgpICsgc2l6ZS53aWR0aCgpLCBkZXN0UG9pbnQueSgp
ICsgeSArIDEpOwotICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJlY3Qs
IHJvdywgc3JjQnl0ZXNQZXJSb3cpOworICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1v
cnkoJmRzdFJlY3QsIHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwogICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKGhyKSk7CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAg
ICB9Ci0KLSAgICBkZWxldGVbXSByb3c7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmIzZmQyZDE5YjQ3Yzc2OGIxYzAyYTEzZjg2
MzIxN2I0MTg3NDFhNS4uYWNjMjFhZGMxOWUzMjcxMDAwMmNkYWUyZWUzYjdlNDI4Mjc5MGNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgPHBuZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIGRlZmluZWQoUE5HX0xJQlBO
R19WRVJfTUFKT1IpICYmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUlOT1IpICYmIChQTkdfTElC
UE5HX1ZFUl9NQUpPUiA+IDEgfHwgKFBOR19MSUJQTkdfVkVSX01BSk9SID09IDEgJiYgUE5HX0xJ
QlBOR19WRVJfTUlOT1IgPj0gNCkpCiAjZGVmaW5lIEpNUEJVRihwbmdfcHRyKSBwbmdfam1wYnVm
KHBuZ19wdHIpCkBAIC0xMjAsNyArMTIxLDYgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewogICAg
ICAgICAsIG1fY3VycmVudEJ1ZmZlclNpemUoMCkKICAgICAgICAgLCBtX2RlY29kaW5nU2l6ZU9u
bHkoZmFsc2UpCiAgICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkKLSAgICAgICAgLCBtX2ludGVy
bGFjZUJ1ZmZlcigwKQogICAgIHsKICAgICAgICAgbV9wbmcgPSBwbmdfY3JlYXRlX3JlYWRfc3Ry
dWN0KFBOR19MSUJQTkdfVkVSX1NUUklORywgMCwgZGVjb2RpbmdGYWlsZWQsIGRlY29kaW5nV2Fy
bmluZyk7CiAgICAgICAgIG1faW5mbyA9IHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QobV9wbmcpOwpA
QCAtMTQzLDggKzE0Myw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICAgICAgaWYgKG1f
cG5nICYmIG1faW5mbykKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB6ZXJvIHRoZSBwb2ludGVy
cy4KICAgICAgICAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZtX3BuZywgJm1faW5mbywg
MCk7Ci0gICAgICAgIGRlbGV0ZVtdIG1faW50ZXJsYWNlQnVmZmVyOwotICAgICAgICBtX2ludGVy
bGFjZUJ1ZmZlciA9IDA7CisgICAgICAgIG1faW50ZXJsYWNlQnVmZmVyLnJlc2V0KCk7CiAgICAg
ICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCkBAIC0xODgsOCArMTg3LDggQEAgY2xhc3Mg
UE5HSW1hZ2VSZWFkZXIgewogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBt
X2hhc0FscGhhID0gaGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNBbHBoYTsgfQogCi0gICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJsYWNlQnVmZmVyOyB9Ci0gICAgdm9pZCBjcmVhdGVJbnRlcmxhY2VC
dWZmZXIoaW50IHNpemUpIHsgbV9pbnRlcmxhY2VCdWZmZXIgPSBuZXcgcG5nX2J5dGVbc2l6ZV07
IH0KKyAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRl
cmxhY2VCdWZmZXIuZ2V0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUludGVybGFjZUJ1ZmZlcihpbnQg
c2l6ZSkgeyBtX2ludGVybGFjZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxwbmdfYnl0ZT4oc2l6
ZSk7IH0KIAogcHJpdmF0ZToKICAgICBwbmdfc3RydWN0cCBtX3BuZzsKQEAgLTE5OCw3ICsxOTcs
NyBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QnVmZmVy
U2l6ZTsKICAgICBib29sIG1fZGVjb2RpbmdTaXplT25seTsKICAgICBib29sIG1faGFzQWxwaGE7
Ci0gICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PHBuZ19i
eXRlPiBtX2ludGVybGFjZUJ1ZmZlcjsKIH07CiAKIFBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IGZlODI5MGU5NTc1NmJkMTQyNWFhOWYwOGI5MTUyY2JmNjcxNTllN2YuLmEyOWU1
NjY4MTE4YTQ2OTU5OTBhOTEyNzgzMTVhNTQyMGY1YjhjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiAjaWYgVVNFKFdFQlApCiAKQEAgLTE4NSw3ICsxODYsNyBAQCB2b2lkIFdFQlBJbWFnZURl
Y29kZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBXZWJQRGVtdXhlciogZGVtdXhl
cikKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zdHJpZGUgPSB3ZWJwRnJhbWUud2lkdGggKiBz
aXplb2YoUkdCQTMyKTsKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplID0gZGVjb2RlckJ1
ZmZlci51LlJHQkEuc3RyaWRlICogd2VicEZyYW1lLmhlaWdodDsKICAgICBkZWNvZGVyQnVmZmVy
LmlzX2V4dGVybmFsX21lbW9yeSA9IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNo
YXJbXT4gcChuZXcgdWludDhfdFtkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplXSgpKTsKKyAgICBh
dXRvIHAgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6
ZSk7CiAgICAgZGVjb2RlckJ1ZmZlci51LlJHQkEucmdiYSA9IHAuZ2V0KCk7CiAgICAgaWYgKCFk
ZWNvZGVyQnVmZmVyLnUuUkdCQS5yZ2JhKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggMzQyYmU1NjliNDczMmYyYzk2ZDVkMGNjNWFlY2YxMDdj
Y2EzMmJiMi4uNWM0Y2EyOTE1ZmMxODRkZmVhZTUzMmVlY2FkNjlkNTQxY2JmMzAyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL1Nl
Y29uZHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6
IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgIHZvaWQgZGlkT3BlblNvY2tldCgpOwog
CiAgICAgc3RydWN0IFNvY2tldERhdGEgewotICAgICAgICBTb2NrZXREYXRhKHN0ZDo6dW5pcXVl
X3B0cjxjaGFyW10+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICBTb2NrZXREYXRh
KFVuaXF1ZUFycmF5PGNoYXI+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBkYXRhID0gV1RGTW92ZShzb3VyY2UpOwogICAgICAgICAgICAgc2l6ZSA9IGxl
bmd0aDsKQEAgLTg5LDcgKzkwLDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1
YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgICAgICAgICAgb3RoZXIuc2l6ZSA9IDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRhOworICAgICAg
ICBVbmlxdWVBcnJheTxjaGFyPiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA2ZmNiZjgz
NzhjYTM3NWNmOTIxYWRmOWFhNjRhY2U1NWFkMmM2ZGMxLi41YTQ1ZGQ4ZGI1MmRhOGJmMWVmNWJh
ZWY0NGIxMTVkZTc2NTcyMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5j
cHAKQEAgLTQ0LDkgKzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPGNoYXJbXT4gY3JlYXRlQ29weShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQorc3RhdGljIFVuaXF1ZUFycmF5PGNoYXI+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0
YSwgaW50IGxlbmd0aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjb3B5KG5ldyBj
aGFyW2xlbmd0aF0pOworICAgIGF1dG8gY29weSA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5n
dGgpOwogICAgIG1lbWNweShjb3B5LmdldCgpLCBkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJu
IGNvcHk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVh
ZERhdGEoQ1VSTCogY3VybEhhbmRsZSkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAog
ICAgIGNvbnN0IHNpemVfdCBidWZmZXJTaXplID0gMTAyNDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhcltdPiBkYXRhKG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtl
VW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IGJ5dGVzUmVhZCA9IDA7
CiAKICAgICBDVVJMY29kZSByZXQgPSBjdXJsX2Vhc3lfcmVjdihjdXJsSGFuZGxlLCBkYXRhLmdl
dCgpLCBidWZmZXJTaXplLCAmYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmlu
ZGV4IGUwYThmOWQ0MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYx
MzI0ZTkyMDI5YWNiZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aApAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9TdHJlYW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2
LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBT
b2NrZXRTdHJlYW1IYW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBt
X291dHB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsK
ICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y2hhcltdPiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFk
QnVmZmVyOwogCiAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAx
MDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkx
YzE3NmUyMmI2NDYwN2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQy
YjIyNGJkMzA2OTU3NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3Bw
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0
ZWQoR1JlZlB0cjxHSU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShz
dHJlYW0pOwogICAgIG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdf
aW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1
dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwot
ICAgIG1fcmVhZEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9T
SVpFKTsKKyAgICBtX3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZG
RVJfU0laRSk7CiAKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0u
Z2V0KCksIG1fcmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJj
ZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEz
OGVmZDlmM2I2MTViN2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUxNzY1
ODI2YWJkNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2lu
Z1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3Bw
CkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxl
bmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZm
ZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vu
dmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVu
dmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0
YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVy
biBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2MDVi
NjdkMGJiMzEyMDczMzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5ZjllNjg0
OTliYWM1ZjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4v
U3lzdGVtUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2lu
L1N5c3RlbVByb3h5V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dzU3lz
dGVtUHJveHk6OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4s
IGludCogcG9ydCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZlciA9
IHN0ZDo6bWFrZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8VENIQVJbXT4gdEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7
Ci0gICAgaWYgKCF0UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFZlY3RvcjxUQ0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxUQ0hB
Uj4gdEhvc3QoYnVmZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7CiAg
ICAgSEtFWSBrZXk7CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6
OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG8K
ICAgICAgICAgTCJQcm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0eXBl
LAotICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUpdFJl
Z0J1ZmZlci5kYXRhKCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJST1Jf
U1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5U3Ry
aW5nKHRSZWdCdWZmZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQorICAg
IGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgpLCBi
dWZmZXJMZW4sIHBvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21icyhi
dWZmZXIsIHRIb3N0LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwgdEhv
c3QuZGF0YSgpLCBidWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAnOwog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91
bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNjODYz
N2Q0NjFjODc0NjQ1Li4zYzQ2Mzk0ZTJlM2QzNDc1MmJiYzY2ZDFhNTUyNTJhYmJjMzcwODVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4
LmNwcApAQCAtMTQzLDExICsxNDMsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2Fn
ZSgpCiAKICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQgPSAwOwogICAg
IHNpemVfdCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87Cisg
ICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50Q291bnQp
OwogCiAgICAgaWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsKLSAg
ICAgICAgbWVtY3B5KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0
dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lbWNweShhdHRhY2ht
ZW50SW5mby5kYXRhKCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0
YWNobWVudENvdW50KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJ
bmZvKSAqIGF0dGFjaG1lbnRDb3VudDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7CkBAIC00MTcsNyArNDE2LDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICBp
b3ZbMF0uaW92X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwog
ICAgIGlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6dW5p
cXVlX3B0cjxBdHRhY2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBWZWN0b3I8QXR0
YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRhY2ht
ZW50RkRCdWZmZXI7CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2UuYXR0
YWNobWVudHMoKTsKQEAgLTQ0NCw3ICs0NDMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRw
dXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQdHIg
PSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9b
XT4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8ucmVzaXplKGF0
dGFjaG1lbnRzLnNpemUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgYXR0YWNobWVudEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpAQCAt
NDY2LDcgKzQ2NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1l
c3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAgICAg
ICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmRhdGEoKTsKICAgICAg
ICAgaW92W2lvdkxlbmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRh
Y2htZW50cy5zaXplKCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggNmRlMWJhYjg1OTA3N2Y4MTcwYzhi
ZDJiZmE1MjE5NWZhYTcxYjcyZC4uZDA2MzhkMzEzYTZlN2M5MmViODI0MTQ4MjQ4OTNkYjY2NTc2
YmQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTQy
LDEyICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5n
dGgpOwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1l
bnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJvbm1l
bnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0cmlu
ZyhidWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lv
bi5oCmluZGV4IGU1MjdmODE1MjU3YzA4NzA5Y2I0ZmExNWI5YjA3OTU5MjFjMDEzZjkuLjFmNzY4
MDg1NjRlZDRkYjZlNWMwY2UxZWI2MzAyMTE3MWU5MGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtODYsOCArODcsNyBAQCBjbGFzcyBTYW5k
Ym94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogICAg
ICAgIAogICAgIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7Ci0gICAgICAgIHNpemVfdCBtX3Np
emUgeyAwIH07CisgICAgICAgIFZlY3RvcjxIYW5kbGU+IG1fZGF0YTsKICNlbHNlCiAgICAgICAg
IEhhbmRsZSBtX2VtcHR5SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZlMTVl
MDMyODQxOGJjM2IwYWIzM2QuLmI4ZTc0M2QyMzYwY2ZlZWZjMTdiY2EyNGQ1OTcxMWNkZDU4YTVi
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFj
Lm1tCkBAIC0xNjMsMzQgKzE2MywzMyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVCghbV9kYXRhKTsKKyAgICBBU1NFUlQobV9kYXRhLmlzRW1wdHkoKSk7
CiAKLSAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZVtdPihzaXplKTsKLSAgICBtX3NpemUgPSBzaXplOworICAgIG1fZGF0YS5yZXNpemUoc2l6ZSk7
CiB9CiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7IAorICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaV07
CiB9CiAKIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7CisgICAgUkVMRUFTRV9BU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJu
IG1fZGF0YVtpXTsKIH0KIAogc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5Ojpz
aXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zaXplOworICAgIHJldHVybiBtX2RhdGEuc2l6
ZSgpOwogfQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsr
aSkKLSAgICAgICAgZW5jb2RlciA8PCBtX2RhdGFbaV07CisgICAgZm9yIChhdXRvJiBoYW5kbGUg
OiBtX2RhdGEpCisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCiBib29sIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IGZiOGI3MzVmODczYTE1M2E1OTE3
M2Y3MjQ5NTgwMjRmNThkNjUyZDMuLjZhZjMxNTEzMTY1MThhMmNmNTYyODg4MWI0ODVjMjIzMzBj
YzgwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJz
LmNwcApAQCAtMjEwLDE4ICsyMTAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6
OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUND
RUVERUQoaHIpKQogICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEs
ICZ1Qm91bmQpOwogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91
bmQrMSkgOiAwOwotICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGU3Ry
aW5nUmVmPiBpdGVtczsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBD
RlN0cmluZ1JlZltsZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9y
ICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBCU3RyaW5nIHN0
cjsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91
bmQsICZzdHIpOwogICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVm
KHN0cik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5
Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMsIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cyk7Ci0gICAgaWYgKGl0ZW1zKQotICAgICAgICBkZWxldGVbXSBpdGVtczsKKyAgICBDRkFycmF5
UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCks
IGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMjMyLDE4ICsyMzAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVB
cnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQoaHIp
KQogICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91bmQp
OwogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAw
OwotICAgIENGTnVtYmVyUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGTnVtYmVyUmVmPiBp
dGVtczsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRk51bWJlclJl
ZltsZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxCb3Vu
ZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAg
ICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0p
OwogICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVt
YmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJh
eVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBsZW4s
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykKLSAgICAgICAgZGVsZXRl
W10gaXRlbXM7CisgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25z
dCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmluZGV4IGUwMDk0Yjk2YmIxODlhNjk2MzU1ZGUw
ZGIwODAzMGJjMGE4MmQ3MDkuLjE3ZWUxMmY2OGU4MmY3YWRlMDA5MDAyMGEwODNiNjUyMjk2MWMz
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFj
a2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlV2luLmNwcApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8oKQogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4odmVyc2lvbkluZm9TaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gdmVyc2lvbkluZm9EYXRh
KHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coc3RyaW5n
VG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1NpemUs
IHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0
cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9T
aXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJvZHVj
dE5hbWUiKTsKLSAgICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9E
YXRhLmdldCgpLCAiRmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0gZ2V0VmVyc2lvbklu
Zm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CisgICAgbV9kZXNjcmlw
dGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRGVzY3Jp
cHRpb24iKTsKICAgICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3JpcHRpb24uaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklMRUlORk8qIGluZm87
CiAgICAgVUlOVCBpbmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZv
RGF0YS5nZXQoKSwgTCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXplKSB8fCBpbmZvU2l6
ZSA8IHNpemVvZihWU19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZl
cnNpb25JbmZvRGF0YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkg
fHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBtX21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9u
TFM7CiAgICAgbV9tb2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTVM7
CkBAIC0xOTMsMTEgKzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGdl
dFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBlIikuc3BsaXQoJ3wn
LCB0eXBlcyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIk1J
TUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9u
TGlzdHM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZUV4
dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2
ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lv
bkxpc3RzKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0gICAgZ2V0VmVyc2lv
bkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBk
ZXNjcmlwdGlvbnMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCks
ICJGaWxlT3Blbk5hbWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RyaW5nIHR5
cGUgPSB0eXBlc1tpXS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4
OGIxM2ZmNWUxNTdmOGQ2MDMuLjE5MDQ4OTczZmIxNzYzMGVmNjVmNWQ2MjYxMWEzNjg0MTY0M2Mx
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTUz
Miw5ICs1MzIsOSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNU
b0NGUHJlZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZTdHJpbmdSZWYgZGlk
UmVtb3ZlRGVmYXVsdHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVmYXVsdFNldHRpbmdz
RnJvbVNhZmFyaTNCZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0RGVmYXVsdHMgPSAh
Ym9vbGVhblZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0
LCBkaWRSZW1vdmVEZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOwotICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1
ZXMoZGljdCwga2V5cy5nZXQoKSwgdmFsdWVzLmdldCgpKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVm
PiBrZXlzKGNvdW50KTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiB2YWx1ZXMoY291bnQpOworICAg
IENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5kYXRhKCksIHZhbHVlcy5k
YXRhKCkpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAg
IGlmICgha2V5c1tpXSB8fCAhdmFsdWVzW2ldIHx8IENGR2V0VHlwZUlEKGtleXNbaV0pICE9IENG
U3RyaW5nR2V0VHlwZUlEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE1
ZTI3Zjk4NWMyY2Q5OTZkZTlhMDdlZWE5YjU5ZmRkMGY0OGU3ODcuLjIyZjVhMjYyYzFkZTFiODE5
ZGNlYWYzYWJmYjc3YzBmMzk4MWJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CkBAIC0xNzg0LDggKzE3ODQsOCBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BBUkFN
IHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBtZW51SXRlbUluZm8uZk1hc2sgPSBNSUlNX1NU
UklORzsKICAgICA6OkdldE1lbnVJdGVtSW5mbyhoTWVudSwgaW5kZXgsIHRydWUsICZtZW51SXRl
bUluZm8pOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdDSEFSW10+KG1l
bnVJdGVtSW5mby5jY2ggKyAxKTsKLSAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1ZmZl
ci5nZXQoKTsKKyAgICBWZWN0b3I8V0NIQVI+IGJ1ZmZlcihtZW51SXRlbUluZm8uY2NoICsgMSk7
CisgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZGF0YSgpOwogICAgIG1lbnVJ
dGVtSW5mby5jY2grKzsKICAgICBtZW51SXRlbUluZm8uZk1hc2sgfD0gTUlJTV9JRDsKIApAQCAt
MTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFy
YW0sIExQQVJBTSBsUGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0TWVu
dSk7CiAgICAgbV9jdXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5nIHRp
dGxlKGJ1ZmZlci5nZXQoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxlKGJ1
ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5jY2gpOwogICAgIENvbnRleHRNZW51QWN0aW9uIGFj
dGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lEKTsK
IAogICAgIGlmIChhY3Rpb24gPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334562</attachid>
            <date>2018-02-24 08:23:49 -0800</date>
            <delta_ts>2018-02-24 08:42:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180225012348.patch</filename>
            <type>text/plain</type>
            <size>110060</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWVkODBkMmE3YWQ4NTkwZTY4NDQzNjQzMGY0MDEwMzI2YWFjNWRmLi40ZTUyYmM3M2I1OTdiZTIz
NTJhYThhZTc1YzQ2ZTYyZjFhZWMxM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wMi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5r
UG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY3VycmVudFdv
cmtpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
OjpUeXBlUHJvZmlsZXJMb2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
dGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHRvb2xz
L0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6SGVhcFZlcmlm
aWVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMi0yMyAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE51bWJlci5pc0lu
dGVnZXIgYW4gaW50cmluc2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNmRkYTMyYmFiZWYwMWJkMDQ4ZGRhMTQ1ZjBhNTU4
YTlkZDMxMzEuLjllODc4MjIxNWE3NTNkOTk5NTg0ZDcyZTExYzYyNjQzMjU5ZDg2ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB3ZSB1c2UgYG1ha2VfdW5pcXVlPGNoYXJbXT4obnVtKWAgb3IgYG5ldyBjaGFyW251
bV1gLCBhbGxvY2F0aW9uIGlzCisgICAgICAgIGRvbmUgYnkgdGhlIHN5c3RlbSBtYWxsb2MgaW5z
dGVhZCBvZiBibWFsbG9jLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKKyAgICAgICAgYnkg
Zm9sbG93aW5nIHRocmVlIGNoYW5nZXMuCisKKyAgICAgICAgMS4gSW50cm9kdWNlIFVuaXF1ZUFy
cmF5PFQ+LiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20gRmFzdE1hbGxvYy4gV2hpbGUgQysrCisg
ICAgICAgIGFycmF5IHdpdGggYG5ld2AgbmVlZCB0byBob2xkIHRoZSBzaXplIHRvIGNhbGwgZGVz
dHJ1Y3RvciBjb3JyZWN0bHksIG91cgorICAgICAgICBVbmlxdWVBcnJheSBvbmx5IHN1cHBvcnRz
IHR5cGUgVCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgSXQgcmVkdWNlcyB0aGUgYWxsb2NhdGlvbiBzaXplIHNpbmNlIHdlIGRvIG5vdCBuZWVk
IHRvIHRyYWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICBhcnJheSBjb21wYXJlZCB0byBzdGFu
ZGFyZCBgbmV3IFRbXWAuIFRoaXMgaXMgYmFzaWNhbGx5IHVzYWJsZSBpZiB3ZSB3YW50IHRvCisg
ICAgICAgIGhhdmUgcmF3IGFycmF5IHdoaWNoIHBvaW50ZXIgd29uJ3QgYmUgY2hhbmdlZCBldmVu
IGlmIHRoZSBjb250YWluZXIgaXMgbW92ZWQuCisgICAgICAgIEluIGFkZGl0aW9uLCB3ZSBhbHNv
IGV4dGVuZCBVbmlxdWVBcnJheTxUPiBmb3IgdHlwZXMgd2hpY2ggaGF2ZSBub24gdHJpdmlhbAor
ICAgICAgICBkZXN0cnVjdG9ycy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQu
CisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FM
TE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10g
b3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAg
ICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RG
OjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAg
KFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3Rh
Y2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6
CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAg
ICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6
OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDItMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIElUUCBkZWJ1ZyBsb2dnaW5nIGFzIGFu
IG9wdC1pbiBkZXZlbG9wZXIgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0NzkwZjA4MzZjMjMzNTJk
NTEyMWQzMjU3MzJiOGZjN2E1YzQ3OGIuLjAwNDVkZjlhOTFiZTUyYTNlZWE4NDY2NDM5MDFmYmUw
NDIwOGNhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NiBAQAorMjAxOC0wMi0yNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtl
X3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBv
ciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmg6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNz
c2ppdC9Db21waWxlZFNlbGVjdG9yLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJV
SW1hZ2VCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJi
bGVUb0Zyb250KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNo
YW5uZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRlRGcmFtZTo6RkZURnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1h
dENvbnZlcnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybWF0Q29udmVydGVyOjpGb3JtYXRD
b252ZXJ0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVz
b3VyY2VTYWZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9z
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXREaXJ0eVJlY3RzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZTo6dXBkYXRlU3ViUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2hhZGVyTG9nKToKKyAgICAgICAgKFdlYkNvcmU6
OmdldFByb2dyYW1Mb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1
ZmZlckRhdGFEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6
OnB1dERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OlBOR0ltYWdl
UmVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6aW50ZXJsYWNlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpjcmVhdGVJbnRlcmxhY2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGVGcmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldERhdGE6OlNv
Y2tldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWREYXRhKToKKyAgICAgICAg
KCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6Y29ubmVjdGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDItMjMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB1bmRlciBTY2hl
bWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKFdURjo6U3RyaW5nIGNvbnN0
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGIzMDQ3NmYyNDhhMGVlOTM0ZTE5YjNkMWE0Y2E4ZDFj
NmJhZDVmMjAuLjE3MDZmZjI1MzMyN2RiOGJjM2FmYjMzMTMxMGU5MWZkZDZlYThlZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAyLTI0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVl
IC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICogcGFs
L3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFBBTDo6bG9nTGV2ZWxTdHJpbmcpOgorCiAy
MDE4LTAyLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEludHJvZHVjZSBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQw
MDdlN2NhMWNiYThlMjFlZmI4YjZiODJhNjg3Mjk2MmQxZTE1MS4uYTJiM2I2ODhiZjNjZjI2NTZk
M2MxYTBjNzU3ODQxZjIyZjMxYWQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxOC0w
Mi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBG
aXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVh
ZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHA6Cisg
ICAgICAgIChXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3RlbUh0dHBQcm94eSk6CisgICAgICAg
ICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNl
bmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmxvZ0xldmVsU3RyaW5nKToKKyAgICAgICAgKiBTaGFyZWQvU2Fu
ZGJveEV4dGVuc2lvbi5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmFs
bG9jYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheTo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSBjb25zdCk6CisKIDIwMTgtMDItMjQgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV1BF
IGJyZWFrYWdlIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBjNWNlYjMwNTZm
MTNmYjU1ZTNhMTNkNTVjNzFhNTRmZmE1NGMyN2NlLi4wYzYzMGRiYjFmYjFlZTUxMmVlNTM5Y2Q3
NjkzZTBjZGY1Njg4OTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFs
bG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5
NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
VmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBNYXJzaGFsbGluZ0hlbHBlcnMuY3BwOgorICAg
ICAgICAoTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KToKKyAgICAg
ICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9JbnRBcnJheSk6CisgICAgICAgICog
UGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBh
Y2thZ2U6OmZldGNoSW5mbyk6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAg
ICAoV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyk6
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpvbk1lbnVDb21tYW5k
KToKKwogMjAxOC0wMi0yMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZW1vdmUgY3VycmVudFRpbWUoKSAvIGN1cnJlbnRUaW1lTVMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKaW5kZXggMDU4NzI1OTNmNmRi
YjlhODUzYTgxNjFhNjliYmRmNzQyYTIzMzNhMy4uMTM2NzcxNTNkNWZhMDRkZmI4ZTlmZWE3ZTQ0
OGFjNDE3ZjljNmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZkNGLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVm
Q0YuY3BwCkBAIC00OSwxMCArNDksMTAgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQogICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvbnZlcnRlZFNpemUpID09IGxlbmd0aCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZm
ZXJMZW5ndGgpID09IGxlbmd0aCkKICAgICAgICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKGxjaGFyQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKS5sZWFrUmVmKCk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pQ2hhcltdPihsZW5ndGgpOwotICAgIENGU3RyaW5n
R2V0Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIGJ1ZmZlci5nZXQo
KSk7CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0
Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIGJ1ZmZlci5kYXRhKCkp
OwogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciksICJV
bmlDaGFyIGFuZCBVQ2hhciBtdXN0IGJlIHNhbWUgc2l6ZSIpOwotICAgIHJldHVybiAmT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwg
bGVuZ3RoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVuZ3RoKS5sZWFrUmVmKCk7
CiB9CiAKIENGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUtpbGxzLmgKaW5kZXggZWE4NTljNGE5YTEyZmU0ZGRmMmU1MmMyYjg2
ODZkMjA4ODgzYjg3NC4uYmYyYmIzZTE1MWZhYzEzM2Q4YTA1MDc4NTBjNGI3YzQ0NjAzZTA3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzQs
NiArNzUsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOwogCiAgICAgY2xhc3MgS2lsbFNldCB7CisgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgS2lsbFNldCgpCiAgICAg
ICAgICAgICA6IG1fd29yZCgwKQpAQCAtMTcwLDcgKzE3Miw3IEBAIGNsYXNzIEJ5dGVjb2RlS2ls
bHMgewogICAgIH07CiAgICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8S2lsbFNldFtdPiBtX2tpbGxTZXRzOworICAgIFVuaXF1ZUFycmF5PEtpbGxT
ZXQ+IG1fa2lsbFNldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKaW5kZXggNDJkOWFkNmM2ODY2ZDA4ZDk5ZGFmNDY5NWYwY2MxMzdhMDExMDMyMi4uZTAx
NjlkZmI0OThlZTY0NGQ2MTBhYWY0ZGY5MGI0ODQ1ZmFiYWUyZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVLaWxscyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVLaWxscyYKICAgICBGYXN0
Qml0VmVjdG9yIG91dDsKIAogICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAg
ICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2ls
bFNldFtdPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1f
a2lsbFNldHMgPSBtYWtlVW5pcXVlQXJyYXk8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldD4oY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAogICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9j
ay0+aXNFeGl0QmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBh
Li4wYzIwNzAzZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDgg
QEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFj
ZSA9IDA7CiAgICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6
OmFtb3VudE9mTm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hp
dGVTcGFjZSArIDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJl
Zml4TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCAr
IGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRh
dGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1v
dW50T2ZOb2RlV2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZp
eExlbmd0aF0gPSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9m
Tm9kZVdoaXRlU3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxl
cjo6ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwg
TGlua0J1ZgogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25P
ZihjdXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAg
QVNTRVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0
YWJsZUFkZHJlc3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4
ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVp
bnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0
YXJ0LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJm
ZWIyZTIyMWQ4MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2Rh
NmFhYmQwOTE2NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQg
UG9seW1vcnBoaWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywg
Y29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4m
JiBmYXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQog
ICAgICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5k
ZXggZDk2YWU1NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFi
MDQ2NWJhMWE4YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJS
b3V0aW5lLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTg0LDcgKzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJs
aWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZSgKICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0Nl
bGwqIG93bmVyLAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8m
LCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQz
Ml90PiYmIGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0
ZToKICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJh
eTx1aW50MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBt
X2NhbGxOb2RlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4
IDc4Y2E5MzAzZmM4Mjg3N2NlNjBiZmVjYTkxNjBlYWMzNGZmOTY2YmEuLmFlMGRlNjM5YzkzZTRl
YTg5MzA2YTk3N2ZiZDI0ZjhkNjE3ODA1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcApAQCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAog
ICAgIAogICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwog
ICAgIFZlY3RvcjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1
aW50MzJfdD4gZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2Fs
bGVyQ29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAg
ICBmYXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6
ZSgpKTsKKyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2Fs
bENhc2VzLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2Fz
ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCmluZGV4IDNiODgzOWNmYzViYmQzNzg4M2VjZmY3Y2Q5YjA1YjhiMDU2ZDNiYzguLjU3NjI0
MmYwYWVhNDVlOWJmMmMzZGI5NTllNTU3Mjk5ODY3NDU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC03MTYsMTcgKzcxNiwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1l
PiBjdXJyZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBp
cyB0aGUgVVRGLTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMv
bGlicmFyeS9kZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVm
ZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdP
UkQgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVy
TGVuZ3RoLCBidWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hh
clRvU3RyaW5nKGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVj
dG9yPHdjaGFyX3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdElu
Y2x1ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVy
LmRhdGEoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVm
ZmVyLmRhdGEoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3Vw
cG9ydCBuZXR3b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYg
KGRpcmVjdG9yeVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFy
W10+KFBBVEhfTUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkK
KyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZm
ZXIuZGF0YSgpLCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
U3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsK
KyAgICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0
YSgpKTsKICNlbmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAppbmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4z
YTFlYTM3NDgyNDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zW21heE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2Rl
TWFwW251bU9wY29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29k
ZVN0YXRzQXJyYXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9p
ZCBsbGludF9lbnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6
c19leGNlcHRpb25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3Ro
ICsgMV07Ci0KICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2
MWI1YjI2ZmM4NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQw
MjQyZGM2NGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAt
NjYsNyArNjYsNyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7
CiAgICAgc3RhdGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24q
IHNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2Vw
dGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2Rl
IHNfb3Bjb2RlTWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkq
IHNfb3Bjb2RlU3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlz
dC5oCmluZGV4IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJk
ZTkxM2ZkZjRkYjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1
bWVudEJ1ZmZlciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJw
cmV0ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDQ3ZjNhNWYxYmZkMmE1OTA2
NDY1NjFjNzJiYjQ0YzIxMzcyNmI2MDQuLmQ2MmQxMDYwZWQ2NGVhYzI4MmYwNmNmZTI1YzY5MTMy
OTFlZmNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzAsNyArNzEsNyBA
QCBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBm
b3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQt
PnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdChjdXJyZW50KSkKICAgICAgICAg
ICAgICsrc2l6ZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT5bXT4gdmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PltdPihzaXplICsgMSk7CisgICAgICAgIGF1dG8gdmVjdG9yID0gbWFrZVVuaXF1ZUFycmF5PFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+PihzaXplICsgMSk7CiAKICAgICAgICAgc2l6ZV90IGkgPSAw
OwogICAgICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVu
dCA9IGN1cnJlbnQtPnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdChjdXJyZW50
KSkKQEAgLTg1LDcgKzg2LDcgQEAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
U3RydWN0dXJlQ2hhaW4oVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT5bXT4gbV92ZWN0b3I7CisgICAgVW5pcXVlQXJyYXk8V3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4+IG1fdmVjdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3Bw
CmluZGV4IGEyMDI1YWYxNjRlM2VlNTg3YmYzMDI1MTZlZGNhY2Y5MjljMWUxMjUuLjhlZWIzOTFk
YWY0YjQxMGI2ODE2N2FmMGU2MTk1NmU4NDc5NTRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRhYmxlKCkK
ICAgICA6IG1fZmlyc3RGcmVlT2Zmc2V0KDApCi0gICAgLCBtX3RhYmxlKHN0ZDo6bWFrZV91bmlx
dWU8U3RydWN0dXJlT3JPZmZzZXRbXT4oc19pbml0aWFsU2l6ZSkpCisgICAgLCBtX3RhYmxlKG1h
a2VVbmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBt
X3NpemUoMCkKICAgICAsIG1fY2FwYWNpdHkoc19pbml0aWFsU2l6ZSkKIHsKQEAgLTQ1LDcgKzQ1
LDcgQEAgU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiB2b2lkIFN0cnVjdHVy
ZUlEVGFibGU6OnJlc2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpCiB7CiAgICAgLy8gQ3JlYXRlIHRo
ZSBuZXcgdGFibGUuCi0gICAgYXV0byBuZXdUYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3RydWN0
dXJlT3JPZmZzZXRbXT4obmV3Q2FwYWNpdHkpOworICAgIGF1dG8gbmV3VGFibGUgPSBtYWtlVW5p
cXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KG5ld0NhcGFjaXR5KTsKIAogICAgIC8vIENvcHkg
dGhlIGNvbnRlbnRzIG9mIHRoZSBvbGQgdGFibGUgdG8gdGhlIG5ldyB0YWJsZS4KICAgICBtZW1j
cHkobmV3VGFibGUuZ2V0KCksIHRhYmxlKCksIG1fY2FwYWNpdHkgKiBzaXplb2YoU3RydWN0dXJl
T3JPZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUlEVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUlEVGFibGUuaAppbmRleCBhMmM1OGRmNjBhYzQ1MjQ5NjZiODJhNmM3MzMwOWVkMjU2YzhiMTY5
Li43Nzg5ZGY4OTU5ZjdmZWQ1ZTAwMmE2NGE2MzNmNmI5MTRmYmJjZTcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMTA3LDEwICsxMDgsMTAgQEAgY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7
CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRpYWxTaXplID0gMjU2OwogCi0g
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTdHJ1Y3R1cmVPck9mZnNldFtdPj4gbV9vbGRUYWJs
ZXM7CisgICAgVmVjdG9yPFVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0Pj4gbV9vbGRUYWJs
ZXM7CiAKICAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8U3RydWN0dXJlT3JPZmZzZXRbXT4gbV90YWJsZTsKKyAgICBVbmlxdWVBcnJheTxTdHJ1Y3R1
cmVPck9mZnNldD4gbV90YWJsZTsKIAogICAgIHNpemVfdCBtX3NpemU7CiAgICAgc2l6ZV90IG1f
Y2FwYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
UHJvZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmNwcAppbmRleCBmZjBhNzYxNzM5NGE0OWRkM2Q4ZmJhYzhjYmNhZTY4YWYzZTRmNWUx
Li4wOWQ0MjIwNWY2Yjk5ODMyZjM5Zjk5YzcyOTExODg1MmZmOGIzNjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTQxLDEz
ICs0MSwxMyBAQCBuYW1lc3BhY2UgVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWwgewogc3RhdGljIGNv
bnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCi12b2lkIFR5cGVQcm9maWxlckxvZzo6aW5p
dGlhbGl6ZUxvZygpCitUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZygpCisgICAgOiBt
X2xvZ1NpemUoNTAwMDApCisgICAgLCBtX2xvZ1N0YXJ0UHRyKG5ldyBMb2dFbnRyeVttX2xvZ1Np
emVdKQorICAgICwgbV9jdXJyZW50TG9nRW50cnlQdHIobV9sb2dTdGFydFB0cikKKyAgICAsIG1f
bG9nRW5kUHRyKG1fbG9nU3RhcnRQdHIgKyBtX2xvZ1NpemUpCiB7CiAgICAgQVNTRVJUKCFtX2xv
Z1N0YXJ0UHRyKTsKLSAgICBtX2xvZ1NpemUgPSA1MDAwMDsKLSAgICBtX2xvZ1N0YXJ0UHRyID0g
bmV3IExvZ0VudHJ5W21fbG9nU2l6ZV07Ci0gICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xv
Z1N0YXJ0UHRyOwotICAgIG1fbG9nRW5kUHRyID0gbV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZTsK
IH0KIAogVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVyTG9nKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgKaW5kZXggOWI1N2NjNTg2NzBm
NDU5OTE1ZWNlZGU2YzEzZWFhNTU4NTg0OWYxNy4uMzk0MTkzMzQ4YzZlOTQwNDQwMzljY2VjNjc4
YTMzMGJiODg0M2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VHlwZVByb2ZpbGVyTG9nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgTG9nRW50
cnkgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGlj
OgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC01Miwx
MiArNTMsNyBAQCBjbGFzcyBUeXBlUHJvZmlsZXJMb2cgewogICAgIH07CiAKIAotICAgIFR5cGVQ
cm9maWxlckxvZygpCi0gICAgICAgIDogbV9sb2dTdGFydFB0cigwKQotICAgIHsKLSAgICAgICAg
aW5pdGlhbGl6ZUxvZygpOwotICAgIH0KLQorICAgIFR5cGVQcm9maWxlckxvZygpOwogICAgIH5U
eXBlUHJvZmlsZXJMb2coKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvY2Vzc0xv
Z0VudHJpZXMoY29uc3QgU3RyaW5nJik7CkBAIC03MSw4ICs2Nyw2IEBAIGNsYXNzIFR5cGVQcm9m
aWxlckxvZyB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKLSAgICB2b2lkIGluaXRpYWxpemVMb2coKTsKLQogICAgIHVuc2lnbmVkIG1fbG9nU2l6
ZTsKICAgICBMb2dFbnRyeSogbV9sb2dTdGFydFB0cjsKICAgICBMb2dFbnRyeSogbV9jdXJyZW50
TG9nRW50cnlQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggY2U2ZTRj
MWY0NWNiOWViOWU1ODVlNzJiZGMwZTcwYWI2N2JhZWZiYi4uYjY2N2VkNzJlNjUyMzMxNDc2NWEy
MDI4MWZmYWIzNDM1MTZhNzJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtNTM2LDExICs1MzYsNiBAQCBWTTo6flZNKCkKICAgICBkZWxldGUgY2xpZW50RGF0YTsKICAg
ICBkZWxldGUgbV9yZWdFeHBDYWNoZTsKIAotI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5T
X0VYUFJFU1NJT05TKQotICAgIGlmIChtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAg
ICAgIGRlbGV0ZVtdIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKLSNlbmRpZgotCiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIGRlbGV0ZSBtX3J0VHJhY2VMaXN0OwogI2VuZGlm
CkBAIC05MDcsOCArOTAyLDggQEAgY2hhciogVk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKCkKIAogICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2NrLmxvY2soKTsKICAgICBp
ZiAoIW1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcikKLSAgICAgICAgbV9yZWdFeHBQYXR0ZXJu
Q29udGV4QnVmZmVyID0gbmV3IGNoYXJbVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZV07Ci0g
ICAgcmV0dXJuIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKKyAgICAgICAgbV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KFZNOjpwYXR0ZXJuQ29u
dGV4dEJ1ZmZlclNpemUpOworICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIu
Z2V0KCk7CiB9CiAKIHZvaWQgVk06OnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGQ3M2ZjNmI5NzQ2OGM4YjQxZGExZWEw
ZmY4OTA4ZGRmZDNkYjQyYTUuLjc2ZGIwNTgyZmFmM2EyNmIxNTY3ZjI5ODQ5NWI2ODFmODhmNWJk
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjksNiArNjksNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAg
LTY4NSw3ICs2ODYsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAjaWYgRU5BQkxFKFlBUlJf
SklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
cGF0dGVybkNvbnRleHRCdWZmZXJTaXplID0gODE5MjsgLy8gU3BhY2UgYWxsb2NhdGVkIHRvIHNh
dmUgbmVzdGVkIHBhcmVudGhlc2lzIGNvbnRleHQKLSAgICBjaGFyKiBtX3JlZ0V4cFBhdHRlcm5D
b250ZXhCdWZmZXIgeyBudWxscHRyIH07CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyOwogICAgIExvY2sgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExvY2s7
CiAgICAgY2hhciogYWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKICAgICB2b2lk
IHJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dFJlZ0V4cC5jcHAKaW5kZXggZTQzOGY1NjA0YjcwZDI2OThhYjNmNzk5NGE1NDAxYzljYmFiM2Fk
Yy4uZjE5ODRiNWI4MDg4ZDU0OTY1MjY1ZmZkNDkwNjg0ZjM5ZjQ2N2Y5YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHN0ZGlv
Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lm
ICFPUyhXSU5ET1dTKQpAQCAtNDE2LDcgKzQxNyw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxl
cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVz
CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdEJ1ZmZlcjsKICAgICB1bnNpZ25lZCB0ZXN0cyA9IDA7
CiAgICAgdW5zaWduZWQgZmFpbHVyZXMgPSAwOwotICAgIGNoYXIqIGxpbmVCdWZmZXIgPSBuZXcg
Y2hhcltNYXhMaW5lTGVuZ3RoICsgMV07CisgICAgVmVjdG9yPGNoYXI+IGxpbmVCdWZmZXIoTWF4
TGluZUxlbmd0aCArIDEpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBA
IC00MzUsNyArNDM2LDcgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICAgICAgdW5zaWdu
ZWQgaW50IGxpbmVOdW1iZXIgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiByZWdleHBFcnJvciA9
IG51bGxwdHI7CiAKLSAgICAgICAgd2hpbGUgKChsaW5lUHRyID0gZmdldHMoJmxpbmVCdWZmZXJb
MF0sIE1heExpbmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkgeworICAgICAgICB3aGlsZSAoKGxp
bmVQdHIgPSBmZ2V0cyhsaW5lQnVmZmVyLmRhdGEoKSwgTWF4TGluZUxlbmd0aCwgdGVzdENhc2Vz
RmlsZSkpKSB7CiAgICAgICAgICAgICBsaW5lTGVuZ3RoID0gc3RybGVuKGxpbmVQdHIpOwogICAg
ICAgICAgICAgaWYgKGxpbmVQdHJbbGluZUxlbmd0aCAtIDFdID09ICdcbicpIHsKICAgICAgICAg
ICAgICAgICBsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9ICdcMCc7CkBAIC00ODQsOCArNDg1LDYg
QEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiJXUg
dGVzdHMgcGFzc2VkXG4iLCB0ZXN0cyk7CiAKLSAgICBkZWxldGVbXSBsaW5lQnVmZmVyOwotCiAj
aWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHZtLmR1bXBSZWdFeHBUcmFjZSgpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCmluZGV4
IGNkOTFlZTFhNGUwMzBlOGU4Y2FhMTVjYTdmOWVhYWFhNDEwMmNlY2EuLmE3ZjkyN2Y5YjlmMDVh
MTYxZDA2ZGQ5MDJhMTFlZmNjMjA2MmQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9IZWFwVmVyaWZpZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEhlYXBWZXJpZmllcjo6SGVh
cFZlcmlmaWVyKEhlYXAqIGhlYXAsIHVuc2lnbmVkIG51bWJlck9mR0NDeWNsZXNUb1JlY29yZCkK
ICAgICAsIG1fbnVtYmVyT2ZDeWNsZXMobnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkKQogewogICAg
IFJFTEVBU0VfQVNTRVJUKG1fbnVtYmVyT2ZDeWNsZXMgPiAwKTsKLSAgICBtX2N5Y2xlcyA9IHN0
ZDo6bWFrZV91bmlxdWU8R0NDeWNsZVtdPihtX251bWJlck9mQ3ljbGVzKTsKKyAgICBtX2N5Y2xl
cyA9IG1ha2VVbmlxdWVBcnJheTxHQ0N5Y2xlPihtX251bWJlck9mQ3ljbGVzKTsKIH0KIAogY29u
c3QgY2hhciogSGVhcFZlcmlmaWVyOjpwaGFzZU5hbWUoSGVhcFZlcmlmaWVyOjpQaGFzZSBwaGFz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAppbmRleCA0ODI0
YjFjNmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi5jYzIwMWM0YTI4MGM4OWU3NTFk
NGEzNWU2MTBhZDI2OGU1MTUzZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hl
YXBWZXJpZmllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2VsbExpc3QuaCIKICNp
bmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY0LDYgKzY1LDgg
QEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgR0NDeWNsZSB7
CisgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKwogICAgICAgICBHQ0N5
Y2xlKCkKICAgICAgICAgICAgIDogYmVmb3JlKCJCZWZvcmUgTWFya2luZyIpCiAgICAgICAgICAg
ICAsIGFmdGVyKCJBZnRlciBNYXJraW5nIikKQEAgLTEwNyw3ICsxMTAsNyBAQCBjbGFzcyBIZWFw
VmVyaWZpZXIgewogICAgIGludCBtX2N1cnJlbnRDeWNsZTsKICAgICBpbnQgbV9udW1iZXJPZkN5
Y2xlczsKICAgICBib29sIG1fZGlkUHJpbnRMb2dzIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8R0NDeWNsZVtdPiBtX2N5Y2xlczsKKyAgICBVbmlxdWVBcnJheTxHQ0N5Y2xlPiBtX2N5
Y2xlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNjBhMjViZjM2MzdmYTU5NjYyYTU1Yjk1NmRkYWVkZTgzZWFm
NWNlMC4uZWJhYTU1MTFkMTBkZGY0ZjQzNmI1NjY5ZmJiYmVjMWUwYjE4N2NlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDIsNiArNjAyLDcgQEAKIAkJ
REU1QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNV
dGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRv
Z3JhcGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1
NkY0MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1
ZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZUFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAv
KiBUaHJlYWRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
aHJlYWRHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTFGQjE2MUYw
QTU2OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIw
MEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1NSwxMCArODU2LDEwIEBACiAJCQkJQThBNDcyN0YxNTFBODI1QTAw
NDEyM0ZGIC8qIERpc3BhdGNoUHRyLmggKi8sCiAJCQkJMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5
IC8qIERvbWluYXRvcnMuaCAqLywKIAkJCQlBOEE0NzI4MDE1MUE4MjVBMDA0MTIzRkYgLyogRG91
Ymx5TGlua2VkTGlzdC5oICovLAotCQkJCUZFMDVGQUU2MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1i
UHRyVHJhaXRzLmggKi8sCi0JCQkJQUQ2NTNEQTgyMDA2QjZDMjAwRDgyMEQ3IC8qIER1bWJWYWx1
ZVRyYWl0cy5oICovLAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmNwcCAq
LywKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAorCQkJCUZFMDVG
QUU2MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1iUHRyVHJhaXRzLmggKi8sCisJCQkJQUQ2NTNEQTgy
MDA2QjZDMjAwRDgyMEQ3IC8qIER1bWJWYWx1ZVRyYWl0cy5oICovLAogCQkJCTFBRUE4OEUxMUQ2
QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3QzQzNEExREQyQTRBNzAw
MjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8q
IEV4cG9ydE1hY3Jvcy5oICovLApAQCAtMTA4Myw2ICsxMDg0LDcgQEAKIAkJCQkxNDlFRjE2MjE2
QkJGRTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBG
MzBBREIgLyogVHlwZUNhc3RzLmggKi8sCiAJCQkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8q
IFVuaW9uRmluZC5oICovLAorCQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVB
cnJheS5oICovLAogCQkJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAq
LywKIAkJCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICovLAog
CQkJCTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLywKQEAgLTEwOTIsNyAr
MTA5NCw2IEBACiAJCQkJQThBNDczNzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovLAog
CQkJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlB
OEE0NzM3MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggKi8sCi0JCQkJRkUwNUZBRkUxRkU1
MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJCTBGNjZCMjg4MURDOTdC
QUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgKi8sCiAJCQkJMEY2NkIyODkxREM5N0JBQjAwNEEx
RDNGIC8qIFdhbGxUaW1lLmggKi8sCiAJCQkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdl
YWtQdHIuaCAqLywKQEAgLTExMDEsNiArMTEwMiw3IEBACiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAw
OTQ5OEVCIC8qIFdvcmRMb2NrLmggKi8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtR
dWV1ZS5oICovLAorCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25z
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE0MjQsNyArMTQyNiw2IEBACiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8q
IENsb2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIz
RkYgLyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUx
QTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1
RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQ
dHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4
OSAvKiBDb3VudGluZ0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTMzLDYgKzE1MzQsNyBA
QAogCQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RG
QXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIz
RkYgLyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
QXNzZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAppbmRleCAwNjEw
OTNhY2M5ZTk3OTExMTRmYzZjMTViYTFlMmNhYzMwYjA5YTZlLi4wZDk3M2U2NDcwOTdhYTU5MzI0
MjljNTgxNjliYWFlNjAxMDljNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRp
b25zLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMTUwLDEyICsx
NTAsMTIgQEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF9wcmVmaXgoY29uc3QgY2hh
ciogcHJlZml4LCBjb25zdCBjaGFyKiBmb3JtYXQsIHYKIHsKICAgICBzaXplX3QgcHJlZml4TGVu
Z3RoID0gc3RybGVuKHByZWZpeCk7CiAgICAgc2l6ZV90IGZvcm1hdExlbmd0aCA9IHN0cmxlbihm
b3JtYXQpOwotICAgIGF1dG8gZm9ybWF0V2l0aFByZWZpeCA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hh
cltdPihwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKLSAgICBtZW1jcHkoZm9ybWF0
V2l0aFByZWZpeC5nZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwotICAgIG1lbWNweShmb3Jt
YXRXaXRoUHJlZml4LmdldCgpICsgcHJlZml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7
CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhQcmVmaXgocHJlZml4TGVuZ3RoICsgZm9ybWF0
TGVuZ3RoICsgMSk7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBwcmVmaXgs
IHByZWZpeExlbmd0aCk7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpICsgcHJl
Zml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aFByZWZpeFtw
cmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGhdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2Nv
bW1vbihmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9j
b21tb24oZm9ybWF0V2l0aFByZWZpeC5kYXRhKCksIGFyZ3MpOwogfQogCiBzdGF0aWMgdm9pZCB2
cHJpbnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2
YV9saXN0IGFyZ3MpCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0
ZGVycl93aXRoX3RyYWlsaW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFy
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBmb3JtYXRXaXRoTmV3bGluZSA9
IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmb3JtYXRMZW5ndGggKyAyKTsKLSAgICBtZW1jcHko
Zm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0
b3I8Y2hhcj4gZm9ybWF0V2l0aE5ld2xpbmUoZm9ybWF0TGVuZ3RoICsgMik7CisgICAgbWVtY3B5
KGZvcm1hdFdpdGhOZXdsaW5lLmRhdGEoKSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAgIGZv
cm1hdFdpdGhOZXdsaW5lW2Zvcm1hdExlbmd0aF0gPSAnXG4nOwogICAgIGZvcm1hdFdpdGhOZXds
aW5lW2Zvcm1hdExlbmd0aCArIDFdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihm
b3JtYXRXaXRoTmV3bGluZS5nZXQoKSwgYXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9u
KGZvcm1hdFdpdGhOZXdsaW5lLmRhdGEoKSwgYXJncyk7CiB9CiAKICNpZiBDT01QSUxFUihHQ0Nf
T1JfQ0xBTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIyMGJhZmQzNDhiMzA2MzM4M2FiN2E1
NDJkYzJlZGUxMTFhYzcwODUuLmU5N2QwNjE5M2MwYTFkZmZjODMwZTBjYTdkZTY5ZTUwOWQ2NTk3
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzMsNiArMjMzLDcgQEAgc2V0KFdURl9IRUFE
RVJTCiAgICAgVW5leHBlY3RlZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQu
aAorICAgIFVuaXF1ZUFycmF5LmgKICAgICBVbmlxdWVSZWYuaAogICAgIFVuc2FmZVBvaW50ZXIu
aAogICAgIFZNVGFncy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggN2VjMjFhZTc5ODUwNzRmNjM5ZGY0
YmFjYjAwMzZhZTFmYzdlMDI2YS4uNjY3MmNlNDZkOWYxYzJiNDNhMzkxZTU0YjY2MjQ0M2YwOGY5
MzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAwLDYgKzIwMCwyNiBAQCBzdHJ1Y3QgRmFzdE1h
bGxvYyB7CiAgICAgc3RhdGljIHZvaWQgZnJlZSh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9CiB9
OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVlIHsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKwor
ICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFz
dEZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50
ZXIpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVl
PFRbXT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PFQ+Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0
CisgICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3Zl
X2N2PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtMjA4LDYgKzIyOCw3IEBAIHVzaW5nIFdURjo6
ZmFzdFNldE1heFNpbmdsZUFsbG9jYXRpb25TaXplOwogCiB1c2luZyBXVEY6OkZhc3RBbGxvY2F0
b3I7CiB1c2luZyBXVEY6OkZhc3RNYWxsb2M7Cit1c2luZyBXVEY6OkZhc3RGcmVlOwogdXNpbmcg
V1RGOjppc0Zhc3RNYWxsb2NFbmFibGVkOwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9jOwogdXNpbmcg
V1RGOjpmYXN0RnJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oIGIv
U291cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKaW5kZXggN2Y2YTAyY2VmMzFiMWEyOWZhYzYzODRj
ZDJhY2UzZThmNzUwYzBiYS4uNjZmMTBhYTliZDViYmEwOWFjNTYxMTM2YWQzNWJmNWU4NGU0OGZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvTWFsbG9jUHRyLmgKQEAgLTY2LDYgKzY2LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIE1hbGxvYyA9IEZhc3RNYWxsb2M+IGNsYXNzIE1hbGxvY1B0ciB7CiAgICAgICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKTsKICAgICB9CiAKKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsK
KyAgICB9CisKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gIW1fcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9TdGFja1Nob3QuaAppbmRleCA2ZWZkMDc0ZGUyNzA5ZTYyN2FjZWIzYzgzYjk0
MzMxMzQyZjc1YWZkLi43ZTMyYTM1YmFlM2M3YjU2YThiZTg1YjdkMThkMWU1NTc5YTBiM2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGFja1Nob3QuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtMzcsNyArMzgsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgICAg
ICA6IG1fc2l6ZShzaXplKQogICAgIHsKICAgICAgICAgaWYgKHNpemUpIHsKLSAgICAgICAgICAg
IG1fYXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+KHNpemUpOworICAgICAgICAgICAg
bV9hcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4oc2l6ZSk7CiAgICAgICAgICAgICBpbnQg
aW50U2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBXVEZHZXRCYWNrdHJhY2UobV9hcnJheS5nZXQo
KSwgJmludFNpemUpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbnRTaXplKSA8PSBzaXplKTsKQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgU3RhY2tTaG90
IHsKICAgICAKICAgICBTdGFja1Nob3QmIG9wZXJhdG9yPShjb25zdCBTdGFja1Nob3QmIG90aGVy
KQogICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvaWQqW10+IG5ld0FycmF5ID0gc3Rk
OjptYWtlX3VuaXF1ZTx2b2lkKltdPihvdGhlci5tX3NpemUpOworICAgICAgICBhdXRvIG5ld0Fy
cmF5ID0gbWFrZVVuaXF1ZUFycmF5PHZvaWQqPihvdGhlci5tX3NpemUpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gb3RoZXIubV9zaXplOyBpLS07KQogICAgICAgICAgICAgbmV3QXJyYXlbaV0g
PSBvdGhlci5tX2FycmF5W2ldOwogICAgICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CkBAIC0x
MDYsOCArMTA3LDggQEAgY2xhc3MgU3RhY2tTaG90IHsKICAgICAKIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQqKiBkZWxldGVkVmFsdWVBcnJheSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lk
Kio+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVf
cHRyPHZvaWQqW10+IG1fYXJyYXk7CisKKyAgICBVbmlxdWVBcnJheTx2b2lkKj4gbV9hcnJheTsK
ICAgICBzaXplX3QgbV9zaXplIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvU3lzdGVtRnJlZS5oIGIvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCmluZGV4IDNlZjc1
NjI4MmNmMjBkNDBkOGM2MTg1NDc5NDZkMDRmNWJhZWNlZjUuLjczYjY5M2YwNjgzOGJjYzhjY2M4
M2E0NjhkNGRiYzNhOGFiODJmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZy
ZWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKQEAgLTMxLDYgKzMxLDggQEAg
bmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJl
ZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46
OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6
dHlwZSo+KHBvaW50ZXIpKTsKQEAgLTM5LDExICs0MSwxMiBAQCBzdHJ1Y3QgU3lzdGVtRnJlZSB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZTxUW10+IHsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIi
KTsKKwogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAg
ICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9p
bnRlcikpOwogICAgIH0KLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MjE5NjczYjZhMjlhYjllYzM2OTUyZjk1OWI2N2E3YjkzOTBkNzE1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApAQCAtMCwwICsx
LDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Ym9vbCBpc1RyaXZpYWxseURlc3Ry
dWN0aWJsZSwgdHlwZW5hbWUgVD4gc3RydWN0IFVuaXF1ZUFycmF5TWFrZXI7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVW5pcXVlQXJyYXlNYWtlcjx0cnVlLCBUPiB7CisgICAgdXNp
bmcgUmVzdWx0VHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxUW10sIEZhc3RGcmVlPFRb
XT4+OworCisgICAgc3RhdGljIFJlc3VsdFR5cGUgbWFrZShzaXplX3Qgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIC8vIEMrKyBgbmV3IFRbTl1gIHN0b3JlcyBpdHMgYE5gIHRvIHNvbWV3aGVyZS4gT3Ro
ZXJ3aXNlLCBgZGVsZXRlIFtdYCBjYW5ub3QgZGVzdHJveQorICAgICAgICAvLyB0aGVzZSBOIGVs
ZW1lbnRzLiBCdXQgd2UgZG8gbm90IHdhbnQgdG8gaW5jcmVhc2UgdGhlIHNpemUgb2YgYWxsb2Nh
dGVkIG1lbW9yeS4KKyAgICAgICAgLy8gSWYgaXQgaXMgYWNjZXB0YWJsZSwgd2UgY2FuIGp1c3Qg
dXNlIFZlY3RvcjxUPiBpbnN0ZWFkLiBTbyB0aGlzIFVuaXF1ZUFycmF5PFQ+IG9ubHkKKyAgICAg
ICAgLy8gYWNjZXB0cyB0aGUgdHlwZSBUIHdoaWNoIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4g
VGhpcyBhbGxvd3MgdXMgdG8gc2tpcCBjYWxsaW5nCisgICAgICAgIC8vIGRlc3RydWN0b3JzIGZv
ciBOIGVsZW1lbnRzLiBBbmQgdGhpcyBhbGxvd3MgVW5pcXVlQXJyYXk8VD4gbm90IHRvIHN0b3Jl
IGl0cyBOIHNpemUuCisgICAgICAgIHVzaW5nIFUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRl
bnQ8VD46OnR5cGU7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPFU+Ojp2YWx1ZSwgIiIpOworCisgICAgICAgIC8vIERvIG5vdCB1c2UgcGxhY2Vt
ZW50IG5ldyBsaWtlIGBuZXcgKHN0b3JhZ2UpIFVbc2l6ZV0oKWAuIGBuZXcgVVtzaXplXSgpYCBy
ZXF1aXJlcworICAgICAgICAvLyBsYXJnZXIgc3RvcmFnZSB0aGFuIHRoZSBgc2l6ZW9mKFUpICog
c2l6ZWAgc3RvcmFnZSBzaW5jZSBpdCB3YW50IHRvIHN0b3JlIGBzaXplYAorICAgICAgICAvLyB0
byBzb21ld2hlcmUuCisgICAgICAgIFUqIHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxVKj4oZmFzdE1h
bGxvYyhzaXplb2YoVSkgKiBzaXplKSk7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFU+
Ojpmb3JjZUluaXRpYWxpemUoc3RvcmFnZSwgc3RvcmFnZSArIHNpemUpOworICAgICAgICByZXR1
cm4gUmVzdWx0VHlwZShzdG9yYWdlKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IFVuaXF1ZUFycmF5TWFrZXI8ZmFsc2UsIFQ+IHsKKyAgICAvLyBTaW5jZSB3ZSBk
byBub3Qga25vdyBob3cgdG8gc3RvcmUvcmV0cmlldmUgTiBzaXplIHRvL2Zyb20gYWxsb2NhdGVk
IG1lbW9yeSB3aGVuIGNhbGxpbmcgbmV3IFtdIGFuZCBkZWxldGUgW10sCisgICAgLy8gd2UgdXNl
IG5ldyBbXSBhbmQgZGVsZXRlIFtdIG9wZXJhdG9ycyBzaW1wbHkuIFdlIGNyZWF0ZSBVbmlxdWVB
cnJheUVsZW1lbnQgY29udGFpbmVyIGZvciB0aGUgdHlwZSBULgorICAgIC8vIFVuaXF1ZUFycmF5
RWxlbWVudCBoYXMgbmV3IFtdIGFuZCBkZWxldGUgW10gb3BlcmF0b3JzIGZvciBGYXN0TWFsbG9j
LiBXZSBhbGxvY2F0ZSBVbmlxdWVBcnJheUVsZW1lbnRbXSBhbmQgY2FzdAorICAgIC8vIGl0IHRv
IFRbXS4gV2hlbiBkZWxldGluZywgdGhlIGN1c3RvbSBkZWxldGVyIGNhc3RzIFRbXSB0byBVbmlx
dWVBcnJheUVsZW1lbnRbXSBhbmQgZGVsZXRlcyBpdC4KKyAgICB1c2luZyBVID0gdHlwZW5hbWUg
c3RkOjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlOworCisgICAgY2xhc3MgVW5pcXVlQXJyYXlFbGVt
ZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAg
ICAgICBzdHJ1Y3QgRGVsZXRlciB7CisgICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9p
bnRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgW10gYml0d2lzZV9j
YXN0PFVuaXF1ZUFycmF5RWxlbWVudCo+KHBvaW50ZXIpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgfTsKKworICAgICAgICBVbmlxdWVBcnJheUVsZW1lbnQoKSA9IGRlZmF1bHQ7CisKKyAgICAg
ICAgVSB2YWx1ZSB7IH07CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVKSA9PSBz
aXplb2YoVW5pcXVlQXJyYXlFbGVtZW50KSwgIiIpOworCisgICAgdXNpbmcgUmVzdWx0VHlwZSA9
IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxUW10sIHR5cGVuYW1lIFVuaXF1ZUFycmF5RWxlbWVu
dDo6RGVsZXRlcj47CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBtYWtlKHNpemVfdCBzaXplKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoYml0d2lzZV9jYXN0PFQqPihuZXcgVW5p
cXVlQXJyYXlFbGVtZW50W3NpemVdKCkpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgordXNpbmcgVW5pcXVlQXJyYXkgPSB0eXBlbmFtZSBVbmlxdWVBcnJheU1ha2VyPHN0ZDo6
aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46
OnR5cGU+Ojp2YWx1ZSwgVD46OlJlc3VsdFR5cGU7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitV
bmlxdWVBcnJheTxUPiBtYWtlVW5pcXVlQXJyYXkoc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJu
IFVuaXF1ZUFycmF5TWFrZXI8c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZT46OnZhbHVlLCBUPjo6bWFrZShzaXplKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlQXJyYXk7Cit1c2luZyBX
VEY6Om1ha2VVbmlxdWVBcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggYWJjYWJkMDZjNWJhZWU0NDRjYWVmNWU4
MGY0MGFiNGQ3NmM3YzkyYy4uMjdmYzE0NTNhMGQwYTA2NzJlM2Q3NDFlNzE1OTI5ZjY5NzJkNTU4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93
dGYvVmVjdG9yLmgKQEAgLTY1LDEwICs2NSwxNSBAQCBzdHJ1Y3QgVmVjdG9yRGVzdHJ1Y3Rvcjx0
cnVlLCBUPgogdGVtcGxhdGUgPGJvb2wgbmVlZHNJbml0aWFsaXphdGlvbiwgYm9vbCBjYW5Jbml0
aWFsaXplV2l0aE1lbXNldCwgdHlwZW5hbWUgVD4KIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjsK
IAotdGVtcGxhdGU8Ym9vbCBpZ25vcmUsIHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgVmVjdG9ySW5pdGlh
bGl6ZXI8ZmFsc2UsIGlnbm9yZSwgVD4KK3RlbXBsYXRlPGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQsIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI8ZmFsc2UsIGNhbklu
aXRpYWxpemVXaXRoTWVtc2V0LCBUPgogewogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoVCos
IFQqKSB7fQorCisgICAgc3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBl
bmQpCisgICAgeworICAgICAgICBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBjYW5Jbml0aWFsaXpl
V2l0aE1lbXNldCwgVD46OmZvcmNlSW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CiB9Owog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNzksNiArODQsMTEgQEAgc3RydWN0IFZlY3Rvcklu
aXRpYWxpemVyPHRydWUsIGZhbHNlLCBUPgogICAgICAgICBmb3IgKFQqIGN1ciA9IGJlZ2luOyBj
dXIgIT0gZW5kOyArK2N1cikKICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgY3VyKSBUOwogICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQor
ICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgpAQCAtODgsNiArOTgsMTEgQEAgc3RydWN0IFZlY3RvckluaXRpYWxp
emVyPHRydWUsIHRydWUsIFQ+CiAgICAgewogICAgICAgICBtZW1zZXQoYmVnaW4sIDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGVuZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihiZWdpbikp
OwogICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCog
ZW5kKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CiB9Owog
CiB0ZW1wbGF0ZSA8Ym9vbCBjYW5Nb3ZlV2l0aE1lbWNweSwgdHlwZW5hbWUgVD4KQEAgLTIzMCw2
ICsyNDUsMTEgQEAgc3RydWN0IFZlY3RvclR5cGVPcGVyYXRpb25zCiAgICAgICAgIFZlY3Rvcklu
aXRpYWxpemVyPFZlY3RvclRyYWl0czxUPjo6bmVlZHNJbml0aWFsaXphdGlvbiwgVmVjdG9yVHJh
aXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD46OmluaXRpYWxpemUoYmVnaW4sIGVu
ZCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBU
KiBlbmQpCisgICAgeworICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46
Om5lZWRzSW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhN
ZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUoYmVnaW4sIGVuZCk7CisgICAgfQorCiAgICAgc3Rh
dGljIHZvaWQgbW92ZShUKiBzcmMsIFQqIHNyY0VuZCwgVCogZHN0KQogICAgIHsKICAgICAgICAg
VmVjdG9yTW92ZXI8VmVjdG9yVHJhaXRzPFQ+OjpjYW5Nb3ZlV2l0aE1lbWNweSwgVD46Om1vdmUo
c3JjLCBzcmNFbmQsIGRzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKaW5kZXggYzcxZjM5MjkzNDgxZWNl
ZThkNTVlYjc2YzRjM2I1NWY0MDhmMmYxYS4uNWU2MmM1YWMyZGM5Y2MwMTBiNWU5OTNkYjEzY2Nh
NWU0NjIzZTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApAQCAtNDIxLDggKzQyMSw4IEBAIHZvaWQg
QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1
ZmZlcikKIAogICAgICAgICBvdXRwdXQoMCktPnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZD
aGFubmVscyk7CiAKLSAgICAgICAgbV9zb3VyY2VDaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8
Y29uc3QgZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMpOwotICAgICAgICBtX2Rlc3RpbmF0aW9u
Q2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsK
KyAgICAgICAgbV9zb3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+
KG51bWJlck9mQ2hhbm5lbHMpOworICAgICAgICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBtYWtl
VW5pcXVlQXJyYXk8ZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKSAKICAgICAgICAgICAgIG1f
c291cmNlQ2hhbm5lbHNbaV0gPSBidWZmZXItPmNoYW5uZWxEYXRhKGkpLT5kYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuaAppbmRleCBmNGU2M2E4NTljMDFiNDE1ZTFjZjM0N2YyNzg4ZGRkOGI3YjczYmExLi4z
MGI3OWI3OTMzMzczMTgyMWZhMjU3YTA4ZDEzNTgwZmEyNTkwZGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgK
QEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgIkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5o
IgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA5LDggKzExMCw4IEBAIGNsYXNzIEF1ZGlvQnVm
ZmVyU291cmNlTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewog
ICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9idWZmZXI7CiAKICAgICAvLyBQb2ludGVycyBmb3Ig
dGhlIGJ1ZmZlciBhbmQgZGVzdGluYXRpb24uCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGZs
b2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9hdCpbXT4g
bV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0Kj4gbV9z
b3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9hdCo+IG1fZGVzdGluYXRpb25DaGFu
bmVsczsKIAogICAgIC8vIFVzZWQgZm9yIHRoZSAiZ2FpbiIgYW5kICJwbGF5YmFja1JhdGUiIGF0
dHJpYnV0ZXMuCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggOGNhNGM5NmZlYWY4YmJhZTYxMDgyMTEz
MTM4N2FlMzQ1ZjA3ZGMyNS4uOTVjYzhkM2M3MmFlZTY2MTc1OWM2MGZlNDc4YWQzYTUxMTY1ODVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTQyLDEy
ICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtl
X3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGgp
OwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRW
YXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJvbm1lbnRW
YXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0cmluZyhi
dWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCA5OThhY2U0ZTdkNGRlN2ZhMzUwMWJmYTcxMGFhMTU1
OTBhNWUwZGFiLi4yYzFmZWRkMTJlNDcyOGEyYTIwOTgwNzQ5NWNkOTNjNjdiZDAyNDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9w
ZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2Fz
dHMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNDksNyArMTUwLDcgQEAgY2xhc3MgU3R5bGVSdWxlIGZpbmFsIDogcHVibGljIFN0
eWxlUnVsZUJhc2UgewogICAgIENvbXBpbGVkU2VsZWN0b3ImIGNvbXBpbGVkU2VsZWN0b3JGb3JM
aXN0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZWRT
ZWxlY3RvcnMpCi0gICAgICAgICAgICBtX2NvbXBpbGVkU2VsZWN0b3JzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDb21waWxlZFNlbGVjdG9yW10+KG1fc2VsZWN0b3JMaXN0Lmxpc3RTaXplKCkpOworICAg
ICAgICAgICAgbV9jb21waWxlZFNlbGVjdG9ycyA9IG1ha2VVbmlxdWVBcnJheTxDb21waWxlZFNl
bGVjdG9yPihtX3NlbGVjdG9yTGlzdC5saXN0U2l6ZSgpKTsKICAgICAgICAgcmV0dXJuIG1fY29t
cGlsZWRTZWxlY3RvcnNbaW5kZXhdOwogICAgIH0KICAgICB2b2lkIHJlbGVhc2VDb21waWxlZFNl
bGVjdG9ycygpIGNvbnN0CkBAIC0xNzAsNyArMTcxLDcgQEAgY2xhc3MgU3R5bGVSdWxlIGZpbmFs
IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogICAgIENTU1NlbGVjdG9yTGlzdCBtX3NlbGVjdG9y
TGlzdDsKIAogI2lmIEVOQUJMRShDU1NfU0VMRUNUT1JfSklUKQotICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPENvbXBpbGVkU2VsZWN0b3JbXT4gbV9jb21waWxlZFNlbGVjdG9yczsKKyAgICBt
dXRhYmxlIFVuaXF1ZUFycmF5PENvbXBpbGVkU2VsZWN0b3I+IG1fY29tcGlsZWRTZWxlY3RvcnM7
CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxl
ZFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCmlu
ZGV4IGE4MzNkYmEwMmZmMzNkMWRmNjMwOGUxODg4MDJiYzcwODhlNzY2OTEuLjA5OWFjOTNiNzU0
ZDIxNDgxOTc3MDMwOGJlYmJmMzM4OTMzMjU2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Nv
bXBpbGVkU2VsZWN0b3IuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBTZWxlY3RvckNvbXBpbGF0
aW9uU3RhdHVzIHsKIH07CiAKIHN0cnVjdCBDb21waWxlZFNlbGVjdG9yIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyBz
dGF0dXM7CiAgICAgSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZjsKICNpZiBkZWZp
bmVkKENTU19TRUxFQ1RPUl9KSVRfUFJPRklMSU5HKSAmJiBDU1NfU0VMRUNUT1JfSklUX1BST0ZJ
TElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyY2RhYzkxMjJlZjllYTc3Mjc5YmNkYzBkNjNhNGVh
ZGZlOTc4ZWRkLi4wMjk3Y2UwYWQyMzU0Y2ZhZTgyMjlmYWIzZThlZTUxZDg3OTM2OGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtOTksNiArOTksNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAKQEAgLTE1NTMsNyArMTU1NCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVs
CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9FTlVNLCAiY29weVRleFN1YkltYWdlMkQiLCAiVGV4dHVyZSBoYXMgdW5rbm93biBpbnRlcm5h
bCBmb3JtYXQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOworICAgICAgICBVbmlxdWVBcnJheTx1
bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICAgICAgR0MzRGVudW0gZXJyb3IgPSBtX2Nv
bnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdo
dCwgbV91bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsKQEAgLTE1NjEsNyArMTU2Miw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQgZGltZW5zaW9ucyIpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHplcm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7CisgICAgICAgICAgICB6ZXJv
ID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHNpemUpOwogICAgICAgICAgICAgaWYg
KCF6ZXJvKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJvdXQgb2YgbWVtb3J5
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTc2MSw3ICs1NzYyLDcgQEAgc3RkOjpv
cHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzaW11bGF0ZVZlcnRleEF0
dHJpYjAoR0MzRHVpbnQgbnUKICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzJdICE9
IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCiAgICAgICAgICAgICB8fCBhdHRyaWJWYWx1
ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1ZVszXSkpIHsKIAotICAgICAg
ICBhdXRvIGJ1ZmZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDM0RmbG9hdFtdPihidWZmZXJT
aXplKTsKKyAgICAgICAgYXV0byBidWZmZXJEYXRhID0gbWFrZVVuaXF1ZUFycmF5PEdDM0RmbG9h
dD4oYnVmZmVyU2l6ZSk7CiAgICAgICAgIGZvciAoR0MzRHVpbnQgaWkgPSAwOyBpaSA8IG51bVZl
cnRleCArIDE7ICsraWkpIHsKICAgICAgICAgICAgIGJ1ZmZlckRhdGFbaWkgKiA0XSA9IGF0dHJp
YlZhbHVlLnZhbHVlWzBdOwogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDQgKyAxXSA9IGF0
dHJpYlZhbHVlLnZhbHVlWzFdOwpAQCAtNTkwNywxNSArNTkwOCwxNCBAQCBTdHJpbmcgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25zdCBTdHJpbmcmIHRleHQpIGNv
bnN0CiB9CiAKIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6
OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAgIDogbV9idWZmZXJzKHN0ZDo6
bWFrZV91bmlxdWU8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPltdPihjYXBhY2l0eSkpCi0g
ICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgIDogbV9idWZmZXJzKGNhcGFjaXR5KQogewog
fQogCiBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZm
ZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBpbnQgaTsK
LSAgICBmb3IgKGkgPSAwOyBpIDwgbV9jYXBhY2l0eTsgKytpKSB7CisgICAgc2l6ZV90IGk7Cisg
ICAgZm9yIChpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7ICsraSkgewogICAgICAgICBJbWFn
ZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ldLmdldCgpOwogICAgICAgICBpZiAoIWJ1ZikKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTkzMCw3ICs1OTMwLDcgQEAgSW1hZ2VCdWZmZXIqIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNv
bnN0IEkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHRlbXAgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlmICghdGVtcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgaSA9IHN0ZDo6bWluKG1fY2FwYWNpdHkgLSAxLCBpKTsKKyAg
ICBpID0gc3RkOjptaW4obV9idWZmZXJzLnNpemUoKSAtIDEsIGkpOwogICAgIG1fYnVmZmVyc1tp
XSA9IFdURk1vdmUodGVtcCk7CiAKICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ld
LmdldCgpOwpAQCAtNTkzOCw5ICs1OTM4LDkgQEAgSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKGNvbnN0IEkKICAg
ICByZXR1cm4gYnVmOwogfQogCi12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUlt
YWdlQnVmZmVyQ2FjaGU6OmJ1YmJsZVRvRnJvbnQoaW50IGlkeCkKK3ZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udChzaXplX3Qg
aWR4KQogewotICAgIGZvciAoaW50IGkgPSBpZHg7IGkgPiAwOyAtLWkpCisgICAgZm9yIChzaXpl
X3QgaSA9IGlkeDsgaSA+IDA7IC0taSkKICAgICAgICAgbV9idWZmZXJzW2ldLnN3YXAobV9idWZm
ZXJzW2ktMV0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKaW5kZXggNmEzNTc0Yjg4ZjNmNmEwZDdmNGIwMTRl
N2FmYjc4MGM1ZDcyOWM0OS4uZDJhMzkxOTU5ZGJjMTRlZWNhZmIwYTBlMDBlYjdlODg5NjYyZjdi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuaApAQCAtNTE3LDkgKzUxNyw4IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UgOiBwdWJsaWMgR1BVQmFzZWRDYW52YXNSZW5kZXJpbmdDb250ZXh0LCBwcml2
YXRlCiAgICAgICAgIC8vIFRoZSBwb2ludGVyIHJldHVybmVkIGlzIG93bmVkIGJ5IHRoZSBpbWFn
ZSBidWZmZXIgbWFwLgogICAgICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIoY29uc3QgSW50
U2l6ZSYgc2l6ZSk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KGlu
dCBpZHgpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPltdPiBtX2J1ZmZlcnM7Ci0gICAgICAgIGludCBtX2NhcGFjaXR5OworICAgICAgICB2b2lk
IGJ1YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCk7CisgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+PiBtX2J1ZmZlcnM7CiAgICAgfTsKICAgICBMUlVJbWFnZUJ1ZmZlckNh
Y2hlIG1fZ2VuZXJhdGVkSW1hZ2VDYWNoZSB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0
aC5jcHAKaW5kZXggZDc5ZTAzOTljNDg4MWU0ZjlmZWY2M2NmZmI0ZWE4ZTA3ZjVlYjI4MC4uNmM3
OWYyNzkxYzUxYjZkNDgzYTc2MTZmMTliMmE2MjUyOWJhZTY1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtd
PiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgc3Ry
ID0gc3RyLT5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVy
KCpzdHIsICcgJykgKyAxOwotICAgIGF1dG8gciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVuZ3RoW10+
KGxlbik7CisgICAgYXV0byByID0gbWFrZVVuaXF1ZUFycmF5PExlbmd0aD4obGVuKTsKIAogICAg
IGludCBpID0gMDsKICAgICB1bnNpZ25lZCBwb3MgPSAwOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIGludCYgbGVuKQogICAgIH0KIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKCpzdHIsICcs
JykgKyAxOwotICAgIGF1dG8gciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVuZ3RoW10+KGxlbik7Cisg
ICAgYXV0byByID0gbWFrZVVuaXF1ZUFycmF5PExlbmd0aD4obGVuKTsKIAogICAgIGludCBpID0g
MDsKICAgICB1bnNpZ25lZCBwb3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCA1
N2NlMGNlNzhiYjNlZTEzYzIzY2ZiNjE5NzEwYjA2N2IyNGMwYWYxLi42NGEwOGU4YzFiNGZjOTZl
NTNjYzcyYmViNmVjODRiMGM3NTdhNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0x
MzgsOCArMTM5LDggQEAgc3RydWN0IExlbmd0aCB7CiAvLyBCbGVuZCB0d28gbGVuZ3RocyB0byBw
cm9kdWNlIGEgbmV3IGxlbmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gVXNlZCBmb3IgYW5p
bWF0aW9uLgogTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0
bywgZG91YmxlIHByb2dyZXNzKTsKIAotc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdDb29y
ZHNBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7Ci1zdGQ6OnVuaXF1ZV9wdHI8TGVu
Z3RoW10+IG5ld0xlbmd0aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKK1VuaXF1
ZUFycmF5PExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW5ndGgp
OworVW5pcXVlQXJyYXk8TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQm
IGxlbmd0aCk7CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChMZW5ndGhUeXBlIHR5cGUpCiAgICAg
OiBtX2ludFZhbHVlKDApLCBtX2hhc1F1aXJrKGZhbHNlKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxv
YXQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5h
bWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmNwcAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVjMTcz
MjZhZWYwLi5iMjU1MThkODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5j
cHAKQEAgLTI3NSw4ICsyNzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVy
T2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RGaWx0
ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsK
ICAgICB9CiAKLSAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBm
bG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0g
c3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9zb3Vy
Y2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5l
bHMpOworICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9hdCo+
KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5l
bHMobnVtYmVyT2ZDaGFubmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZD
aGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFt
aWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yLmgKaW5kZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJhZWJk
NS4uZjcxNmNlZjczYTM1ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNpbmNs
dWRlICJaZXJvUG9sZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
QXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAgY2xh
c3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Q
b2xlRmlsdGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFy
cmF5PGNvbnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9h
dCo+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBh
cmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXpl
ZEZyZXF1ZW5jeSAvKiAwIC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJz
KGZsb2F0IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0MTAx
ZjY2YjVmYzA5YWEzZWZiMTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2MxYWRj
Y2JmZWFjMDRkNTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
RkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5o
CkBAIC00NCw2ICs0NCw3IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUgewog
I2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBH
c3RGRlRGMzIqIG1faW52ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29t
cGxleFtdPiBtX2NvbXBsZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+
IG1fY29tcGxleERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVk
aW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1F
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9G
RlRGcmFtZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3Ry
ZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4ZTk1
ZjJkMmI4MjdkMTU5ZTMxOTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBlMzJh
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9G
RlRGcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAgICA6
IG1fRkZUU2l6ZShmZnRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obG9nMihmZnRTaXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlx
dWU8R3N0RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQor
ICAgICwgbV9jb21wbGV4RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5w
YWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRG
RlREYXRhU2l6ZShtX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFT
aXplKG1fRkZUU2l6ZSkpCiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSgp
CiBGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9GRlRT
aXplKGZyYW1lLm1fRkZUU2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZU
U2l6ZSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21w
bGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhE
YXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXpl
KG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1l
Lm1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUu
bV9GRlRTaXplKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zvcm1hdENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9ybWF0Q29udmVydGVyLmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2OTli
NTU0MGY1My4uOWQ4MjA0YzhhMjQ2NjBmYzc3MmIwY2Y3YjU2NTA4N2EzNDUxNWFhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0Q29u
dmVydGVyIHsKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9u
ZW50cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9
IDQ7Ci0gICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTx1aW50OF90W10+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRl
c1BlckNvbXBvbmVudCk7CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMg
KiBNYXhCeXRlc1BlckNvbXBvbmVudCk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRl
cm1lZGlhdGVTcmNEYXRhLmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZv
cm1hdENvbnZlcnRlciB7CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBp
bnQgbV9zcmNTdHJpZGUsIG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwor
ICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVm
NzQ0N2NlNDc5MzQ4NmE3NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3
Nzg0YzhiMDM0MDg0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNDYsNyArMTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0
RGF0YUZvcm1hdChHQzNEZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxp
Z25tZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09
IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25l
ZCBjaGFyW10+IHplcm87CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAg
ICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNp
emU7CiAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9y
bWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRy
KTsKQEAgLTE1NCw3ICsxNTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJE
UmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJb
XT4oc2l6ZSk7CisgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4o
c2l6ZSk7CiAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJm
M2NmYS4uMmU3NDg3OWQ4ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERh
dGE7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4
RGF0YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRh
OwogI2VuZGlmCiAgICAgICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21T
b3VyY2UgbV9pbWFnZUh0bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRl
eCA3MjlmODQzZGY5N2JlZWJjYjA0YWEyZTk2NjEzYTM1MzY4MGVjN2Q2Li5hMmVlZjQyYmVmZmI4
MzgwZjg3YWFkN2M1YzAwOGEzZjdkNzc2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5o
PgogCiAjaWZkZWYgREVCVUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0
RGlydHlSZWN0cyhIV05EIHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0K
IAogICAgIERXT1JEIGRhdGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwg
MCk7Ci0gICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZCBjaGFyW10+KGRhdGFTaXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5p
cXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRh
dGEgPSByZWludGVycHJldF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsK
ICAgICBpZiAoITo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25E
YXRhKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgx
NTIyYWYxMWIyMWMxNzc3NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlm
MzUwNGRmMWQ5ZmVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CkBAIC0zNDAsNyArMzQxLDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgp
IC8gMjsKIAogICAgIHVpbnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
dWludDhfdFtdPiB0bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAg
ICBhdXRvIHRtcCA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9w
ID0gc291cmNlICsgKGkgKiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2
ZjRlM2I2YWFhN2RjYzFiMTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi4wNzFkY2NjOTQxMjVmZjdhNWE4
OTQ4NWQ1NGJmOTI5MTM4N2E3YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcg
KzQ3OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHBy
ZW11bHRpcGx5IHRoZSBhbHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJl
ZmVyIHRvIG1hbm51YWxseSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBS
R0JBOCBmb3JtYXRzIGluc3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsK
LSAgICAgICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90
W10+KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxp
emVkUkdCQThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1faW1hZ2VXaWR0aCAqIG1f
aW1hZ2VIZWlnaHQgKiA0KTsKICAgICAgICAgY29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxEYXRhKTsKICAgICAgICAg
dWludDhfdCogZGVzdGluYXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CiAgICAg
ICAgIGNvbnN0IHB0cmRpZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBz
aXplb2YodWludDE2X3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L1RleHR1cmUuY3BwCmluZGV4IGFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJi
NTI2NDYuLjg2OTgxMzY0NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNzAsNyArMTcxLDcgQEAgdm9pZCBUZXh0
dXJlOjp1cGRhdGVTdWJSZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVj
dCkKICAgICBpbnQgdGVtcEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRo
ZSBzbWFsbGVyIG9mIHRoZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0U2FuaXRp
emVkCiAgICAgICAgIHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpLCBt
X3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAqCiAg
ICAgICAgIHN0ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxl
cy5ib3JkZXJUZXhlbHMoKSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOwotICAgIGF1
dG8gdGVtcEJ1ZmYgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KHRlbXBCdWZmU2l6ZSk7
CisgICAgYXV0byB0ZW1wQnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZT
aXplKTsKIAogICAgIGZvciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1go
KSAqIG1fdGlsZXMubnVtVGlsZXNZKCk7IHRpbGUrKykgewogICAgICAgICBpbnQgeEluZGV4ID0g
dGlsZSAlIG1fdGlsZXMubnVtVGlsZXNYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBkZjBhMGI4NTVlM2Q0MDBiMDU0OTdjMzg2YTlkYmI4
ZTZkYjcyM2UxLi41NDcyNzRmZmE2OGE1MmU0NWUwZDcyZDI4YjJhMTM5YzZmNWIwYjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU0LDYg
KzU0LDcgQEAKICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgaW50IHRvdGFsQnl0ZXMgPSB0b3Rh
bEJ5dGVzQ2hlY2tlZC51bnNhZmVHZXQoKTsKIAotICAgIGF1dG8gcGl4ZWxzID0gc3RkOjptYWtl
X3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHRvdGFsQnl0ZXMpOworICAgIGF1dG8gcGl4ZWxzID0g
bWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcGl4
ZWxzKQogICAgICAgICByZXR1cm47CiAKQEAgLTY2OCwxMSArNjY5LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAg
ICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8g
aW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgICAgIDo6Z2xH
ZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAg
ICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obGVuZ3RoKTsKKyAgICAgICAgOjpnbEdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICAgICAgUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICAgICAgZW50cnku
bG9nID0gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkp
OworICAgICAgICBlbnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0
cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogICAgIH0KIAogICAgIGlmIChjb21waWxlU3RhdHVz
ICE9IEdMX1RSVUUpIHsKQEAgLTg1MSwxOCArODUyLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZUF0dHJpYkltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWlu
dCBpCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6
ZSA9IDA7CiAgICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRF
X01BWF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdMY2hhcltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJ
QlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAgVmVjdG9yPEdM
Y2hhcj4gbmFtZShtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3Ro
ID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpn
bEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVM
ZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAm
dHlwZSwgbmFtZS5kYXRhKCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAotICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5h
bWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZ2V0
KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1i
b2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1l
LmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcg
dW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1O
YW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVk
IGlzIG1hcHBpbmcgYWN0aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dy
YW0sIGluZGV4LCB1bmlmb3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKIApAQCAtODk4LDE4ICs4OTksMTggQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBH
QzNEdWludAogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6
ZSk7CiAKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlm
b3JtU2l6ZSk7IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0
ZXJtaW5hdGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8g
R0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgog
ICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xl
bnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBt
YXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7Cisg
ICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAm
bmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVu
Z3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFt
ZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9S
TSwgU3RyaW5nKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxO
YW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklG
T1JNLCBTdHJpbmcobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsKICAgICAKICNpZm5kZWYgTkRF
QlVHCi0gICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpOworICAg
IFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdl
YkdMLCAiUHJvZ3JhbSAlZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0
byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdp
bmFsTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIApAQCAtMTY5OSwxNCArMTcwMCwx
NCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6
ZWkgc2l6ZSA9IDA7Ci0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4o
bGVuZ3RoKTsKLSAgICA6OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6
ZSwgaW5mby5nZXQoKSk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6
Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7
CiAKICAgICBHQzNEc2l6ZWkgY291bnQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJd
OwogICAgIGdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwog
Ci0gICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhp
bmZvLmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291
bnQsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTE3NzAsMTEgKzE3NzEsMTEgQEAgU3RyaW5nIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVy
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAg
ICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6
Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7Cisg
ICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9n
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVk
SW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgIHJldHVybiBnZXRV
bm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwog
fQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNE
T2JqZWN0IHNoYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3Bw
CmluZGV4IGFiZWRmNTM1NTNkZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLjJlNmM1MmM2
MzQ4OTY2NDlhZjVjNmE0NDQ3Yjk4ZjEwYTNkMjQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmNwcApAQCAtNDUwLDEyICs0NTAsMTIgQEAgc3RhdGljIENTdHJp
bmcgZ2V0U2hhZGVyTG9nKEdMdWludCBzaGFkZXIpCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hh
cltdPihsb2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAg
ICBHTHNpemVpIGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIs
IGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAg
IHNpemVfdCBzdHJpbmdMZW5ndGggPSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1
cm4geyBpbmZvLmdldCgpLCBzdHJpbmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEo
KSwgc3RyaW5nTGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1
aW50IHByb2dyYW0pCkBAIC00NjUsMTIgKzQ2NSwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRQcm9n
cmFtTG9nKEdMdWludCBwcm9ncmFtKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9n
TGVuZ3RoKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXpl
aSBpbmZvTGVuZ3RoID0gMDsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xl
bmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2co
cHJvZ3JhbSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6
ZV90IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7
IGluZm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBz
dHJpbmdMZW5ndGggfTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNw
cAppbmRleCAzZWRhZDE4MjFlYzQ2ZGNiNDBmZTUwNjJjYTI4OTRmYjQ1OGZkN2ZlLi5mMGUyNTgw
OTIwNTM4NTRjZDUxNTk2YzdlMDcxNzU5ZWY3Y2JmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFE
aXJlY3QyRC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9V
aW50OENsYW1wZWRBcnJheS5oPgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTEzNCw3ICsxMzUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0
YShjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpYwogICAg
IHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKICAgICBj
b25zdCB1aW50OF90KiBzcmNSb3dzID0gc291cmNlLmRhdGEoKSArIChvcmlnaW55ICogc3JjQnl0
ZXNQZXJSb3cgKyBvcmlnaW54ICogNCkudW5zYWZlR2V0KCk7CiAKLSAgICB1aW50OF90KiByb3cg
PSBuZXcgdWludDhfdFtzcmNCeXRlc1BlclJvd107CisgICAgYXV0byByb3cgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDhfdD4oc3JjQnl0ZXNQZXJSb3cpOwogCiAgICAgZm9yIChpbnQgeSA9IDA7IHkg
PCBoZWlnaHQudW5zYWZlR2V0KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHdpZHRoLnVuc2FmZUdldCgpOyB4KyspIHsKQEAgLTE0NiwxNyArMTQ3LDE1IEBAIHZvaWQgSW1h
Z2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFs
cGhhUHJlbXVsdGlwbGljCiAgICAgICAgICAgICAgICAgcm93W2Jhc2V4ICsgMl0gPSAoc3JjUm93
c1tiYXNleCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1OwogICAgICAgICAgICAgICAgIHJvd1ti
YXNleCArIDNdID0gYWxwaGE7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4ocm93ICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07CisgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHJvdy5nZXQoKSArIGJhc2V4KVswXSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwogICAgICAgICB9CiAKICAg
ICAgICAgRDJEMV9SRUNUX1UgZHN0UmVjdCA9IEQyRDE6OlJlY3RVKGRlc3RQb2ludC54KCksIGRl
c3RQb2ludC55KCkgKyB5LCBkZXN0UG9pbnQueCgpICsgc2l6ZS53aWR0aCgpLCBkZXN0UG9pbnQu
eSgpICsgeSArIDEpOwotICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJl
Y3QsIHJvdywgc3JjQnl0ZXNQZXJSb3cpOworICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21N
ZW1vcnkoJmRzdFJlY3QsIHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwogICAgICAgICBBU1NF
UlQoU1VDQ0VFREVEKGhyKSk7CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsK
ICAgICB9Ci0KLSAgICBkZWxldGVbXSByb3c7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmIzZmQyZDE5YjQ3Yzc2OGIxYzAyYTEz
Zjg2MzIxN2I0MTg3NDFhNS4uYWNjMjFhZGMxOWUzMjcxMDAwMmNkYWUyZWUzYjdlNDI4Mjc5MGNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgPHBuZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIGRlZmluZWQoUE5HX0xJ
QlBOR19WRVJfTUFKT1IpICYmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUlOT1IpICYmIChQTkdf
TElCUE5HX1ZFUl9NQUpPUiA+IDEgfHwgKFBOR19MSUJQTkdfVkVSX01BSk9SID09IDEgJiYgUE5H
X0xJQlBOR19WRVJfTUlOT1IgPj0gNCkpCiAjZGVmaW5lIEpNUEJVRihwbmdfcHRyKSBwbmdfam1w
YnVmKHBuZ19wdHIpCkBAIC0xMjAsNyArMTIxLDYgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewog
ICAgICAgICAsIG1fY3VycmVudEJ1ZmZlclNpemUoMCkKICAgICAgICAgLCBtX2RlY29kaW5nU2l6
ZU9ubHkoZmFsc2UpCiAgICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkKLSAgICAgICAgLCBtX2lu
dGVybGFjZUJ1ZmZlcigwKQogICAgIHsKICAgICAgICAgbV9wbmcgPSBwbmdfY3JlYXRlX3JlYWRf
c3RydWN0KFBOR19MSUJQTkdfVkVSX1NUUklORywgMCwgZGVjb2RpbmdGYWlsZWQsIGRlY29kaW5n
V2FybmluZyk7CiAgICAgICAgIG1faW5mbyA9IHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QobV9wbmcp
OwpAQCAtMTQzLDggKzE0Myw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICAgICAgaWYg
KG1fcG5nICYmIG1faW5mbykKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB6ZXJvIHRoZSBwb2lu
dGVycy4KICAgICAgICAgICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZtX3BuZywgJm1faW5m
bywgMCk7Ci0gICAgICAgIGRlbGV0ZVtdIG1faW50ZXJsYWNlQnVmZmVyOwotICAgICAgICBtX2lu
dGVybGFjZUJ1ZmZlciA9IDA7CisgICAgICAgIG1faW50ZXJsYWNlQnVmZmVyLnJlc2V0KCk7CiAg
ICAgICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCkBAIC0xODgsOCArMTg3LDggQEAgY2xh
c3MgUE5HSW1hZ2VSZWFkZXIgewogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkg
eyBtX2hhc0FscGhhID0gaGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNBbHBoYTsgfQogCi0gICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlcigpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJsYWNlQnVmZmVyOyB9Ci0gICAgdm9pZCBjcmVhdGVJbnRlcmxh
Y2VCdWZmZXIoaW50IHNpemUpIHsgbV9pbnRlcmxhY2VCdWZmZXIgPSBuZXcgcG5nX2J5dGVbc2l6
ZV07IH0KKyAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcmxhY2VCdWZmZXIuZ2V0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUludGVybGFjZUJ1ZmZlcihp
bnQgc2l6ZSkgeyBtX2ludGVybGFjZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxwbmdfYnl0ZT4o
c2l6ZSk7IH0KIAogcHJpdmF0ZToKICAgICBwbmdfc3RydWN0cCBtX3BuZzsKQEAgLTE5OCw3ICsx
OTcsNyBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QnVm
ZmVyU2l6ZTsKICAgICBib29sIG1fZGVjb2RpbmdTaXplT25seTsKICAgICBib29sIG1faGFzQWxw
aGE7Ci0gICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PHBu
Z19ieXRlPiBtX2ludGVybGFjZUJ1ZmZlcjsKIH07CiAKIFBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1h
Z2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGZlODI5MGU5NTc1NmJkMTQyNWFhOWYwOGI5MTUyY2JmNjcxNTllN2YuLmEy
OWU1NjY4MTE4YTQ2OTU5OTBhOTEyNzgzMTVhNTQyMGY1YjhjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJh
eS5oPgogCiAjaWYgVVNFKFdFQlApCiAKQEAgLTE4NSw3ICsxODYsNyBAQCB2b2lkIFdFQlBJbWFn
ZURlY29kZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBXZWJQRGVtdXhlciogZGVt
dXhlcikKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zdHJpZGUgPSB3ZWJwRnJhbWUud2lkdGgg
KiBzaXplb2YoUkdCQTMyKTsKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplID0gZGVjb2Rl
ckJ1ZmZlci51LlJHQkEuc3RyaWRlICogd2VicEZyYW1lLmhlaWdodDsKICAgICBkZWNvZGVyQnVm
ZmVyLmlzX2V4dGVybmFsX21lbW9yeSA9IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVk
IGNoYXJbXT4gcChuZXcgdWludDhfdFtkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplXSgpKTsKKyAg
ICBhdXRvIHAgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oZGVjb2RlckJ1ZmZlci51LlJHQkEu
c2l6ZSk7CiAgICAgZGVjb2RlckJ1ZmZlci51LlJHQkEucmdiYSA9IHAuZ2V0KCk7CiAgICAgaWYg
KCFkZWNvZGVyQnVmZmVyLnUuUkdCQS5yZ2JhKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsLmgKaW5kZXggMzQyYmU1NjliNDczMmYyYzk2ZDVkMGNjNWFlY2Yx
MDdjY2EzMmJiMi4uNWM0Y2EyOTE1ZmMxODRkZmVhZTUzMmVlY2FkNjlkNTQxY2JmMzAyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8d3Rm
L1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgIHZvaWQgZGlkT3BlblNvY2tldCgp
OwogCiAgICAgc3RydWN0IFNvY2tldERhdGEgewotICAgICAgICBTb2NrZXREYXRhKHN0ZDo6dW5p
cXVlX3B0cjxjaGFyW10+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICBTb2NrZXRE
YXRhKFVuaXF1ZUFycmF5PGNoYXI+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICB7
CiAgICAgICAgICAgICBkYXRhID0gV1RGTW92ZShzb3VyY2UpOwogICAgICAgICAgICAgc2l6ZSA9
IGxlbmd0aDsKQEAgLTg5LDcgKzkwLDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6
IHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgICAgICAgICAgb3RoZXIuc2l6ZSA9IDA7
CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRhOworICAg
ICAgICBVbmlxdWVBcnJheTxjaGFyPiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsK
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA2ZmNi
ZjgzNzhjYTM3NWNmOTIxYWRmOWFhNjRhY2U1NWFkMmM2ZGMxLi41YTQ1ZGQ4ZGI1MmRhOGJmMWVm
NWJhZWY0NGIxMTVkZTc2NTcyMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3Vy
bC5jcHAKQEAgLTQ0LDkgKzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gY3JlYXRlQ29weShjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoKQorc3RhdGljIFVuaXF1ZUFycmF5PGNoYXI+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjb3B5KG5l
dyBjaGFyW2xlbmd0aF0pOworICAgIGF1dG8gY29weSA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihs
ZW5ndGgpOwogICAgIG1lbWNweShjb3B5LmdldCgpLCBkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0
dXJuIGNvcHk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
cmVhZERhdGEoQ1VSTCogY3VybEhhbmRsZSkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
IAogICAgIGNvbnN0IHNpemVfdCBidWZmZXJTaXplID0gMTAyNDsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2hhcltdPiBkYXRhKG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKKyAgICBhdXRvIGRhdGEgPSBt
YWtlVW5pcXVlQXJyYXk8Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IGJ5dGVzUmVhZCA9
IDA7CiAKICAgICBDVVJMY29kZSByZXQgPSBjdXJsX2Vhc3lfcmVjdihjdXJsSGFuZGxlLCBkYXRh
LmdldCgpLCBidWZmZXJTaXplLCAmYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CmluZGV4IGUwYThmOWQ0MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEz
NmYxMzI0ZTkyMDI5YWNiZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaApAQCAtMzgsNiArMzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJlYW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1Ymxp
YyBTb2NrZXRTdHJlYW1IYW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFt
PiBtX291dHB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJj
ZTsKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Y2hhcltdPiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9y
ZWFkQnVmZmVyOwogCiAgICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZl
cjsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQg
KiAxMDI0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNk
YjkxYzE3NmUyMmI2NDYwN2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3
OWQyYjIyNGJkMzA2OTU3NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAu
Y3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25u
ZWN0ZWQoR1JlZlB0cjxHSU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92
ZShzdHJlYW0pOwogICAgIG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFN
KGdfaW9fc3RyZWFtX2dldF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9p
bnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkp
OwotICAgIG1fcmVhZEJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZF
Ul9TSVpFKTsKKyAgICBtX3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9C
VUZGRVJfU0laRSk7CiAKICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJl
YW0uZ2V0KCksIG1fcmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNv
dXJjZVByaW9yaXR5OjpBc3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0
ZDEzOGVmZDlmM2I2MTViN2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUx
NzY1ODI2YWJkNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9n
Z2luZ1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4u
Y3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAo
IWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2lu
Z0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdl
dEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIu
ZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRh
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2
MDViNjdkMGJiMzEyMDczMzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5Zjll
Njg0OTliYWM1ZjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
aW4vU3lzdGVtUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2luL1N5c3RlbVByb3h5V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dz
U3lzdGVtUHJveHk6OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJM
ZW4sIGludCogcG9ydCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8VENIQVJbXT4gdEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxl
bik7Ci0gICAgaWYgKCF0UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFZlY3RvcjxUQ0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxU
Q0hBUj4gdEhvc3QoYnVmZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7
CiAgICAgSEtFWSBrZXk7CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJv
eHk6OmdldFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCog
cG8KICAgICAgICAgTCJQcm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0
eXBlLAotICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUp
dFJlZ0J1ZmZlci5kYXRhKCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJS
T1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5
U3RyaW5nKHRSZWdCdWZmZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQor
ICAgIGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgp
LCBidWZmZXJMZW4sIHBvcnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21i
cyhidWZmZXIsIHRIb3N0LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwg
dEhvc3QuZGF0YSgpLCBidWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAn
OwogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNj
ODYzN2Q0NjFjODc0NjQ1Li4zYzQ2Mzk0ZTJlM2QzNDc1MmJiYzY2ZDFhNTUyNTJhYmJjMzcwODVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtMTQzLDExICsxNDMsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVz
c2FnZSgpCiAKICAgICBzaXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQgPSAwOwog
ICAgIHNpemVfdCBhdHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQo
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87
CisgICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50Q291
bnQpOwogCiAgICAgaWYgKGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5m
byA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsK
LSAgICAgICAgbWVtY3B5KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9m
KEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lbWNweShhdHRh
Y2htZW50SW5mby5kYXRhKCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICog
YXR0YWNobWVudENvdW50KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1l
bnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKSB7CkBAIC00MTcsNyArNDE2LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAg
ICBpb3ZbMF0uaW92X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8p
OwogICAgIGlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxBdHRhY2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBWZWN0b3I8
QXR0YWNobWVudEluZm8+IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRh
Y2htZW50RkRCdWZmZXI7CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2Uu
YXR0YWNobWVudHMoKTsKQEAgLTQ0NCw3ICs0NDMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRP
dXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQ
dHIgPSByZWludGVycHJldF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0K
IAotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudElu
Zm9bXT4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8ucmVzaXpl
KGF0dGFjaG1lbnRzLnNpemUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAg
ICAgICAgYXR0YWNobWVudEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpA
QCAtNDY2LDcgKzQ2NSw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5p
eE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAg
ICAgICBpb3ZbaW92TGVuZ3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmRhdGEoKTsKICAg
ICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBh
dHRhY2htZW50cy5zaXplKCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggNmRlMWJhYjg1OTA3N2Y4MTcw
YzhiZDJiZmE1MjE5NWZhYTcxYjcyZC4uZDA2MzhkMzEzYTZlN2M5MmViODI0MTQ4MjQ4OTNkYjY2
NTc2YmQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKQEAg
LTQyLDEyICs0MiwxMiBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3Ro
KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3Rk
OjptYWtlX3VuaXF1ZTxjaGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihs
ZW5ndGgpOwogCi0gICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJv
bm1lbnRWYXJpYWJsZSwgYnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJv
bm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCks
IGxlbmd0aCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0
cmluZyhidWZmZXIuZ2V0KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oCmluZGV4IGU1MjdmODE1MjU3YzA4NzA5Y2I0ZmExNWI5YjA3OTU5MjFjMDEzZjkuLjFm
NzY4MDg1NjRlZDRkYjZlNWMwY2UxZWI2MzAyMTE3MWU5MGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtODYsOCArODcsNyBAQCBjbGFzcyBT
YW5kYm94RXh0ZW5zaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewog
ICAgICAgIAogICAgIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7Ci0gICAgICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CisgICAgICAgIFZlY3RvcjxIYW5kbGU+IG1fZGF0YTsKICNlbHNlCiAgICAg
ICAgIEhhbmRsZSBtX2VtcHR5SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZl
MTVlMDMyODQxOGJjM2IwYWIzM2QuLmI4ZTc0M2QyMzYwY2ZlZWZjMTdiY2EyNGQ1OTcxMWNkZDU4
YTViN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5z
aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9u
TWFjLm1tCkBAIC0xNjMsMzQgKzE2MywzMyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEFTU0VSVCghbV9kYXRhKTsKKyAgICBBU1NFUlQobV9kYXRhLmlzRW1wdHko
KSk7CiAKLSAgICBtX2RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZVtdPihzaXplKTsKLSAgICBtX3NpemUgPSBzaXplOworICAgIG1fZGF0YS5yZXNpemUoc2l6
ZSk7CiB9CiAKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7IAorICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFb
aV07CiB9CiAKIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CiB7Ci0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7CisgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0
dXJuIG1fZGF0YVtpXTsKIH0KIAogc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
OjpzaXplKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zaXplOworICAgIHJldHVybiBtX2RhdGEu
c2l6ZSgpOwogfQogCiB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KHNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7
ICsraSkKLSAgICAgICAgZW5jb2RlciA8PCBtX2RhdGFbaV07CisgICAgZm9yIChhdXRvJiBoYW5k
bGUgOiBtX2RhdGEpCisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCiBib29sIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IGZiOGI3MzVmODczYTE1M2E1
OTE3M2Y3MjQ5NTgwMjRmNThkNjUyZDMuLjZhZjMxNTEzMTY1MThhMmNmNTYyODg4MWI0ODVjMjIz
MzBjYzgwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5n
SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxw
ZXJzLmNwcApAQCAtMjEwLDE4ICsyMTAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBl
cnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChT
VUNDRUVERUQoaHIpKQogICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXks
IDEsICZ1Qm91bmQpOwogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1s
Qm91bmQrMSkgOiAwOwotICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENG
U3RyaW5nUmVmPiBpdGVtczsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5l
dyBDRlN0cmluZ1JlZltsZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAg
Zm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBCU3RyaW5n
IHN0cjsKICAgICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZs
Qm91bmQsICZzdHIpOwogICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5n
UmVmKHN0cik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFy
cmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMsIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxC
YWNrcyk7Ci0gICAgaWYgKGl0ZW1zKQotICAgICAgICBkZWxldGVbXSBpdGVtczsKKyAgICBDRkFy
cmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRh
KCksIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtMjMyLDE4ICsyMzAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNh
ZmVBcnJheVRvSW50QXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQo
aHIpKQogICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91
bmQpOwogICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkg
OiAwOwotICAgIENGTnVtYmVyUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGTnVtYmVyUmVm
PiBpdGVtczsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRk51bWJl
clJlZltsZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxC
b3VuZCA8PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAg
ICAgICAgICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZu
dW0pOwogICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NG
TnVtYmVyUmVmKG51bSkgOiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZB
cnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBs
ZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykKLSAgICAgICAgZGVs
ZXRlW10gaXRlbXM7CisgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCmluZGV4IGUwMDk0Yjk2YmIxODlhNjk2MzU1
ZGUwZGIwODAzMGJjMGE4MmQ3MDkuLjE3ZWUxMmY2OGU4MmY3YWRlMDA5MDAyMGEwODNiNjUyMjk2
MWMzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5QYWNrYWdlV2luLmNwcApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgYm9vbCBQbHVnaW5QYWNrYWdl
OjpmZXRjaEluZm8oKQogICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVl
PGNoYXJbXT4odmVyc2lvbkluZm9TaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gdmVyc2lvbkluZm9E
YXRhKHZlcnNpb25JbmZvU2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coc3Ry
aW5nVG9OdWxsVGVybWluYXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1Np
emUsIHZlcnNpb25JbmZvRGF0YS5nZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9X
KHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbklu
Zm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJv
ZHVjdE5hbWUiKTsKLSAgICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbklu
Zm9EYXRhLmdldCgpLCAiRmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0gZ2V0VmVyc2lv
bkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CisgICAgbV9kZXNj
cmlwdGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRGVz
Y3JpcHRpb24iKTsKICAgICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3JpcHRpb24uaXNO
dWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklMRUlORk8qIGlu
Zm87CiAgICAgVUlOVCBpbmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25J
bmZvRGF0YS5nZXQoKSwgTCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXplKSB8fCBpbmZv
U2l6ZSA8IHNpemVvZihWU19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1ZXJ5VmFsdWVX
KHZlcnNpb25JbmZvRGF0YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6
ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBtX21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJz
aW9uTFM7CiAgICAgbV9tb2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9u
TVM7CkBAIC0xOTMsMTEgKzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAg
IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBlIikuc3BsaXQo
J3wnLCB0eXBlcyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwg
Ik1JTUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5z
aW9uTGlzdHM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmls
ZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRWZXJzaW9uSW5m
byh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVu
c2lvbkxpc3RzKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0gICAgZ2V0VmVy
c2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wn
LCBkZXNjcmlwdGlvbnMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRh
KCksICJGaWxlT3Blbk5hbWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RyaW5n
IHR5cGUgPSB0eXBlc1tpXS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMz
NDY4OGIxM2ZmNWUxNTdmOGQ2MDMuLjE5MDQ4OTczZmIxNzYzMGVmNjVmNWQ2MjYxMWEzNjg0MTY0
M2MxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAg
LTUzMiw5ICs1MzIsOSBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5j
ZXNUb0NGUHJlZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZTdHJpbmdSZWYg
ZGlkUmVtb3ZlRGVmYXVsdHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVmYXVsdFNldHRp
bmdzRnJvbVNhZmFyaTNCZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0RGVmYXVsdHMg
PSAhYm9vbGVhblZhbHVlRm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
aWN0LCBkaWRSZW1vdmVEZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0gc3RkOjptYWtl
X3VuaXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0gc3RkOjptYWtl
X3VuaXF1ZTxDRlR5cGVSZWZbXT4oY291bnQpOwotICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRW
YWx1ZXMoZGljdCwga2V5cy5nZXQoKSwgdmFsdWVzLmdldCgpKTsKKyAgICBWZWN0b3I8Q0ZUeXBl
UmVmPiBrZXlzKGNvdW50KTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiB2YWx1ZXMoY291bnQpOwor
ICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5kYXRhKCksIHZhbHVl
cy5kYXRhKCkpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIGlmICgha2V5c1tpXSB8fCAhdmFsdWVzW2ldIHx8IENGR2V0VHlwZUlEKGtleXNbaV0pICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDE1ZTI3Zjk4NWMyY2Q5OTZkZTlhMDdlZWE5YjU5ZmRkMGY0OGU3ODcuLjIyZjVhMjYyYzFkZTFi
ODE5ZGNlYWYzYWJmYjc3YzBmMzk4MWJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCkBAIC0xNzg0LDggKzE3ODQsOCBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BB
UkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBtZW51SXRlbUluZm8uZk1hc2sgPSBNSUlN
X1NUUklORzsKICAgICA6OkdldE1lbnVJdGVtSW5mbyhoTWVudSwgaW5kZXgsIHRydWUsICZtZW51
SXRlbUluZm8pOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdDSEFSW10+
KG1lbnVJdGVtSW5mby5jY2ggKyAxKTsKLSAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1
ZmZlci5nZXQoKTsKKyAgICBWZWN0b3I8V0NIQVI+IGJ1ZmZlcihtZW51SXRlbUluZm8uY2NoICsg
MSk7CisgICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZGF0YSgpOwogICAgIG1l
bnVJdGVtSW5mby5jY2grKzsKICAgICBtZW51SXRlbUluZm8uZk1hc2sgfD0gTUlJTV9JRDsKIApA
QCAtMTc5NCw3ICsxNzk0LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3
UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0
TWVudSk7CiAgICAgbV9jdXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5n
IHRpdGxlKGJ1ZmZlci5nZXQoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxl
KGJ1ZmZlci5kYXRhKCksIG1lbnVJdGVtSW5mby5jY2gpOwogICAgIENvbnRleHRNZW51QWN0aW9u
IGFjdGlvbiA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lE
KTsKIAogICAgIGlmIChhY3Rpb24gPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFn
KSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ODA2M2UzZjliZGNhZDA3ZjQ0YzJkNmU3N2FkZWU3ZWVlYjkzYWI2NS4uYmEzYWFjMTUxYjBjYzNm
ZThhYTVmYjhiYTE0NmM5NmVjZjlhODdhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTI0ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2Vf
dW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHAuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1Y3Rvcjo6VHJpdmlhbERl
c3RydWN0b3IpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VHJpdmlhbERlc3RydWN0b3I6On5U
cml2aWFsRGVzdHJ1Y3Rvcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1
Y3Rvcjo6c2V0TG9nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTAy
LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJl
bW92ZSBjdXJyZW50VGltZSgpIC8gY3VycmVudFRpbWVNUygpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dAppbmRleCBkZjQ5YzIxNDQ0NWVhM2I3MjBlMjJjMDg5OGUwYjZkNTY1MTU2ZWMwLi5l
Yjc4ZTlhOGM3ZmI3NjY4MGY4ZjlhZjQ5ZTYwN2E3NDU0MGEzMGRkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQKQEAgLTE1MSw2ICsxNTEsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UaHJlYWRpbmcuY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RpbWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9VbmlxdWVSZWYuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1ZhcmlhbnQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ZlY3Rvci5j
cHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODM0MTU2NzBjODhiMDkyNWI0ZTQ2NTdmZDM3
MWY4ZWYyMTY2MmI2YS4uOTI2YTNmNzJmZTAxMWQzMGFkZjk3ZTIzMGQ1ZmY2YmIzZmNmN2U2ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxNyw2ICs3MTcsNyBAQAogCQlEMzRFMDg3NjFF
NEU0MkUxMDA1RkYxNEEgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0JFNUUzNDFFNENFODVFMDBGRDU2M0Eg
LyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi87IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEz
RTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
MjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyog
U3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0QTAwOUM0
RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9OworCQlF
MzI0QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2
IC8qIFVuaXF1ZUFycmF5LmNwcCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8q
IFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhB
MEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBU
aHJlYWRpbmcuY3BwICovOyB9OwogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFk
R3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNERUE4MTAxRjBBNTg4MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLzsgfTsKQEAgLTE4
NDMsNiArMTg0NCw3IEBACiAJCUUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JM
YW5ndWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmln
YXRvckxhbmd1YWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFG
RDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOTUzRjk1MUYyQ0YzMjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFk
R3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3Jv
dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAwMTkzMDFBQ0U5QjVDMDAx
QjBBMkEgLyogQmxvb21GaWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQmxvb21GaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDkw
Mjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jhc2gubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzc0LDYgKzI3NzYsNyBAQAogCQkJCUUzOEEwRDM0MUZE
NTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovLAogCQkJCTUzMTFCRDVEMUVBOTQ5MEQw
MDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlcy5jcHAgKi8sCiAJCQkJMEYyQzIwQjcxRENENTQ0ODAw
NTQyRDlFIC8qIFRpbWUuY3BwICovLAorCQkJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBV
bmlxdWVBcnJheS5jcHAgKi8sCiAJCQkJNUM1RTYzM0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1
ZVJlZi5jcHAgKi8sCiAJCQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3Bw
ICovLAogCQkJCUJDNTVGNUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovLApAQCAt
MzMzOCw2ICszMzQxLDcgQEAKIAkJCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFk
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUzMTFCRDVFMUVBOTQ5MEUwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJDMjBCODFEQ0Q1NDUwMDA1
NDJEOUUgLyogVGltZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI0QTZGMDIwNDFDODIwMDBB
NzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0IxRDBB
NjAyNzAwRkVCQ0YzIC8qIFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0ZDNzExRDU1MzVBODAwMURGQkNEIC8qIFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RGNEMxRDBBNTkwQzAwRkVCQ0YzIC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44N2MwODc2OWMxODIwOGEzNjBjZDE2NWMyMGFiM2M2OTZjNzFmZWE5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkNvbnN0cnVj
aW9ucyB7IDAgfTsKK2NsYXNzIFRyaXZpYWxEZXN0cnVjdG9yIHsKK3B1YmxpYzoKKyAgICBUcml2
aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgICBudW1iZXJPZkNvbnN0cnVjaW9ucysrOwor
ICAgIH0KKworICAgIH5Ucml2aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgICAoKm1fbG9n
KSsrOworICAgIH0KKworICAgIHZvaWQgc2V0TG9nKHVuc2lnbmVkKiBsb2cpCisgICAgeworICAg
ICAgICBtX2xvZyA9IGxvZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQqIG1fbG9n
IHsgbnVsbHB0ciB9OworfTsKKworVEVTVChXVEZfVW5pcXVlQXJyYXksIFRyaXZpYWxEZXN0cnVj
dG9yKQoreworICAgIHVuc2lnbmVkIHNpemUgPSA0MjsKKyAgICB1bnNpZ25lZCBsb2cgPSAwOwor
ICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKGxvZywgMCk7CisgICAgICAgIGF1dG8gYXJyYXkgPSBt
YWtlVW5pcXVlQXJyYXk8VHJpdmlhbERlc3RydWN0b3I+KHNpemUpOworICAgICAgICBFWFBFQ1Rf
RVEobG9nLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bWJlck9mQ29uc3RydWNpb25zLCBzaXpl
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIGFycmF5W2ldLnNldExvZygmbG9nKTsKKyAgICB9CisgICAgRVhQRUNUX0VRKGxvZywgc2l6
ZSk7Cit9CisKK1RFU1QoV1RGX1VuaXF1ZUFycmF5LCBOb25Ucml2aWFsRGVzdHJ1Y3RvcikKK3sK
KyAgICB1bnNpZ25lZCBzaXplID0gNDI7CisgICAgeworICAgICAgICBhdXRvIGFycmF5ID0gbWFr
ZVVuaXF1ZUFycmF5PHVuc2lnbmVkPihzaXplKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGFycmF5W2ldLCAwKTsK
KyAgICAgICAgICAgIGFycmF5W2ldID0gNDI7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9FUShhcnJheVtp
XSwgNDIpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334563</attachid>
            <date>2018-02-24 08:42:06 -0800</date>
            <delta_ts>2018-02-24 10:20:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180225014204.patch</filename>
            <type>text/plain</type>
            <size>111755</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWVkODBkMmE3YWQ4NTkwZTY4NDQzNjQzMGY0MDEwMzI2YWFjNWRmLi40ZTUyYmM3M2I1OTdiZTIz
NTJhYThhZTc1YzQ2ZTYyZjFhZWMxM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wMi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5r
UG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY3VycmVudFdv
cmtpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
OjpUeXBlUHJvZmlsZXJMb2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
dGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHRvb2xz
L0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6SGVhcFZlcmlm
aWVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMi0yMyAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE51bWJlci5pc0lu
dGVnZXIgYW4gaW50cmluc2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNmRkYTMyYmFiZWYwMWJkMDQ4ZGRhMTQ1ZjBhNTU4
YTlkZDMxMzEuLjllODc4MjIxNWE3NTNkOTk5NTg0ZDcyZTExYzYyNjQzMjU5ZDg2ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB3ZSB1c2UgYG1ha2VfdW5pcXVlPGNoYXJbXT4obnVtKWAgb3IgYG5ldyBjaGFyW251
bV1gLCBhbGxvY2F0aW9uIGlzCisgICAgICAgIGRvbmUgYnkgdGhlIHN5c3RlbSBtYWxsb2MgaW5z
dGVhZCBvZiBibWFsbG9jLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKKyAgICAgICAgYnkg
Zm9sbG93aW5nIHRocmVlIGNoYW5nZXMuCisKKyAgICAgICAgMS4gSW50cm9kdWNlIFVuaXF1ZUFy
cmF5PFQ+LiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20gRmFzdE1hbGxvYy4gV2hpbGUgQysrCisg
ICAgICAgIGFycmF5IHdpdGggYG5ld2AgbmVlZCB0byBob2xkIHRoZSBzaXplIHRvIGNhbGwgZGVz
dHJ1Y3RvciBjb3JyZWN0bHksIG91cgorICAgICAgICBVbmlxdWVBcnJheSBvbmx5IHN1cHBvcnRz
IHR5cGUgVCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgSXQgcmVkdWNlcyB0aGUgYWxsb2NhdGlvbiBzaXplIHNpbmNlIHdlIGRvIG5vdCBuZWVk
IHRvIHRyYWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICBhcnJheSBjb21wYXJlZCB0byBzdGFu
ZGFyZCBgbmV3IFRbXWAuIFRoaXMgaXMgYmFzaWNhbGx5IHVzYWJsZSBpZiB3ZSB3YW50IHRvCisg
ICAgICAgIGhhdmUgcmF3IGFycmF5IHdoaWNoIHBvaW50ZXIgd29uJ3QgYmUgY2hhbmdlZCBldmVu
IGlmIHRoZSBjb250YWluZXIgaXMgbW92ZWQuCisgICAgICAgIEluIGFkZGl0aW9uLCB3ZSBhbHNv
IGV4dGVuZCBVbmlxdWVBcnJheTxUPiBmb3IgdHlwZXMgd2hpY2ggaGF2ZSBub24gdHJpdmlhbAor
ICAgICAgICBkZXN0cnVjdG9ycy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQu
CisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FM
TE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10g
b3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAg
ICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RG
OjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAg
KFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3Rh
Y2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6
CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAg
ICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6
OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDItMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIElUUCBkZWJ1ZyBsb2dnaW5nIGFzIGFu
IG9wdC1pbiBkZXZlbG9wZXIgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0NzkwZjA4MzZjMjMzNTJk
NTEyMWQzMjU3MzJiOGZjN2E1YzQ3OGIuLjNiYjAyNDBlNDI3MWRmOTJmODc0NDg5N2NkMDlhMTUy
MDdiOTg1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxOC0wMi0yNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtl
X3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBv
ciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmg6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNz
c2ppdC9Db21waWxlZFNlbGVjdG9yLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld0Nvb3Jkc0FycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6Om5ld0xlbmd0aEFycmF5KToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1h
dENvbnZlcnRlcjo6Rm9ybWF0Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGlydHlSZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmxpcEltYWdlU3VyZmFjZVZlcnRpY2FsbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmU6OnVwZGF0ZVN1YlJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
YkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVu
aWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9n
cmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYWRlckxvZyk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0lt
YWdlUmVhZGVyOjpQTkdJbWFnZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJl
YWRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OmludGVybGFj
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6Y3JlYXRl
SW50ZXJsYWNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rl
cjo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpTb2NrZXREYXRhOjpTb2NrZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpy
ZWFkRGF0YSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNvbm5lY3RlZCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nTGV2ZWxTdHJpbmcp
OgorCiAyMDE4LTAyLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2ggdW5kZXIgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2Nh
bChXVEY6OlN0cmluZyBjb25zdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBl
ZTkzNGUxOWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi4xNzA2ZmYyNTMzMjdkYjhiYzNhZmIzMzEzMTBl
OTFmZGQ2ZWE4ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0w
Mi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBG
aXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVh
ZC4KKworICAgICAgICAqIHBhbC93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChQQUw6Omxv
Z0xldmVsU3RyaW5nKToKKwogMjAxOC0wMi0yMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDg0MDA3ZTdjYTFjYmE4ZTIxZWZiOGI2YjgyYTY4NzI5NjJkMWUxNTEu
LmEyYjNiNjg4YmYzY2YyNjU2ZDNjMWEwYzc1Nzg0MWYyMmYzMWFkMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0
ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93aW4vU3lz
dGVtUHJveHlXaW4uY3BwOgorICAgICAgICAoV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1I
dHRwUHJveHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojpsb2dMZXZlbFN0cmluZyk6Cisg
ICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUgY29uc3QpOgor
CiAyMDE4LTAyLTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIFdQRSBicmVha2FnZSBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggYzVjZWIzMDU2ZjEzZmI1NWUzYTEzZDU1YzcxYTU0ZmZhNTRjMjdjZS4uMGM2MzBk
YmIxZmIxZWU1MTJlZTUzOWNkNzY5M2UwY2RmNTY4ODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAyLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3
W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICogTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9T
dHJpbmdBcnJheSk6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50
QXJyYXkpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZl
cmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5j
ZXNUb0NGUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6b25NZW51Q29tbWFuZCk6CisKIDIwMTgtMDItMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIGN1cnJlbnRUaW1lKCkgLyBjdXJy
ZW50VGltZU1TKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3Bw
CmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMzYTMuLjEzNjc3MTUz
ZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIEpTU3RyaW5nUmVm
IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICBpZiAo
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nh
c3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiAm
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1Jl
ZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVu
Z3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBs
ZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIobGVuZ3Ro
KTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5n
dGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9
PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsK
LSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hh
cio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJldHVybiAmT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmRhdGEoKSks
IGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmluZGV4IGVhODU5YzRh
OWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmJmMmJiM2UxNTFmYWMxMzNkOGEwNTA3
ODUwYzRiN2M0NDYwM2UwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlS2lsbHMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc0LDYgKzc1LDcgQEAgY2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAg
ZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxT
ZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEtpbGxTZXQoKQogICAgICAgICAgICAgOiBtX3dvcmQoMCkKQEAgLTE3MCw3ICsxNzIsNyBA
QCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICB9OwogICAgIAogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEtpbGxTZXRbXT4gbV9raWxsU2V0czsKKyAg
ICBVbmlxdWVBcnJheTxLaWxsU2V0PiBtX2tpbGxTZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDQyZDlhZDZjNjg2NmQwOGQ5OWRhZjQ2OTVm
MGNjMTM3YTAxMTAzMjIuLmUwMTY5ZGZiNDk4ZWU2NDRkNjEwYWFmNGRmOTBiNDg0NWZhYmFlMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlS2lsbHMmCiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAKICAgICByZXN1bHQubV9jb2RlQmxv
Y2sgPSBjb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gbWFrZVVuaXF1ZUFycmF5PEJ5dGVjb2RlS2ls
bHM6OktpbGxTZXQ+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKICAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3Jh
cGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggYWQwMzU2ZThmOTBiZGY4YTM1YTFl
M2U1M2RmODc2MjU0NGU0MzEwYS4uMGMyMDcwM2VkOGUyZDgxM2Y1ZDIxODA4YWFjMmYzY2QyODYy
MDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJs
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cApAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHko
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgICAgIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgPSAwOwogICAgIGVsc2UKICAgICAgICAgYW1vdW50T2ZOb2Rl
V2hpdGVTcGFjZSA9IEdyYXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKGNvbnRleHQpOwotICAg
IGF1dG8gcHJlZml4QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0
aCArIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKLSAgICBtZW1jcHkocHJlZml4QnVmZmVy
LmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IHByZWZpeEJ1
ZmZlcihwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7CisgICAgbWVt
Y3B5KHByZWZpeEJ1ZmZlci5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGFtb3VudE9mTm9kZVdoaXRlU3BhY2U7ICsraSkKICAgICAgICAgcHJl
Zml4QnVmZmVyW2kgKyBwcmVmaXhMZW5ndGhdID0gJyAnOwogICAgIHByZWZpeEJ1ZmZlcltwcmVm
aXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlXSA9IDA7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbmQgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xhYmVsID0g
Y3VycmVudExhYmVsOwogICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90
PigpID49IHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7Ci0gICAgZGlzYXNz
ZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5l
eGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5nZXQoKSwgb3V0KTsK
KyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmRh
dGEoKSwgb3V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cAppbmRleCA4NThiNTQxNzRiZmViMmUyMjFkODMwNmZhOTg4YTIyOTFkNTAyNGUzLi5iYzBmODQx
ZGY3NTE0NTkzNDU5MjdkZjNkYTZhYWJkMDkxNjc1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApAQCAt
NzEsNyArNzEsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbENhc2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGVSZWYsIFZN
JiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwKICAgICBD
YWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2Fz
ZXMsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHMpCisgICAgVW5p
cXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKICAgICA6IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlUmVmLCB2bSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oCmluZGV4IGQ5NmFlNTZjNDdmNGFhYjlmZDQ3MmZlMjQzMmJjZjU5NWIy
MmY5NWQuLjJhMzk1NzcyYjRhYjA0NjViYTFhOGMwOGU4YzhkMjFkYWM5NmViMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1
ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC04NCw3ICs4NSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAgICAgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICAgICAgRXhlY1N0YXRlKiBjYWxsZXJG
cmFtZSwgQ2FsbExpbmtJbmZvJiwgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiwK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHMpOworICAgICAg
ICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKTsKICAgICAKICAgICB2aXJ0dWFs
IH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpOwogICAgIApAQCAtMTAwLDcgKzEwMSw3IEBA
IGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHVi
Um91dGluZSB7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+LCAy
PiBtX3ZhcmlhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBtX2Zhc3RDb3Vu
dHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFzdENvdW50czsKICAgICBCYWc8UG9s
eW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCA3OGNhOTMwM2ZjODI4NzdjZTYwYmZlY2E5MTYwZWFjMzRmZjk2
NmJhLi5hZTBkZTYzOWM5M2U0ZWE4OTMwNmE5NzdmYmQyNGY4ZDYxNzgwNTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk0NCwxMCArOTQ0LDEwIEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVlcyhj
YWxsQ2FzZXMuc2l6ZSgpKTsKICAgICBWZWN0b3I8Q2FsbFRvQ29kZVB0cj4gY2FsbHMoY2FsbENh
c2VzLnNpemUoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHM7
CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IGZhc3RDb3VudHM7CiAgICAgCiAgICAgaWYgKCFp
c1dlYkFzc2VtYmx5ICYmIGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OnRv
cFRpZXJKSVQoKSkKLSAgICAgICAgZmFzdENvdW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMy
X3RbXT4oY2FsbENhc2VzLnNpemUoKSk7CisgICAgICAgIGZhc3RDb3VudHMgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDMyX3Q+KGNhbGxDYXNlcy5zaXplKCkpOwogICAgIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2FsbENhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChmYXN0Q291
bnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAzYjg4MzljZmM1YmJkMzc4ODNlY2ZmN2NkOWIw
NWI4YjA1NmQzYmM4Li41NzYyNDJmMGFlYTQ1ZTliZjJjM2RiOTU5ZTU1NzI5OTg2NzQ1OTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE2LDE3ICs3MTYsMTcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIElu
IFdpbmRvd3MsIHdjaGFyX3QgaXMgdGhlIFVURi0xNkxFLgogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZGQzNzQwODEuYXNweAogICAgIC8vIGh0dHBzOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3
LmFzcHgKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2NoYXJfdFtdPihidWZm
ZXJMZW5ndGgpOwotICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051bGwgPSA6OkdldEN1cnJl
bnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmdldCgpKTsKLSAgICBTdHJpbmcgZGly
ZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZ2V0KCksIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwpOworICAgIFZlY3Rvcjx3Y2hhcl90PiBidWZmZXIoYnVmZmVyTGVuZ3RoKTsKKyAg
ICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5Vyhi
dWZmZXJMZW5ndGgsIGJ1ZmZlci5kYXRhKCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcg
PSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihQQVRIX01BWCk7Ci0gICAgaWYgKCFnZXRjd2QoYnVmZmVy
LmdldCgpLCBQQVRIX01BWCkpCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihQQVRIX01BWCk7Cisg
ICAgaWYgKCFnZXRjd2QoYnVmZmVyLmRhdGEoKSwgUEFUSF9NQVgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSBTdHJpbmc6OmZyb21V
VEY4KGJ1ZmZlci5nZXQoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSk7CiAjZW5kaWYKICAgICBpZiAoZGlyZWN0b3J5U3RyaW5n
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNGNmOGM2ZDRlZDlmMWEzMTJjNDE0M2U1
NGIxMDI2YjU1N2E2MDA2Yi4uM2ExZWEzNzQ4MjQxYTRjMGQ2YTU3ZjJiZGYxOGFkNjY1MjViMWY5
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKLUluc3RydWN0
aW9uKiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IDA7CitJbnN0cnVjdGlvbiBEYXRh
OjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXSA9IHsgfTsKIE9w
Y29kZSBEYXRhOjpzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdID0geyB9OwogT3Bjb2RlU3RhdHNB
cnJheSogRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5ID0gbnVsbHB0cjsKIApAQCAtNTcsOCArNTcs
NiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCopOwogCiB2b2lkIGluaXRpYWxp
emUoKQogewotICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0
aW9uW21heE9wY29kZUxlbmd0aCArIDFdOwotCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgQ0xvb3A6
OmluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCmlu
ZGV4IDYwMmRkNjQ2ZTU3M2I4NjFiNWIyNmZjODYzNWRmNTQ3NDYwOWNhN2IuLjMwMWQwNzdlY2Ji
NTllNjY1NTc5Njg4ODU0NzFkMDI0MmRjNjRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0YSB7CiAgICAgc3RhdGlj
IHZvaWQgcmVzZXRTdGF0cygpOwogICAgIHN0YXRpYyB2b2lkIHNhdmVTdGF0cygpOwogCi0gICAg
c3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBzdGF0aWMg
SW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07
CiAgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdOwogICAgIHN0YXRp
YyBPcGNvZGVTdGF0c0FycmF5KiBzX29wY29kZVN0YXRzQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAzOTE4OWY4N2QyNWVkYjU3YzJlYTIyODM1MDRm
NjExZjUyNTBlMTZlLi42M2MyZGU5MTNmZGY0ZGI1ZTU0YWNmZTJlYWI0YWRkZjkwZWMzMjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0xNjUsNiArMTY1LDcg
QEAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgOiBwdWJsaWMgUmVjb3JkT3ZlcmZsb3cgewog
fTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIGNsYXNzIEludGVycHJldGVyOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRl
eCA0N2YzYTVmMWJmZDJhNTkwNjQ2NTYxYzcyYmI0NGMyMTM3MjZiNjA0Li5kNjJkMTA2MGVkNjRl
YWMyODJmMDZjZmUyNWM2OTEzMjkxZWZjYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
Y3VycmVudCkpCiAgICAgICAgICAgICArK3NpemU7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IHZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8V3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT5bXT4oc2l6ZSArIDEpOworICAgICAgICBhdXRvIHZlY3RvciA9
IG1ha2VVbmlxdWVBcnJheTxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPj4oc2l6ZSArIDEpOwogCiAg
ICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhl
YWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90
b3R5cGVPYmplY3QoY3VycmVudCkpCkBAIC04NSw3ICs4Niw3IEBAIGNsYXNzIFN0cnVjdHVyZUNo
YWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIFN0cnVjdHVyZUNoYWluKFZNJiwgU3RydWN0dXJlKik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IG1fdmVjdG9yOworICAg
IFVuaXF1ZUFycmF5PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+PiBtX3ZlY3RvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhMjAyNWFmMTY0ZTNlZTU4N2JmMzAyNTE2ZWRjYWNm
OTI5YzFlMTI1Li44ZWViMzkxZGFmNGI0MTBiNjgxNjdhZjBlNjE5NTZlODQ3OTU0ZjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU3RydWN0dXJlSURUYWJsZTo6
U3RydWN0dXJlSURUYWJsZSgpCiAgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgwKQotICAgICwgbV90
YWJsZShzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KHNfaW5pdGlhbFNpemUp
KQorICAgICwgbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KHNfaW5p
dGlhbFNpemUpKQogICAgICwgbV9zaXplKDApCiAgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNp
emUpCiB7CkBAIC00NSw3ICs0NSw3IEBAIFN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFi
bGUoKQogdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KQog
ewogICAgIC8vIENyZWF0ZSB0aGUgbmV3IHRhYmxlLgotICAgIGF1dG8gbmV3VGFibGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KG5ld0NhcGFjaXR5KTsKKyAgICBhdXRv
IG5ld1RhYmxlID0gbWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0PihuZXdDYXBhY2l0
eSk7CiAKICAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRhYmxlIHRvIHRoZSBu
ZXcgdGFibGUuCiAgICAgbWVtY3B5KG5ld1RhYmxlLmdldCgpLCB0YWJsZSgpLCBtX2NhcGFjaXR5
ICogc2l6ZW9mKFN0cnVjdHVyZU9yT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggYTJjNThkZjYwYWM0NTI0OTY2Yjgy
YTZjNzMzMDllZDI1NmM4YjE2OS4uNzc4OWRmODk1OWY3ZmVkNWUwMDJhNjRhNjMzZjZiOTE0ZmJi
Y2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJVbnVz
ZWRQb2ludGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNywxMCArMTA4LDEwIEBAIGNsYXNz
IFN0cnVjdHVyZUlEVGFibGUgewogICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19pbml0
aWFsU2l6ZSA9IDI1NjsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RydWN0dXJlT3JP
ZmZzZXRbXT4+IG1fb2xkVGFibGVzOworICAgIFZlY3RvcjxVbmlxdWVBcnJheTxTdHJ1Y3R1cmVP
ck9mZnNldD4+IG1fb2xkVGFibGVzOwogCiAgICAgdWludDMyX3QgbV9maXJzdEZyZWVPZmZzZXQ7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVjdHVyZU9yT2Zmc2V0W10+IG1fdGFibGU7CisgICAg
VW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+IG1fdGFibGU7CiAKICAgICBzaXplX3QgbV9z
aXplOwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5kZXggZmYwYTc2MTczOTRhNDlkZDNkOGZi
YWM4Y2JjYWU2OGFmM2U0ZjVlMS4uMDlkNDIyMDVmNmI5OTgzMmYzOWY5OWM3MjkxMTg4NTJmZjhi
MzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0lu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotdm9pZCBU
eXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQorVHlwZVByb2ZpbGVyTG9nOjpUeXBlUHJv
ZmlsZXJMb2coKQorICAgIDogbV9sb2dTaXplKDUwMDAwKQorICAgICwgbV9sb2dTdGFydFB0cihu
ZXcgTG9nRW50cnlbbV9sb2dTaXplXSkKKyAgICAsIG1fY3VycmVudExvZ0VudHJ5UHRyKG1fbG9n
U3RhcnRQdHIpCisgICAgLCBtX2xvZ0VuZFB0cihtX2xvZ1N0YXJ0UHRyICsgbV9sb2dTaXplKQog
ewogICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAgbV9sb2dTaXplID0gNTAwMDA7Ci0g
ICAgbV9sb2dTdGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2xvZ1NpemVdOwotICAgIG1fY3VycmVu
dExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3Rh
cnRQdHIgKyBtX2xvZ1NpemU7CiB9CiAKIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxv
ZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5o
CmluZGV4IDliNTdjYzU4NjcwZjQ1OTkxNWVjZWRlNmMxM2VhYTU1ODU4NDlmMTcuLjM5NDE5MzM0
OGM2ZTk0MDQ0MDM5Y2NlYzY3OGEzMzBiYjg4NDNlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNz
IFR5cGVQcm9maWxlckxvZyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RydWN0IExvZ0VudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIApAQCAtNTIsMTIgKzUzLDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKICAg
ICB9OwogCiAKLSAgICBUeXBlUHJvZmlsZXJMb2coKQotICAgICAgICA6IG1fbG9nU3RhcnRQdHIo
MCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVMb2coKTsKLSAgICB9Ci0KKyAgICBUeXBlUHJv
ZmlsZXJMb2coKTsKICAgICB+VHlwZVByb2ZpbGVyTG9nKCk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYpOwpAQCAtNzEsOCArNjcs
NiBAQCBjbGFzcyBUeXBlUHJvZmlsZXJMb2cgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBpbml0aWFsaXplTG9nKCk7Ci0KICAg
ICB1bnNpZ25lZCBtX2xvZ1NpemU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAg
TG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IGNlNmU0YzFmNDVjYjllYjllNTg1ZTcyYmRjMGU3MGFiNjdiYWVmYmIuLmI2
NjdlZDcyZTY1MjMzMTQ3NjVhMjAyODFmZmFiMzQzNTE2YTcyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTUzNiwxMSArNTM2LDYgQEAgVk06On5WTSgpCiAgICAgZGVs
ZXRlIGNsaWVudERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CiAKLSNpZiBFTkFCTEUo
WUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBpZiAobV9yZWdFeHBQYXR0ZXJu
Q29udGV4QnVmZmVyKQotICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZm
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxldGUgbV9y
dFRyYWNlTGlzdDsKICNlbmRpZgpAQCAtOTA3LDggKzkwMiw4IEBAIGNoYXIqIFZNOjphY3F1aXJl
UmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0
TG9jay5sb2NrKCk7CiAgICAgaWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAg
ICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZNOjpwYXR0ZXJuQ29u
dGV4dEJ1ZmZlclNpemVdOwotICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7
CisgICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxj
aGFyPihWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTsKKyAgICByZXR1cm4gbV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyLmdldCgpOwogfQogCiB2b2lkIFZNOjpyZWxlYXNlUmVnRXhwUGF0
dGVybkNvbnRleEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkNzNm
YzZiOTc0NjhjOGI0MWRhMWVhMGZmODkwOGRkZmQzZGI0MmE1Li43NmRiMDU4MmZhZjNhMjZiMTU2
N2YyOTg0OTViNjgxZjg4ZjViZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUo
UkVHRVhQX1RSQUNJTkcpCkBAIC02ODUsNyArNjg2LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
IAogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8vIFNw
YWNlIGFsbG9jYXRlZCB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0Ci0gICAgY2hh
ciogbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFVuaXF1ZUFy
cmF5PGNoYXI+IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBMb2NrIG1fcmVnRXhw
UGF0dGVybkNvbnRleHRMb2NrOwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKCk7CiAgICAgdm9pZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IGU0MzhmNTYwNGI3MGQyNjk4YWIz
Zjc5OTRhNTQwMWM5Y2JhYjNhZGMuLmYxOTg0YjViODA4OGQ1NDk2NTI2NWZmZDQ5MDY4NGYzOWY0
NjdmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKICNpZiAhT1MoV0lORE9XUykKQEAgLTQxNiw3ICs0MTcsNyBAQCBzdGF0
aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlcwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7CiAgICAg
dW5zaWduZWQgdGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKLSAgICBjaGFy
KiBsaW5lQnVmZmVyID0gbmV3IGNoYXJbTWF4TGluZUxlbmd0aCArIDFdOworICAgIFZlY3Rvcjxj
aGFyPiBsaW5lQnVmZmVyKE1heExpbmVMZW5ndGggKyAxKTsKIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIApAQCAtNDM1LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21G
aWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVzCiAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogcmVnZXhwRXJyb3IgPSBudWxscHRyOwogCi0gICAgICAgIHdoaWxlICgobGluZVB0ciA9
IGZnZXRzKCZsaW5lQnVmZmVyWzBdLCBNYXhMaW5lTGVuZ3RoLCB0ZXN0Q2FzZXNGaWxlKSkpIHsK
KyAgICAgICAgd2hpbGUgKChsaW5lUHRyID0gZmdldHMobGluZUJ1ZmZlci5kYXRhKCksIE1heExp
bmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkgewogICAgICAgICAgICAgbGluZUxlbmd0aCA9IHN0
cmxlbihsaW5lUHRyKTsKICAgICAgICAgICAgIGlmIChsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9
PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgbGluZVB0cltsaW5lTGVuZ3RoIC0gMV0gPSAnXDAn
OwpAQCAtNDg0LDggKzQ4NSw2IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgZWxzZQog
ICAgICAgICBwcmludGYoIiV1IHRlc3RzIHBhc3NlZFxuIiwgdGVzdHMpOwogCi0gICAgZGVsZXRl
W10gbGluZUJ1ZmZlcjsKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICB2bS5kdW1w
UmVnRXhwVHJhY2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVh
cFZlcmlmaWVyLmNwcAppbmRleCBjZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3ZjllYWFhYTQxMDJj
ZWNhLi5hN2Y5MjdmOWI5ZjA1YTE2MWQwNmRkOTAyYTExZWZjYzIwNjJkMjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1bnNpZ25lZCBudW1iZXJP
ZkdDQ3ljbGVzVG9SZWNvcmQpCiAgICAgLCBtX251bWJlck9mQ3ljbGVzKG51bWJlck9mR0NDeWNs
ZXNUb1JlY29yZCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX251bWJlck9mQ3ljbGVzID4gMCk7
Ci0gICAgbV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5
Y2xlcyk7CisgICAgbV9jeWNsZXMgPSBtYWtlVW5pcXVlQXJyYXk8R0NDeWNsZT4obV9udW1iZXJP
ZkN5Y2xlcyk7CiB9CiAKIGNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6cGhhc2VOYW1lKEhlYXBW
ZXJpZmllcjo6UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSGVhcFZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmgKaW5kZXggNDgyNGIxYzZiM2U2ZmFiMmJhMmE3ZDgyMTFlNzllMDc4N2ZjNDk0My4u
Y2MyMDFjNGEyODBjODllNzUxZDRhMzVlNjEwYWQyNjhlNTE1M2UyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkNlbGxMaXN0LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9u
aWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC02NCw2ICs2NSw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9yZSgiQmVmb3JlIE1h
cmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIpCkBAIC0xMDcsNyAr
MTEwLDcgQEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKICAgICBpbnQgbV9jdXJyZW50Q3ljbGU7CiAg
ICAgaW50IG1fbnVtYmVyT2ZDeWNsZXM7CiAgICAgYm9vbCBtX2RpZFByaW50TG9ncyB7IGZhbHNl
IH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdDQ3ljbGVbXT4gbV9jeWNsZXM7CisgICAgVW5pcXVl
QXJyYXk8R0NDeWNsZT4gbV9jeWNsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwYTI1YmYzNjM3ZmE1OTY2
MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0MzZiNTY2OWZiYmJlYzFl
MGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25Dcnlw
dG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhG
QiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGlj
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDBFNTIxMjAzRDY0
NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExRkIx
NTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAgKzg1NiwxMCBAQAogCQkJ
CUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5oICovLAogCQkJCTBGNDU3
MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJCQkJQThBNDcyODAxNTFB
ODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJCQlGRTA1RkFFNjFGREIy
MTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFENjUzREE4MjAwNkI2QzIw
MEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4MjVBMDA0
MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0
b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5o
ICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAq
LywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJ
CUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAogCQkJCUE4QTQ3MjlG
MTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAgLTEwODMsNiArMTA4NCw3
IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJCQkJ
ODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAogCQkJCUE4QTQ3MzVD
MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlFMzAwRTUyMTIwM0Q2NDVG
MDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBBMDA5RDJG
NkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2IC8qIFVu
c2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyogVVVJRC5j
cHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNG
RiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9y
VHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICov
LAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywK
IAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwICovLAogCQkJCTBG
NjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJCTk3NENGQzhEMTZB
NEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYgKzExMDIsNyBAQAogCQkJ
CTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0QTBBRDM3
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMy
MzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBAQAogCQkJCTBGNjZCMjhB
MURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBp
bGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRC
NTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhF
ODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRkYxRkU1
MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5jcHAKaW5kZXggMDYxMDkzYWNjOWU5NzkxMTE0ZmM2YzE1YmExZTJjYWMzMGIwOWE2ZS4u
MGQ5NzNlNjQ3MDk3YWE1OTMyNDI5YzU4MTY5YmFhZTYwMTA5YzYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5jcHAKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dp
dGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogZm9ybWF0LCB2CiB7CiAg
ICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwogICAgIHNpemVfdCBmb3Jt
YXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1hdFdpdGhQcmVmaXggPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoICsgMSk7
Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHByZWZpeExlbmd0aCwgZm9y
bWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoUHJlZml4KHBy
ZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNweShmb3JtYXRXaXRoUHJl
Zml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1lbWNweShmb3JtYXRXaXRo
UHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAg
IGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoXSA9IDA7CiAKLSAg
ICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwgYXJncyk7Cisg
ICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBhcmdzKTsK
IH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNv
bnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY2LDEyICsxNjYsMTIgQEAgc3Rh
dGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNvbnN0IGNoYXIq
IGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Zm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZm9ybWF0TGVuZ3Ro
ICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBmb3JtYXQsIGZvcm1h
dExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXdsaW5lKGZvcm1hdExlbmd0
aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGZvcm1hdCwgZm9y
bWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGhdID0gJ1xuJzsK
ICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9IDA7CiAKLSAgICB2cHJp
bnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGFyZ3MpOworICAgIHZw
cmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGFyZ3MpOwogfQog
CiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAyMjBi
YWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdkMDYxOTNjMGExZGZmYzgz
MGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjMzLDYgKzIz
Myw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAogICAgIFVuaVN0ZEV4dHJh
cy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAgICAgVW5pcXVlUmVmLmgK
ICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmluZGV4IDdl
YzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2NzJjZTQ2ZDlmMWMyYjQz
YTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIwMCw2ICsyMDAs
MjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lkIGZyZWUodm9pZCogcCkg
eyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBGYXN0
RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKQEAgLTIwOCw2ICsy
MjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZTsKIAogdXNp
bmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFsbG9jOwordXNpbmcgV1RG
OjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsKIHVzaW5nIFdURjo6
ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCmluZGV4IDdmNmEw
MmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEwYWE5YmQ1YmJhMDlhYzU2
MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02Niw2ICs2NiwxMSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0TWFsbG9jPiBjbGFzcyBN
YWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7
CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggNmVmZDA3NGRl
MjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJhZTNjN2I1NmE4YmU4NWI3
ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgY2xhc3Mg
U3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7CiAgICAgICAgIGlmIChz
aXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTx2b2lkKltdPihz
aXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+KHNpemUp
OwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAgICAgICAgV1RGR2V0QmFj
a3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7CkBAIC01NSw3ICs1Niw3
IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90JiBvcGVyYXRvcj0oY29u
c3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lk
KltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4ob3RoZXIubV9zaXplKTsK
KyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4ob3RoZXIubV9z
aXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6ZTsgaS0tOykKICAgICAg
ICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAgICAgICAgbV9zaXplID0g
b3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAg
CiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVlQXJyYXkoKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotICAg
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5OworCisgICAgVW5pcXVlQXJy
YXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJjZS9XVEYvd3RmL1N5c3Rl
bUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2ZDA0ZjViYWVjZWY1Li43
M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5o
CkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRvcigpKFQq
IHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0zOSwxMSArNDEsMTIgQEAg
c3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IFN5c3Rl
bUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1NvdXJjZS9X
VEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIxOTY3M2I2YTI5YWI5ZWMzNjk1MmY5
NTliNjdhN2I5MzkwZDcxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1
ZUFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGJv
b2wgaXNUcml2aWFsbHlEZXN0cnVjdGlibGUsIHR5cGVuYW1lIFQ+IHN0cnVjdCBVbmlxdWVBcnJh
eU1ha2VyOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFVuaXF1ZUFycmF5TWFrZXI8
dHJ1ZSwgVD4geworICAgIHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9w
dHI8VFtdLCBGYXN0RnJlZTxUW10+PjsKKworICAgIHN0YXRpYyBSZXN1bHRUeXBlIG1ha2Uoc2l6
ZV90IHNpemUpCisgICAgeworICAgICAgICAvLyBDKysgYG5ldyBUW05dYCBzdG9yZXMgaXRzIGBO
YCB0byBzb21ld2hlcmUuIE90aGVyd2lzZSwgYGRlbGV0ZSBbXWAgY2Fubm90IGRlc3Ryb3kKKyAg
ICAgICAgLy8gdGhlc2UgTiBlbGVtZW50cy4gQnV0IHdlIGRvIG5vdCB3YW50IHRvIGluY3JlYXNl
IHRoZSBzaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgICAgIC8vIElmIGl0IGlzIGFjY2Vw
dGFibGUsIHdlIGNhbiBqdXN0IHVzZSBWZWN0b3I8VD4gaW5zdGVhZC4gU28gdGhpcyBVbmlxdWVB
cnJheTxUPiBvbmx5CisgICAgICAgIC8vIGFjY2VwdHMgdGhlIHR5cGUgVCB3aGljaCBoYXMgYSB0
cml2aWFsIGRlc3RydWN0b3IuIFRoaXMgYWxsb3dzIHVzIHRvIHNraXAgY2FsbGluZworICAgICAg
ICAvLyBkZXN0cnVjdG9ycyBmb3IgTiBlbGVtZW50cy4gQW5kIHRoaXMgYWxsb3dzIFVuaXF1ZUFy
cmF5PFQ+IG5vdCB0byBzdG9yZSBpdHMgTiBzaXplLgorICAgICAgICB1c2luZyBVID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxVPjo6dmFsdWUsICIiKTsKKworICAgICAgICAv
LyBEbyBub3QgdXNlIHBsYWNlbWVudCBuZXcgbGlrZSBgbmV3IChzdG9yYWdlKSBVW3NpemVdKClg
LiBgbmV3IFVbc2l6ZV0oKWAgcmVxdWlyZXMKKyAgICAgICAgLy8gbGFyZ2VyIHN0b3JhZ2UgdGhh
biB0aGUgYHNpemVvZihVKSAqIHNpemVgIHN0b3JhZ2Ugc2luY2UgaXQgd2FudCB0byBzdG9yZSBg
c2l6ZWAKKyAgICAgICAgLy8gdG8gc29tZXdoZXJlLgorICAgICAgICBVKiBzdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8VSo+KGZhc3RNYWxsb2Moc2l6ZW9mKFUpICogc2l6ZSkpOworICAgICAgICBWZWN0
b3JUeXBlT3BlcmF0aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBz
aXplKTsKKyAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RvcmFnZSk7CisgICAgfQorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBVbmlxdWVBcnJheU1ha2VyPGZhbHNlLCBUPiB7
CisgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgaG93IHRvIHN0b3JlL3JldHJpZXZlIE4gc2l6
ZSB0by9mcm9tIGFsbG9jYXRlZCBtZW1vcnkgd2hlbiBjYWxsaW5nIG5ldyBbXSBhbmQgZGVsZXRl
IFtdLAorICAgIC8vIHdlIHVzZSBuZXcgW10gYW5kIGRlbGV0ZSBbXSBvcGVyYXRvcnMgc2ltcGx5
LiBXZSBjcmVhdGUgVW5pcXVlQXJyYXlFbGVtZW50IGNvbnRhaW5lciBmb3IgdGhlIHR5cGUgVC4K
KyAgICAvLyBVbmlxdWVBcnJheUVsZW1lbnQgaGFzIG5ldyBbXSBhbmQgZGVsZXRlIFtdIG9wZXJh
dG9ycyBmb3IgRmFzdE1hbGxvYy4gV2UgYWxsb2NhdGUgVW5pcXVlQXJyYXlFbGVtZW50W10gYW5k
IGNhc3QKKyAgICAvLyBpdCB0byBUW10uIFdoZW4gZGVsZXRpbmcsIHRoZSBjdXN0b20gZGVsZXRl
ciBjYXN0cyBUW10gdG8gVW5pcXVlQXJyYXlFbGVtZW50W10gYW5kIGRlbGV0ZXMgaXQuCisgICAg
dXNpbmcgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZTsKKworICAgIGNs
YXNzIFVuaXF1ZUFycmF5RWxlbWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgc3RydWN0IERlbGV0ZXIgeworICAgICAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVsZXRlIFtdIGJpdHdpc2VfY2FzdDxVbmlxdWVBcnJheUVsZW1lbnQqPihwb2ludGVyKTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAgICAgVW5pcXVlQXJyYXlFbGVtZW50KCkg
PSBkZWZhdWx0OworCisgICAgICAgIFUgdmFsdWUgeyB9OworICAgIH07CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVSkgPT0gc2l6ZW9mKFVuaXF1ZUFycmF5RWxlbWVudCksICIiKTsKKworICAg
IHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8VFtdLCB0eXBlbmFt
ZSBVbmlxdWVBcnJheUVsZW1lbnQ6OkRlbGV0ZXI+OworCisgICAgc3RhdGljIFJlc3VsdFR5cGUg
bWFrZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKGJpdHdp
c2VfY2FzdDxUKj4obmV3IFVuaXF1ZUFycmF5RWxlbWVudFtzaXplXSgpKSk7CisgICAgfQorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFVuaXF1ZUFycmF5ID0gdHlwZW5hbWUgVW5p
cXVlQXJyYXlNYWtlcjxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+OjpSZXN1bHRUeXBlOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8VD4gbWFrZVVuaXF1ZUFycmF5KHNpemVfdCBz
aXplKQoreworICAgIHJldHVybiBVbmlxdWVBcnJheU1ha2VyPHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU+Ojp2YWx1ZSwg
VD46Om1ha2Uoc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlVu
aXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGFiY2Fi
ZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZjN2M5MmMuLjI3ZmMxNDUzYTBkMGEwNjcyZTNk
NzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02NSwxMCArNjUsMTUgQEAgc3RydWN0
IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRlbXBsYXRlIDxib29sIG5lZWRzSW5pdGlhbGl6
YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3Qg
VmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRlPGJvb2wgaWdub3JlLCB0eXBlbmFtZSBUPgot
c3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBpZ25vcmUsIFQ+Cit0ZW1wbGF0ZTxib29s
IGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgorc3RydWN0IFZlY3RvckluaXRp
YWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD4KIHsKICAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKworICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlh
bGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8
dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUoYmVnaW4s
IGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc5LDYgKzg0LDEx
IEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICAgICAgZm9y
IChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCiAgICAgICAgICAgICBuZXcgKE5v
dE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUo
VCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7
CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTg4LDYgKzk4LDExIEBAIHN0
cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0cnVlLCBUPgogICAgIHsKICAgICAgICAgbWVt
c2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihlbmQpIC0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRp
YWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4s
IGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPGJvb2wgY2FuTW92ZVdpdGhNZW1jcHksIHR5
cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9u
cwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlh
bGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpp
bml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5p
dGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6
ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46
OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQp
OworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBzcmNFbmQsIFQqIGRz
dCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdp
dGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmlu
ZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0YzNiNTVmNDA4ZjJmMWEuLjVlNjJjNWFjMmRj
OWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQy
MSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0
cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJP
ZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAgICAgIG1fc291cmNlQ2hhbm5lbHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAg
ICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4o
bnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVl
QXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9kZXN0aW5h
dGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
aSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5uZWxzW2ldID0gYnVmZmVyLT5jaGFubmVsRGF0
YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggZjRlNjNhODU5YzAxYjQxNWUxY2YzNDdm
Mjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3MzE4MjFmYTI1N2EwOGQxMzU4MGZhMjU5MGRj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOSw4ICsxMTAs
OCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwogCiAg
ICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIgYW5kIGRlc3RpbmF0aW9uLgotICAgIHN0ZDo6
dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKKyAgICBVbmlxdWVBcnJh
eTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8ZmxvYXQq
PiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICAvLyBVc2VkIGZvciB0aGUgImdhaW4iIGFu
ZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dh
aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDhjYTRj
OTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYwN2RjMjUuLjk1Y2M4ZDNjNzJhZWU2NjE3NTlj
NjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
d2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dp
bmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3Rvcjxj
aGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
bG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBp
ZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBi
dWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAot
ICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggOTk4YWNlNGU3ZDRk
ZTdmYTM1MDFiZmE3MTBhYTE1NTkwYTVlMGRhYi4uMmMxZmVkZDEyZTQ3MjhhMmEyMDk4MDc0OTVj
ZDkzYzY3YmQwMjQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ5LDcgKzE1MCw3IEBAIGNsYXNzIFN0eWxlUnVs
ZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBDb21waWxlZFNlbGVjdG9yJiBj
b21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQotICAgICAgICAgICAgbV9jb21waWxlZFNlbGVj
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsZWRTZWxlY3RvcltdPihtX3NlbGVjdG9yTGlz
dC5saXN0U2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29tcGlsZWRTZWxlY3RvcnMgPSBtYWtlVW5p
cXVlQXJyYXk8Q29tcGlsZWRTZWxlY3Rvcj4obV9zZWxlY3Rvckxpc3QubGlzdFNpemUoKSk7CiAg
ICAgICAgIHJldHVybiBtX2NvbXBpbGVkU2VsZWN0b3JzW2luZGV4XTsKICAgICB9CiAgICAgdm9p
ZCByZWxlYXNlQ29tcGlsZWRTZWxlY3RvcnMoKSBjb25zdApAQCAtMTcwLDcgKzE3MSw3IEBAIGNs
YXNzIFN0eWxlUnVsZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBDU1NTZWxl
Y3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkK
LSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxlZFNlbGVjdG9yW10+IG1fY29tcGls
ZWRTZWxlY3RvcnM7CisgICAgbXV0YWJsZSBVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPiBt
X2NvbXBpbGVkU2VsZWN0b3JzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Nv
bXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAyYmM3MDg4
ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xh
c3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGlsZWRTZWxl
Y3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlbGVjdG9y
Q29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYgQ1NT
X1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmgKaW5kZXggZDU0Y2RkY2U1ZDQ0YzA4YTk2ZDYzZDBkMjhlZjcwMDY3NzI4YWUzNC4u
M2ZkNjY3ZmZlNGI1ZDNmMTI1N2E1ZDZkZjUwZWQ4NGE4ZmZlM2ExMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcs
OCArNjcsOCBAQCBjbGFzcyBIVE1MRnJhbWVTZXRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxF
bGVtZW50IHsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fcm93TGVuZ3RoczsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGVuZ3RoW10+IG1fY29sTGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5ndGg+IG1f
cm93TGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5ndGg+IG1fY29sTGVuZ3RoczsKIAogICAg
IGludCBtX3RvdGFsUm93czsKICAgICBpbnQgbV90b3RhbENvbHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDJjZGFjOTEyMmVmOWVhNzcyNzliY2RjMGQ2M2E0ZWFkZmU5NzhlZGQuLjAyOTdjZTBhZDIz
NTRjZmFlODIyOWZhYjNlOGVlNTFkODc5MzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC05OSw2
ICs5OSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTU1Myw3
ICsxNTU0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4U3ViSW1h
Z2UyRCIsICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBj
aGFyW10+IHplcm87CisgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAg
ICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7
CiAgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6
ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwg
JnNpemUsIG51bGxwdHIpOwpAQCAtMTU2MSw3ICsxNTYyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhT
dWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWdu
ZWQgY2hhcltdPihzaXplKTsKKyAgICAgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5z
aWduZWQgY2hhcj4oc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXplcm8pIHsKICAgICAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwg
ImNvcHlUZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01NzYxLDcgKzU3NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEdWludCBudQogICAg
ICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVy
VmFsdWVbMl0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewogCi0gICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8R0MzRGZsb2F0W10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1
ZmZlckRhdGEgPSBtYWtlVW5pcXVlQXJyYXk8R0MzRGZsb2F0PihidWZmZXJTaXplKTsKICAgICAg
ICAgZm9yIChHQzNEdWludCBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkgewogICAg
ICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDRdID0gYXR0cmliVmFsdWUudmFsdWVbMF07CiAgICAg
ICAgICAgICBidWZmZXJEYXRhW2lpICogNCArIDFdID0gYXR0cmliVmFsdWUudmFsdWVbMV07CkBA
IC01OTA3LDE1ICs1OTA4LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpl
bnN1cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIH0KIAogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZShp
bnQgY2FwYWNpdHkpCi0gICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKLSAgICAsIG1fY2FwYWNpdHkoY2FwYWNp
dHkpCisgICAgOiBtX2J1ZmZlcnMoY2FwYWNpdHkpCiB7CiB9CiAKIEltYWdlQnVmZmVyKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihj
b25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBt
X2NhcGFjaXR5OyArK2kpIHsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9i
dWZmZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZl
cnNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghYnVmKQogICAgICAgICAgICAgYnJlYWs7CkBAIC01
OTMwLDcgKzU5MzAsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ID0gc3RkOjptaW4obV9jYXBhY2l0eSAtIDEsIGkpOworICAgIGkgPSBzdGQ6Om1pbihtX2J1ZmZl
cnMuc2l6ZSgpIC0gMSwgaSk7CiAgICAgbV9idWZmZXJzW2ldID0gV1RGTW92ZSh0ZW1wKTsKIAog
ICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0KCk7CkBAIC01OTM4LDkgKzU5
MzgsOSBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHJldHVybiBidWY7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxl
VG9Gcm9udChpbnQgaWR4KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFn
ZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KHNpemVfdCBpZHgpCiB7Ci0gICAgZm9yIChpbnQg
aSA9IGlkeDsgaSA+IDA7IC0taSkKKyAgICBmb3IgKHNpemVfdCBpID0gaWR4OyBpID4gMDsgLS1p
KQogICAgICAgICBtX2J1ZmZlcnNbaV0uc3dhcChtX2J1ZmZlcnNbaS0xXSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZiNzgwYzVkNzI5YzQ5Li5kMmEz
OTE5NTlkYmMxNGVlY2FmYjBhMGUwMGViN2U4ODk2NjJmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01
MTcsOSArNTE3LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBH
UFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUKICAgICAgICAgLy8gVGhlIHBv
aW50ZXIgcmV0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGltYWdlIGJ1ZmZlciBtYXAuCiAgICAgICAg
IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKLSAg
ICAgICAgaW50IG1fY2FwYWNpdHk7CisgICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChzaXplX3Qg
aWR4KTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4+IG1fYnVm
ZmVyczsKICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNh
Y2hlIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCBkNzllMDM5OWM0
ODgxZTRmOWZlZjYzY2ZmYjRlYThlMDdmNWViMjgwLi40NjU4ZmQwOGU2ZGZkOGI4MWNkNDRhYTM3
MzFhZDZiMTFkMWUxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50Q2hhcmFjdGVyKFN0cmluZ0ltcGwmIHN0cmlu
ZywgVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBs
ZW4pCitVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBpbnQmIGxlbikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzcGFjaWZpZWQobGVuZ3RoKTsKQEAgLTEwNSw3ICsx
MDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKICAgICBzdHIgPSBzdHItPnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpOwogCiAgICAgbGVuID0gY291bnRDaGFyYWN0ZXIoKnN0ciwgJyAnKSArIDE7Ci0gICAgYXV0
byByID0gc3RkOjptYWtlX3VuaXF1ZTxMZW5ndGhbXT4obGVuKTsKKyAgICBhdXRvIHIgPSBtYWtl
VW5pcXVlQXJyYXk8TGVuZ3RoPihsZW4pOwogCiAgICAgaW50IGkgPSAwOwogICAgIHVuc2lnbmVk
IHBvcyA9IDA7CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBu
ZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgcmV0dXJu
IHI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQorVW5pcXVlQXJyYXk8TGVuZ3RoPiBuZXdMZW5ndGhB
cnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiB7CiAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IHN0ciA9IHN0cmluZy5pbXBsKCktPnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIGlm
ICghc3RyLT5sZW5ndGgoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxM
ZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQog
ICAgIH0KIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKCpzdHIsICcsJykgKyAxOwotICAgIGF1
dG8gciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVuZ3RoW10+KGxlbik7CisgICAgYXV0byByID0gbWFr
ZVVuaXF1ZUFycmF5PExlbmd0aD4obGVuKTsKIAogICAgIGludCBpID0gMDsKICAgICB1bnNpZ25l
ZCBwb3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCA1N2NlMGNlNzhiYjNlZTEz
YzIzY2ZiNjE5NzEwYjA2N2IyNGMwYWYxLi42NGEwOGU4YzFiNGZjOTZlNTNjYzcyYmViNmVjODRi
MGM3NTdhNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0xMzgsOCArMTM5LDggQEAg
c3RydWN0IExlbmd0aCB7CiAvLyBCbGVuZCB0d28gbGVuZ3RocyB0byBwcm9kdWNlIGEgbmV3IGxl
bmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gVXNlZCBmb3IgYW5pbWF0aW9uLgogTGVuZ3Ro
IGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dy
ZXNzKTsKIAotc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBT
dHJpbmcmLCBpbnQmIGxlbmd0aCk7Ci1zdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0xlbmd0
aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKK1VuaXF1ZUFycmF5PExlbmd0aD4g
bmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW5ndGgpOworVW5pcXVlQXJyYXk8
TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7CiAKIGlu
bGluZSBMZW5ndGg6Okxlbmd0aChMZW5ndGhUeXBlIHR5cGUpCiAgICAgOiBtX2ludFZhbHVlKDAp
LCBtX2hhc1F1aXJrKGZhbHNlKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVjMTczMjZhZWYwLi5iMjU1MThk
ODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3NSw4ICsy
NzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKLSAgICBt
X3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVy
T2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9zb3VyY2VDaGFubmVscyA9IG1h
a2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOworICAgIG1fZGVz
dGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9hdCo+KG51bWJlck9mQ2hhbm5l
bHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFu
bmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5k
ZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJhZWJkNS4uZjcxNmNlZjczYTM1
ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNpbmNsdWRlICJaZXJvUG9sZS5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAgY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+
PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVG
aWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNv
bnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9h
dCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0
Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9hdCo+IG1fZGVzdGluYXRp
b25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWdu
ZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1ZW5jeSAvKiAw
IC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZsb2F0IGdhaW4sIGZs
b2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0MTAxZjY2YjVmYzA5YWEzZWZi
MTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2MxYWRjY2JmZWFjMDRkNTAzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC00NCw2ICs0NCw3
IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUgewogI2lmIFVTRShXRUJBVURJ
T19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBHc3RGRlRGMzIqIG1faW52
ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29tcGxleFtdPiBtX2NvbXBs
ZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+IG1fY29tcGxleERhdGE7
CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1f
aW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVH
U3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4ZTk1ZjJkMmI4MjdkMTU5ZTMx
OTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBlMzJhNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZy
YW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBG
RlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAgICA6IG1fRkZUU2l6ZShmZnRT
aXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihmZnRT
aXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29t
cGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAgICwgbV9jb21wbGV4
RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6
ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZG
VFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkp
CiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSgpCiBGRlRGcmFtZTo6RkZU
RnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9GRlRTaXplKGZyYW1lLm1fRkZU
U2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKLSAgICAsIG1f
Y29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVB
cnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQog
ICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCiAg
ICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRTaXplKSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZl
cnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
LmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2OTliNTU0MGY1My4uOWQ4MjA0
YzhhMjQ2NjBmYzc3MmIwY2Y3YjU2NTA4N2EzNDUxNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVydGVyIHsKICAgICB7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50cyA9IDQ7CiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7Ci0gICAgICAgIG1f
dW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+
KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNvbXBvbmVudCk7
CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gbWFrZVVuaXF1ZUFycmF5
PHVpbnQ4X3Q+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNv
bXBvbmVudCk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRh
LmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZvcm1hdENvbnZlcnRlciB7
CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBpbnQgbV9zcmNTdHJpZGUs
IG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOworICAgIFVuaXF1ZUFycmF5
PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVmNzQ0N2NlNDc5MzQ4NmE3
NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3Nzg0YzhiMDM0MDg0MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDYsNyAr
MTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0RGF0YUZvcm1hdChHQzNE
ZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50
IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09IDEgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5wYWNrQWxp
Z25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87
CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICBpZiAod2lkdGggPiAw
ICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgIEdD
M0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0
aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsKQEAgLTE1NCw3ICsx
NTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7CisgICAg
ICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CiAgICAgICAg
IGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
aW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJmM2NmYS4uMmU3NDg3OWQ4
ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0EpCkBA
IC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFn
ZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKKyAgICAgICAg
VW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwogI2VuZGlmCiAgICAg
ICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21Tb3VyY2UgbV9pbWFnZUh0
bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCA3MjlmODQzZGY5N2Jl
ZWJjYjA0YWEyZTk2NjEzYTM1MzY4MGVjN2Q2Li5hMmVlZjQyYmVmZmI4MzgwZjg3YWFkN2M1YzAw
OGEzZjdkNzc2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAjaWZkZWYgREVC
VUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0RGlydHlSZWN0cyhIV05E
IHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0KIAogICAgIERXT1JEIGRh
dGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwgMCk7Ci0gICAgYXV0byBy
ZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KGRhdGFT
aXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWdu
ZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRhdGEgPSByZWludGVycHJl
dF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsKICAgICBpZiAoITo6R2V0
UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25EYXRhKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgxNTIyYWYxMWIyMWMxNzc3
NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlmMzUwNGRmMWQ5ZmVhNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJSZWdpb24u
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCkBAIC0zNDAsNyArMzQx
LDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgpIC8gMjsKIAogICAgIHVp
bnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiB0bXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAgICBhdXRvIHRtcCA9IG1h
a2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9wID0gc291cmNlICsgKGkg
KiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2ZjRlM2I2YWFhN2RjYzFi
MTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi4wNzFkY2NjOTQxMjVmZjdhNWE4OTQ4NWQ1NGJmOTI5MTM4
N2E3YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHByZW11bHRpcGx5IHRoZSBh
bHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJlZmVyIHRvIG1hbm51YWxs
eSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBSR0JBOCBmb3JtYXRzIGlu
c3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsKLSAgICAgICAgbV9mb3Jt
YWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KG1faW1hZ2VXaWR0
aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0
KTsKICAgICAgICAgY29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxEYXRhKTsKICAgICAgICAgdWludDhfdCogZGVzdGlu
YXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CiAgICAgICAgIGNvbnN0IHB0cmRp
ZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBzaXplb2YodWludDE2X3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
CmluZGV4IGFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2NDYuLjg2OTgxMzY0
NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xNzAsNyArMTcxLDcgQEAgdm9pZCBUZXh0dXJlOjp1cGRhdGVTdWJS
ZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKICAgICBpbnQgdGVt
cEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFsbGVyIG9mIHRo
ZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0U2FuaXRpemVkCiAgICAgICAgIHN0
ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpLCBtX3RpbGVzLmJvcmRlclRl
eGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAqCiAgICAgICAgIHN0ZDo6bWlu
KG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxlcy5ib3JkZXJUZXhlbHMo
KSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOwotICAgIGF1dG8gdGVtcEJ1ZmYgPSBz
dGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KHRlbXBCdWZmU2l6ZSk7CisgICAgYXV0byB0ZW1w
QnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZTaXplKTsKIAogICAgIGZv
ciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAqIG1fdGlsZXMubnVt
VGlsZXNZKCk7IHRpbGUrKykgewogICAgICAgICBpbnQgeEluZGV4ID0gdGlsZSAlIG1fdGlsZXMu
bnVtVGlsZXNYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAppbmRleCBkZjBhMGI4NTVlM2Q0MDBiMDU0OTdjMzg2YTlkYmI4ZTZkYjcyM2UxLi41NDcy
NzRmZmE2OGE1MmU0NWUwZDcyZDI4YjJhMTM5YzZmNWIwYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAgICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51
bnNhZmVHZXQoKTsKIAotICAgIGF1dG8gcGl4ZWxzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZCBjaGFyW10+KHRvdGFsQnl0ZXMpOworICAgIGF1dG8gcGl4ZWxzID0gbWFrZVVuaXF1ZUFycmF5
PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcGl4ZWxzKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTY2OCwxMSArNjY5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBpZiAobGVuZ3RoKSB7
CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9n
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgICAgIFZlY3RvcjxHTGNo
YXI+IGluZm8obGVuZ3RoKTsKKyAgICAgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBs
ZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICAgICAgZW50cnkubG9nID0gZ2V0VW5tYW5n
bGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgICAgICBlbnRy
eS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEo
KSwgc2l6ZSkpOwogICAgIH0KIAogICAgIGlmIChjb21waWxlU3RhdHVzICE9IEdMX1RSVUUpIHsK
QEAgLTg1MSwxOCArODUyLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0
dHJpYkltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpCiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7CiAgICAgOjpn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZt
YXhBdHRyaWJ1dGVTaXplKTsKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hh
cltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
IGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhB
dHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVz
IG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGlu
dCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAm
dHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5kYXRh
KCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hB
REVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgp
KTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0s
IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxl
bmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFt
ZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgp
LCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0
aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGluZGV4LCB1bmlm
b3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEoKSk7CiAjZW5k
aWYKIApAQCAtODk4LDE4ICs4OTksMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0
aXZlVW5pZm9ybUltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludAogICAgIEdM
aW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdM
X0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7CiAKLSAgICBhdXRv
IG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlmb3JtU2l6ZSk7IC8vIEdM
X0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAg
ICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZP
Uk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFt
ZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwot
ICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwg
Jm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2
ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNp
emUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3lt
Ym9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3RyaW5nKG5hbWUu
Z2V0KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxT
eW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJpbmcobmFt
ZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5n
IHVuaWZvcm1OYW1lKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpOworICAgIFN0cmluZyB1bmlmb3Jt
TmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAl
ZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3Jh
bSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgogICAgIApAQCAtMTY5OSwxNCArMTcwMCwxNCBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0g
ICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICA6
OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7
CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRQcm9ncmFtSW5m
b0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBHQzNEc2l6
ZWkgY291bnQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdOwogICAgIGdldEF0dGFj
aGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwogCi0gICAgcmV0dXJuIGdl
dFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmdldCgpKSk7Cisg
ICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZv
LmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
KiB2YWx1ZSkKQEAgLTE3NzAsMTEgKzE3NzEsMTEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRvIGluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRTaGFkZXJJbmZv
TG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgVmVjdG9yPEdMY2hh
cj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3Ro
LCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJd
ID0geyBzaGFkZXIsIDAgfTsKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJz
LCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9n
KHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGFiZWRmNTM1
NTNkZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLjJlNmM1MmM2MzQ4OTY2NDlhZjVjNmE0
NDQ3Yjk4ZjEwYTNkMjQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcApAQCAtNDUwLDEyICs0NTAsMTIgQEAgc3RhdGljIENTdHJpbmcgZ2V0U2hhZGVyTG9n
KEdMdWludCBzaGFkZXIpCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dMZW5ndGgp
OworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9M
ZW5ndGggPSAwOwotICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJmlu
Zm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxv
Z0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAgIHNpemVfdCBzdHJpbmdM
ZW5ndGggPSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1cm4geyBpbmZvLmdldCgp
LCBzdHJpbmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEoKSwgc3RyaW5nTGVuZ3Ro
IH07CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50IHByb2dyYW0pCkBA
IC00NjUsMTIgKzQ2NSwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRQcm9ncmFtTG9nKEdMdWludCBw
cm9ncmFtKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9nTGVuZ3RoKTsKKyAgICBW
ZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXplaSBpbmZvTGVuZ3RoID0g
MDsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xlbmd0aCwgJmluZm9MZW5n
dGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVu
Z3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0
aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGluZm8uZ2V0KCksIHN0
cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJpbmdMZW5ndGggfTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAppbmRleCAzZWRhZDE4
MjFlYzQ2ZGNiNDBmZTUwNjJjYTI4OTRmYjQ1OGZkN2ZlLi5mMGUyNTgwOTIwNTM4NTRjZDUxNTk2
YzdlMDcxNzU5ZWY3Y2JmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJh
eS5oPgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEz
NCw3ICsxMzUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpYwogICAgIHVuc2lnbmVkIHNyY0J5
dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKICAgICBjb25zdCB1aW50OF90KiBz
cmNSb3dzID0gc291cmNlLmRhdGEoKSArIChvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmln
aW54ICogNCkudW5zYWZlR2V0KCk7CiAKLSAgICB1aW50OF90KiByb3cgPSBuZXcgdWludDhfdFtz
cmNCeXRlc1BlclJvd107CisgICAgYXV0byByb3cgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4o
c3JjQnl0ZXNQZXJSb3cpOwogCiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQudW5zYWZl
R2V0KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoLnVuc2FmZUdl
dCgpOyB4KyspIHsKQEAgLTE0NiwxNyArMTQ3LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpw
dXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGlj
CiAgICAgICAgICAgICAgICAgcm93W2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICog
YWxwaGEgKyAyNTQpIC8gMjU1OwogICAgICAgICAgICAgICAgIHJvd1tiYXNleCArIDNdID0gYWxw
aGE7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4ocm93ICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KHNyY1Jvd3MgKyBiYXNleClbMF07CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHJvdy5nZXQoKSArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwogICAgICAgICB9CiAKICAgICAgICAgRDJEMV9SRUNU
X1UgZHN0UmVjdCA9IEQyRDE6OlJlY3RVKGRlc3RQb2ludC54KCksIGRlc3RQb2ludC55KCkgKyB5
LCBkZXN0UG9pbnQueCgpICsgc2l6ZS53aWR0aCgpLCBkZXN0UG9pbnQueSgpICsgeSArIDEpOwot
ICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJlY3QsIHJvdywgc3JjQnl0
ZXNQZXJSb3cpOworICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJlY3Qs
IHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhy
KSk7CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICB9Ci0KLSAgICBk
ZWxldGVbXSByb3c7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYmIzZmQyZDE5YjQ3Yzc2OGIxYzAyYTEzZjg2MzIxN2I0MTg3NDFh
NS4uYWNjMjFhZGMxOWUzMjcxMDAwMmNkYWUyZWUzYjdlNDI4Mjc5MGNiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgPHBuZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUFKT1Ip
ICYmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUlOT1IpICYmIChQTkdfTElCUE5HX1ZFUl9NQUpP
UiA+IDEgfHwgKFBOR19MSUJQTkdfVkVSX01BSk9SID09IDEgJiYgUE5HX0xJQlBOR19WRVJfTUlO
T1IgPj0gNCkpCiAjZGVmaW5lIEpNUEJVRihwbmdfcHRyKSBwbmdfam1wYnVmKHBuZ19wdHIpCkBA
IC0xMjAsNyArMTIxLDYgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewogICAgICAgICAsIG1fY3Vy
cmVudEJ1ZmZlclNpemUoMCkKICAgICAgICAgLCBtX2RlY29kaW5nU2l6ZU9ubHkoZmFsc2UpCiAg
ICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkKLSAgICAgICAgLCBtX2ludGVybGFjZUJ1ZmZlcigw
KQogICAgIHsKICAgICAgICAgbV9wbmcgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KFBOR19MSUJQ
TkdfVkVSX1NUUklORywgMCwgZGVjb2RpbmdGYWlsZWQsIGRlY29kaW5nV2FybmluZyk7CiAgICAg
ICAgIG1faW5mbyA9IHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QobV9wbmcpOwpAQCAtMTQzLDggKzE0
Myw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICAgICAgaWYgKG1fcG5nICYmIG1faW5m
bykKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB6ZXJvIHRoZSBwb2ludGVycy4KICAgICAgICAg
ICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZtX3BuZywgJm1faW5mbywgMCk7Ci0gICAgICAg
IGRlbGV0ZVtdIG1faW50ZXJsYWNlQnVmZmVyOwotICAgICAgICBtX2ludGVybGFjZUJ1ZmZlciA9
IDA7CisgICAgICAgIG1faW50ZXJsYWNlQnVmZmVyLnJlc2V0KCk7CiAgICAgICAgIG1fcmVhZE9m
ZnNldCA9IDA7CiAgICAgfQogCkBAIC0xODgsOCArMTg3LDggQEAgY2xhc3MgUE5HSW1hZ2VSZWFk
ZXIgewogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0g
aGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBo
YTsgfQogCi0gICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJsYWNlQnVmZmVyOyB9Ci0gICAgdm9pZCBjcmVhdGVJbnRlcmxhY2VCdWZmZXIoaW50IHNp
emUpIHsgbV9pbnRlcmxhY2VCdWZmZXIgPSBuZXcgcG5nX2J5dGVbc2l6ZV07IH0KKyAgICBwbmdf
Ynl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmxhY2VCdWZmZXIu
Z2V0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUludGVybGFjZUJ1ZmZlcihpbnQgc2l6ZSkgeyBtX2lu
dGVybGFjZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxwbmdfYnl0ZT4oc2l6ZSk7IH0KIAogcHJp
dmF0ZToKICAgICBwbmdfc3RydWN0cCBtX3BuZzsKQEAgLTE5OCw3ICsxOTcsNyBAQCBjbGFzcyBQ
TkdJbWFnZVJlYWRlciB7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QnVmZmVyU2l6ZTsKICAgICBi
b29sIG1fZGVjb2RpbmdTaXplT25seTsKICAgICBib29sIG1faGFzQWxwaGE7Ci0gICAgcG5nX2J5
dGVwIG1faW50ZXJsYWNlQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PHBuZ19ieXRlPiBtX2ludGVy
bGFjZUJ1ZmZlcjsKIH07CiAKIFBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IGZl
ODI5MGU5NTc1NmJkMTQyNWFhOWYwOGI5MTUyY2JmNjcxNTllN2YuLmEyOWU1NjY4MTE4YTQ2OTU5
OTBhOTEyNzgzMTVhNTQyMGY1YjhjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0VC
UEltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgVVNF
KFdFQlApCiAKQEAgLTE4NSw3ICsxODYsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRlY29k
ZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBXZWJQRGVtdXhlciogZGVtdXhlcikKICAgICBkZWNv
ZGVyQnVmZmVyLnUuUkdCQS5zdHJpZGUgPSB3ZWJwRnJhbWUud2lkdGggKiBzaXplb2YoUkdCQTMy
KTsKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplID0gZGVjb2RlckJ1ZmZlci51LlJHQkEu
c3RyaWRlICogd2VicEZyYW1lLmhlaWdodDsKICAgICBkZWNvZGVyQnVmZmVyLmlzX2V4dGVybmFs
X21lbW9yeSA9IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcChuZXcg
dWludDhfdFtkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplXSgpKTsKKyAgICBhdXRvIHAgPSBtYWtl
VW5pcXVlQXJyYXk8dWludDhfdD4oZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZSk7CiAgICAgZGVj
b2RlckJ1ZmZlci51LlJHQkEucmdiYSA9IHAuZ2V0KCk7CiAgICAgaWYgKCFkZWNvZGVyQnVmZmVy
LnUuUkdCQS5yZ2JhKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKaW5kZXggMzQyYmU1NjliNDczMmYyYzk2ZDVkMGNjNWFlY2YxMDdjY2EzMmJiMi4uNWM0
Y2EyOTE1ZmMxODRkZmVhZTUzMmVlY2FkNjlkNTQxY2JmMzAyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2Nr
ZXRTdHJlYW1IYW5kbGUgewogICAgIHZvaWQgZGlkT3BlblNvY2tldCgpOwogCiAgICAgc3RydWN0
IFNvY2tldERhdGEgewotICAgICAgICBTb2NrZXREYXRhKHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+
JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICBTb2NrZXREYXRhKFVuaXF1ZUFycmF5
PGNoYXI+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBk
YXRhID0gV1RGTW92ZShzb3VyY2UpOwogICAgICAgICAgICAgc2l6ZSA9IGxlbmd0aDsKQEAgLTg5
LDcgKzkwLDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRT
dHJlYW1IYW5kbGUgewogICAgICAgICAgICAgb3RoZXIuc2l6ZSA9IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRhOworICAgICAgICBVbmlxdWVBcnJh
eTxjaGFyPiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA2ZmNiZjgzNzhjYTM3NWNmOTIx
YWRmOWFhNjRhY2U1NWFkMmM2ZGMxLi41YTQ1ZGQ4ZGI1MmRhOGJmMWVmNWJhZWY0NGIxMTVkZTc2
NTcyMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTQ0LDkg
KzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PGNoYXJbXT4gY3JlYXRlQ29weShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RhdGlj
IFVuaXF1ZUFycmF5PGNoYXI+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjb3B5KG5ldyBjaGFyW2xlbmd0aF0p
OworICAgIGF1dG8gY29weSA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5ndGgpOwogICAgIG1l
bWNweShjb3B5LmdldCgpLCBkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJuIGNvcHk7CkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZERhdGEoQ1VSTCog
Y3VybEhhbmRsZSkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAgIGNvbnN0IHNp
emVfdCBidWZmZXJTaXplID0gMTAyNDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRh
KG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlQXJyYXk8
Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IGJ5dGVzUmVhZCA9IDA7CiAKICAgICBDVVJM
Y29kZSByZXQgPSBjdXJsX2Vhc3lfcmVjdihjdXJsSGFuZGxlLCBkYXRhLmdldCgpLCBidWZmZXJT
aXplLCAmYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGUwYThmOWQ0
MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0ZTkyMDI5YWNi
ZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtMzgsNiAr
MzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJl
YW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc3LDcgQEAg
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1I
YW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291dHB1dFN0cmVh
bTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVmUHRy
PEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltd
PiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVmZmVyOwogCiAg
ICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3NmUyMmI2NDYw
N2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2OTU3
NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQoR1JlZlB0cjxH
SU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJlYW0pOwogICAg
IG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9fc3RyZWFtX2dl
dF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAgIG1fcmVhZEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpFKTsKKyAgICBt
X3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJfU0laRSk7CiAK
ICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1fcmVh
ZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpB
c3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVmZDlmM2I2MTVi
N2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUxNzY1ODI2YWJkNTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsK
IAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFy
aWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFy
aWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgp
KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVm
ZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2MDViNjdkMGJiMzEyMDcz
MzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5ZjllNjg0OTliYWM1ZjBhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5
V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6Omdl
dFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG9ydCkK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4g
dEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgaWYgKCF0
UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3RvcjxU
Q0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxUQ0hBUj4gdEhvc3QoYnVm
ZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7CiAgICAgSEtFWSBrZXk7
CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3RlbUh0
dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG8KICAgICAgICAgTCJQ
cm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0eXBlLAotICAgICAgICAo
TFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUpdFJlZ0J1ZmZlci5kYXRh
KCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJST1JfU1VDQ0VTUykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5U3RyaW5nKHRSZWdCdWZm
ZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQorICAgIGlmICghcGFyc2VQ
cm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgpLCBidWZmZXJMZW4sIHBv
cnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0
LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwgdEhvc3QuZGF0YSgpLCBi
dWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAnOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNjODYzN2Q0NjFjODc0NjQ1
Li4zYzQ2Mzk0ZTJlM2QzNDc1MmJiYzY2ZDFhNTUyNTJhYmJjMzcwODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMTQz
LDExICsxNDMsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAKICAgICBz
aXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQgPSAwOwogICAgIHNpemVfdCBhdHRh
Y2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVmVjdG9yPEF0
dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50Q291bnQpOwogCiAgICAgaWYg
KGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsKLSAgICAgICAgbWVtY3B5
KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZv
KSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lbWNweShhdHRhY2htZW50SW5mby5kYXRh
KCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50
KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFj
aG1lbnRDb3VudDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRD
b3VudDsgKytpKSB7CkBAIC00MTcsNyArNDE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0
cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICBpb3ZbMF0uaW92X2Jh
c2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwogICAgIGlvdlswXS5p
b3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdHRh
Y2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBWZWN0b3I8QXR0YWNobWVudEluZm8+
IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRhY2htZW50RkRCdWZmZXI7
CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2UuYXR0YWNobWVudHMoKTsK
QEAgLTQ0NCw3ICs0NDMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVu
aXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQdHIgPSByZWludGVycHJl
dF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdHRh
Y2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVu
dHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8ucmVzaXplKGF0dGFjaG1lbnRzLnNp
emUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXR0YWNobWVu
dEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpAQCAtNDY2LDcgKzQ2NSw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1
dE1lc3NhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpb3ZbaW92TGVu
Z3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAgICAgICBpb3ZbaW92TGVu
Z3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmRhdGEoKTsKICAgICAgICAgaW92W2lvdkxl
bmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50cy5zaXpl
KCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93
aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggNmRlMWJhYjg1OTA3N2Y4MTcwYzhiZDJiZmE1MjE5NWZh
YTcxYjcyZC4uZDA2MzhkMzEzYTZlN2M5MmViODI0MTQ4MjQ4OTNkYjY2NTc2YmQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTQyLDEyICs0MiwxMiBA
QCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogCi0gICAg
aWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwg
YnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
bG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IGU1
MjdmODE1MjU3YzA4NzA5Y2I0ZmExNWI5YjA3OTU5MjFjMDEzZjkuLjFmNzY4MDg1NjRlZDRkYjZl
NWMwY2UxZWI2MzAyMTE3MWU5MGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewpAQCAtODYsOCArODcsNyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogICAgICAgIAogICAgIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7Ci0gICAgICAgIHNpemVfdCBtX3NpemUgeyAwIH07Cisg
ICAgICAgIFZlY3RvcjxIYW5kbGU+IG1fZGF0YTsKICNlbHNlCiAgICAgICAgIEhhbmRsZSBtX2Vt
cHR5SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZlMTVlMDMyODQxOGJjM2Iw
YWIzM2QuLmI4ZTc0M2QyMzYwY2ZlZWZjMTdiY2EyNGQ1OTcxMWNkZDU4YTViN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC0xNjMs
MzQgKzE2MywzMyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0
ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVCghbV9kYXRhKTsKKyAgICBBU1NFUlQobV9kYXRhLmlzRW1wdHkoKSk7CiAKLSAgICBtX2Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsK
LSAgICBtX3NpemUgPSBzaXplOworICAgIG1fZGF0YS5yZXNpemUoc2l6ZSk7CiB9CiAKIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJh
dG9yW10oc2l6ZV90IGkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aSA8IG1fc2l6ZSk7IAorICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaV07CiB9CiAKIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtpXTsK
IH0KIAogc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zaXplOworICAgIHJldHVybiBtX2RhdGEuc2l6ZSgpOwogfQogCiB2
b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNp
emUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAg
ZW5jb2RlciA8PCBtX2RhdGFbaV07CisgICAgZm9yIChhdXRvJiBoYW5kbGUgOiBtX2RhdGEpCisg
ICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCiBib29sIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IGZiOGI3MzVmODczYTE1M2E1OTE3M2Y3MjQ5NTgwMjRm
NThkNjUyZDMuLjZhZjMxNTEzMTY1MThhMmNmNTYyODg4MWI0ODVjMjIzMzBjYzgwOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjEw
LDE4ICsyMTAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRv
U3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQoaHIpKQog
ICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91bmQpOwog
ICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwot
ICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGU3RyaW5nUmVmPiBpdGVt
czsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZlts
ZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxCb3VuZCA8
PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBCU3RyaW5nIHN0cjsKICAgICAgICAg
ICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZzdHIpOwog
ICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0cik7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopaXRlbXMsIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgaWYg
KGl0ZW1zKQotICAgICAgICBkZWxldGVbXSBpdGVtczsKKyAgICBDRkFycmF5UmVmIHJlc3VsdCA9
IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjMyLDE4ICsy
MzAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJy
YXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQoaHIpKQogICAgICAgICBo
ciA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91bmQpOwogICAgIGxvbmcg
bGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwotICAgIENGTnVt
YmVyUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGTnVtYmVyUmVmPiBpdGVtczsKICAgICBp
ZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRk51bWJlclJlZltsZW5dOworICAg
ICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7
IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0g
OjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0pOwogICAgICAgICAg
ICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkg
OiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQg
PSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBsZW4sICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykKLSAgICAgICAgZGVsZXRlW10gaXRlbXM7Cisg
ICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRl
bXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwCmluZGV4IGUwMDk0Yjk2YmIxODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4
MmQ3MDkuLjE3ZWUxMmY2OGU4MmY3YWRlMDA5MDAyMGEwODNiNjUyMjk2MWMzNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNw
cApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQog
ICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lv
bkluZm9TaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gdmVyc2lvbkluZm9EYXRhKHZlcnNpb25JbmZv
U2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZv
RGF0YS5nZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9u
SW5mb0RhdGEuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9uYW1lID0g
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJvZHVjdE5hbWUiKTsKLSAg
ICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAi
RmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbklu
Zm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CisgICAgbV9kZXNjcmlwdGlvbiA9IGdldFZl
cnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRGVzY3JpcHRpb24iKTsKICAg
ICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklMRUlORk8qIGluZm87CiAgICAgVUlOVCBp
bmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwg
TCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXplKSB8fCBpbmZvU2l6ZSA8IHNpemVvZihW
U19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0
YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwgaW5mb1NpemUg
PCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTFM7CiAgICAgbV9t
b2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTVM7CkBAIC0xOTMsMTEg
KzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGdldFZlcnNpb25JbmZv
KHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7Cisg
ICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIk1JTUVUeXBlIikuc3Bs
aXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uTGlzdHM7Ci0gICAg
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZUV4dGVudHMiKS5zcGxp
dCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0Rh
dGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVyc2lv
bkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMp
OworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlT3Blbk5h
bWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0eXBlc1tp
XS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4OGIxM2ZmNWUxNTdm
OGQ2MDMuLjE5MDQ4OTczZmIxNzYzMGVmNjVmNWQ2MjYxMWEzNjg0MTY0M2MxYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTUzMiw5ICs1MzIsOSBA
QCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5j
ZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZTdHJpbmdSZWYgZGlkUmVtb3ZlRGVmYXVs
dHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVmYXVsdFNldHRpbmdzRnJvbVNhZmFyaTNC
ZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0RGVmYXVsdHMgPSAhYm9vbGVhblZhbHVl
Rm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0LCBkaWRSZW1vdmVE
ZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVS
ZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVS
ZWZbXT4oY291bnQpOwotICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5
cy5nZXQoKSwgdmFsdWVzLmdldCgpKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBrZXlzKGNvdW50
KTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiB2YWx1ZXMoY291bnQpOworICAgIENGRGljdGlvbmFy
eUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmICgha2V5c1tp
XSB8fCAhdmFsdWVzW2ldIHx8IENGR2V0VHlwZUlEKGtleXNbaV0pICE9IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE1ZTI3Zjk4NWMyY2Q5
OTZkZTlhMDdlZWE5YjU5ZmRkMGY0OGU3ODcuLjIyZjVhMjYyYzFkZTFiODE5ZGNlYWYzYWJmYjc3
YzBmMzk4MWJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xNzg0LDgg
KzE3ODQsOCBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKICAgICBtZW51SXRlbUluZm8uZk1hc2sgPSBNSUlNX1NUUklORzsKICAgICA6
OkdldE1lbnVJdGVtSW5mbyhoTWVudSwgaW5kZXgsIHRydWUsICZtZW51SXRlbUluZm8pOwogCi0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdDSEFSW10+KG1lbnVJdGVtSW5mby5j
Y2ggKyAxKTsKLSAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1ZmZlci5nZXQoKTsKKyAg
ICBWZWN0b3I8V0NIQVI+IGJ1ZmZlcihtZW51SXRlbUluZm8uY2NoICsgMSk7CisgICAgbWVudUl0
ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZGF0YSgpOwogICAgIG1lbnVJdGVtSW5mby5jY2gr
KzsKICAgICBtZW51SXRlbUluZm8uZk1hc2sgfD0gTUlJTV9JRDsKIApAQCAtMTc5NCw3ICsxNzk0
LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0TWVudSk7CiAgICAgbV9j
dXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5n
ZXQoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5kYXRhKCks
IG1lbnVJdGVtSW5mby5jY2gpOwogICAgIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRp
Y19jYXN0PENvbnRleHRNZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lEKTsKIAogICAgIGlmIChh
Y3Rpb24gPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODA2M2UzZjliZGNhZDA3
ZjQ0YzJkNmU3N2FkZWU3ZWVlYjkzYWI2NS4uYmEzYWFjMTUxYjBjYzNmZThhYTVmYjhiYTE0NmM5
NmVjZjlhODdhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10g
dXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1Y3Rvcjo6VHJpdmlhbERlc3RydWN0b3IpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VHJpdmlhbERlc3RydWN0b3I6On5Ucml2aWFsRGVzdHJ1Y3Rv
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1Y3Rvcjo6c2V0TG9nKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTAyLTIyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBjdXJyZW50VGlt
ZSgpIC8gY3VycmVudFRpbWVNUygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBk
ZjQ5YzIxNDQ0NWVhM2I3MjBlMjJjMDg5OGUwYjZkNTY1MTU2ZWMwLi5lYjc4ZTlhOGM3ZmI3NjY4
MGY4ZjlhZjQ5ZTYwN2E3NDU0MGEzMGRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTE1MSw2ICsxNTEsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9UaHJlYWRpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL1RpbWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1Vu
aXF1ZUFycmF5LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9VbmlxdWVS
ZWYuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ZhcmlhbnQuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ZlY3Rvci5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODM0MTU2NzBjODhiMDkyNWI0ZTQ2NTdmZDM3MWY4ZWYyMTY2MmI2YS4u
OTI2YTNmNzJmZTAxMWQzMGFkZjk3ZTIzMGQ1ZmY2YmIzZmNmN2U2ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTcxNyw2ICs3MTcsNyBAQAogCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYxNEEg
LyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0
Q29udGVudHMubW0gKi87IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0Qw
MDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
dG1sICovOyB9OwogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9t
RGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2Fk
aW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9OworCQlFMzI0QTZGMDIwNDFDODIw
MDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5
LmNwcCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJD
RjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQzNTFGRDUwQ0MzMDBF
OThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICov
OyB9OwogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNERUE4MTAxRjBBNTg4
MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLzsgfTsKQEAgLTE4NDMsNiArMTg0NCw3IEBA
CiAJCUUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRvckxhbmd1YWdlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIg
LyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRo
cmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0Yz
MjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk4QkMw
RjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21G
aWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvb21GaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDkwMjk2NzE0RTJFM0E0MDAy
QkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNzc0LDYgKzI3NzYsNyBAQAogCQkJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAv
KiBUaHJlYWRpbmcuY3BwICovLAogCQkJCTUzMTFCRDVEMUVBOTQ5MEQwMDUyNTI4MSAvKiBUaHJl
YWRNZXNzYWdlcy5jcHAgKi8sCiAJCQkJMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUu
Y3BwICovLAorCQkJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAg
Ki8sCiAJCQkJNUM1RTYzM0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1ZVJlZi5jcHAgKi8sCiAJ
CQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3BwICovLAogCQkJCUJDNTVG
NUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovLApAQCAtMzMzOCw2ICszMzQxLDcg
QEAKIAkJCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzMTFCRDVFMUVBOTQ5MEUwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJDMjBCODFEQ0Q1NDUwMDA1NDJEOUUgLyogVGltZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI0QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVl
QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0IxRDBBNjAyNzAwRkVCQ0YzIC8q
IFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0ZDNzExRDU1MzVBODAw
MURGQkNEIC8qIFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNEMxRDBBNTkw
QzAwRkVCQ0YzIC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2MwODc2OWMxODIw
OGEzNjBjZDE2NWMyMGFiM2M2OTZjNzFmZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK3N0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkNvbnN0cnVjaW9ucyB7IDAgfTsKK2Ns
YXNzIFRyaXZpYWxEZXN0cnVjdG9yIHsKK3B1YmxpYzoKKyAgICBUcml2aWFsRGVzdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBudW1iZXJPZkNvbnN0cnVjaW9ucysrOworICAgIH0KKworICAgIH5U
cml2aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgICAoKm1fbG9nKSsrOworICAgIH0KKwor
ICAgIHZvaWQgc2V0TG9nKHVuc2lnbmVkKiBsb2cpCisgICAgeworICAgICAgICBtX2xvZyA9IGxv
ZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQqIG1fbG9nIHsgbnVsbHB0ciB9Owor
fTsKKworVEVTVChXVEZfVW5pcXVlQXJyYXksIFRyaXZpYWxEZXN0cnVjdG9yKQoreworICAgIHVu
c2lnbmVkIHNpemUgPSA0MjsKKyAgICB1bnNpZ25lZCBsb2cgPSAwOworICAgIHsKKyAgICAgICAg
RVhQRUNUX0VRKGxvZywgMCk7CisgICAgICAgIGF1dG8gYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8
VHJpdmlhbERlc3RydWN0b3I+KHNpemUpOworICAgICAgICBFWFBFQ1RfRVEobG9nLCAwKTsKKyAg
ICAgICAgRVhQRUNUX0VRKG51bWJlck9mQ29uc3RydWNpb25zLCBzaXplKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIGFycmF5W2ldLnNl
dExvZygmbG9nKTsKKyAgICB9CisgICAgRVhQRUNUX0VRKGxvZywgc2l6ZSk7Cit9CisKK1RFU1Qo
V1RGX1VuaXF1ZUFycmF5LCBOb25Ucml2aWFsRGVzdHJ1Y3RvcikKK3sKKyAgICB1bnNpZ25lZCBz
aXplID0gNDI7CisgICAgeworICAgICAgICBhdXRvIGFycmF5ID0gbWFrZVVuaXF1ZUFycmF5PHVu
c2lnbmVkPihzaXplKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGFycmF5W2ldLCAwKTsKKyAgICAgICAgICAgIGFy
cmF5W2ldID0gNDI7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNpemU7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9FUShhcnJheVtpXSwgNDIpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334564</attachid>
            <date>2018-02-24 10:21:01 -0800</date>
            <delta_ts>2018-03-03 01:07:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180225032100.patch</filename>
            <type>text/plain</type>
            <size>111759</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
OWVkODBkMmE3YWQ4NTkwZTY4NDQzNjQzMGY0MDEwMzI2YWFjNWRmLi40ZTUyYmM3M2I1OTdiZTIz
NTJhYThhZTc1YzQ2ZTYyZjFhZWMxM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wMi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5r
UG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY3VycmVudFdv
cmtpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
OjpUeXBlUHJvZmlsZXJMb2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
dGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHRvb2xz
L0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6SGVhcFZlcmlm
aWVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMi0yMyAgU2Fh
bSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIE51bWJlci5pc0lu
dGVnZXIgYW4gaW50cmluc2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiNmRkYTMyYmFiZWYwMWJkMDQ4ZGRhMTQ1ZjBhNTU4
YTlkZDMxMzEuLjllODc4MjIxNWE3NTNkOTk5NTg0ZDcyZTExYzYyNjQzMjU5ZDg2ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB3ZSB1c2UgYG1ha2VfdW5pcXVlPGNoYXJbXT4obnVtKWAgb3IgYG5ldyBjaGFyW251
bV1gLCBhbGxvY2F0aW9uIGlzCisgICAgICAgIGRvbmUgYnkgdGhlIHN5c3RlbSBtYWxsb2MgaW5z
dGVhZCBvZiBibWFsbG9jLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKKyAgICAgICAgYnkg
Zm9sbG93aW5nIHRocmVlIGNoYW5nZXMuCisKKyAgICAgICAgMS4gSW50cm9kdWNlIFVuaXF1ZUFy
cmF5PFQ+LiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20gRmFzdE1hbGxvYy4gV2hpbGUgQysrCisg
ICAgICAgIGFycmF5IHdpdGggYG5ld2AgbmVlZCB0byBob2xkIHRoZSBzaXplIHRvIGNhbGwgZGVz
dHJ1Y3RvciBjb3JyZWN0bHksIG91cgorICAgICAgICBVbmlxdWVBcnJheSBvbmx5IHN1cHBvcnRz
IHR5cGUgVCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgSXQgcmVkdWNlcyB0aGUgYWxsb2NhdGlvbiBzaXplIHNpbmNlIHdlIGRvIG5vdCBuZWVk
IHRvIHRyYWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICBhcnJheSBjb21wYXJlZCB0byBzdGFu
ZGFyZCBgbmV3IFRbXWAuIFRoaXMgaXMgYmFzaWNhbGx5IHVzYWJsZSBpZiB3ZSB3YW50IHRvCisg
ICAgICAgIGhhdmUgcmF3IGFycmF5IHdoaWNoIHBvaW50ZXIgd29uJ3QgYmUgY2hhbmdlZCBldmVu
IGlmIHRoZSBjb250YWluZXIgaXMgbW92ZWQuCisgICAgICAgIEluIGFkZGl0aW9uLCB3ZSBhbHNv
IGV4dGVuZCBVbmlxdWVBcnJheTxUPiBmb3IgdHlwZXMgd2hpY2ggaGF2ZSBub24gdHJpdmlhbAor
ICAgICAgICBkZXN0cnVjdG9ycy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQu
CisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FM
TE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10g
b3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAg
ICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RG
OjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAg
KFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3Rh
Y2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6
CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAg
ICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6
OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDItMjMgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIElUUCBkZWJ1ZyBsb2dnaW5nIGFzIGFu
IG9wdC1pbiBkZXZlbG9wZXIgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM0NzkwZjA4MzZjMjMzNTJk
NTEyMWQzMjU3MzJiOGZjN2E1YzQ3OGIuLjNiYjAyNDBlNDI3MWRmOTJmODc0NDg5N2NkMDlhMTUy
MDdiOTg1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxOC0wMi0yNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtl
X3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBv
ciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmg6CisgICAgICAgICogY3NzL1N0eWxlUnVsZS5oOgorICAgICAgICAqIGNz
c2ppdC9Db21waWxlZFNlbGVjdG9yLmg6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
U3ViSW1hZ2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzaW11bGF0ZVZlcnRleEF0dHJpYjApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICog
cGxhdGZvcm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld0Nvb3Jkc0FycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6Om5ld0xlbmd0aEFycmF5KToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
RHluYW1pY3NDb21wcmVzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNzQ29tcHJl
c3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkZURnJhbWU6OkZGVEZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1h
dENvbnZlcnRlcjo6Rm9ybWF0Q29udmVydGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RGlydHlSZWN0
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmxpcEltYWdlU3VyZmFjZVZlcnRpY2FsbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1h
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmU6OnVwZGF0ZVN1YlJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJp
YkltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVu
aWZvcm1JbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9n
cmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hh
ZGVySW5mb0xvZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNoYWRlckxvZyk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBOR0lt
YWdlUmVhZGVyOjpQTkdJbWFnZVJlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJl
YWRlcjo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OmludGVybGFj
ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJbWFnZVJlYWRlcjo6Y3JlYXRl
SW50ZXJsYWNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rl
cjo6ZGVjb2RlRnJhbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsOjpTb2NrZXREYXRhOjpTb2NrZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpy
ZWFkRGF0YSk6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNvbm5lY3RlZCk6CisgICAgICAgICogcGxhdGZv
cm0vd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nTGV2ZWxTdHJpbmcp
OgorCiAyMDE4LTAyLTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2ggdW5kZXIgU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2Nh
bChXVEY6OlN0cmluZyBjb25zdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBiMzA0NzZmMjQ4YTBl
ZTkzNGUxOWIzZDFhNGNhOGQxYzZiYWQ1ZjIwLi4xNzA2ZmYyNTMzMjdkYjhiYzNhZmIzMzEzMTBl
OTFmZGQ2ZWE4ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0w
Mi0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBG
aXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVh
ZC4KKworICAgICAgICAqIHBhbC93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChQQUw6Omxv
Z0xldmVsU3RyaW5nKToKKwogMjAxOC0wMi0yMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgSEFWRShJT1NVUkZBQ0VfQUNDRUxFUkFU
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDg0MDA3ZTdjYTFjYmE4ZTIxZWZiOGI2YjgyYTY4NzI5NjJkMWUxNTEu
LmEyYjNiNjg4YmYzY2YyNjU2ZDNjMWEwYzc1Nzg0MWYyMmYzMWFkMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTgtMDItMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0
ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy93aW4vU3lz
dGVtUHJveHlXaW4uY3BwOgorICAgICAgICAoV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1I
dHRwUHJveHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAo
SVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2ViS2l0Ojpsb2dMZXZlbFN0cmluZyk6Cisg
ICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvbWFj
L1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUgY29uc3QpOgor
CiAyMDE4LTAyLTI0ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkIFdQRSBicmVha2FnZSBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cKaW5kZXggYzVjZWIzMDU2ZjEzZmI1NWUzYTEzZDU1YzcxYTU0ZmZhNTRjMjdjZS4uMGM2MzBk
YmIxZmIxZWU1MTJlZTUzOWNkNzY5M2UwY2RmNTY4ODkzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAyLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3
W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICogTWFyc2hhbGxp
bmdIZWxwZXJzLmNwcDoKKyAgICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9T
dHJpbmdBcnJheSk6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50
QXJyYXkpOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZl
cmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5j
ZXNUb0NGUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6b25NZW51Q29tbWFuZCk6CisKIDIwMTgtMDItMjIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlIGN1cnJlbnRUaW1lKCkgLyBjdXJy
ZW50VGltZU1TKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3Bw
CmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMzYTMuLjEzNjc3MTUz
ZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIEpTU3RyaW5nUmVm
IEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKICAgICBpZiAo
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGggJiYgc3RhdGljX2Nh
c3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiAm
T3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxlbmd0aCkubGVha1Jl
ZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVuaUNoYXJbXT4obGVu
Z3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBs
ZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBidWZmZXIobGVuZ3Ro
KTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5n
dGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmlDaGFyKSA9
PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBzYW1lIHNpemUiKTsK
LSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hh
cio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJldHVybiAmT3BhcXVl
SlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmRhdGEoKSks
IGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmluZ0NvcHlDRlN0cmlu
ZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmluZGV4IGVhODU5YzRh
OWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmJmMmJiM2UxNTFmYWMxMzNkOGEwNTA3
ODUwYzRiN2M0NDYwM2UwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlS2lsbHMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKQEAgLTc0LDYgKzc1LDcgQEAgY2xhc3MgQnl0ZWNvZGVLaWxscyB7CiAgICAg
ZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIAogICAgIGNsYXNzIEtpbGxT
ZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEtpbGxTZXQoKQogICAgICAgICAgICAgOiBtX3dvcmQoMCkKQEAgLTE3MCw3ICsxNzIsNyBA
QCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICB9OwogICAgIAogICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEtpbGxTZXRbXT4gbV9raWxsU2V0czsKKyAg
ICBVbmlxdWVBcnJheTxLaWxsU2V0PiBtX2tpbGxTZXRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDQyZDlhZDZjNjg2NmQwOGQ5OWRhZjQ2OTVm
MGNjMTM3YTAxMTAzMjIuLmUwMTY5ZGZiNDk4ZWU2NDRkNjEwYWFmNGRmOTBiNDg0NWZhYmFlMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlS2lsbHMmCiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAKICAgICByZXN1bHQubV9jb2RlQmxv
Y2sgPSBjb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gbWFrZVVuaXF1ZUFycmF5PEJ5dGVjb2RlS2ls
bHM6OktpbGxTZXQ+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKICAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3Jh
cGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggYWQwMzU2ZThmOTBiZGY4YTM1YTFl
M2U1M2RmODc2MjU0NGU0MzEwYS4uMGMyMDcwM2VkOGUyZDgxM2Y1ZDIxODA4YWFjMmYzY2QyODYy
MDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJs
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cApAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1wRGlzYXNzZW1ibHko
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVmCiAgICAgICAgIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgPSAwOwogICAgIGVsc2UKICAgICAgICAgYW1vdW50T2ZOb2Rl
V2hpdGVTcGFjZSA9IEdyYXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKGNvbnRleHQpOwotICAg
IGF1dG8gcHJlZml4QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHByZWZpeExlbmd0
aCArIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKLSAgICBtZW1jcHkocHJlZml4QnVmZmVy
LmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IHByZWZpeEJ1
ZmZlcihwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsgMSk7CisgICAgbWVt
Y3B5KHByZWZpeEJ1ZmZlci5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3RoKTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGFtb3VudE9mTm9kZVdoaXRlU3BhY2U7ICsraSkKICAgICAgICAgcHJl
Zml4QnVmZmVyW2kgKyBwcmVmaXhMZW5ndGhdID0gJyAnOwogICAgIHByZWZpeEJ1ZmZlcltwcmVm
aXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlXSA9IDA7CkBAIC0xNjksNyArMTY5LDcg
QEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICBDb2RlTG9jYXRpb25MYWJlbCBlbmQgPSBs
aW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2aW91c0xhYmVsID0g
Y3VycmVudExhYmVsOwogICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90
PigpID49IHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7Ci0gICAgZGlzYXNz
ZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgLSBzdGFydC5l
eGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5nZXQoKSwgb3V0KTsK
KyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4o
KSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJlZml4QnVmZmVyLmRh
dGEoKSwgb3V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cAppbmRleCA4NThiNTQxNzRiZmViMmUyMjFkODMwNmZhOTg4YTIyOTFkNTAyNGUzLi5iYzBmODQx
ZGY3NTE0NTkzNDU5MjdkZjNkYTZhYWJkMDkxNjc1YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcApAQCAt
NzEsNyArNzEsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbENhc2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGVSZWYsIFZN
JiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwKICAgICBD
YWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0NhbGxDYXNlPiYgY2Fz
ZXMsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHMpCisgICAgVW5p
cXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKICAgICA6IEdDQXdhcmVKSVRTdHViUm91
dGluZShjb2RlUmVmLCB2bSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZS5oCmluZGV4IGQ5NmFlNTZjNDdmNGFhYjlmZDQ3MmZlMjQzMmJjZjU5NWIy
MmY5NWQuLjJhMzk1NzcyYjRhYjA0NjViYTFhOGMwOGU4YzhkMjFkYWM5NmViMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1
ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC04NCw3ICs4NSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7CiAgICAgUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICAgICAgRXhlY1N0YXRlKiBjYWxsZXJG
cmFtZSwgQ2FsbExpbmtJbmZvJiwgY29uc3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiwK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHMpOworICAgICAg
ICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKTsKICAgICAKICAgICB2aXJ0dWFs
IH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpOwogICAgIApAQCAtMTAwLDcgKzEwMSw3IEBA
IGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHVi
Um91dGluZSB7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0NlbGw+LCAy
PiBtX3ZhcmlhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPiBtX2Zhc3RDb3Vu
dHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFzdENvdW50czsKICAgICBCYWc8UG9s
eW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAppbmRleCA3OGNhOTMwM2ZjODI4NzdjZTYwYmZlY2E5MTYwZWFjMzRmZjk2
NmJhLi5hZTBkZTYzOWM5M2U0ZWE4OTMwNmE5NzdmYmQyNGY4ZDYxNzgwNTEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk0NCwxMCArOTQ0LDEwIEBAIHZvaWQgbGlu
a1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICBWZWN0b3I8aW50NjRfdD4gY2FzZVZhbHVlcyhj
YWxsQ2FzZXMuc2l6ZSgpKTsKICAgICBWZWN0b3I8Q2FsbFRvQ29kZVB0cj4gY2FsbHMoY2FsbENh
c2VzLnNpemUoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3VudHM7
CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IGZhc3RDb3VudHM7CiAgICAgCiAgICAgaWYgKCFp
c1dlYkFzc2VtYmx5ICYmIGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgpICE9IEpJVENvZGU6OnRv
cFRpZXJKSVQoKSkKLSAgICAgICAgZmFzdENvdW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMy
X3RbXT4oY2FsbENhc2VzLnNpemUoKSk7CisgICAgICAgIGZhc3RDb3VudHMgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDMyX3Q+KGNhbGxDYXNlcy5zaXplKCkpOwogICAgIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY2FsbENhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChmYXN0Q291
bnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAzYjg4MzljZmM1YmJkMzc4ODNlY2ZmN2NkOWIw
NWI4YjA1NmQzYmM4Li41NzYyNDJmMGFlYTQ1ZTliZjJjM2RiOTU5ZTU1NzI5OTg2NzQ1OTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE2LDE3ICs3MTYsMTcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKQogICAgIC8vIElu
IFdpbmRvd3MsIHdjaGFyX3QgaXMgdGhlIFVURi0xNkxFLgogICAgIC8vIGh0dHBzOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZGQzNzQwODEuYXNweAogICAgIC8vIGh0dHBzOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmMzgxNDA3
LmFzcHgKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2NoYXJfdFtdPihidWZm
ZXJMZW5ndGgpOwotICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051bGwgPSA6OkdldEN1cnJl
bnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmdldCgpKTsKLSAgICBTdHJpbmcgZGly
ZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZ2V0KCksIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwpOworICAgIFZlY3Rvcjx3Y2hhcl90PiBidWZmZXIoYnVmZmVyTGVuZ3RoKTsKKyAg
ICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpHZXRDdXJyZW50RGlyZWN0b3J5Vyhi
dWZmZXJMZW5ndGgsIGJ1ZmZlci5kYXRhKCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcg
PSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1ZGluZ051bGwpOwog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxob3N0XHNoYXJlXDxw
YXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0aCgiXFxcXCIpKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKLSAgICBhdXRvIGJ1ZmZlciA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihQQVRIX01BWCk7Ci0gICAgaWYgKCFnZXRjd2QoYnVmZmVy
LmdldCgpLCBQQVRIX01BWCkpCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihQQVRIX01BWCk7Cisg
ICAgaWYgKCFnZXRjd2QoYnVmZmVyLmRhdGEoKSwgUEFUSF9NQVgpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSBTdHJpbmc6OmZyb21V
VEY4KGJ1ZmZlci5nZXQoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6
ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSk7CiAjZW5kaWYKICAgICBpZiAoZGlyZWN0b3J5U3RyaW5n
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNGNmOGM2ZDRlZDlmMWEzMTJjNDE0M2U1
NGIxMDI2YjU1N2E2MDA2Yi4uM2ExZWEzNzQ4MjQxYTRjMGQ2YTU3ZjJiZGYxOGFkNjY1MjViMWY5
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKQEAgLTQ3LDcg
KzQ3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAKLUluc3RydWN0
aW9uKiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IDA7CitJbnN0cnVjdGlvbiBEYXRh
OjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXSA9IHsgfTsKIE9w
Y29kZSBEYXRhOjpzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdID0geyB9OwogT3Bjb2RlU3RhdHNB
cnJheSogRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5ID0gbnVsbHB0cjsKIApAQCAtNTcsOCArNTcs
NiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCopOwogCiB2b2lkIGluaXRpYWxp
emUoKQogewotICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0gbmV3IEluc3RydWN0
aW9uW21heE9wY29kZUxlbmd0aCArIDFdOwotCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgQ0xvb3A6
OmluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCmlu
ZGV4IDYwMmRkNjQ2ZTU3M2I4NjFiNWIyNmZjODYzNWRmNTQ3NDYwOWNhN2IuLjMwMWQwNzdlY2Ji
NTllNjY1NTc5Njg4ODU0NzFkMDI0MmRjNjRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0YSB7CiAgICAgc3RhdGlj
IHZvaWQgcmVzZXRTdGF0cygpOwogICAgIHN0YXRpYyB2b2lkIHNhdmVTdGF0cygpOwogCi0gICAg
c3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBzdGF0aWMg
SW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2RlTGVuZ3RoICsgMV07
CiAgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdOwogICAgIHN0YXRp
YyBPcGNvZGVTdGF0c0FycmF5KiBzX29wY29kZVN0YXRzQXJyYXk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAzOTE4OWY4N2QyNWVkYjU3YzJlYTIyODM1MDRm
NjExZjUyNTBlMTZlLi42M2MyZGU5MTNmZGY0ZGI1ZTU0YWNmZTJlYWI0YWRkZjkwZWMzMjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0xNjUsNiArMTY1LDcg
QEAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgOiBwdWJsaWMgUmVjb3JkT3ZlcmZsb3cgewog
fTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIGNsYXNzIEludGVycHJldGVyOwogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiBwdWJsaWM6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAppbmRl
eCA0N2YzYTVmMWJmZDJhNTkwNjQ2NTYxYzcyYmI0NGMyMTM3MjZiNjA0Li5kNjJkMTA2MGVkNjRl
YWMyODJmMDZjZmUyNWM2OTEzMjkxZWZjYzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7
IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
Y3VycmVudCkpCiAgICAgICAgICAgICArK3NpemU7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IHZlY3RvciA9IHN0ZDo6bWFrZV91bmlxdWU8V3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT5bXT4oc2l6ZSArIDEpOworICAgICAgICBhdXRvIHZlY3RvciA9
IG1ha2VVbmlxdWVBcnJheTxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPj4oc2l6ZSArIDEpOwogCiAg
ICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhl
YWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90
b3R5cGVPYmplY3QoY3VycmVudCkpCkBAIC04NSw3ICs4Niw3IEBAIGNsYXNzIFN0cnVjdHVyZUNo
YWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIFN0cnVjdHVyZUNoYWluKFZNJiwgU3RydWN0dXJlKik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IG1fdmVjdG9yOworICAg
IFVuaXF1ZUFycmF5PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+PiBtX3ZlY3RvcjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhMjAyNWFmMTY0ZTNlZTU4N2JmMzAyNTE2ZWRjYWNm
OTI5YzFlMTI1Li44ZWViMzkxZGFmNGI0MTBiNjgxNjdhZjBlNjE5NTZlODQ3OTU0ZjY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU3RydWN0dXJlSURUYWJsZTo6
U3RydWN0dXJlSURUYWJsZSgpCiAgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgwKQotICAgICwgbV90
YWJsZShzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KHNfaW5pdGlhbFNpemUp
KQorICAgICwgbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KHNfaW5p
dGlhbFNpemUpKQogICAgICwgbV9zaXplKDApCiAgICAgLCBtX2NhcGFjaXR5KHNfaW5pdGlhbFNp
emUpCiB7CkBAIC00NSw3ICs0NSw3IEBAIFN0cnVjdHVyZUlEVGFibGU6OlN0cnVjdHVyZUlEVGFi
bGUoKQogdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KQog
ewogICAgIC8vIENyZWF0ZSB0aGUgbmV3IHRhYmxlLgotICAgIGF1dG8gbmV3VGFibGUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KG5ld0NhcGFjaXR5KTsKKyAgICBhdXRv
IG5ld1RhYmxlID0gbWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0PihuZXdDYXBhY2l0
eSk7CiAKICAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRhYmxlIHRvIHRoZSBu
ZXcgdGFibGUuCiAgICAgbWVtY3B5KG5ld1RhYmxlLmdldCgpLCB0YWJsZSgpLCBtX2NhcGFjaXR5
ICogc2l6ZW9mKFN0cnVjdHVyZU9yT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggYTJjNThkZjYwYWM0NTI0OTY2Yjgy
YTZjNzMzMDllZDI1NmM4YjE2OS4uNzc4OWRmODk1OWY3ZmVkNWUwMDJhNjRhNjMzZjZiOTE0ZmJi
Y2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
SURUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJVbnVz
ZWRQb2ludGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNywxMCArMTA4LDEwIEBAIGNsYXNz
IFN0cnVjdHVyZUlEVGFibGUgewogICAgIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19pbml0
aWFsU2l6ZSA9IDI1NjsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U3RydWN0dXJlT3JP
ZmZzZXRbXT4+IG1fb2xkVGFibGVzOworICAgIFZlY3RvcjxVbmlxdWVBcnJheTxTdHJ1Y3R1cmVP
ck9mZnNldD4+IG1fb2xkVGFibGVzOwogCiAgICAgdWludDMyX3QgbV9maXJzdEZyZWVPZmZzZXQ7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVjdHVyZU9yT2Zmc2V0W10+IG1fdGFibGU7CisgICAg
VW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+IG1fdGFibGU7CiAKICAgICBzaXplX3QgbV9z
aXplOwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5kZXggZmYwYTc2MTczOTRhNDlkZDNkOGZi
YWM4Y2JjYWU2OGFmM2U0ZjVlMS4uMDlkNDIyMDVmNmI5OTgzMmYzOWY5OWM3MjkxMTg4NTJmZjhi
MzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2Zp
bGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFR5cGVQcm9maWxlckxvZ0lu
dGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotdm9pZCBU
eXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQorVHlwZVByb2ZpbGVyTG9nOjpUeXBlUHJv
ZmlsZXJMb2coKQorICAgIDogbV9sb2dTaXplKDUwMDAwKQorICAgICwgbV9sb2dTdGFydFB0cihu
ZXcgTG9nRW50cnlbbV9sb2dTaXplXSkKKyAgICAsIG1fY3VycmVudExvZ0VudHJ5UHRyKG1fbG9n
U3RhcnRQdHIpCisgICAgLCBtX2xvZ0VuZFB0cihtX2xvZ1N0YXJ0UHRyICsgbV9sb2dTaXplKQog
ewogICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAgbV9sb2dTaXplID0gNTAwMDA7Ci0g
ICAgbV9sb2dTdGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2xvZ1NpemVdOwotICAgIG1fY3VycmVu
dExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0ciA9IG1fbG9nU3Rh
cnRQdHIgKyBtX2xvZ1NpemU7CiB9CiAKIFR5cGVQcm9maWxlckxvZzo6flR5cGVQcm9maWxlckxv
ZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXJMb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5o
CmluZGV4IDliNTdjYzU4NjcwZjQ1OTkxNWVjZWRlNmMxM2VhYTU1ODU4NDlmMTcuLjM5NDE5MzM0
OGM2ZTk0MDQ0MDM5Y2NlYzY3OGEzMzBiYjg4NDNlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNz
IFR5cGVQcm9maWxlckxvZyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgc3RydWN0IExvZ0VudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIApAQCAtNTIsMTIgKzUzLDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKICAg
ICB9OwogCiAKLSAgICBUeXBlUHJvZmlsZXJMb2coKQotICAgICAgICA6IG1fbG9nU3RhcnRQdHIo
MCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVMb2coKTsKLSAgICB9Ci0KKyAgICBUeXBlUHJv
ZmlsZXJMb2coKTsKICAgICB+VHlwZVByb2ZpbGVyTG9nKCk7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIHByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYpOwpAQCAtNzEsOCArNjcs
NiBAQCBjbGFzcyBUeXBlUHJvZmlsZXJMb2cgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBpbml0aWFsaXplTG9nKCk7Ci0KICAg
ICB1bnNpZ25lZCBtX2xvZ1NpemU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3RhcnRQdHI7CiAgICAg
TG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IGNlNmU0YzFmNDVjYjllYjllNTg1ZTcyYmRjMGU3MGFiNjdiYWVmYmIuLmI2
NjdlZDcyZTY1MjMzMTQ3NjVhMjAyODFmZmFiMzQzNTE2YTcyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTUzNiwxMSArNTM2LDYgQEAgVk06On5WTSgpCiAgICAgZGVs
ZXRlIGNsaWVudERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CiAKLSNpZiBFTkFCTEUo
WUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBpZiAobV9yZWdFeHBQYXR0ZXJu
Q29udGV4QnVmZmVyKQotICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZm
ZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkZWxldGUgbV9y
dFRyYWNlTGlzdDsKICNlbmRpZgpAQCAtOTA3LDggKzkwMiw4IEBAIGNoYXIqIFZNOjphY3F1aXJl
UmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBhdHRlcm5Db250ZXh0
TG9jay5sb2NrKCk7CiAgICAgaWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAg
ICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZNOjpwYXR0ZXJuQ29u
dGV4dEJ1ZmZlclNpemVdOwotICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXI7
CisgICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxj
aGFyPihWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTsKKyAgICByZXR1cm4gbV9yZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyLmdldCgpOwogfQogCiB2b2lkIFZNOjpyZWxlYXNlUmVnRXhwUGF0
dGVybkNvbnRleEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBkNzNm
YzZiOTc0NjhjOGI0MWRhMWVhMGZmODkwOGRkZmQzZGI0MmE1Li43NmRiMDU4MmZhZjNhMjZiMTU2
N2YyOTg0OTViNjgxZjg4ZjViZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNwZWNpZmljLmg+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3ltYm9s
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KICNpZiBFTkFCTEUo
UkVHRVhQX1RSQUNJTkcpCkBAIC02ODUsNyArNjg2LDcgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsK
IAogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQogICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9IDgxOTI7IC8vIFNw
YWNlIGFsbG9jYXRlZCB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0Ci0gICAgY2hh
ciogbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyIHsgbnVsbHB0ciB9OworICAgIFVuaXF1ZUFy
cmF5PGNoYXI+IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBMb2NrIG1fcmVnRXhw
UGF0dGVybkNvbnRleHRMb2NrOwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4
QnVmZmVyKCk7CiAgICAgdm9pZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IGU0MzhmNTYwNGI3MGQyNjk4YWIz
Zjc5OTRhNTQwMWM5Y2JhYjNhZGMuLmYxOTg0YjViODA4OGQ1NDk2NTI2NWZmZDQ5MDY4NGYzOWY0
NjdmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKICNpZiAhT1MoV0lORE9XUykKQEAgLTQxNiw3ICs0MTcsNyBAQCBzdGF0
aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBmaWxlcwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRCdWZmZXI7CiAgICAg
dW5zaWduZWQgdGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0gMDsKLSAgICBjaGFy
KiBsaW5lQnVmZmVyID0gbmV3IGNoYXJbTWF4TGluZUxlbmd0aCArIDFdOworICAgIFZlY3Rvcjxj
aGFyPiBsaW5lQnVmZmVyKE1heExpbmVMZW5ndGggKyAxKTsKIAogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKIApAQCAtNDM1LDcgKzQzNiw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21G
aWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZp
bGVzCiAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogcmVnZXhwRXJyb3IgPSBudWxscHRyOwogCi0gICAgICAgIHdoaWxlICgobGluZVB0ciA9
IGZnZXRzKCZsaW5lQnVmZmVyWzBdLCBNYXhMaW5lTGVuZ3RoLCB0ZXN0Q2FzZXNGaWxlKSkpIHsK
KyAgICAgICAgd2hpbGUgKChsaW5lUHRyID0gZmdldHMobGluZUJ1ZmZlci5kYXRhKCksIE1heExp
bmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkgewogICAgICAgICAgICAgbGluZUxlbmd0aCA9IHN0
cmxlbihsaW5lUHRyKTsKICAgICAgICAgICAgIGlmIChsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9
PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgbGluZVB0cltsaW5lTGVuZ3RoIC0gMV0gPSAnXDAn
OwpAQCAtNDg0LDggKzQ4NSw2IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgZWxzZQog
ICAgICAgICBwcmludGYoIiV1IHRlc3RzIHBhc3NlZFxuIiwgdGVzdHMpOwogCi0gICAgZGVsZXRl
W10gbGluZUJ1ZmZlcjsKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICB2bS5kdW1w
UmVnRXhwVHJhY2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVh
cFZlcmlmaWVyLmNwcAppbmRleCBjZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3ZjllYWFhYTQxMDJj
ZWNhLi5hN2Y5MjdmOWI5ZjA1YTE2MWQwNmRkOTAyYTExZWZjYzIwNjJkMjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1bnNpZ25lZCBudW1iZXJP
ZkdDQ3ljbGVzVG9SZWNvcmQpCiAgICAgLCBtX251bWJlck9mQ3ljbGVzKG51bWJlck9mR0NDeWNs
ZXNUb1JlY29yZCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX251bWJlck9mQ3ljbGVzID4gMCk7
Ci0gICAgbV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4obV9udW1iZXJPZkN5
Y2xlcyk7CisgICAgbV9jeWNsZXMgPSBtYWtlVW5pcXVlQXJyYXk8R0NDeWNsZT4obV9udW1iZXJP
ZkN5Y2xlcyk7CiB9CiAKIGNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6cGhhc2VOYW1lKEhlYXBW
ZXJpZmllcjo6UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSGVhcFZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmgKaW5kZXggNDgyNGIxYzZiM2U2ZmFiMmJhMmE3ZDgyMTFlNzllMDc4N2ZjNDk0My4u
Y2MyMDFjNGEyODBjODllNzUxZDRhMzVlNjEwYWQyNjhlNTE1M2UyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkNlbGxMaXN0LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9u
aWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCkBAIC02NCw2ICs2NSw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAKIHByaXZhdGU6CiAg
ICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FU
RUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9yZSgiQmVmb3JlIE1h
cmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIpCkBAIC0xMDcsNyAr
MTEwLDcgQEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKICAgICBpbnQgbV9jdXJyZW50Q3ljbGU7CiAg
ICAgaW50IG1fbnVtYmVyT2ZDeWNsZXM7CiAgICAgYm9vbCBtX2RpZFByaW50TG9ncyB7IGZhbHNl
IH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdDQ3ljbGVbXT4gbV9jeWNsZXM7CisgICAgVW5pcXVl
QXJyYXk8R0NDeWNsZT4gbV9jeWNsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwYTI1YmYzNjM3ZmE1OTY2
MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0MzZiNTY2OWZiYmJlYzFl
MGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAvKiBDb21tb25Dcnlw
dG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uQ3J5cHRvU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThBMENDMTgwMDZGNDhG
QiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5cHRvZ3JhcGhpY1V0
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9ncmFwaGlj
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMDBFNTIxMjAzRDY0
NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzExRkIx
NTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBsYXRmb3JtUmVnaXN0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUmVnaXN0ZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAgKzg1NiwxMCBAQAogCQkJ
CUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5oICovLAogCQkJCTBGNDU3
MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJCQkJQThBNDcyODAxNTFB
ODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJCQlGRTA1RkFFNjFGREIy
MTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFENjUzREE4MjAwNkI2QzIw
MEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4MjVBMDA0
MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0
b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5o
ICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAq
LywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0cy5oICovLAogCQkJ
CUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAogCQkJCUE4QTQ3MjlG
MTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAgLTEwODMsNiArMTA4NCw3
IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRlLmggKi8sCiAJCQkJ
ODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAogCQkJCUE4QTQ3MzVD
MTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlFMzAwRTUyMTIwM0Q2NDVG
MDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFEMEEzQTBBMDA5RDJG
NkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAwMDI2RTI2IC8qIFVu
c2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURFMzYgLyogVVVJRC5j
cHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3MzcwMTUxQTgyNUIwMDQxMjNG
RiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYgLyogVmVjdG9y
VHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZNVGFncy5oICov
LAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLywK
IAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwICovLAogCQkJCTBG
NjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJCTk3NENGQzhEMTZB
NEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYgKzExMDIsNyBAQAogCQkJ
CTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAogCQkJCUU0QTBBRDM3
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0QTBBRDM4MUE5NjI0
NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMy
MzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBAQAogCQkJCTBGNjZCMjhB
MURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJQ1UuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RCREE1IC8qIENvbXBp
bGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVBMUZDREYxMzQwMDRC
NTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhF
ODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5NDk4RUIgLyogV29y
ZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFBOTYyNTNDMDA1MzZE
RjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRkYxRkU1
MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThB
NDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5jcHAKaW5kZXggMDYxMDkzYWNjOWU5NzkxMTE0ZmM2YzE1YmExZTJjYWMzMGIwOWE2ZS4u
MGQ5NzNlNjQ3MDk3YWE1OTMyNDI5YzU4MTY5YmFhZTYwMTA5YzYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvQXNzZXJ0aW9u
cy5jcHAKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHN0YXRpYyB2b2lkIHZwcmludGZfc3RkZXJyX3dp
dGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogZm9ybWF0LCB2CiB7CiAg
ICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwogICAgIHNpemVfdCBmb3Jt
YXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1hdFdpdGhQcmVmaXggPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoICsgMSk7
Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHByZWZpeExlbmd0aCwgZm9y
bWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRXaXRoUHJlZml4KHBy
ZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNweShmb3JtYXRXaXRoUHJl
Zml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1lbWNweShmb3JtYXRXaXRo
UHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAg
IGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3RoXSA9IDA7CiAKLSAg
ICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5nZXQoKSwgYXJncyk7Cisg
ICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBhcmdzKTsK
IH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNv
bnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY2LDEyICsxNjYsMTIgQEAgc3Rh
dGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5lKGNvbnN0IGNoYXIq
IGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Zm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oZm9ybWF0TGVuZ3Ro
ICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBmb3JtYXQsIGZvcm1h
dExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXdsaW5lKGZvcm1hdExlbmd0
aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGZvcm1hdCwgZm9y
bWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGhdID0gJ1xuJzsK
ICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9IDA7CiAKLSAgICB2cHJp
bnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGFyZ3MpOworICAgIHZw
cmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCksIGFyZ3MpOwogfQog
CiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAyMjBi
YWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdkMDYxOTNjMGExZGZmYzgz
MGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjMzLDYgKzIz
Myw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAogICAgIFVuaVN0ZEV4dHJh
cy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAgICAgVW5pcXVlUmVmLmgK
ICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmluZGV4IDdl
YzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2NzJjZTQ2ZDlmMWMyYjQz
YTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RN
YWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIwMCw2ICsyMDAs
MjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lkIGZyZWUodm9pZCogcCkg
eyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBGYXN0
RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8
VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QK
KyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
Y3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZvaWQgb3BlcmF0b3Io
KShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICB9Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykKQEAgLTIwOCw2ICsy
MjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0aW9uU2l6ZTsKIAogdXNp
bmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFsbG9jOwordXNpbmcgV1RG
OjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsKIHVzaW5nIFdURjo6
ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCmluZGV4IDdmNmEw
MmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEwYWE5YmQ1YmJhMDlhYzU2
MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02Niw2ICs2NiwxMSBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0TWFsbG9jPiBjbGFzcyBN
YWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0ciwgbnVsbHB0cik7
CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5kZXggNmVmZDA3NGRl
MjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJhZTNjN2I1NmE4YmU4NWI3
ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgY2xhc3Mg
U3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7CiAgICAgICAgIGlmIChz
aXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTx2b2lkKltdPihz
aXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8dm9pZCo+KHNpemUp
OwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAgICAgICAgV1RGR2V0QmFj
a3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7CkBAIC01NSw3ICs1Niw3
IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90JiBvcGVyYXRvcj0oY29u
c3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lk
KltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4ob3RoZXIubV9zaXplKTsK
KyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4ob3RoZXIubV9z
aXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6ZTsgaS0tOykKICAgICAg
ICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAgICAgICAgbV9zaXplID0g
b3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAg
CiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVlQXJyYXkoKSB7IHJldHVy
biBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKTsgfQotICAg
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5OworCisgICAgVW5pcXVlQXJy
YXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJjZS9XVEYvd3RmL1N5c3Rl
bUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2ZDA0ZjViYWVjZWY1Li43
M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5o
CkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFs
bHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBvcGVyYXRvcigpKFQq
IHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0zOSwxMSArNDEsMTIgQEAg
c3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IFN5c3Rl
bUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaCBiL1NvdXJjZS9X
VEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODIxOTY3M2I2YTI5YWI5ZWMzNjk1MmY5
NTliNjdhN2I5MzkwZDcxNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1
ZUFycmF5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGJv
b2wgaXNUcml2aWFsbHlEZXN0cnVjdGlibGUsIHR5cGVuYW1lIFQ+IHN0cnVjdCBVbmlxdWVBcnJh
eU1ha2VyOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFVuaXF1ZUFycmF5TWFrZXI8
dHJ1ZSwgVD4geworICAgIHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9w
dHI8VFtdLCBGYXN0RnJlZTxUW10+PjsKKworICAgIHN0YXRpYyBSZXN1bHRUeXBlIG1ha2Uoc2l6
ZV90IHNpemUpCisgICAgeworICAgICAgICAvLyBDKysgYG5ldyBUW05dYCBzdG9yZXMgaXRzIGBO
YCB0byBzb21ld2hlcmUuIE90aGVyd2lzZSwgYGRlbGV0ZSBbXWAgY2Fubm90IGRlc3Ryb3kKKyAg
ICAgICAgLy8gdGhlc2UgTiBlbGVtZW50cy4gQnV0IHdlIGRvIG5vdCB3YW50IHRvIGluY3JlYXNl
IHRoZSBzaXplIG9mIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgICAgIC8vIElmIGl0IGlzIGFjY2Vw
dGFibGUsIHdlIGNhbiBqdXN0IHVzZSBWZWN0b3I8VD4gaW5zdGVhZC4gU28gdGhpcyBVbmlxdWVB
cnJheTxUPiBvbmx5CisgICAgICAgIC8vIGFjY2VwdHMgdGhlIHR5cGUgVCB3aGljaCBoYXMgYSB0
cml2aWFsIGRlc3RydWN0b3IuIFRoaXMgYWxsb3dzIHVzIHRvIHNraXAgY2FsbGluZworICAgICAg
ICAvLyBkZXN0cnVjdG9ycyBmb3IgTiBlbGVtZW50cy4gQW5kIHRoaXMgYWxsb3dzIFVuaXF1ZUFy
cmF5PFQ+IG5vdCB0byBzdG9yZSBpdHMgTiBzaXplLgorICAgICAgICB1c2luZyBVID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxVPjo6dmFsdWUsICIiKTsKKworICAgICAgICAv
LyBEbyBub3QgdXNlIHBsYWNlbWVudCBuZXcgbGlrZSBgbmV3IChzdG9yYWdlKSBVW3NpemVdKClg
LiBgbmV3IFVbc2l6ZV0oKWAgcmVxdWlyZXMKKyAgICAgICAgLy8gbGFyZ2VyIHN0b3JhZ2UgdGhh
biB0aGUgYHNpemVvZihVKSAqIHNpemVgIHN0b3JhZ2Ugc2luY2UgaXQgd2FudCB0byBzdG9yZSBg
c2l6ZWAKKyAgICAgICAgLy8gdG8gc29tZXdoZXJlLgorICAgICAgICBVKiBzdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8VSo+KGZhc3RNYWxsb2Moc2l6ZW9mKFUpICogc2l6ZSkpOworICAgICAgICBWZWN0
b3JUeXBlT3BlcmF0aW9uczxVPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBz
aXplKTsKKyAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RvcmFnZSk7CisgICAgfQorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBVbmlxdWVBcnJheU1ha2VyPGZhbHNlLCBUPiB7
CisgICAgLy8gU2luY2Ugd2UgZG8gbm90IGtub3cgaG93IHRvIHN0b3JlL3JldHJpZXZlIE4gc2l6
ZSB0by9mcm9tIGFsbG9jYXRlZCBtZW1vcnkgd2hlbiBjYWxsaW5nIG5ldyBbXSBhbmQgZGVsZXRl
IFtdLAorICAgIC8vIHdlIHVzZSBuZXcgW10gYW5kIGRlbGV0ZSBbXSBvcGVyYXRvcnMgc2ltcGx5
LiBXZSBjcmVhdGUgVW5pcXVlQXJyYXlFbGVtZW50IGNvbnRhaW5lciBmb3IgdGhlIHR5cGUgVC4K
KyAgICAvLyBVbmlxdWVBcnJheUVsZW1lbnQgaGFzIG5ldyBbXSBhbmQgZGVsZXRlIFtdIG9wZXJh
dG9ycyBmb3IgRmFzdE1hbGxvYy4gV2UgYWxsb2NhdGUgVW5pcXVlQXJyYXlFbGVtZW50W10gYW5k
IGNhc3QKKyAgICAvLyBpdCB0byBUW10uIFdoZW4gZGVsZXRpbmcsIHRoZSBjdXN0b20gZGVsZXRl
ciBjYXN0cyBUW10gdG8gVW5pcXVlQXJyYXlFbGVtZW50W10gYW5kIGRlbGV0ZXMgaXQuCisgICAg
dXNpbmcgVSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZTsKKworICAgIGNs
YXNzIFVuaXF1ZUFycmF5RWxlbWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgc3RydWN0IERlbGV0ZXIgeworICAgICAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVsZXRlIFtdIGJpdHdpc2VfY2FzdDxVbmlxdWVBcnJheUVsZW1lbnQqPihwb2ludGVyKTsKKyAg
ICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAgICAgVW5pcXVlQXJyYXlFbGVtZW50KCkg
PSBkZWZhdWx0OworCisgICAgICAgIFUgdmFsdWUgeyB9OworICAgIH07CisgICAgc3RhdGljX2Fz
c2VydChzaXplb2YoVSkgPT0gc2l6ZW9mKFVuaXF1ZUFycmF5RWxlbWVudCksICIiKTsKKworICAg
IHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8VFtdLCB0eXBlbmFt
ZSBVbmlxdWVBcnJheUVsZW1lbnQ6OkRlbGV0ZXI+OworCisgICAgc3RhdGljIFJlc3VsdFR5cGUg
bWFrZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKGJpdHdp
c2VfY2FzdDxUKj4obmV3IFVuaXF1ZUFycmF5RWxlbWVudFtzaXplXSgpKSk7CisgICAgfQorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFVuaXF1ZUFycmF5ID0gdHlwZW5hbWUgVW5p
cXVlQXJyYXlNYWtlcjxzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+OjpSZXN1bHRUeXBlOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8VD4gbWFrZVVuaXF1ZUFycmF5KHNpemVfdCBz
aXplKQoreworICAgIHJldHVybiBVbmlxdWVBcnJheU1ha2VyPHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGU+Ojp2YWx1ZSwg
VD46Om1ha2Uoc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlVu
aXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IGFiY2Fi
ZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZjN2M5MmMuLjI3ZmMxNDUzYTBkMGEwNjcyZTNk
NzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02NSwxMCArNjUsMTUgQEAgc3RydWN0
IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRlbXBsYXRlIDxib29sIG5lZWRzSW5pdGlhbGl6
YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CiBzdHJ1Y3Qg
VmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRlPGJvb2wgaWdub3JlLCB0eXBlbmFtZSBUPgot
c3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBpZ25vcmUsIFQ+Cit0ZW1wbGF0ZTxib29s
IGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgorc3RydWN0IFZlY3RvckluaXRp
YWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD4KIHsKICAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKworICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5pdGlh
bGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6ZXI8
dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUoYmVnaW4s
IGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc5LDYgKzg0LDEx
IEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICAgICAgZm9y
IChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCiAgICAgICAgICAgICBuZXcgKE5v
dE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUo
VCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4sIGVuZCk7
CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTg4LDYgKzk4LDExIEBAIHN0
cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0cnVlLCBUPgogICAgIHsKICAgICAgICAgbWVt
c2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihlbmQpIC0gcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRp
YWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4s
IGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPGJvb2wgY2FuTW92ZVdpdGhNZW1jcHksIHR5
cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3BlcmF0aW9u
cwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRzSW5pdGlh
bGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpp
bml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGZvcmNlSW5p
dGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlhbGl6
ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFpdHM8VD46
OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQp
OworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBzcmNFbmQsIFQqIGRz
dCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxUPjo6Y2FuTW92ZVdp
dGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmlu
ZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0YzNiNTVmNDA4ZjJmMWEuLjVlNjJjNWFjMmRj
OWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQy
MSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKFJlZlB0
cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAgICAgb3V0cHV0KDApLT5zZXROdW1iZXJP
ZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAgICAgIG1fc291cmNlQ2hhbm5lbHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAg
ICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4o
bnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtlVW5pcXVl
QXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9kZXN0aW5h
dGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsr
aSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5uZWxzW2ldID0gYnVmZmVyLT5jaGFubmVsRGF0
YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggZjRlNjNhODU5YzAxYjQxNWUxY2YzNDdm
Mjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3MzE4MjFmYTI1N2EwOGQxMzU4MGZhMjU5MGRj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZl
clNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOSw4ICsxMTAs
OCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYnVmZmVyOwogCiAg
ICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIgYW5kIGRlc3RpbmF0aW9uLgotICAgIHN0ZDo6
dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKKyAgICBVbmlxdWVBcnJh
eTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8ZmxvYXQq
PiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICAvLyBVc2VkIGZvciB0aGUgImdhaW4iIGFu
ZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgogICAgIFJlZlB0cjxBdWRpb1BhcmFtPiBtX2dh
aW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDhjYTRj
OTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYwN2RjMjUuLjk1Y2M4ZDNjNzJhZWU2NjE3NTlj
NjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
d2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dp
bmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAg
ICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3Rvcjxj
aGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
bG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBp
ZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBi
dWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAot
ICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggOTk4YWNlNGU3ZDRk
ZTdmYTM1MDFiZmE3MTBhYTE1NTkwYTVlMGRhYi4uMmMxZmVkZDEyZTQ3MjhhMmEyMDk4MDc0OTVj
ZDkzYzY3YmQwMjQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ5LDcgKzE1MCw3IEBAIGNsYXNzIFN0eWxlUnVs
ZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBDb21waWxlZFNlbGVjdG9yJiBj
b21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsKICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQotICAgICAgICAgICAgbV9jb21waWxlZFNlbGVj
dG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsZWRTZWxlY3RvcltdPihtX3NlbGVjdG9yTGlz
dC5saXN0U2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29tcGlsZWRTZWxlY3RvcnMgPSBtYWtlVW5p
cXVlQXJyYXk8Q29tcGlsZWRTZWxlY3Rvcj4obV9zZWxlY3Rvckxpc3QubGlzdFNpemUoKSk7CiAg
ICAgICAgIHJldHVybiBtX2NvbXBpbGVkU2VsZWN0b3JzW2luZGV4XTsKICAgICB9CiAgICAgdm9p
ZCByZWxlYXNlQ29tcGlsZWRTZWxlY3RvcnMoKSBjb25zdApAQCAtMTcwLDcgKzE3MSw3IEBAIGNs
YXNzIFN0eWxlUnVsZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBDU1NTZWxl
Y3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkK
LSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxlZFNlbGVjdG9yW10+IG1fY29tcGls
ZWRTZWxlY3RvcnM7CisgICAgbXV0YWJsZSBVbmlxdWVBcnJheTxDb21waWxlZFNlbGVjdG9yPiBt
X2NvbXBpbGVkU2VsZWN0b3JzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L0Nv
bXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAyYmM3MDg4
ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xh
c3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGlsZWRTZWxl
Y3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNlbGVjdG9y
Q29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykgJiYgQ1NT
X1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRF
bGVtZW50LmgKaW5kZXggZDU0Y2RkY2U1ZDQ0YzA4YTk2ZDYzZDBkMjhlZjcwMDY3NzI4YWUzNC4u
M2ZkNjY3ZmZlNGI1ZDNmMTI1N2E1ZDZkZjUwZWQ4NGE4ZmZlM2ExMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcs
OCArNjcsOCBAQCBjbGFzcyBIVE1MRnJhbWVTZXRFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxF
bGVtZW50IHsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZEludG9BbmNl
c3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fcm93TGVuZ3RoczsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGVuZ3RoW10+IG1fY29sTGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5ndGg+IG1f
cm93TGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5ndGg+IG1fY29sTGVuZ3RoczsKIAogICAg
IGludCBtX3RvdGFsUm93czsKICAgICBpbnQgbV90b3RhbENvbHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDJjZGFjOTEyMmVmOWVhNzcyNzliY2RjMGQ2M2E0ZWFkZmU5NzhlZGQuLjAyOTdjZTBhZDIz
NTRjZmFlODIyOWZhYjNlOGVlNTFkODc5MzY4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC05OSw2
ICs5OSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4KICNpbmNs
dWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtMTU1Myw3
ICsxNTU0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgICAgIHN5bnRoZXNp
emVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4U3ViSW1h
Z2UyRCIsICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBj
aGFyW10+IHplcm87CisgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAg
ICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNpemU7
CiAgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdlU2l6
ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdubWVudCwg
JnNpemUsIG51bGxwdHIpOwpAQCAtMTU2MSw3ICsxNTYyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQg
bGV2ZWwKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNvcHlUZXhT
dWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWdu
ZWQgY2hhcltdPihzaXplKTsKKyAgICAgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5z
aWduZWQgY2hhcj4oc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXplcm8pIHsKICAgICAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwg
ImNvcHlUZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC01NzYxLDcgKzU3NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEdWludCBudQogICAg
ICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIwQnVmZmVy
VmFsdWVbMl0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1fdmVydGV4
QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewogCi0gICAgICAgIGF1dG8gYnVmZmVyRGF0YSA9IHN0
ZDo6bWFrZV91bmlxdWU8R0MzRGZsb2F0W10+KGJ1ZmZlclNpemUpOworICAgICAgICBhdXRvIGJ1
ZmZlckRhdGEgPSBtYWtlVW5pcXVlQXJyYXk8R0MzRGZsb2F0PihidWZmZXJTaXplKTsKICAgICAg
ICAgZm9yIChHQzNEdWludCBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkgewogICAg
ICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDRdID0gYXR0cmliVmFsdWUudmFsdWVbMF07CiAgICAg
ICAgICAgICBidWZmZXJEYXRhW2lpICogNCArIDFdID0gYXR0cmliVmFsdWUudmFsdWVbMV07CkBA
IC01OTA3LDE1ICs1OTA4LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpl
bnN1cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIH0KIAogV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZShp
bnQgY2FwYWNpdHkpCi0gICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKLSAgICAsIG1fY2FwYWNpdHkoY2FwYWNp
dHkpCisgICAgOiBtX2J1ZmZlcnMoY2FwYWNpdHkpCiB7CiB9CiAKIEltYWdlQnVmZmVyKiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcihj
b25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBt
X2NhcGFjaXR5OyArK2kpIHsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbV9i
dWZmZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZl
cnNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghYnVmKQogICAgICAgICAgICAgYnJlYWs7CkBAIC01
OTMwLDcgKzU5MzAsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgVW5hY2Nl
bGVyYXRlZCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBp
ID0gc3RkOjptaW4obV9jYXBhY2l0eSAtIDEsIGkpOworICAgIGkgPSBzdGQ6Om1pbihtX2J1ZmZl
cnMuc2l6ZSgpIC0gMSwgaSk7CiAgICAgbV9idWZmZXJzW2ldID0gV1RGTW92ZSh0ZW1wKTsKIAog
ICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0KCk7CkBAIC01OTM4LDkgKzU5
MzgsOSBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHJldHVybiBidWY7CiB9CiAKLXZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6YnViYmxl
VG9Gcm9udChpbnQgaWR4KQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFn
ZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KHNpemVfdCBpZHgpCiB7Ci0gICAgZm9yIChpbnQg
aSA9IGlkeDsgaSA+IDA7IC0taSkKKyAgICBmb3IgKHNpemVfdCBpID0gaWR4OyBpID4gMDsgLS1p
KQogICAgICAgICBtX2J1ZmZlcnNbaV0uc3dhcChtX2J1ZmZlcnNbaS0xXSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAppbmRleCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZiNzgwYzVkNzI5YzQ5Li5kMmEz
OTE5NTlkYmMxNGVlY2FmYjBhMGUwMGViN2U4ODk2NjJmN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCkBAIC01
MTcsOSArNTE3LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSA6IHB1YmxpYyBH
UFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUKICAgICAgICAgLy8gVGhlIHBv
aW50ZXIgcmV0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGltYWdlIGJ1ZmZlciBtYXAuCiAgICAgICAg
IEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKTsKICAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlkeCk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+W10+IG1fYnVmZmVyczsKLSAg
ICAgICAgaW50IG1fY2FwYWNpdHk7CisgICAgICAgIHZvaWQgYnViYmxlVG9Gcm9udChzaXplX3Qg
aWR4KTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4+IG1fYnVm
ZmVyczsKICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUgbV9nZW5lcmF0ZWRJbWFnZUNh
Y2hlIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAppbmRleCBkNzllMDM5OWM0
ODgxZTRmOWZlZjYzY2ZmYjRlYThlMDdmNWViMjgwLi40NjU4ZmQwOGU2ZGZkOGI4MWNkNDRhYTM3
MzFhZDZiMTFkMWUxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50Q2hhcmFjdGVyKFN0cmluZ0ltcGwmIHN0cmlu
ZywgVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBs
ZW4pCitVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBpbnQmIGxlbikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzcGFjaWZpZWQobGVuZ3RoKTsKQEAgLTEwNSw3ICsx
MDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKICAgICBzdHIgPSBzdHItPnNpbXBsaWZ5V2hpdGVTcGFj
ZSgpOwogCiAgICAgbGVuID0gY291bnRDaGFyYWN0ZXIoKnN0ciwgJyAnKSArIDE7Ci0gICAgYXV0
byByID0gc3RkOjptYWtlX3VuaXF1ZTxMZW5ndGhbXT4obGVuKTsKKyAgICBhdXRvIHIgPSBtYWtl
VW5pcXVlQXJyYXk8TGVuZ3RoPihsZW4pOwogCiAgICAgaW50IGkgPSAwOwogICAgIHVuc2lnbmVk
IHBvcyA9IDA7CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBu
ZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgcmV0dXJu
IHI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQorVW5pcXVlQXJyYXk8TGVuZ3RoPiBuZXdMZW5ndGhB
cnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiB7CiAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IHN0ciA9IHN0cmluZy5pbXBsKCktPnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogICAgIGlm
ICghc3RyLT5sZW5ndGgoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxM
ZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQog
ICAgIH0KIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKCpzdHIsICcsJykgKyAxOwotICAgIGF1
dG8gciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVuZ3RoW10+KGxlbik7CisgICAgYXV0byByID0gbWFr
ZVVuaXF1ZUFycmF5PExlbmd0aD4obGVuKTsKIAogICAgIGludCBpID0gMDsKICAgICB1bnNpZ25l
ZCBwb3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRleCA1N2NlMGNlNzhiYjNlZTEz
YzIzY2ZiNjE5NzEwYjA2N2IyNGMwYWYxLi42NGEwOGU4YzFiNGZjOTZlNTNjYzcyYmViNmVjODRi
MGM3NTdhNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBAIC0xMzgsOCArMTM5LDggQEAg
c3RydWN0IExlbmd0aCB7CiAvLyBCbGVuZCB0d28gbGVuZ3RocyB0byBwcm9kdWNlIGEgbmV3IGxl
bmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gVXNlZCBmb3IgYW5pbWF0aW9uLgogTGVuZ3Ro
IGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3RoJiB0bywgZG91YmxlIHByb2dy
ZXNzKTsKIAotc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBT
dHJpbmcmLCBpbnQmIGxlbmd0aCk7Ci1zdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0xlbmd0
aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKK1VuaXF1ZUFycmF5PExlbmd0aD4g
bmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW5ndGgpOworVW5pcXVlQXJyYXk8
TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7CiAKIGlu
bGluZSBMZW5ndGg6Okxlbmd0aChMZW5ndGhUeXBlIHR5cGUpCiAgICAgOiBtX2ludFZhbHVlKDAp
LCBtX2hhc1F1aXJrKGZhbHNlKSwgbV90eXBlKHR5cGUpLCBtX2lzRmxvYXQoZmFsc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNw
cAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVjMTczMjZhZWYwLi5iMjU1MThk
ODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKQEAgLTI3NSw4ICsy
NzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVtYmVyT2ZDaGFubmVscyh1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RGaWx0ZXJQYWNrcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0PigpKTsKICAgICB9CiAKLSAgICBt
X3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVy
T2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9zb3VyY2VDaGFubmVscyA9IG1h
a2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOworICAgIG1fZGVz
dGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9hdCo+KG51bWJlck9mQ2hhbm5l
bHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hhbm5lbHMobnVtYmVyT2ZDaGFu
bmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5k
ZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJhZWJkNS4uZjcxNmNlZjczYTM1
ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNpbmNsdWRlICJaZXJvUG9sZS5o
IgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAgY2xhc3MgRHluYW1pY3NDb21w
cmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFplcm9Qb2xlRmlsdGVyUGFjazQ+
PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVG
aWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPGNv
bnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxmbG9h
dCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0
Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxmbG9hdCo+IG1fZGVzdGluYXRp
b25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFnZVBhcmFtZXRlcnModW5zaWdu
ZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFsaXplZEZyZXF1ZW5jeSAvKiAw
IC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0ZXJzKGZsb2F0IGdhaW4sIGZs
b2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0MTAxZjY2YjVmYzA5YWEzZWZi
MTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2MxYWRjY2JmZWFjMDRkNTAzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCkBAIC00NCw2ICs0NCw3
IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUgewogI2lmIFVTRShXRUJBVURJ
T19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAgICBHc3RGRlRGMzIqIG1faW52
ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMyQ29tcGxleFtdPiBtX2NvbXBs
ZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBsZXg+IG1fY29tcGxleERhdGE7
CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1f
aW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVH
U3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4ZTk1ZjJkMmI4MjdkMTU5ZTMx
OTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBlMzJhNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZy
YW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBG
RlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAgICA6IG1fRkZUU2l6ZShmZnRT
aXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihmZnRT
aXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91bmlxdWU8R3N0RkZURjMyQ29t
cGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQorICAgICwgbV9jb21wbGV4
RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4odW5wYWNrZWRGRlREYXRhU2l6
ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZG
VFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkp
CiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFtZSgpCiBGRlRGcmFtZTo6RkZU
RnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9GRlRTaXplKGZyYW1lLm1fRkZU
U2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cyRkZUU2l6ZSkKLSAgICAsIG1f
Y29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVB
cnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQog
ICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZyYW1lLm1fRkZUU2l6ZSkpCiAg
ICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRTaXplKSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZl
cnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
LmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2OTliNTU0MGY1My4uOWQ4MjA0
YzhhMjQ2NjBmYzc3MmIwY2Y3YjU2NTA4N2EzNDUxNWFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0Q29udmVydGVyIHsKICAgICB7
CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29tcG9uZW50cyA9IDQ7CiAgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50ICA9IDQ7Ci0gICAgICAgIG1f
dW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+
KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNvbXBvbmVudCk7
CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gbWFrZVVuaXF1ZUFycmF5
PHVpbnQ4X3Q+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNv
bXBvbmVudCk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRh
LmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZvcm1hdENvbnZlcnRlciB7
CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBpbnQgbV9zcmNTdHJpZGUs
IG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOworICAgIFVuaXF1ZUFycmF5
PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVmNzQ0N2NlNDc5MzQ4NmE3
NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3Nzg0YzhiMDM0MDg0MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDYsNyAr
MTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0RGF0YUZvcm1hdChHQzNE
ZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBH
QzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0
LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEaW50
IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxpZ25tZW50ID09IDEgfHwg
dW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09IDQgfHwgdW5wYWNrQWxp
Z25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHplcm87
CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAgICBpZiAod2lkdGggPiAw
ICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7CiAgICAgICAgIEdD
M0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0
aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsKQEAgLTE1NCw3ICsx
NTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7CisgICAg
ICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CiAgICAgICAg
IGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
aW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJmM2NmYS4uMmU3NDg3OWQ4
ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFy
cmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0EpCkBA
IC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBSZWZD
b3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtX2RlY29kZWRJbWFn
ZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERhdGE7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKKyAgICAgICAg
VW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRhOwogI2VuZGlmCiAgICAg
ICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21Tb3VyY2UgbV9pbWFnZUh0
bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRleCA3MjlmODQzZGY5N2Jl
ZWJjYjA0YWEyZTk2NjEzYTM1MzY4MGVjN2Q2Li5hMmVlZjQyYmVmZmI4MzgwZjg3YWFkN2M1YzAw
OGEzZjdkNzc2ZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5oPgogCiAjaWZkZWYgREVC
VUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0RGlydHlSZWN0cyhIV05E
IHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0KIAogICAgIERXT1JEIGRh
dGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwgMCk7Ci0gICAgYXV0byBy
ZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KGRhdGFT
aXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWdu
ZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRhdGEgPSByZWludGVycHJl
dF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsKICAgICBpZiAoITo6R2V0
UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25EYXRhKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgxNTIyYWYxMWIyMWMxNzc3
NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlmMzUwNGRmMWQ5ZmVhNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJSZWdpb24u
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCkBAIC0zNDAsNyArMzQx
LDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgpIC8gMjsKIAogICAgIHVp
bnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdPiB0bXAg
PSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAgICBhdXRvIHRtcCA9IG1h
a2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9wID0gc291cmNlICsgKGkg
KiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2ZjRlM2I2YWFhN2RjYzFi
MTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi4wNzFkY2NjOTQxMjVmZjdhNWE4OTQ4NWQ1NGJmOTI5MTM4
N2E3YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcgKzQ3OCw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0SW1hZ2UoYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHByZW11bHRpcGx5IHRoZSBh
bHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJlZmVyIHRvIG1hbm51YWxs
eSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBSR0JBOCBmb3JtYXRzIGlu
c3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsKLSAgICAgICAgbV9mb3Jt
YWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90W10+KG1faW1hZ2VXaWR0
aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0g
bWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0
KTsKICAgICAgICAgY29uc3QgdWludDE2X3QqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihtX2ltYWdlUGl4ZWxEYXRhKTsKICAgICAgICAgdWludDhfdCogZGVzdGlu
YXRpb24gPSBtX2Zvcm1hbGl6ZWRSR0JBOERhdGEuZ2V0KCk7CiAgICAgICAgIGNvbnN0IHB0cmRp
ZmZfdCBzcmNTdHJpZGVJbkVsZW1lbnRzID0gYnl0ZXNQZXJSb3cgLyBzaXplb2YodWludDE2X3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
CmluZGV4IGFkMjJiNDdiMWFkMmJiMTBlMmYxY2JlODllZmQ1NDIxZmJiNTI2NDYuLjg2OTgxMzY0
NTEzYjhlNmYwZDdiMmRkYTViYjhkMWY4NzJlN2Y1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0xNzAsNyArMTcxLDcgQEAgdm9pZCBUZXh0dXJlOjp1cGRhdGVTdWJS
ZWN0KHZvaWQqIHBpeGVscywgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkKICAgICBpbnQgdGVt
cEJ1ZmZTaXplID0gLy8gVGVtcG9yYXJ5IGJ1ZmZlciBzaXplIGlzIHRoZSBzbWFsbGVyIG9mIHRo
ZSBtYXggdGV4dHVyZSBzaXplIG9yIHRoZSB1cGRhdGVSZWN0U2FuaXRpemVkCiAgICAgICAgIHN0
ZDo6bWluKG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpLCBtX3RpbGVzLmJvcmRlclRl
eGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC53aWR0aCgpKSAqCiAgICAgICAgIHN0ZDo6bWlu
KG1fdGlsZXMubWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSwgbV90aWxlcy5ib3JkZXJUZXhlbHMo
KSArIHVwZGF0ZVJlY3RTYW5pdGl6ZWQuaGVpZ2h0KCkpOwotICAgIGF1dG8gdGVtcEJ1ZmYgPSBz
dGQ6Om1ha2VfdW5pcXVlPHVpbnQzMl90W10+KHRlbXBCdWZmU2l6ZSk7CisgICAgYXV0byB0ZW1w
QnVmZiA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4odGVtcEJ1ZmZTaXplKTsKIAogICAgIGZv
ciAoaW50IHRpbGUgPSAwOyB0aWxlIDwgbV90aWxlcy5udW1UaWxlc1goKSAqIG1fdGlsZXMubnVt
VGlsZXNZKCk7IHRpbGUrKykgewogICAgICAgICBpbnQgeEluZGV4ID0gdGlsZSAlIG1fdGlsZXMu
bnVtVGlsZXNYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAppbmRleCBkZjBhMGI4NTVlM2Q0MDBiMDU0OTdjMzg2YTlkYmI4ZTZkYjcyM2UxLi41NDcy
NzRmZmE2OGE1MmU0NWUwZDcyZDI4YjJhMTM5YzZmNWIwYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNs
dWRlIDx3dGYvSGV4TnVtYmVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCkBAIC0xNjgsNyArMTY5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAgICAgaW50IHRvdGFsQnl0ZXMgPSB0b3RhbEJ5dGVzQ2hlY2tlZC51
bnNhZmVHZXQoKTsKIAotICAgIGF1dG8gcGl4ZWxzID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZCBjaGFyW10+KHRvdGFsQnl0ZXMpOworICAgIGF1dG8gcGl4ZWxzID0gbWFrZVVuaXF1ZUFycmF5
PHVuc2lnbmVkIGNoYXI+KHRvdGFsQnl0ZXMpOwogICAgIGlmICghcGl4ZWxzKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTY2OCwxMSArNjY5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNv
bXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAKICAgICBpZiAobGVuZ3RoKSB7
CiAgICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0gICAgICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFr
ZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9n
KHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgICAgIFZlY3RvcjxHTGNo
YXI+IGluZm8obGVuZ3RoKTsKKyAgICAgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBs
ZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXJzWzJdID0geyBzaGFkZXIsIDAgfTsKLSAgICAgICAgZW50cnkubG9nID0gZ2V0VW5tYW5n
bGVkSW5mb0xvZyhzaGFkZXJzLCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgICAgICBlbnRy
eS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEo
KSwgc2l6ZSkpOwogICAgIH0KIAogICAgIGlmIChjb21waWxlU3RhdHVzICE9IEdMX1RSVUUpIHsK
QEAgLTg1MSwxOCArODUyLDE4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0
dHJpYkltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpCiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7CiAgICAgOjpn
bEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZt
YXhBdHRyaWJ1dGVTaXplKTsKLSAgICBhdXRvIG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hh
cltdPihtYXhBdHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
IGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCisgICAgVmVjdG9yPEdMY2hhcj4gbmFtZShtYXhB
dHRyaWJ1dGVTaXplKTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVz
IG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGlu
dCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZUF0dHJp
Yihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAm
dHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5kYXRh
KCkpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAot
ICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hB
REVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgp
KTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0s
IFNIQURFUl9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxl
bmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFt
ZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgp
LCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0
aXZlIGF0dHJpYnV0ZSAlZCBmcm9tICclcycgdG8gJyVzJyIsIHByb2dyYW0sIGluZGV4LCB1bmlm
b3JtTmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW5hbE5hbWUudXRmOCgpLmRhdGEoKSk7CiAjZW5k
aWYKIApAQCAtODk4LDE4ICs4OTksMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0
aXZlVW5pZm9ybUltcGwoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludAogICAgIEdM
aW50IG1heFVuaWZvcm1TaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdM
X0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7CiAKLSAgICBhdXRv
IG5hbWUgPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihtYXhVbmlmb3JtU2l6ZSk7IC8vIEdM
X0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAg
ICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZP
Uk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgogICAgIEdMc2l6ZWkgbmFt
ZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwot
ICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwg
Jm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZS5nZXQoKSk7CisgICAgOjpnbEdldEFjdGl2
ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNp
emUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3lt
Ym9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfVU5JRk9STSwgU3RyaW5nKG5hbWUu
Z2V0KCksIG5hbWVMZW5ndGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxT
eW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJpbmcobmFt
ZS5kYXRhKCksIG5hbWVMZW5ndGgpKTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgU3RyaW5n
IHVuaWZvcm1OYW1lKG5hbWUuZ2V0KCksIG5hbWVMZW5ndGgpOworICAgIFN0cmluZyB1bmlmb3Jt
TmFtZShuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCk7CiAgICAgTE9HKFdlYkdMLCAiUHJvZ3JhbSAl
ZCBpcyBtYXBwaW5nIGFjdGl2ZSB1bmlmb3JtICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3Jh
bSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCku
ZGF0YSgpKTsKICNlbmRpZgogICAgIApAQCAtMTY5OSwxNCArMTcwMCwxNCBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOyAKIAogICAgIEdMc2l6ZWkgc2l6ZSA9IDA7Ci0g
ICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICA6
OmdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7
CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRQcm9ncmFtSW5m
b0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBHQzNEc2l6
ZWkgY291bnQ7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJdOwogICAgIGdldEF0dGFj
aGVkU2hhZGVycyhwcm9ncmFtLCAyLCAmY291bnQsIHNoYWRlcnMpOwogCi0gICAgcmV0dXJuIGdl
dFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZvLmdldCgpKSk7Cisg
ICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgY291bnQsIFN0cmluZyhpbmZv
LmRhdGEoKSwgc2l6ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
KiB2YWx1ZSkKQEAgLTE3NzAsMTEgKzE3NzEsMTEgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRvIGluZm8gPSBz
dGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRTaGFkZXJJbmZv
TG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mby5nZXQoKSk7CisgICAgVmVjdG9yPEdMY2hh
cj4gaW5mbyhsZW5ndGgpOworICAgIDo6Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3Ro
LCAmc2l6ZSwgaW5mby5kYXRhKCkpOwogCiAgICAgUGxhdGZvcm0zRE9iamVjdCBzaGFkZXJzWzJd
ID0geyBzaGFkZXIsIDAgfTsKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJz
LCAxLCBTdHJpbmcoaW5mby5nZXQoKSkpOworICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9n
KHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmRhdGEoKSwgc2l6ZSkpOwogfQogCiBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlclNvdXJjZShQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCmluZGV4IGFiZWRmNTM1
NTNkZDM1NmQxMGQ5MGNiY2ZiNjkyOWVhNzk3MWFlZDguLjJlNmM1MmM2MzQ4OTY2NDlhZjVjNmE0
NDQ3Yjk4ZjEwYTNkMjQyOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtLmNwcApAQCAtNDUwLDEyICs0NTAsMTIgQEAgc3RhdGljIENTdHJpbmcgZ2V0U2hhZGVyTG9n
KEdMdWludCBzaGFkZXIpCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dMZW5ndGgp
OworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9M
ZW5ndGggPSAwOwotICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxvZ0xlbmd0aCwgJmlu
Zm9MZW5ndGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxv
Z0xlbmd0aCwgJmluZm9MZW5ndGgsIGluZm8uZGF0YSgpKTsKIAogICAgIHNpemVfdCBzdHJpbmdM
ZW5ndGggPSBzdGQ6Om1heChpbmZvTGVuZ3RoLCAwKTsKLSAgICByZXR1cm4geyBpbmZvLmdldCgp
LCBzdHJpbmdMZW5ndGggfTsKKyAgICByZXR1cm4geyBpbmZvLmRhdGEoKSwgc3RyaW5nTGVuZ3Ro
IH07CiB9CiAKIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50IHByb2dyYW0pCkBA
IC00NjUsMTIgKzQ2NSwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRQcm9ncmFtTG9nKEdMdWludCBw
cm9ncmFtKQogICAgIGlmICghbG9nTGVuZ3RoKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
YXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obG9nTGVuZ3RoKTsKKyAgICBW
ZWN0b3I8R0xjaGFyPiBpbmZvKGxvZ0xlbmd0aCk7CiAgICAgR0xzaXplaSBpbmZvTGVuZ3RoID0g
MDsKLSAgICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxvZ0xlbmd0aCwgJmluZm9MZW5n
dGgsIGluZm8uZ2V0KCkpOworICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVu
Z3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0
aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGluZm8uZ2V0KCksIHN0
cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJpbmdMZW5ndGggfTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcAppbmRleCAzZWRhZDE4
MjFlYzQ2ZGNiNDBmZTUwNjJjYTI4OTRmYjQ1OGZkN2ZlLi5mMGUyNTgwOTIwNTM4NTRjZDUxNTk2
YzdlMDcxNzU5ZWY3Y2JmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJh
eS5oPgogI2luY2x1ZGUgPGQyZDEuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEz
NCw3ICsxMzUsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cHV0RGF0YShjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBBbHBoYVByZW11bHRpcGxpYwogICAgIHVuc2lnbmVkIHNyY0J5
dGVzUGVyUm93ID0gNCAqIHNvdXJjZVNpemUud2lkdGgoKTsKICAgICBjb25zdCB1aW50OF90KiBz
cmNSb3dzID0gc291cmNlLmRhdGEoKSArIChvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBvcmln
aW54ICogNCkudW5zYWZlR2V0KCk7CiAKLSAgICB1aW50OF90KiByb3cgPSBuZXcgdWludDhfdFtz
cmNCeXRlc1BlclJvd107CisgICAgYXV0byByb3cgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4o
c3JjQnl0ZXNQZXJSb3cpOwogCiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoZWlnaHQudW5zYWZl
R2V0KCk7ICsreSkgewogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoLnVuc2FmZUdl
dCgpOyB4KyspIHsKQEAgLTE0NiwxNyArMTQ3LDE1IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpw
dXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGlj
CiAgICAgICAgICAgICAgICAgcm93W2Jhc2V4ICsgMl0gPSAoc3JjUm93c1tiYXNleCArIDJdICog
YWxwaGEgKyAyNTQpIC8gMjU1OwogICAgICAgICAgICAgICAgIHJvd1tiYXNleCArIDNdID0gYWxw
aGE7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4ocm93ICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+
KHNyY1Jvd3MgKyBiYXNleClbMF07CisgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdCo+KHJvdy5nZXQoKSArIGJhc2V4KVswXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3QqPihzcmNSb3dzICsgYmFzZXgpWzBdOwogICAgICAgICB9CiAKICAgICAgICAgRDJEMV9SRUNU
X1UgZHN0UmVjdCA9IEQyRDE6OlJlY3RVKGRlc3RQb2ludC54KCksIGRlc3RQb2ludC55KCkgKyB5
LCBkZXN0UG9pbnQueCgpICsgc2l6ZS53aWR0aCgpLCBkZXN0UG9pbnQueSgpICsgeSArIDEpOwot
ICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJlY3QsIHJvdywgc3JjQnl0
ZXNQZXJSb3cpOworICAgICAgICBociA9IGJpdG1hcC0+Q29weUZyb21NZW1vcnkoJmRzdFJlY3Qs
IHJvdy5nZXQoKSwgc3JjQnl0ZXNQZXJSb3cpOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKGhy
KSk7CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICB9Ci0KLSAgICBk
ZWxldGVbXSByb3c7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYmIzZmQyZDE5YjQ3Yzc2OGIxYzAyYTEzZjg2MzIxN2I0MTg3NDFh
NS4uYWNjMjFhZGMxOWUzMjcxMDAwMmNkYWUyZWUzYjdlNDI4Mjc5MGNiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgog
I2luY2x1ZGUgPHBuZy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogI2lmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUFKT1Ip
ICYmIGRlZmluZWQoUE5HX0xJQlBOR19WRVJfTUlOT1IpICYmIChQTkdfTElCUE5HX1ZFUl9NQUpP
UiA+IDEgfHwgKFBOR19MSUJQTkdfVkVSX01BSk9SID09IDEgJiYgUE5HX0xJQlBOR19WRVJfTUlO
T1IgPj0gNCkpCiAjZGVmaW5lIEpNUEJVRihwbmdfcHRyKSBwbmdfam1wYnVmKHBuZ19wdHIpCkBA
IC0xMjAsNyArMTIxLDYgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewogICAgICAgICAsIG1fY3Vy
cmVudEJ1ZmZlclNpemUoMCkKICAgICAgICAgLCBtX2RlY29kaW5nU2l6ZU9ubHkoZmFsc2UpCiAg
ICAgICAgICwgbV9oYXNBbHBoYShmYWxzZSkKLSAgICAgICAgLCBtX2ludGVybGFjZUJ1ZmZlcigw
KQogICAgIHsKICAgICAgICAgbV9wbmcgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KFBOR19MSUJQ
TkdfVkVSX1NUUklORywgMCwgZGVjb2RpbmdGYWlsZWQsIGRlY29kaW5nV2FybmluZyk7CiAgICAg
ICAgIG1faW5mbyA9IHBuZ19jcmVhdGVfaW5mb19zdHJ1Y3QobV9wbmcpOwpAQCAtMTQzLDggKzE0
Myw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICAgICAgaWYgKG1fcG5nICYmIG1faW5m
bykKICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB6ZXJvIHRoZSBwb2ludGVycy4KICAgICAgICAg
ICAgIHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZtX3BuZywgJm1faW5mbywgMCk7Ci0gICAgICAg
IGRlbGV0ZVtdIG1faW50ZXJsYWNlQnVmZmVyOwotICAgICAgICBtX2ludGVybGFjZUJ1ZmZlciA9
IDA7CisgICAgICAgIG1faW50ZXJsYWNlQnVmZmVyLnJlc2V0KCk7CiAgICAgICAgIG1fcmVhZE9m
ZnNldCA9IDA7CiAgICAgfQogCkBAIC0xODgsOCArMTg3LDggQEAgY2xhc3MgUE5HSW1hZ2VSZWFk
ZXIgewogICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBoYXNBbHBoYSkgeyBtX2hhc0FscGhhID0g
aGFzQWxwaGE7IH0KICAgICBib29sIGhhc0FscGhhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBbHBo
YTsgfQogCi0gICAgcG5nX2J5dGVwIGludGVybGFjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1f
aW50ZXJsYWNlQnVmZmVyOyB9Ci0gICAgdm9pZCBjcmVhdGVJbnRlcmxhY2VCdWZmZXIoaW50IHNp
emUpIHsgbV9pbnRlcmxhY2VCdWZmZXIgPSBuZXcgcG5nX2J5dGVbc2l6ZV07IH0KKyAgICBwbmdf
Ynl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmxhY2VCdWZmZXIu
Z2V0KCk7IH0KKyAgICB2b2lkIGNyZWF0ZUludGVybGFjZUJ1ZmZlcihpbnQgc2l6ZSkgeyBtX2lu
dGVybGFjZUJ1ZmZlciA9IG1ha2VVbmlxdWVBcnJheTxwbmdfYnl0ZT4oc2l6ZSk7IH0KIAogcHJp
dmF0ZToKICAgICBwbmdfc3RydWN0cCBtX3BuZzsKQEAgLTE5OCw3ICsxOTcsNyBAQCBjbGFzcyBQ
TkdJbWFnZVJlYWRlciB7CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QnVmZmVyU2l6ZTsKICAgICBi
b29sIG1fZGVjb2RpbmdTaXplT25seTsKICAgICBib29sIG1faGFzQWxwaGE7Ci0gICAgcG5nX2J5
dGVwIG1faW50ZXJsYWNlQnVmZmVyOworICAgIFVuaXF1ZUFycmF5PHBuZ19ieXRlPiBtX2ludGVy
bGFjZUJ1ZmZlcjsKIH07CiAKIFBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IGZl
ODI5MGU5NTc1NmJkMTQyNWFhOWYwOGI5MTUyY2JmNjcxNTllN2YuLmEyOWU1NjY4MTE4YTQ2OTU5
OTBhOTEyNzgzMTVhNTQyMGY1YjhjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0VC
UEltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgVVNF
KFdFQlApCiAKQEAgLTE4NSw3ICsxODYsNyBAQCB2b2lkIFdFQlBJbWFnZURlY29kZXI6OmRlY29k
ZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBXZWJQRGVtdXhlciogZGVtdXhlcikKICAgICBkZWNv
ZGVyQnVmZmVyLnUuUkdCQS5zdHJpZGUgPSB3ZWJwRnJhbWUud2lkdGggKiBzaXplb2YoUkdCQTMy
KTsKICAgICBkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplID0gZGVjb2RlckJ1ZmZlci51LlJHQkEu
c3RyaWRlICogd2VicEZyYW1lLmhlaWdodDsKICAgICBkZWNvZGVyQnVmZmVyLmlzX2V4dGVybmFs
X21lbW9yeSA9IDE7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkIGNoYXJbXT4gcChuZXcg
dWludDhfdFtkZWNvZGVyQnVmZmVyLnUuUkdCQS5zaXplXSgpKTsKKyAgICBhdXRvIHAgPSBtYWtl
VW5pcXVlQXJyYXk8dWludDhfdD4oZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZSk7CiAgICAgZGVj
b2RlckJ1ZmZlci51LlJHQkEucmdiYSA9IHAuZ2V0KCk7CiAgICAgaWYgKCFkZWNvZGVyQnVmZmVy
LnUuUkdCQS5yZ2JhKSB7CiAgICAgICAgIHNldEZhaWxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJ
bXBsLmgKaW5kZXggMzQyYmU1NjliNDczMmYyYzk2ZDVkMGNjNWFlY2YxMDdjY2EzMmJiMi4uNWM0
Y2EyOTE1ZmMxODRkZmVhZTUzMmVlY2FkNjlkNTQxY2JmMzAyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNp
bmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTc2LDcgKzc3LDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2Nr
ZXRTdHJlYW1IYW5kbGUgewogICAgIHZvaWQgZGlkT3BlblNvY2tldCgpOwogCiAgICAgc3RydWN0
IFNvY2tldERhdGEgewotICAgICAgICBTb2NrZXREYXRhKHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+
JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICBTb2NrZXREYXRhKFVuaXF1ZUFycmF5
PGNoYXI+JiYgc291cmNlLCBzaXplX3QgbGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICBk
YXRhID0gV1RGTW92ZShzb3VyY2UpOwogICAgICAgICAgICAgc2l6ZSA9IGxlbmd0aDsKQEAgLTg5
LDcgKzkwLDcgQEAgY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCA6IHB1YmxpYyBTb2NrZXRT
dHJlYW1IYW5kbGUgewogICAgICAgICAgICAgb3RoZXIuc2l6ZSA9IDA7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRhOworICAgICAgICBVbmlxdWVBcnJh
eTxjaGFyPiBkYXRhOwogICAgICAgICBzaXplX3Qgc2l6ZSB7IDAgfTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbEN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAppbmRleCA2ZmNiZjgzNzhjYTM3NWNmOTIx
YWRmOWFhNjRhY2U1NWFkMmM2ZGMxLi41YTQ1ZGQ4ZGI1MmRhOGJmMWVmNWJhZWY0NGIxMTVkZTc2
NTcyMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
U29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKQEAgLTQ0LDkg
KzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PGNoYXJbXT4gY3JlYXRlQ29weShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQorc3RhdGlj
IFVuaXF1ZUFycmF5PGNoYXI+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjb3B5KG5ldyBjaGFyW2xlbmd0aF0p
OworICAgIGF1dG8gY29weSA9IG1ha2VVbmlxdWVBcnJheTxjaGFyPihsZW5ndGgpOwogICAgIG1l
bWNweShjb3B5LmdldCgpLCBkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJuIGNvcHk7CkBAIC05
OCw3ICs5OCw3IEBAIGJvb2wgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cmVhZERhdGEoQ1VSTCog
Y3VybEhhbmRsZSkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAogICAgIGNvbnN0IHNp
emVfdCBidWZmZXJTaXplID0gMTAyNDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBkYXRh
KG5ldyBjaGFyW2J1ZmZlclNpemVdKTsKKyAgICBhdXRvIGRhdGEgPSBtYWtlVW5pcXVlQXJyYXk8
Y2hhcj4oYnVmZmVyU2l6ZSk7CiAgICAgc2l6ZV90IGJ5dGVzUmVhZCA9IDA7CiAKICAgICBDVVJM
Y29kZSByZXQgPSBjdXJsX2Vhc3lfcmVjdihjdXJsSGFuZGxlLCBkYXRhLmdldCgpLCBidWZmZXJT
aXplLCAmYnl0ZXNSZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IGUwYThmOWQ0
MmEzNTliMzk0MjM0Yjk2OTUxMzI3NDViZjAwM2I4ZGQuLjhhMzJlYjEzNmYxMzI0ZTkyMDI5YWNi
ZWYwYWI2OGYyNjRmZThiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtMzgsNiAr
MzgsNyBAQAogCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9TdHJl
YW1CdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc2LDcgKzc3LDcgQEAg
Y2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlSW1wbCBmaW5hbCA6IHB1YmxpYyBTb2NrZXRTdHJlYW1I
YW5kbGUgewogICAgIEdSZWZQdHI8R1BvbGxhYmxlT3V0cHV0U3RyZWFtPiBtX291dHB1dFN0cmVh
bTsKICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fd3JpdGVSZWFkeVNvdXJjZTsKICAgICBHUmVmUHRy
PEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltd
PiBtX3JlYWRCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWFkQnVmZmVyOwogCiAg
ICAgU3RyZWFtQnVmZmVyPGNoYXIsIDEwMjQgKiAxMDI0PiBtX2J1ZmZlcjsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4QnVmZmVyU2l6ZSA9IDEwMCAqIDEwMjQgKiAxMDI0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKaW5kZXggNDRjMTNkYjkxYzE3NmUyMmI2NDYw
N2UzZmFmY2EyNTFkODk3NWU0ZC4uMTc4ODA2NjMyOWEzNDZiNzZiNjE3OWQyYjIyNGJkMzA2OTU3
NDVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjb25uZWN0ZWQoR1JlZlB0cjxH
SU9TdHJlYW0+JiYgc3RyZWFtKQogICAgIG1fc3RyZWFtID0gV1RGTW92ZShzdHJlYW0pOwogICAg
IG1fb3V0cHV0U3RyZWFtID0gR19QT0xMQUJMRV9PVVRQVVRfU1RSRUFNKGdfaW9fc3RyZWFtX2dl
dF9vdXRwdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKSk7CiAgICAgbV9pbnB1dFN0cmVhbSA9IGdf
aW9fc3RyZWFtX2dldF9pbnB1dF9zdHJlYW0obV9zdHJlYW0uZ2V0KCkpOwotICAgIG1fcmVhZEJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihSRUFEX0JVRkZFUl9TSVpFKTsKKyAgICBt
X3JlYWRCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4oUkVBRF9CVUZGRVJfU0laRSk7CiAK
ICAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlSW1wbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1fcmVh
ZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpB
c3luY0lPTmV0d29yaywgbV9jYW5jZWxsYWJsZS5nZXQoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCBhOWVlNGVkNTJlZTk0ZDEzOGVmZDlmM2I2MTVi
N2RiMmVhNTEzODNhLi4zNWQ3Njk4ZDlkZGJmZTVkNjgyMmQwYWQyMDUxNzY1ODI2YWJkNTI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiAr
NDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsK
IAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFy
aWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFy
aWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgp
KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVm
ZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKaW5kZXggOTUzNjJmYTE2ZjM2MDViNjdkMGJiMzEyMDcz
MzhhMGY1MGVmNDg1My4uZDE3MzJkZGI0YjUxMjFiODNiMDk5ZGE5ZjllNjg0OTliYWM1ZjBhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5
V2luLmNwcApAQCAtMzAsMTAgKzMwLDggQEAKIAogYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6Omdl
dFN5c3RlbUh0dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG9ydCkK
IHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4gdFJlZ0J1ZmZlciA9IHN0ZDo6bWFrZV91
bmlxdWU8VENIQVJbXT4oYnVmZmVyTGVuKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VENIQVJbXT4g
dEhvc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgaWYgKCF0
UmVnQnVmZmVyIHx8ICF0SG9zdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFZlY3RvcjxU
Q0hBUj4gdFJlZ0J1ZmZlcihidWZmZXJMZW4pOworICAgIFZlY3RvcjxUQ0hBUj4gdEhvc3QoYnVm
ZmVyTGVuKTsKICAgICBEV09SRCB0eXBlOwogICAgIERXT1JEIHNpemU7CiAgICAgSEtFWSBrZXk7
CkBAIC01MSwxNiArNDksMTYgQEAgYm9vbCBXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3RlbUh0
dHBQcm94eShjaGFyKiBidWZmZXIsIGludCBidWZmZXJMZW4sIGludCogcG8KICAgICAgICAgTCJQ
cm94eVNlcnZlciIsCiAgICAgICAgIG51bGxwdHIsCiAgICAgICAgICZ0eXBlLAotICAgICAgICAo
TFBCWVRFKXRSZWdCdWZmZXIuZ2V0KCksCisgICAgICAgIChMUEJZVEUpdFJlZ0J1ZmZlci5kYXRh
KCksCiAgICAgICAgICZzaXplKTsKIAogICAgIGlmIChyZXQgIT0gRVJST1JfU1VDQ0VTUykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFwYXJzZVByb3h5U3RyaW5nKHRSZWdCdWZm
ZXIuZ2V0KCksIHRIb3N0LmdldCgpLCBidWZmZXJMZW4sIHBvcnQpKQorICAgIGlmICghcGFyc2VQ
cm94eVN0cmluZyh0UmVnQnVmZmVyLmRhdGEoKSwgdEhvc3QuZGF0YSgpLCBidWZmZXJMZW4sIHBv
cnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0
LmdldCgpLCBidWZmZXJMZW4pOworICAgIHdjc3RvbWJzKGJ1ZmZlciwgdEhvc3QuZGF0YSgpLCBi
dWZmZXJMZW4pOwogICAgIGJ1ZmZlcltidWZmZXJMZW4tMV0gPSAnXDAnOwogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rp
b25Vbml4LmNwcAppbmRleCAyMDNjNTZhZGI2MjY5OWUzMDZkOTM4NGNjODYzN2Q0NjFjODc0NjQ1
Li4zYzQ2Mzk0ZTJlM2QzNDc1MmJiYzY2ZDFhNTUyNTJhYmJjMzcwODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMTQz
LDExICsxNDMsMTAgQEAgYm9vbCBDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAKICAgICBz
aXplX3QgYXR0YWNobWVudEZpbGVEZXNjcmlwdG9yQ291bnQgPSAwOwogICAgIHNpemVfdCBhdHRh
Y2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKTsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVmVjdG9yPEF0
dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbyhhdHRhY2htZW50Q291bnQpOwogCiAgICAgaWYg
KGF0dGFjaG1lbnRDb3VudCkgewotICAgICAgICBhdHRhY2htZW50SW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVudENvdW50KTsKLSAgICAgICAgbWVtY3B5
KGF0dGFjaG1lbnRJbmZvLmdldCgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZv
KSAqIGF0dGFjaG1lbnRDb3VudCk7CisgICAgICAgIG1lbWNweShhdHRhY2htZW50SW5mby5kYXRh
KCksIG1lc3NhZ2VEYXRhLCBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudENvdW50
KTsKICAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFj
aG1lbnRDb3VudDsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dGFjaG1lbnRD
b3VudDsgKytpKSB7CkBAIC00MTcsNyArNDE2LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0
cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICBpb3ZbMF0uaW92X2Jh
c2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmbWVzc2FnZUluZm8pOwogICAgIGlvdlswXS5p
b3ZfbGVuID0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdHRh
Y2htZW50SW5mb1tdPiBhdHRhY2htZW50SW5mbzsKKyAgICBWZWN0b3I8QXR0YWNobWVudEluZm8+
IGF0dGFjaG1lbnRJbmZvOwogICAgIE1hbGxvY1B0cjxjaGFyPiBhdHRhY2htZW50RkRCdWZmZXI7
CiAKICAgICBhdXRvJiBhdHRhY2htZW50cyA9IG91dHB1dE1lc3NhZ2UuYXR0YWNobWVudHMoKTsK
QEAgLTQ0NCw3ICs0NDMsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVu
aXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgZmRQdHIgPSByZWludGVycHJl
dF9jYXN0PGludCo+KENNU0dfREFUQShjbXNnKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdHRh
Y2htZW50SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8QXR0YWNobWVudEluZm9bXT4oYXR0YWNobWVu
dHMuc2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudEluZm8ucmVzaXplKGF0dGFjaG1lbnRzLnNp
emUoKSk7CiAgICAgICAgIGludCBmZEluZGV4ID0gMDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhdHRhY2htZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgYXR0YWNobWVu
dEluZm9baV0uc2V0VHlwZShhdHRhY2htZW50c1tpXS50eXBlKCkpOwpAQCAtNDY2LDcgKzQ2NSw3
IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1
dE1lc3NhZ2UpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpb3ZbaW92TGVu
Z3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmdldCgpOworICAgICAgICBpb3ZbaW92TGVu
Z3RoXS5pb3ZfYmFzZSA9IGF0dGFjaG1lbnRJbmZvLmRhdGEoKTsKICAgICAgICAgaW92W2lvdkxl
bmd0aF0uaW92X2xlbiA9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50cy5zaXpl
KCk7CiAgICAgICAgICsraW92TGVuZ3RoOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93
aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggNmRlMWJhYjg1OTA3N2Y4MTcwYzhiZDJiZmE1MjE5NWZh
YTcxYjcyZC4uZDA2MzhkMzEzYTZlN2M5MmViODI0MTQ4MjQ4OTNkYjY2NTc2YmQ4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKQEAgLTQyLDEyICs0MiwxMiBA
QCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxj
aGFyW10+KGxlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihsZW5ndGgpOwogCi0gICAg
aWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwg
YnVmZmVyLmdldCgpLCBsZW5ndGgpKQorICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEo
bG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpCiAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZ2V0
KCkpOworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVu
c2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IGU1
MjdmODE1MjU3YzA4NzA5Y2I0ZmExNWI5YjA3OTU5MjFjMDEzZjkuLjFmNzY4MDg1NjRlZDRkYjZl
NWMwY2UxZWI2MzAyMTE3MWU5MGVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0
ZW5zaW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IG5hbWVzcGFjZSBJUEMgewpAQCAtODYsOCArODcsNyBAQCBjbGFzcyBTYW5kYm94RXh0ZW5zaW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8U2FuZGJveEV4dGVuc2lvbj4gewogICAgICAgIAogICAgIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKFNBTkRCT1hfRVhURU5TSU9OUykKLSAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEhhbmRsZVtdPiBtX2RhdGE7Ci0gICAgICAgIHNpemVfdCBtX3NpemUgeyAwIH07Cisg
ICAgICAgIFZlY3RvcjxIYW5kbGU+IG1fZGF0YTsKICNlbHNlCiAgICAgICAgIEhhbmRsZSBtX2Vt
cHR5SGFuZGxlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
U2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94
RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDlkOGI5ZWIxYjdmNTBhZDJkYTZlMTVlMDMyODQxOGJjM2Iw
YWIzM2QuLmI4ZTc0M2QyMzYwY2ZlZWZjMTdiY2EyNGQ1OTcxMWNkZDU4YTViN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC0xNjMs
MzQgKzE2MywzMyBAQCB2b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0
ZShzaXplX3Qgc2l6ZSkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVCghbV9kYXRhKTsKKyAgICBBU1NFUlQobV9kYXRhLmlzRW1wdHkoKSk7CiAKLSAgICBtX2Rh
dGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZVtdPihzaXplKTsK
LSAgICBtX3NpemUgPSBzaXplOworICAgIG1fZGF0YS5yZXNpemUoc2l6ZSk7CiB9CiAKIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJh
dG9yW10oc2l6ZV90IGkpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aSA8IG1fc2l6ZSk7IAorICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaV07CiB9CiAKIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6
Om9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaSA8IG1fc2l6ZSk7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpIDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtpXTsK
IH0KIAogc2l6ZV90IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9zaXplOworICAgIHJldHVybiBtX2RhdGEuc2l6ZSgpOwogfQogCiB2
b2lkIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNp
emUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAg
ZW5jb2RlciA8PCBtX2RhdGFbaV07CisgICAgZm9yIChhdXRvJiBoYW5kbGUgOiBtX2RhdGEpCisg
ICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCiBib29sIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuY3BwCmluZGV4IGZiOGI3MzVmODczYTE1M2E1OTE3M2Y3MjQ5NTgwMjRm
NThkNjUyZDMuLjZhZjMxNTEzMTY1MThhMmNmNTYyODg4MWI0ODVjMjIzMzBjYzgwOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcApAQCAtMjEw
LDE4ICsyMTAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRv
U3RyaW5nQXJyYXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQoaHIpKQog
ICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91bmQpOwog
ICAgIGxvbmcgbGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwot
ICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGU3RyaW5nUmVmPiBpdGVt
czsKICAgICBpZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZlts
ZW5dOworICAgICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxCb3VuZCA8
PSB1Qm91bmQ7IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBCU3RyaW5nIHN0cjsKICAgICAgICAg
ICAgIGhyID0gOjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZzdHIpOwog
ICAgICAgICAgICAgaXRlbXNbbEJvdW5kXSA9IEJTVFJUb0NGU3RyaW5nUmVmKHN0cik7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChj
b25zdCB2b2lkKiopaXRlbXMsIGxlbiwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0gICAgaWYg
KGl0ZW1zKQotICAgICAgICBkZWxldGVbXSBpdGVtczsKKyAgICBDRkFycmF5UmVmIHJlc3VsdCA9
IENGQXJyYXlDcmVhdGUoMCwgKGNvbnN0IHZvaWQqKilpdGVtcy5kYXRhKCksIGxlbiwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjMyLDE4ICsy
MzAsMTYgQEAgQ0ZBcnJheVJlZiBNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJy
YXkoU0FGRUFSUkFZKiBpbkFycmF5KQogICAgIGlmIChTVUNDRUVERUQoaHIpKQogICAgICAgICBo
ciA9IDo6U2FmZUFycmF5R2V0VUJvdW5kKGluQXJyYXksIDEsICZ1Qm91bmQpOwogICAgIGxvbmcg
bGVuID0gKFNVQ0NFRURFRChocikpID8gKHVCb3VuZC1sQm91bmQrMSkgOiAwOwotICAgIENGTnVt
YmVyUmVmKiBpdGVtcyA9IDA7CisgICAgVmVjdG9yPENGTnVtYmVyUmVmPiBpdGVtczsKICAgICBp
ZiAobGVuID4gMCkgewotICAgICAgICBpdGVtcyA9IG5ldyBDRk51bWJlclJlZltsZW5dOworICAg
ICAgICBpdGVtcy5yZXNpemUobGVuKTsKICAgICAgICAgZm9yICg7IGxCb3VuZCA8PSB1Qm91bmQ7
IGxCb3VuZCsrKSB7CiAgICAgICAgICAgICBpbnQgbnVtID0gMDsKICAgICAgICAgICAgIGhyID0g
OjpTYWZlQXJyYXlHZXRFbGVtZW50KGluQXJyYXksICZsQm91bmQsICZudW0pOwogICAgICAgICAg
ICAgaXRlbXNbbEJvdW5kXSA9IFNVQ0NFRURFRChocikgPyBpbnRUb0NGTnVtYmVyUmVmKG51bSkg
OiBrQ0ZOdW1iZXJOYU47CiAgICAgICAgIH0KICAgICB9Ci0gICAgQ0ZBcnJheVJlZiByZXN1bHQg
PSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopIGl0ZW1zLCBsZW4sICZrQ0ZUeXBlQXJy
YXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykKLSAgICAgICAgZGVsZXRlW10gaXRlbXM7Cisg
ICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRl
bXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2VXaW4uY3BwCmluZGV4IGUwMDk0Yjk2YmIxODlhNjk2MzU1ZGUwZGIwODAzMGJjMGE4
MmQ3MDkuLjE3ZWUxMmY2OGU4MmY3YWRlMDA5MDAyMGEwODNiNjUyMjk2MWMzNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNw
cApAQCAtMTcyLDE5ICsxNzIsMTkgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQog
ICAgIGlmICh2ZXJzaW9uSW5mb1NpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byB2ZXJzaW9uSW5mb0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4odmVyc2lv
bkluZm9TaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gdmVyc2lvbkluZm9EYXRhKHZlcnNpb25JbmZv
U2l6ZSk7CiAKLSAgICBpZiAoIUdldEZpbGVWZXJzaW9uSW5mb1coc3RyaW5nVG9OdWxsVGVybWlu
YXRlZFdDaGFyKG1fcGF0aCkuZGF0YSgpLCAwLCB2ZXJzaW9uSW5mb1NpemUsIHZlcnNpb25JbmZv
RGF0YS5nZXQoKSkpCisgICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRl
cm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9u
SW5mb0RhdGEuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9uYW1lID0g
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiUHJvZHVjdE5hbWUiKTsKLSAg
ICBtX2Rlc2NyaXB0aW9uID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAi
RmlsZURlc2NyaXB0aW9uIik7CisgICAgbV9uYW1lID0gZ2V0VmVyc2lvbkluZm8odmVyc2lvbklu
Zm9EYXRhLmRhdGEoKSwgIlByb2R1Y3ROYW1lIik7CisgICAgbV9kZXNjcmlwdGlvbiA9IGdldFZl
cnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlRGVzY3JpcHRpb24iKTsKICAg
ICBpZiAobV9uYW1lLmlzTnVsbCgpIHx8IG1fZGVzY3JpcHRpb24uaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIFZTX0ZJWEVERklMRUlORk8qIGluZm87CiAgICAgVUlOVCBp
bmZvU2l6ZTsKLSAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwg
TCJcXCIsIChMUFZPSUQqKSAmaW5mbywgJmluZm9TaXplKSB8fCBpbmZvU2l6ZSA8IHNpemVvZihW
U19GSVhFREZJTEVJTkZPKSkKKyAgICBpZiAoIVZlclF1ZXJ5VmFsdWVXKHZlcnNpb25JbmZvRGF0
YS5kYXRhKCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwgaW5mb1NpemUg
PCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBt
X21vZHVsZVZlcnNpb24ubGVhc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTFM7CiAgICAgbV9t
b2R1bGVWZXJzaW9uLm1vc3RTaWcgPSBpbmZvLT5kd0ZpbGVWZXJzaW9uTVM7CkBAIC0xOTMsMTEg
KzE5MywxMSBAQCBib29sIFBsdWdpblBhY2thZ2U6OmZldGNoSW5mbygpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGdldFZlcnNpb25JbmZv
KHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIk1JTUVUeXBlIikuc3BsaXQoJ3wnLCB0eXBlcyk7Cisg
ICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIk1JTUVUeXBlIikuc3Bs
aXQoJ3wnLCB0eXBlcyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uTGlzdHM7Ci0gICAg
Z2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmdldCgpLCAiRmlsZUV4dGVudHMiKS5zcGxp
dCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0Rh
dGEuZGF0YSgpLCAiRmlsZUV4dGVudHMiKS5zcGxpdCgnfCcsIGV4dGVuc2lvbkxpc3RzKTsKICAg
ICBWZWN0b3I8U3RyaW5nPiBkZXNjcmlwdGlvbnM7Ci0gICAgZ2V0VmVyc2lvbkluZm8odmVyc2lv
bkluZm9EYXRhLmdldCgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMp
OworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJGaWxlT3Blbk5h
bWUiKS5zcGxpdCgnfCcsIGRlc2NyaXB0aW9ucyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdHlwZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RyaW5nIHR5cGUgPSB0eXBlc1tp
XS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCmluZGV4IGJlM2ViMzExOTE4MzQwNTdlNWMzNDY4OGIxM2ZmNWUxNTdm
OGQ2MDMuLjE5MDQ4OTczZmIxNzYzMGVmNjVmNWQ2MjYxMWEzNjg0MTY0M2MxYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTUzMiw5ICs1MzIsOSBA
QCB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5j
ZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCiAgICAgQ0ZTdHJpbmdSZWYgZGlkUmVtb3ZlRGVmYXVs
dHNLZXkgPSBDRlNUUihXZWJLaXREaWRNaWdyYXRlRGVmYXVsdFNldHRpbmdzRnJvbVNhZmFyaTNC
ZXRhUHJlZmVyZW5jZUtleSk7CiAgICAgYm9vbCBvbWl0RGVmYXVsdHMgPSAhYm9vbGVhblZhbHVl
Rm9yUHJlZmVyZW5jZXNWYWx1ZShDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0LCBkaWRSZW1vdmVE
ZWZhdWx0c0tleSkpOwogCi0gICAgYXV0byBrZXlzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVS
ZWZbXT4oY291bnQpOwotICAgIGF1dG8gdmFsdWVzID0gc3RkOjptYWtlX3VuaXF1ZTxDRlR5cGVS
ZWZbXT4oY291bnQpOwotICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5
cy5nZXQoKSwgdmFsdWVzLmdldCgpKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBrZXlzKGNvdW50
KTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiB2YWx1ZXMoY291bnQpOworICAgIENGRGljdGlvbmFy
eUdldEtleXNBbmRWYWx1ZXMoZGljdCwga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIGlmICgha2V5c1tp
XSB8fCAhdmFsdWVzW2ldIHx8IENGR2V0VHlwZUlEKGtleXNbaV0pICE9IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE1ZTI3Zjk4NWMyY2Q5
OTZkZTlhMDdlZWE5YjU5ZmRkMGY0OGU3ODcuLjIyZjVhMjYyYzFkZTFiODE5ZGNlYWYzYWJmYjc3
YzBmMzk4MWJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC0xNzg0LDgg
KzE3ODQsOCBAQCB2b2lkIFdlYlZpZXc6Om9uTWVudUNvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIGxQYXJhbSkKICAgICBtZW51SXRlbUluZm8uZk1hc2sgPSBNSUlNX1NUUklORzsKICAgICA6
OkdldE1lbnVJdGVtSW5mbyhoTWVudSwgaW5kZXgsIHRydWUsICZtZW51SXRlbUluZm8pOwogCi0g
ICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdDSEFSW10+KG1lbnVJdGVtSW5mby5j
Y2ggKyAxKTsKLSAgICBtZW51SXRlbUluZm8uZHdUeXBlRGF0YSA9IGJ1ZmZlci5nZXQoKTsKKyAg
ICBWZWN0b3I8V0NIQVI+IGJ1ZmZlcihtZW51SXRlbUluZm8uY2NoICsgMSk7CisgICAgbWVudUl0
ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZGF0YSgpOwogICAgIG1lbnVJdGVtSW5mby5jY2gr
KzsKICAgICBtZW51SXRlbUluZm8uZk1hc2sgfD0gTUlJTV9JRDsKIApAQCAtMTc5NCw3ICsxNzk0
LDcgQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiAgICAgOjpEZXN0cm95TWVudShtX2N1cnJlbnRDb250ZXh0TWVudSk7CiAgICAgbV9j
dXJyZW50Q29udGV4dE1lbnUgPSBudWxscHRyOwogCi0gICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5n
ZXQoKSwgbWVudUl0ZW1JbmZvLmNjaCk7CisgICAgU3RyaW5nIHRpdGxlKGJ1ZmZlci5kYXRhKCks
IG1lbnVJdGVtSW5mby5jY2gpOwogICAgIENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiA9IHN0YXRp
Y19jYXN0PENvbnRleHRNZW51QWN0aW9uPihtZW51SXRlbUluZm8ud0lEKTsKIAogICAgIGlmIChh
Y3Rpb24gPj0gQ29udGV4dE1lbnVJdGVtQmFzZUFwcGxpY2F0aW9uVGFnKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODA2M2UzZjliZGNhZDA3
ZjQ0YzJkNmU3N2FkZWU3ZWVlYjkzYWI2NS4uYmEzYWFjMTUxYjBjYzNmZThhYTVmYjhiYTE0NmM5
NmVjZjlhODdhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTAyLTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10g
dXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1Y3Rvcjo6VHJpdmlhbERlc3RydWN0b3IpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VHJpdmlhbERlc3RydWN0b3I6On5Ucml2aWFsRGVzdHJ1Y3Rv
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUcml2aWFsRGVzdHJ1Y3Rvcjo6c2V0TG9nKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4LTAyLTIyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBjdXJyZW50VGlt
ZSgpIC8gY3VycmVudFRpbWVNUygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBk
ZjQ5YzIxNDQ0NWVhM2I3MjBlMjJjMDg5OGUwYjZkNTY1MTU2ZWMwLi5lYjc4ZTlhOGM3ZmI3NjY4
MGY4ZjlhZjQ5ZTYwN2E3NDU0MGEzMGRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTE1MSw2ICsxNTEsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9UaHJlYWRpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL1RpbWUuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1Vu
aXF1ZUFycmF5LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9VbmlxdWVS
ZWYuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ZhcmlhbnQuY3BwCiAg
ICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ZlY3Rvci5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggODM0MTU2NzBjODhiMDkyNWI0ZTQ2NTdmZDM3MWY4ZWYyMTY2MmI2YS4u
OTI2YTNmNzJmZTAxMWQzMGFkZjk3ZTIzMGQ1ZmY2YmIzZmNmN2U2ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTcxNyw2ICs3MTcsNyBAQAogCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYxNEEg
LyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0
Q29udGVudHMubW0gKi87IH07CiAJCUUxMjIwRENBMTU1QjI4QUEwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIwREM5MTU1QjI4N0Qw
MDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5o
dG1sICovOyB9OwogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9t
RGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2Fk
aW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9OworCQlFMzI0QTZGMDIwNDFDODIw
MDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5
LmNwcCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNpZ25hbHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NTNGOTUxRjJD
RjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQzNTFGRDUwQ0MzMDBF
OThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICov
OyB9OwogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNERUE4MTAxRjBBNTg4
MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLzsgfTsKQEAgLTE4NDMsNiArMTg0NCw3IEBA
CiAJCUUxOURCOTc4MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5hdmlnYXRvckxhbmd1YWdlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIg
LyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRo
cmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTUzRjk1MUYyQ0Yz
MjEwMEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNpZ25hbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzk4QkMw
RjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDAwMTkzMDFBQ0U5QjVDMDAxQjBBMkEgLyogQmxvb21G
aWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvb21GaWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDkwMjk2NzE0RTJFM0E0MDAy
QkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNzc0LDYgKzI3NzYsNyBAQAogCQkJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAv
KiBUaHJlYWRpbmcuY3BwICovLAogCQkJCTUzMTFCRDVEMUVBOTQ5MEQwMDUyNTI4MSAvKiBUaHJl
YWRNZXNzYWdlcy5jcHAgKi8sCiAJCQkJMEYyQzIwQjcxRENENTQ0ODAwNTQyRDlFIC8qIFRpbWUu
Y3BwICovLAorCQkJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAg
Ki8sCiAJCQkJNUM1RTYzM0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1ZVJlZi5jcHAgKi8sCiAJ
CQkJN0NEMEQ1QUExRDU1MzRERTAwMENDOUUxIC8qIFZhcmlhbnQuY3BwICovLAogCQkJCUJDNTVG
NUY4MTRBRDc4RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovLApAQCAtMzMzOCw2ICszMzQxLDcg
QEAKIAkJCQlFMzhBMEQzNTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUzMTFCRDVFMUVBOTQ5MEUwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJDMjBCODFEQ0Q1NDUwMDA1NDJEOUUgLyogVGltZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI0QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVl
QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0IxRDBBNjAyNzAwRkVCQ0YzIC8q
IFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0ZDNzExRDU1MzVBODAw
MURGQkNEIC8qIFZhcmlhbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGNEMxRDBBNTkw
QzAwRkVCQ0YzIC8qIFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1VuaXF1ZUFycmF5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzU2MWRkYjQxNzEw
OTY3MTNlNDA5ZGI1MzhmNGJmZGVhOTEzZWFiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgorCit1c2luZyBuYW1lc3BhY2UgV1RGOworCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK3N0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkNvbnN0cnVjaW9ucyB7IDAgfTsKK2Ns
YXNzIFRyaXZpYWxEZXN0cnVjdG9yIHsKK3B1YmxpYzoKKyAgICBUcml2aWFsRGVzdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBudW1iZXJPZkNvbnN0cnVjaW9ucysrOworICAgIH0KKworICAgIH5U
cml2aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgICAoKm1fbG9nKSsrOworICAgIH0KKwor
ICAgIHZvaWQgc2V0TG9nKHVuc2lnbmVkKiBsb2cpCisgICAgeworICAgICAgICBtX2xvZyA9IGxv
ZzsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQqIG1fbG9nIHsgbnVsbHB0ciB9Owor
fTsKKworVEVTVChXVEZfVW5pcXVlQXJyYXksIFRyaXZpYWxEZXN0cnVjdG9yKQoreworICAgIHVu
c2lnbmVkIHNpemUgPSA0MjsKKyAgICB1bnNpZ25lZCBsb2cgPSAwOworICAgIHsKKyAgICAgICAg
RVhQRUNUX0VRKGxvZywgMFUpOworICAgICAgICBhdXRvIGFycmF5ID0gbWFrZVVuaXF1ZUFycmF5
PFRyaXZpYWxEZXN0cnVjdG9yPihzaXplKTsKKyAgICAgICAgRVhQRUNUX0VRKGxvZywgMFUpOwor
ICAgICAgICBFWFBFQ1RfRVEobnVtYmVyT2ZDb25zdHJ1Y2lvbnMsIHNpemUpOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgYXJyYXlbaV0u
c2V0TG9nKCZsb2cpOworICAgIH0KKyAgICBFWFBFQ1RfRVEobG9nLCBzaXplKTsKK30KKworVEVT
VChXVEZfVW5pcXVlQXJyYXksIE5vblRyaXZpYWxEZXN0cnVjdG9yKQoreworICAgIHVuc2lnbmVk
IHNpemUgPSA0MjsKKyAgICB7CisgICAgICAgIGF1dG8gYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8
dW5zaWduZWQ+KHNpemUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoYXJyYXlbaV0sIDBVKTsKKyAgICAgICAgICAg
IGFycmF5W2ldID0gNDI7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9FUShhcnJheVtpXSwgNDJVKTsKKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334950</attachid>
            <date>2018-03-03 01:07:44 -0800</date>
            <delta_ts>2018-03-03 07:14:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180303180742.patch</filename>
            <type>text/plain</type>
            <size>111956</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTUwMzQ5OTQyYjE1ZjUwMTliOGE2NDlmNGJiYWQ4MDVjNDgwNzg0Li5hNDZiZjQ0MjZlZGQ0NmU1
YTJmN2Q3ZWIxMzVjODE3OWJhOTNiYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5r
UG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY3VycmVudFdv
cmtpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
OjpUeXBlUHJvZmlsZXJMb2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
dGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHRvb2xz
L0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6SGVhcFZlcmlm
aWVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMy0wMiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB0aGUgTExJbnQgcHJv
YmUgd29yayBmb3IgQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0NzAyMjhlY2EyZGNiOGEzMmVkYWRkODcwZGQwYjQ0
MDBkNDk0MDUuLmZjMjgwYzc3Zjc4MDNlMzFlYzMwOWM0NDMwM2FhZThlYjllMDUzNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTgtMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB3ZSB1c2UgYG1ha2VfdW5pcXVlPGNoYXJbXT4obnVtKWAgb3IgYG5ldyBjaGFyW251
bV1gLCBhbGxvY2F0aW9uIGlzCisgICAgICAgIGRvbmUgYnkgdGhlIHN5c3RlbSBtYWxsb2MgaW5z
dGVhZCBvZiBibWFsbG9jLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKKyAgICAgICAgYnkg
Zm9sbG93aW5nIHRocmVlIGNoYW5nZXMuCisKKyAgICAgICAgMS4gSW50cm9kdWNlIFVuaXF1ZUFy
cmF5PFQ+LiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20gRmFzdE1hbGxvYy4gV2hpbGUgQysrCisg
ICAgICAgIGFycmF5IHdpdGggYG5ld2AgbmVlZCB0byBob2xkIHRoZSBzaXplIHRvIGNhbGwgZGVz
dHJ1Y3RvciBjb3JyZWN0bHksIG91cgorICAgICAgICBVbmlxdWVBcnJheSBvbmx5IHN1cHBvcnRz
IHR5cGUgVCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgSXQgcmVkdWNlcyB0aGUgYWxsb2NhdGlvbiBzaXplIHNpbmNlIHdlIGRvIG5vdCBuZWVk
IHRvIHRyYWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICBhcnJheSBjb21wYXJlZCB0byBzdGFu
ZGFyZCBgbmV3IFRbXWAuIFRoaXMgaXMgYmFzaWNhbGx5IHVzYWJsZSBpZiB3ZSB3YW50IHRvCisg
ICAgICAgIGhhdmUgcmF3IGFycmF5IHdoaWNoIHBvaW50ZXIgd29uJ3QgYmUgY2hhbmdlZCBldmVu
IGlmIHRoZSBjb250YWluZXIgaXMgbW92ZWQuCisgICAgICAgIEluIGFkZGl0aW9uLCB3ZSBhbHNv
IGV4dGVuZCBVbmlxdWVBcnJheTxUPiBmb3IgdHlwZXMgd2hpY2ggaGF2ZSBub24gdHJpdmlhbAor
ICAgICAgICBkZXN0cnVjdG9ycy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQu
CisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FM
TE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10g
b3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAg
ICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RG
OjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAg
KFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3Rh
Y2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6
CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAg
ICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6
OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDMtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dURl0gUmVtb3ZlIFJ1bkxvb3AgYW5kIFJ1bkxv
b3A6OlRpbWVyJ3MgaW50ZXJmYWNlIHVzaW5nIGRvdWJsZSBhcyBzZWNvbmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOWQzZWE2ZTU3NTE0ZTJiOTlmZDBkMmM2ZmI2M2RlODc2OWEwYTIzYi4uNDgyZTcyOWYyMDJk
MWY1NTQ5ZWJlNTZiZjExZjEzMTg5OTNkNWQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTAzLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rv
ciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
dWxlLmg6CisgICAgICAgICogY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpM
UlVJbWFnZUJ1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmJ1
YmJsZVRvRnJvbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bmV3Q29vcmRzQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6bmV3TGVuZ3RoQXJyYXkpOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9G
RlRGcmFtZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6RkZURnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybWF0Q29udmVydGVyOjpGb3JtYXRDb252ZXJ0ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXREaXJ0eVJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmbGlwSW1hZ2VTdXJmYWNl
VmVydGljYWxseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6dXBkYXRlU3ViUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0U2hhZGVyTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1Mb2cpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OlBOR0ltYWdlUmVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJ
bWFnZVJlYWRlcjo6aW50ZXJsYWNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBO
R0ltYWdlUmVhZGVyOjpjcmVhdGVJbnRlcmxhY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldERhdGE6OlNvY2tldERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnJlYWREYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDMtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dURl0gUmVtb3ZlIFJ1bkxvb3AgYW5kIFJ1
bkxvb3A6OlRpbWVyJ3MgaW50ZXJmYWNlIHVzaW5nIGRvdWJsZSBhcyBzZWNvbmRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA4NGYzZGY4MTU3MzBhN2QxNWU5YzFlNDU0YjEwNzgxMDczZWNkZDU4Li5m
ZjhmYmZhMjc0Y2EwY2EyYTdmNGJhMGU5MmNmMjZjYTdmNWM0MmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVz
aW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVhZC4KKworICAgICAgICAqIHBhbC93aW4vTG9nZ2lu
Z1dpbi5jcHA6CisgICAgICAgIChQQUw6OmxvZ0xldmVsU3RyaW5nKToKKwogMjAxOC0wMy0wMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBSZW1vdmUg
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNjZjRlODMzNDhjNzBjYjM5
ZDZhMThiNTIzYjIwOGEyNTZmYTQ0ODUuLmFhMGNmYmFkZTVjOGI2NTNiZDE2ZGQ3OGZmZjAyNDIz
NGZmYmQzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDMtMDMgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91
bmlxdWUgLyBuZXdbXSB1c2luZyBzeXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVmVjdG9yIGluc3RlYWQuCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwOgorICAgICAgICAoV2luZG93
c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJveHkpOgorICAgICAgICAqIFBsYXRmb3JtL0lQ
Qy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJv
Y2Vzc01lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2Fn
ZSk6CisgICAgICAgICogUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwOgorICAgICAgICAoV2Vi
S2l0Ojpsb2dMZXZlbFN0cmluZyk6CisgICAgICAgICogU2hhcmVkL1NhbmRib3hFeHRlbnNpb24u
aDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAg
IChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjphbGxvY2F0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKToK
KyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6Om9wZXJhdG9y
W10gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZUFycmF5OjplbmNvZGUgY29uc3QpOgorCiAyMDE4LTAzLTAyICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIFJlbW92ZSBSdW5Mb29wIGFuZCBS
dW5Mb29wOjpUaW1lcidzIGludGVyZmFjZSB1c2luZyBkb3VibGUgYXMgc2Vjb25kcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDU4MDgwZTkxMzJmZmY3Mzg3NGYwMmI2YWZmMTU0ZDZj
OTdmMmExZmMuLjE1Zjk2MzgyNzllYjRlMjgwNmU1NWZlODcwMTc2MzEwMTU4MGU4NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wMy0wMyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjpt
YWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0b3IgaW5zdGVhZC4KKworICAg
ICAgICAqIE1hcnNoYWxsaW5nSGVscGVycy5jcHA6CisgICAgICAgIChNYXJzaGFsbGluZ0hlbHBl
cnM6OnNhZmVBcnJheVRvU3RyaW5nQXJyYXkpOgorICAgICAgICAoTWFyc2hhbGxpbmdIZWxwZXJz
OjpzYWZlQXJyYXlUb0ludEFycmF5KToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKToKKyAg
ICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6Y29w
eVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYlZpZXc6Om9uTWVudUNvbW1hbmQpOgorCiAyMDE4LTAzLTAxICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmQ0YuY3BwCmluZGV4IDA1ODcyNTkzZjZkYmI5YTg1M2E4MTYxYTY5YmJkZjc0MmEyMzMz
YTMuLjEzNjc3MTUzZDVmYTA0ZGZiOGU5ZmVhN2U0NDhhYzQxN2Y5YzZlMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBA
IEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKENGU3RyaW5nUmVmIHN0cmlu
ZykKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb252ZXJ0ZWRTaXplKSA9PSBsZW5ndGgg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pih1c2VkQnVmZmVyTGVuZ3RoKSA9PSBsZW5ndGgpCiAgICAg
ICAgIHJldHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShsY2hhckJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkubGVha1JlZigpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFVu
aUNoYXJbXT4obGVuZ3RoKTsKLSAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJh
bmdlTWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZ2V0KCkpOworICAgIFZlY3RvcjxVbmlDaGFyPiBi
dWZmZXIobGVuZ3RoKTsKKyAgICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdl
TWFrZSgwLCBsZW5ndGgpLCBidWZmZXIuZGF0YSgpKTsKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmlDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiVW5pQ2hhciBhbmQgVUNoYXIgbXVzdCBiZSBz
YW1lIHNpemUiKTsKLSAgICByZXR1cm4gJk9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSksIGxlbmd0aCkubGVha1JlZigpOworICAgIHJl
dHVybiAmT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVm
ZmVyLmRhdGEoKSksIGxlbmd0aCkubGVha1JlZigpOwogfQogCiBDRlN0cmluZ1JlZiBKU1N0cmlu
Z0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIEpTU3RyaW5nUmVmIHN0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtp
bGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCmlu
ZGV4IGVhODU5YzRhOWExMmZlNGRkZjJlNTJjMmI4Njg2ZDIwODg4M2I4NzQuLmJmMmJiM2UxNTFm
YWMxMzNkOGEwNTA3ODUwYzRiN2M0NDYwM2UwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUtpbGxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXku
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTc0LDYgKzc1LDcgQEAgY2xhc3MgQnl0ZWNvZGVL
aWxscyB7CiAgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIAogICAg
IGNsYXNzIEtpbGxTZXQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEtpbGxTZXQoKQogICAgICAgICAgICAgOiBtX3dvcmQoMCkKQEAgLTE3
MCw3ICsxNzIsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICB9OwogICAgIAogICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEtpbGxTZXRbXT4gbV9r
aWxsU2V0czsKKyAgICBVbmlxdWVBcnJheTxLaWxsU2V0PiBtX2tpbGxTZXRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDQyZDlhZDZjNjg2NmQw
OGQ5OWRhZjQ2OTVmMGNjMTM3YTAxMTAzMjIuLmUwMTY5ZGZiNDk4ZWU2NDRkNjEwYWFmNGRmOTBi
NDg0NWZhYmFlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlS2lsbHMmCiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAKICAgICByZXN1
bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5zaXplKCkpOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gbWFrZVVuaXF1ZUFycmF5
PEJ5dGVjb2RlS2lsbHM6OktpbGxTZXQ+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICAgICAKICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlm
IChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggYWQwMzU2ZThm
OTBiZGY4YTM1YTFlM2U1M2RmODc2MjU0NGU0MzEwYS4uMGMyMDcwM2VkOGUyZDgxM2Y1ZDIxODA4
YWFjMmYzY2QyODYyMDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlz
YXNzZW1ibGVyLmNwcApAQCAtMTU5LDggKzE1OSw4IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1w
RGlzYXNzZW1ibHkoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgY2hhciogcHJlZml4LCBMaW5rQnVm
CiAgICAgICAgIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgPSAwOwogICAgIGVsc2UKICAgICAgICAg
YW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9IEdyYXBoOjphbW91bnRPZk5vZGVXaGl0ZVNwYWNlKGNv
bnRleHQpOwotICAgIGF1dG8gcHJlZml4QnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KHByZWZpeExlbmd0aCArIGFtb3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKLSAgICBtZW1jcHko
cHJlZml4QnVmZmVyLmdldCgpLCBwcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAgVmVjdG9yPGNo
YXI+IHByZWZpeEJ1ZmZlcihwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlICsg
MSk7CisgICAgbWVtY3B5KHByZWZpeEJ1ZmZlci5kYXRhKCksIHByZWZpeCwgcHJlZml4TGVuZ3Ro
KTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFtb3VudE9mTm9kZVdoaXRlU3BhY2U7ICsraSkK
ICAgICAgICAgcHJlZml4QnVmZmVyW2kgKyBwcmVmaXhMZW5ndGhdID0gJyAnOwogICAgIHByZWZp
eEJ1ZmZlcltwcmVmaXhMZW5ndGggKyBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlXSA9IDA7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0
cmVhbSYgb3V0LCBjb25zdCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICBDb2RlTG9jYXRpb25M
YWJlbCBlbmQgPSBsaW5rQnVmZmVyLmxvY2F0aW9uT2YoY3VycmVudExhYmVsKTsKICAgICBwcmV2
aW91c0xhYmVsID0gY3VycmVudExhYmVsOwogICAgIEFTU0VSVChlbmQuZXhlY3V0YWJsZUFkZHJl
c3M8dWludHB0cl90PigpID49IHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSk7
Ci0gICAgZGlzYXNzZW1ibGUoc3RhcnQsIGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+
KCkgLSBzdGFydC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCksIHByZWZpeEJ1ZmZlci5n
ZXQoKSwgb3V0KTsKKyAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1dGFibGVBZGRyZXNz
PHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSwgcHJl
Zml4QnVmZmVyLmRhdGEoKSwgb3V0KTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHVi
Um91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcAppbmRleCA4NThiNTQxNzRiZmViMmUyMjFkODMwNmZhOTg4YTIyOTFkNTAy
NGUzLi5iYzBmODQxZGY3NTE0NTkzNDU5MjdkZjNkYTZhYWJkMDkxNjc1YjUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0
aW5lLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIFBvbHltb3JwaGljQ2FsbENhc2U6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZSgKICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYm
IGNvZGVSZWYsIFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgRXhlY1N0YXRlKiBjYWxsZXJG
cmFtZSwKICAgICBDYWxsTGlua0luZm8mIGluZm8sIGNvbnN0IFZlY3RvcjxQb2x5bW9ycGhpY0Nh
bGxDYXNlPiYgY2FzZXMsCi0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3Vu
dHMpCisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+JiYgZmFzdENvdW50cykKICAgICA6IEdDQXdh
cmVKSVRTdHViUm91dGluZShjb2RlUmVmLCB2bSkKICAgICAsIG1fZmFzdENvdW50cyhXVEZNb3Zl
KGZhc3RDb3VudHMpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Q
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCmluZGV4IGQ5NmFlNTZjNDdmNGFhYjlmZDQ3MmZl
MjQzMmJjZjU5NWIyMmY5NWQuLjJhMzk1NzcyYjRhYjA0NjViYTFhOGMwOGU4YzhkMjFkYWM5NmVi
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDYWxsVmFyaWFu
dC5oIgogI2luY2x1ZGUgIkdDQXdhcmVKSVRTdHViUm91dGluZS5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04NCw3ICs4NSw3IEBAIGNsYXNzIFBv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdDQXdhcmVKSVRTdHViUm91dGluZSB7
CiAgICAgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgICAgIGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZiYsIFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwKICAgICAgICAgRXhlY1N0
YXRlKiBjYWxsZXJGcmFtZSwgQ2FsbExpbmtJbmZvJiwgY29uc3QgVmVjdG9yPFBvbHltb3JwaGlj
Q2FsbENhc2U+JiwKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+IGZhc3RDb3Vu
dHMpOworICAgICAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBmYXN0Q291bnRzKTsKICAgICAK
ICAgICB2aXJ0dWFsIH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpOwogICAgIApAQCAtMTAw
LDcgKzEwMSw3IEBAIGNsYXNzIFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lIDogcHVibGljIEdD
QXdhcmVKSVRTdHViUm91dGluZSB7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPFdyaXRlQmFycmll
cjxKU0NlbGw+LCAyPiBtX3ZhcmlhbnRzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtd
PiBtX2Zhc3RDb3VudHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IG1fZmFzdENvdW50czsK
ICAgICBCYWc8UG9seW1vcnBoaWNDYWxsTm9kZT4gbV9jYWxsTm9kZXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAyOGMwYmM2NmFiZTJlOWEwZjYzMTUzNWRk
MzBiNzI5MTk5NDg0OGI5Li5jOTZkYzQ4ZDBlZWE5NzViMWE4NmI2YWMwMzFjOGJmZTU5M2FiZWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTk0NCwxMCArOTQ0LDEw
IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgKICAgICAKICAgICBWZWN0b3I8aW50NjRfdD4g
Y2FzZVZhbHVlcyhjYWxsQ2FzZXMuc2l6ZSgpKTsKICAgICBWZWN0b3I8Q2FsbFRvQ29kZVB0cj4g
Y2FsbHMoY2FsbENhc2VzLnNpemUoKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+
IGZhc3RDb3VudHM7CisgICAgVW5pcXVlQXJyYXk8dWludDMyX3Q+IGZhc3RDb3VudHM7CiAgICAg
CiAgICAgaWYgKCFpc1dlYkFzc2VtYmx5ICYmIGNhbGxlckNvZGVCbG9jay0+aml0VHlwZSgpICE9
IEpJVENvZGU6OnRvcFRpZXJKSVQoKSkKLSAgICAgICAgZmFzdENvdW50cyA9IHN0ZDo6bWFrZV91
bmlxdWU8dWludDMyX3RbXT4oY2FsbENhc2VzLnNpemUoKSk7CisgICAgICAgIGZhc3RDb3VudHMg
PSBtYWtlVW5pcXVlQXJyYXk8dWludDMyX3Q+KGNhbGxDYXNlcy5zaXplKCkpOwogICAgIAogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbENhc2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChmYXN0Q291bnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBmMGY0NTYwNWRlODRhNGU3
YWQ0NzczMDJhOWI2ZDkzZDcwYzRjZGMzLi5mNzBjYzY4NTUwMTU1ZmYyMWM3MmIzN2Q4MDYyNWRk
MWY0Y2ZmNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzE4LDE3ICs3MTgsMTcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8RGlyZWN0b3J5TmFtZT4gY3VycmVudFdvcmtpbmdEaXJlY3Rvcnko
KQogICAgIC8vIEluIFdpbmRvd3MsIHdjaGFyX3QgaXMgdGhlIFVURi0xNkxFLgogICAgIC8vIGh0
dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZGQzNzQwODEuYXNweAogICAg
IC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNr
dG9wL2ZmMzgxNDA3LmFzcHgKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8d2No
YXJfdFtdPihidWZmZXJMZW5ndGgpOwotICAgIERXT1JEIGxlbmd0aE5vdEluY2x1ZGluZ051bGwg
PSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmdldCgpKTsKLSAg
ICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gd2NoYXJUb1N0cmluZyhidWZmZXIuZ2V0KCksIGxl
bmd0aE5vdEluY2x1ZGluZ051bGwpOworICAgIFZlY3Rvcjx3Y2hhcl90PiBidWZmZXIoYnVmZmVy
TGVuZ3RoKTsKKyAgICBEV09SRCBsZW5ndGhOb3RJbmNsdWRpbmdOdWxsID0gOjpHZXRDdXJyZW50
RGlyZWN0b3J5VyhidWZmZXJMZW5ndGgsIGJ1ZmZlci5kYXRhKCkpOworICAgIFN0cmluZyBkaXJl
Y3RvcnlTdHJpbmcgPSB3Y2hhclRvU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwpOwogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbmV0d29yayBwYXRoIGxpa2UgXFxo
b3N0XHNoYXJlXDxwYXRoIG5hbWU+LgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuc3RhcnRzV2l0
aCgiXFxcXCIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKLSAgICBhdXRv
IGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihQQVRIX01BWCk7Ci0gICAgaWYgKCFn
ZXRjd2QoYnVmZmVyLmdldCgpLCBQQVRIX01BWCkpCisgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihQ
QVRIX01BWCk7CisgICAgaWYgKCFnZXRjd2QoYnVmZmVyLmRhdGEoKSwgUEFUSF9NQVgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlci5nZXQoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmlu
ZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmRhdGEoKSk7CiAjZW5kaWYKICAgICBpZiAoZGly
ZWN0b3J5U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKaW5kZXggNGNmOGM2ZDRlZDlm
MWEzMTJjNDE0M2U1NGIxMDI2YjU1N2E2MDA2Yi4uM2ExZWEzNzQ4MjQxYTRjMGQ2YTU3ZjJiZGYx
OGFkNjY1MjViMWY5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CiAKLUluc3RydWN0aW9uKiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9ucyA9IDA7CitJbnN0
cnVjdGlvbiBEYXRhOjpzX2V4Y2VwdGlvbkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAx
XSA9IHsgfTsKIE9wY29kZSBEYXRhOjpzX29wY29kZU1hcFtudW1PcGNvZGVJRHNdID0geyB9Owog
T3Bjb2RlU3RhdHNBcnJheSogRGF0YTo6c19vcGNvZGVTdGF0c0FycmF5ID0gbnVsbHB0cjsKIApA
QCAtNTcsOCArNTcsNiBAQCBleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW50cnkodm9pZCopOwogCiB2
b2lkIGluaXRpYWxpemUoKQogewotICAgIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zID0g
bmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdOwotCiAjaWYgIUVOQUJMRShKSVQp
CiAgICAgQ0xvb3A6OmluaXRpYWxpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5oCmluZGV4IDYwMmRkNjQ2ZTU3M2I4NjFiNWIyNmZjODYzNWRmNTQ3NDYwOWNhN2Iu
LjMwMWQwNzdlY2JiNTllNjY1NTc5Njg4ODU0NzFkMDI0MmRjNjRmYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRGF0YSB7
CiAgICAgc3RhdGljIHZvaWQgcmVzZXRTdGF0cygpOwogICAgIHN0YXRpYyB2b2lkIHNhdmVTdGF0
cygpOwogCi0gICAgc3RhdGljIEluc3RydWN0aW9uKiBzX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
KyAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24gc19leGNlcHRpb25JbnN0cnVjdGlvbnNbbWF4T3Bjb2Rl
TGVuZ3RoICsgMV07CiAgICAgc3RhdGljIE9wY29kZSBzX29wY29kZU1hcFtudW1PcGNvZGVJRHNd
OwogICAgIHN0YXRpYyBPcGNvZGVTdGF0c0FycmF5KiBzX29wY29kZVN0YXRzQXJyYXk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCAzOTE4OWY4N2QyNWVkYjU3
YzJlYTIyODM1MDRmNjExZjUyNTBlMTZlLi42M2MyZGU5MTNmZGY0ZGI1ZTU0YWNmZTJlYWI0YWRk
ZjkwZWMzMjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdM
aXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCkBAIC0x
NjUsNiArMTY1LDcgQEAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXIgOiBwdWJsaWMgUmVjb3Jk
T3ZlcmZsb3cgewogfTsKIAogY2xhc3MgQXJnTGlzdCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEludGVycHJldGVyOwogICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAppbmRleCA0N2YzYTVmMWJmZDJhNTkwNjQ2NTYxYzcyYmI0NGMyMTM3MjZiNjA0Li5k
NjJkMTA2MGVkNjRlYWMyODJmMDZjZmUyNWM2OTEzMjkxZWZjYzYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gZmlu
YWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZm9yIChKU09iamVjdCogY3VycmVudCA9IGhl
YWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0pLT5zdG9yZWRQcm90
b3R5cGVPYmplY3QoY3VycmVudCkpCiAgICAgICAgICAgICArK3NpemU7CiAKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IHZlY3RvciA9IHN0ZDo6bWFr
ZV91bmlxdWU8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT5bXT4oc2l6ZSArIDEpOworICAgICAgICBh
dXRvIHZlY3RvciA9IG1ha2VVbmlxdWVBcnJheTxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPj4oc2l6
ZSArIDEpOwogCiAgICAgICAgIHNpemVfdCBpID0gMDsKICAgICAgICAgZm9yIChKU09iamVjdCog
Y3VycmVudCA9IGhlYWQ7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5zdHJ1Y3R1cmUodm0p
LT5zdG9yZWRQcm90b3R5cGVPYmplY3QoY3VycmVudCkpCkBAIC04NSw3ICs4Niw3IEBAIGNsYXNz
IFN0cnVjdHVyZUNoYWluIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIFN0cnVjdHVyZUNoYWluKFZNJiwgU3RydWN0
dXJlKik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+W10+IG1f
dmVjdG9yOworICAgIFVuaXF1ZUFycmF5PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+PiBtX3ZlY3Rv
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcAppbmRleCBhMjAyNWFmMTY0ZTNlZTU4N2Jm
MzAyNTE2ZWRjYWNmOTI5YzFlMTI1Li44ZWViMzkxZGFmNGI0MTBiNjgxNjdhZjBlNjE5NTZlODQ3
OTU0ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogU3RydWN0
dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiAgICAgOiBtX2ZpcnN0RnJlZU9mZnNldCgw
KQotICAgICwgbV90YWJsZShzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KHNf
aW5pdGlhbFNpemUpKQorICAgICwgbV90YWJsZShtYWtlVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JP
ZmZzZXQ+KHNfaW5pdGlhbFNpemUpKQogICAgICwgbV9zaXplKDApCiAgICAgLCBtX2NhcGFjaXR5
KHNfaW5pdGlhbFNpemUpCiB7CkBAIC00NSw3ICs0NSw3IEBAIFN0cnVjdHVyZUlEVGFibGU6OlN0
cnVjdHVyZUlEVGFibGUoKQogdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6ZV90IG5l
d0NhcGFjaXR5KQogewogICAgIC8vIENyZWF0ZSB0aGUgbmV3IHRhYmxlLgotICAgIGF1dG8gbmV3
VGFibGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZU9yT2Zmc2V0W10+KG5ld0NhcGFjaXR5
KTsKKyAgICBhdXRvIG5ld1RhYmxlID0gbWFrZVVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0
PihuZXdDYXBhY2l0eSk7CiAKICAgICAvLyBDb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgb2xkIHRh
YmxlIHRvIHRoZSBuZXcgdGFibGUuCiAgICAgbWVtY3B5KG5ld1RhYmxlLmdldCgpLCB0YWJsZSgp
LCBtX2NhcGFjaXR5ICogc2l6ZW9mKFN0cnVjdHVyZU9yT2Zmc2V0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKaW5kZXggYTJjNThkZjYw
YWM0NTI0OTY2YjgyYTZjNzMzMDllZDI1NmM4YjE2OS4uNzc4OWRmODk1OWY3ZmVkNWUwMDJhNjRh
NjMzZjZiOTE0ZmJiY2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJVbnVzZWRQb2ludGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwNywxMCArMTA4
LDEwIEBAIGNsYXNzIFN0cnVjdHVyZUlEVGFibGUgewogICAgIAogICAgIHN0YXRpYyBjb25zdCBz
aXplX3Qgc19pbml0aWFsU2l6ZSA9IDI1NjsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
U3RydWN0dXJlT3JPZmZzZXRbXT4+IG1fb2xkVGFibGVzOworICAgIFZlY3RvcjxVbmlxdWVBcnJh
eTxTdHJ1Y3R1cmVPck9mZnNldD4+IG1fb2xkVGFibGVzOwogCiAgICAgdWludDMyX3QgbV9maXJz
dEZyZWVPZmZzZXQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVjdHVyZU9yT2Zmc2V0W10+IG1f
dGFibGU7CisgICAgVW5pcXVlQXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+IG1fdGFibGU7CiAKICAg
ICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBtX2NhcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKaW5kZXggZmYwYTc2MTcz
OTRhNDlkZDNkOGZiYWM4Y2JjYWU2OGFmM2U0ZjVlMS4uMDlkNDIyMDVmNmI5OTgzMmYzOWY5OWM3
MjkxMTg4NTJmZjhiMzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyTG9nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXJMb2cuY3BwCkBAIC00MSwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFR5cGVQ
cm9maWxlckxvZ0ludGVybmFsIHsKIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsK
IH0KIAotdm9pZCBUeXBlUHJvZmlsZXJMb2c6OmluaXRpYWxpemVMb2coKQorVHlwZVByb2ZpbGVy
TG9nOjpUeXBlUHJvZmlsZXJMb2coKQorICAgIDogbV9sb2dTaXplKDUwMDAwKQorICAgICwgbV9s
b2dTdGFydFB0cihuZXcgTG9nRW50cnlbbV9sb2dTaXplXSkKKyAgICAsIG1fY3VycmVudExvZ0Vu
dHJ5UHRyKG1fbG9nU3RhcnRQdHIpCisgICAgLCBtX2xvZ0VuZFB0cihtX2xvZ1N0YXJ0UHRyICsg
bV9sb2dTaXplKQogewogICAgIEFTU0VSVCghbV9sb2dTdGFydFB0cik7Ci0gICAgbV9sb2dTaXpl
ID0gNTAwMDA7Ci0gICAgbV9sb2dTdGFydFB0ciA9IG5ldyBMb2dFbnRyeVttX2xvZ1NpemVdOwot
ICAgIG1fY3VycmVudExvZ0VudHJ5UHRyID0gbV9sb2dTdGFydFB0cjsKLSAgICBtX2xvZ0VuZFB0
ciA9IG1fbG9nU3RhcnRQdHIgKyBtX2xvZ1NpemU7CiB9CiAKIFR5cGVQcm9maWxlckxvZzo6flR5
cGVQcm9maWxlckxvZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UeXBlUHJvZmlsZXJMb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQ
cm9maWxlckxvZy5oCmluZGV4IDliNTdjYzU4NjcwZjQ1OTkxNWVjZWRlNmMxM2VhYTU1ODU4NDlm
MTcuLjM5NDE5MzM0OGM2ZTk0MDQ0MDM5Y2NlYzY3OGEzMzBiYjg4NDNlZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oCkBAIC0zOSw2ICsz
OSw3IEBAIGNsYXNzIFR5cGVQcm9maWxlckxvZyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IExvZ0VudHJ5IHsKKyAgICAgICAgV1RGX01BS0VfU1RS
VUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIApAQCAtNTIsMTIgKzUzLDcgQEAgY2xhc3MgVHlwZVByb2Zp
bGVyTG9nIHsKICAgICB9OwogCiAKLSAgICBUeXBlUHJvZmlsZXJMb2coKQotICAgICAgICA6IG1f
bG9nU3RhcnRQdHIoMCkKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVMb2coKTsKLSAgICB9Ci0K
KyAgICBUeXBlUHJvZmlsZXJMb2coKTsKICAgICB+VHlwZVByb2ZpbGVyTG9nKCk7CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIHByb2Nlc3NMb2dFbnRyaWVzKGNvbnN0IFN0cmluZyYpOwpA
QCAtNzEsOCArNjcsNiBAQCBjbGFzcyBUeXBlUHJvZmlsZXJMb2cgewogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBpbml0aWFsaXpl
TG9nKCk7Ci0KICAgICB1bnNpZ25lZCBtX2xvZ1NpemU7CiAgICAgTG9nRW50cnkqIG1fbG9nU3Rh
cnRQdHI7CiAgICAgTG9nRW50cnkqIG1fY3VycmVudExvZ0VudHJ5UHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGNlNmU0YzFmNDVjYjllYjllNTg1ZTcyYmRjMGU3MGFi
NjdiYWVmYmIuLmI2NjdlZDcyZTY1MjMzMTQ3NjVhMjAyODFmZmFiMzQzNTE2YTcyYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTUzNiwxMSArNTM2LDYgQEAgVk06On5W
TSgpCiAgICAgZGVsZXRlIGNsaWVudERhdGE7CiAgICAgZGVsZXRlIG1fcmVnRXhwQ2FjaGU7CiAK
LSNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICBpZiAobV9y
ZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKQotICAgICAgICBkZWxldGVbXSBtX3JlZ0V4cFBhdHRl
cm5Db250ZXhCdWZmZXI7Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAg
ICBkZWxldGUgbV9ydFRyYWNlTGlzdDsKICNlbmRpZgpAQCAtOTA3LDggKzkwMiw4IEBAIGNoYXIq
IFZNOjphY3F1aXJlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCiAKICAgICBtX3JlZ0V4cFBh
dHRlcm5Db250ZXh0TG9jay5sb2NrKCk7CiAgICAgaWYgKCFtX3JlZ0V4cFBhdHRlcm5Db250ZXhC
dWZmZXIpCi0gICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG5ldyBjaGFyW1ZN
OjpwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemVdOwotICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5D
b250ZXhCdWZmZXI7CisgICAgICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlciA9IG1ha2VV
bmlxdWVBcnJheTxjaGFyPihWTTo6cGF0dGVybkNvbnRleHRCdWZmZXJTaXplKTsKKyAgICByZXR1
cm4gbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyLmdldCgpOwogfQogCiB2b2lkIFZNOjpyZWxl
YXNlUmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCBkNzNmYzZiOTc0NjhjOGI0MWRhMWVhMGZmODkwOGRkZmQzZGI0MmE1Li43NmRiMDU4
MmZhZjNhMjZiMTU2N2YyOTg0OTViNjgxZjg4ZjViZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAj
aW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNwZWNpZmljLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3ltYm9sUmVnaXN0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
ICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcpCkBAIC02ODUsNyArNjg2LDcgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlz
dE5vZGU8Vk0+IHsKIAogI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05T
KQogICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZSA9
IDgxOTI7IC8vIFNwYWNlIGFsbG9jYXRlZCB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250
ZXh0Ci0gICAgY2hhciogbV9yZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyIHsgbnVsbHB0ciB9Owor
ICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKICAgICBM
b2NrIG1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2NrOwogICAgIGNoYXIqIGFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKCk7CiAgICAgdm9pZCByZWxlYXNlUmVnRXhwUGF0dGVybkNvbnRl
eEJ1ZmZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCmluZGV4IGU0MzhmNTYw
NGI3MGQyNjk4YWIzZjc5OTRhNTQwMWM5Y2JhYjNhZGMuLmYxOTg0YjViODA4OGQ1NDk2NTI2NWZm
ZDQ5MDY4NGYzOWY0NjdmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
UmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgog
I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiAhT1MoV0lORE9XUykKQEAgLTQxNiw3ICs0
MTcsNyBAQCBzdGF0aWMgYm9vbCBydW5Gcm9tRmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlcwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHRC
dWZmZXI7CiAgICAgdW5zaWduZWQgdGVzdHMgPSAwOwogICAgIHVuc2lnbmVkIGZhaWx1cmVzID0g
MDsKLSAgICBjaGFyKiBsaW5lQnVmZmVyID0gbmV3IGNoYXJbTWF4TGluZUxlbmd0aCArIDFdOwor
ICAgIFZlY3RvcjxjaGFyPiBsaW5lQnVmZmVyKE1heExpbmVMZW5ndGggKyAxKTsKIAogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIApAQCAtNDM1LDcgKzQzNiw3IEBAIHN0YXRpYyBi
b29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVzCiAgICAgICAgIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyID0gMDsKICAg
ICAgICAgY29uc3QgY2hhciogcmVnZXhwRXJyb3IgPSBudWxscHRyOwogCi0gICAgICAgIHdoaWxl
ICgobGluZVB0ciA9IGZnZXRzKCZsaW5lQnVmZmVyWzBdLCBNYXhMaW5lTGVuZ3RoLCB0ZXN0Q2Fz
ZXNGaWxlKSkpIHsKKyAgICAgICAgd2hpbGUgKChsaW5lUHRyID0gZmdldHMobGluZUJ1ZmZlci5k
YXRhKCksIE1heExpbmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkgewogICAgICAgICAgICAgbGlu
ZUxlbmd0aCA9IHN0cmxlbihsaW5lUHRyKTsKICAgICAgICAgICAgIGlmIChsaW5lUHRyW2xpbmVM
ZW5ndGggLSAxXSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgbGluZVB0cltsaW5lTGVuZ3Ro
IC0gMV0gPSAnXDAnOwpAQCAtNDg0LDggKzQ4NSw2IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxl
cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVz
CiAgICAgZWxzZQogICAgICAgICBwcmludGYoIiV1IHRlc3RzIHBhc3NlZFxuIiwgdGVzdHMpOwog
Ci0gICAgZGVsZXRlW10gbGluZUJ1ZmZlcjsKLQogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykK
ICAgICB2bS5kdW1wUmVnRXhwVHJhY2UoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCBjZDkxZWUxYTRlMDMwZThlOGNhYTE1Y2E3
ZjllYWFhYTQxMDJjZWNhLi5hN2Y5MjdmOWI5ZjA1YTE2MWQwNmRkOTAyYTExZWZjYzIwNjJkMjYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBIZWFwVmVyaWZpZXI6OkhlYXBWZXJpZmllcihIZWFwKiBoZWFwLCB1bnNp
Z25lZCBudW1iZXJPZkdDQ3ljbGVzVG9SZWNvcmQpCiAgICAgLCBtX251bWJlck9mQ3ljbGVzKG51
bWJlck9mR0NDeWNsZXNUb1JlY29yZCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX251bWJlck9m
Q3ljbGVzID4gMCk7Ci0gICAgbV9jeWNsZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEdDQ3ljbGVbXT4o
bV9udW1iZXJPZkN5Y2xlcyk7CisgICAgbV9jeWNsZXMgPSBtYWtlVW5pcXVlQXJyYXk8R0NDeWNs
ZT4obV9udW1iZXJPZkN5Y2xlcyk7CiB9CiAKIGNvbnN0IGNoYXIqIEhlYXBWZXJpZmllcjo6cGhh
c2VOYW1lKEhlYXBWZXJpZmllcjo6UGhhc2UgcGhhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSGVhcFZlcmlmaWVyLmgKaW5kZXggNDgyNGIxYzZiM2U2ZmFiMmJhMmE3ZDgyMTFlNzll
MDc4N2ZjNDk0My4uY2MyMDFjNGEyODBjODllNzUxZDRhMzVlNjEwYWQyNjhlNTE1M2UyZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNlbGxMaXN0LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC02NCw2ICs2NSw4IEBAIGNsYXNzIEhlYXBWZXJpZmllciB7CiAK
IHByaXZhdGU6CiAgICAgc3RydWN0IEdDQ3ljbGUgeworICAgICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7CisKICAgICAgICAgR0NDeWNsZSgpCiAgICAgICAgICAgICA6IGJlZm9y
ZSgiQmVmb3JlIE1hcmtpbmciKQogICAgICAgICAgICAgLCBhZnRlcigiQWZ0ZXIgTWFya2luZyIp
CkBAIC0xMDcsNyArMTEwLDcgQEAgY2xhc3MgSGVhcFZlcmlmaWVyIHsKICAgICBpbnQgbV9jdXJy
ZW50Q3ljbGU7CiAgICAgaW50IG1fbnVtYmVyT2ZDeWNsZXM7CiAgICAgYm9vbCBtX2RpZFByaW50
TG9ncyB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEdDQ3ljbGVbXT4gbV9jeWNsZXM7
CisgICAgVW5pcXVlQXJyYXk8R0NDeWNsZT4gbV9jeWNsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwYTI1
YmYzNjM3ZmE1OTY2MmE1NWI5NTZkZGFlZGU4M2VhZjVjZTAuLmViYWE1NTExZDEwZGRmNGY0MzZi
NTY2OWZiYmJlYzFlMGIxODdjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjAyLDYgKzYwMiw3IEBACiAJCURFNUEwOUZCMUJBMzY5OTIwMDNENDQyNCAv
KiBDb21tb25DcnlwdG9TUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
bW9uQ3J5cHRvU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkYzMThB
MENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTU1NTZGNDE4QTBDQzE4MDA2RjQ4RkIgLyogQ3J5
cHRvZ3JhcGhpY1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cnlwdG9ncmFwaGljVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
MDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJheS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBVbmlxdWVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzExRkIxNTFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3JvdXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkR3JvdXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzExRkIxNjFGMEE1NjhCMDAzQzA4REUgLyogVGhyZWFkR3Jv
dXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkR3JvdXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMDBBQjQxRTlBNTM2RDAwM0I1OUQyIC8qIFBs
YXRmb3JtUmVnaXN0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRm
b3JtUmVnaXN0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NTUsMTAgKzg1
NiwxMCBAQAogCQkJCUE4QTQ3MjdGMTUxQTgyNUEwMDQxMjNGRiAvKiBEaXNwYXRjaFB0ci5oICov
LAogCQkJCTBGNDU3MDQyMUJFNUI1OEYwMDYyQTYyOSAvKiBEb21pbmF0b3JzLmggKi8sCiAJCQkJ
QThBNDcyODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKLQkJCQlG
RTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovLAotCQkJCUFENjUz
REE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFsdWVUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzI5
NzE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAw
NDEyM0ZGIC8qIGR0b2EuaCAqLywKKwkJCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVt
YlB0clRyYWl0cy5oICovLAorCQkJCUFENjUzREE4MjAwNkI2QzIwMEQ4MjBENyAvKiBEdW1iVmFs
dWVUcmFpdHMuaCAqLywKIAkJCQkxQUVBODhFMTFENkJCQ0Y0MDBFNUFENjQgLyogRW51bVRyYWl0
cy5oICovLAogCQkJCUFEN0M0MzRBMUREMkE0QTcwMDI2ODg4QiAvKiBFeHBlY3RlZC5oICovLAog
CQkJCUE4QTQ3MjlGMTUxQTgyNUEwMDQxMjNGRiAvKiBFeHBvcnRNYWNyb3MuaCAqLywKQEAgLTEw
ODMsNiArMTA4NCw3IEBACiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRyaVN0YXRl
LmggKi8sCiAJCQkJODNGQkE5MzExOURGNDU5NzAwRjMwQURCIC8qIFR5cGVDYXN0cy5oICovLAog
CQkJCUE4QTQ3MzVDMTUxQTgyNUIwMDQxMjNGRiAvKiBVbmlvbkZpbmQuaCAqLywKKwkJCQlFMzAw
RTUyMTIwM0Q2NDVGMDBEQTc5QkUgLyogVW5pcXVlQXJyYXkuaCAqLywKIAkJCQk1QzdDODhEMzFE
MEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggKi8sCiAJCQkJQ0Q3NjAwRkYxRjkwQTNDQTAw
MDI2RTI2IC8qIFVuc2FmZVBvaW50ZXIuaCAqLywKIAkJCQk3QUZFQzZCMDFFQjIyQjU5MDBEQURF
MzYgLyogVVVJRC5jcHAgKi8sCkBAIC0xMDkyLDcgKzEwOTQsNiBAQAogCQkJCUE4QTQ3MzcwMTUx
QTgyNUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIz
RkYgLyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8q
IFZNVGFncy5oICovLAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRp
b25zLmNwcCAqLywKIAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3Bw
ICovLAogCQkJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJ
CTk3NENGQzhEMTZBNEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xMTAxLDYgKzEx
MDIsNyBAQAogCQkJCTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5oICovLAog
CQkJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUU0
QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKKwkJCQlGRTA1RkFGRTFG
RTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9
IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNDI0LDcgKzE0MjYsNiBAQAog
CQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVsdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JJ
Q1UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdU
RkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIxNzJFMDEwMzAwN0RC
REE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVB
MUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjhFODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdMb2NrLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMTUzMyw2ICsxNTM0LDcgQEAKIAkJCQkwRkU0NDc5QzFCN0FBQTAzMDA5
NDk4RUIgLyogV29yZExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBMEFEMzkxQTk2MjQ1
NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEEwQUQzRDFB
OTYyNTNDMDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQThBNDc0NDUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuY3BwIGIvU291cmNlL1dU
Ri93dGYvQXNzZXJ0aW9ucy5jcHAKaW5kZXggMDYxMDkzYWNjOWU5NzkxMTE0ZmM2YzE1YmExZTJj
YWMzMGIwOWE2ZS4uMGQ5NzNlNjQ3MDk3YWE1OTMyNDI5YzU4MTY5YmFhZTYwMTA5YzYwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0aW9ucy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQXNzZXJ0aW9ucy5jcHAKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHN0YXRpYyB2b2lkIHZwcmlu
dGZfc3RkZXJyX3dpdGhfcHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgY2hhciogZm9y
bWF0LCB2CiB7CiAgICAgc2l6ZV90IHByZWZpeExlbmd0aCA9IHN0cmxlbihwcmVmaXgpOwogICAg
IHNpemVfdCBmb3JtYXRMZW5ndGggPSBzdHJsZW4oZm9ybWF0KTsKLSAgICBhdXRvIGZvcm1hdFdp
dGhQcmVmaXggPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgZm9ybWF0
TGVuZ3RoICsgMSk7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZ2V0KCksIHByZWZpeCwg
cHJlZml4TGVuZ3RoKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0aFByZWZpeC5nZXQoKSArIHByZWZp
eExlbmd0aCwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBmb3JtYXRX
aXRoUHJlZml4KHByZWZpeExlbmd0aCArIGZvcm1hdExlbmd0aCArIDEpOworICAgIG1lbWNweShm
b3JtYXRXaXRoUHJlZml4LmRhdGEoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOworICAgIG1lbWNw
eShmb3JtYXRXaXRoUHJlZml4LmRhdGEoKSArIHByZWZpeExlbmd0aCwgZm9ybWF0LCBmb3JtYXRM
ZW5ndGgpOwogICAgIGZvcm1hdFdpdGhQcmVmaXhbcHJlZml4TGVuZ3RoICsgZm9ybWF0TGVuZ3Ro
XSA9IDA7CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aFByZWZpeC5nZXQo
KSwgYXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZvcm1hdFdpdGhQcmVmaXguZGF0
YSgpLCBhcmdzKTsKIH0KIAogc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGlu
Z19uZXdsaW5lKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQpAQCAtMTY2LDEyICsx
NjYsMTIgQEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF90cmFpbGluZ19uZXdsaW5l
KGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCBhcmcKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gZm9ybWF0V2l0aE5ld2xpbmUgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
Zm9ybWF0TGVuZ3RoICsgMik7Ci0gICAgbWVtY3B5KGZvcm1hdFdpdGhOZXdsaW5lLmdldCgpLCBm
b3JtYXQsIGZvcm1hdExlbmd0aCk7CisgICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhOZXdsaW5l
KGZvcm1hdExlbmd0aCArIDIpOworICAgIG1lbWNweShmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCks
IGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5n
dGhdID0gJ1xuJzsKICAgICBmb3JtYXRXaXRoTmV3bGluZVtmb3JtYXRMZW5ndGggKyAxXSA9IDA7
CiAKLSAgICB2cHJpbnRmX3N0ZGVycl9jb21tb24oZm9ybWF0V2l0aE5ld2xpbmUuZ2V0KCksIGFy
Z3MpOworICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3JtYXRXaXRoTmV3bGluZS5kYXRhKCks
IGFyZ3MpOwogfQogCiAjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAppbmRleCAyMjBiYWZkMzQ4YjMwNjMzODNhYjdhNTQyZGMyZWRlMTExYWM3MDg1Li5lOTdkMDYx
OTNjMGExZGZmYzgzMGUwY2E3ZGU2OWU1MDlkNjU5N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApA
QCAtMjMzLDYgKzIzMyw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFVuZXhwZWN0ZWQuaAogICAg
IFVuaVN0ZEV4dHJhcy5oCiAgICAgVW5pb25GaW5kLmgKKyAgICBVbmlxdWVBcnJheS5oCiAgICAg
VW5pcXVlUmVmLmgKICAgICBVbnNhZmVQb2ludGVyLmgKICAgICBWTVRhZ3MuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxv
Yy5oCmluZGV4IDdlYzIxYWU3OTg1MDc0ZjYzOWRmNGJhY2IwMDM2YWUxZmM3ZTAyNmEuLjY2NzJj
ZTQ2ZDlmMWMyYjQzYTM5MWU1NGI2NjI0NDNmMDhmOTM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAg
LTIwMCw2ICsyMDAsMjYgQEAgc3RydWN0IEZhc3RNYWxsb2MgewogICAgIHN0YXRpYyB2b2lkIGZy
ZWUodm9pZCogcCkgeyBmYXN0RnJlZShwKTsgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBGYXN0RnJlZSB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9p
bnRlcikgY29uc3QKKyAgICB7CisgICAgICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBGYXN0RnJlZTxUW10+IHsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgIHZv
aWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZyZWUo
Y29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsK
KyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmICFkZWZpbmVkKE5ERUJVRykK
QEAgLTIwOCw2ICsyMjgsNyBAQCB1c2luZyBXVEY6OmZhc3RTZXRNYXhTaW5nbGVBbGxvY2F0aW9u
U2l6ZTsKIAogdXNpbmcgV1RGOjpGYXN0QWxsb2NhdG9yOwogdXNpbmcgV1RGOjpGYXN0TWFsbG9j
OwordXNpbmcgV1RGOjpGYXN0RnJlZTsKIHVzaW5nIFdURjo6aXNGYXN0TWFsbG9jRW5hYmxlZDsK
IHVzaW5nIFdURjo6ZmFzdENhbGxvYzsKIHVzaW5nIFdURjo6ZmFzdEZyZWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5o
CmluZGV4IDdmNmEwMmNlZjMxYjFhMjlmYWM2Mzg0Y2QyYWNlM2U4Zjc1MGMwYmEuLjY2ZjEwYWE5
YmQ1YmJhMDlhYzU2MTEzNmFkMzViZjVlODRlNDhmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL01hbGxvY1B0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oCkBAIC02Niw2
ICs2NiwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNYWxsb2MgPSBGYXN0TWFs
bG9jPiBjbGFzcyBNYWxsb2NQdHIgewogICAgICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3B0
ciwgbnVsbHB0cik7CiAgICAgfQogCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9wdHI7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX3B0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1N0YWNrU2hvdC5oIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKaW5k
ZXggNmVmZDA3NGRlMjcwOWU2MjdhY2ViM2M4M2I5NDMzMTM0MmY3NWFmZC4uN2UzMmEzNWJhZTNj
N2I1NmE4YmU4NWI3ZDE4ZDFlNTU3OWEwYjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
U3RhY2tTaG90LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNs
dWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM3LDcgKzM4
LDcgQEAgY2xhc3MgU3RhY2tTaG90IHsKICAgICAgICAgOiBtX3NpemUoc2l6ZSkKICAgICB7CiAg
ICAgICAgIGlmIChzaXplKSB7Ci0gICAgICAgICAgICBtX2FycmF5ID0gc3RkOjptYWtlX3VuaXF1
ZTx2b2lkKltdPihzaXplKTsKKyAgICAgICAgICAgIG1fYXJyYXkgPSBtYWtlVW5pcXVlQXJyYXk8
dm9pZCo+KHNpemUpOwogICAgICAgICAgICAgaW50IGludFNpemUgPSBzaXplOwogICAgICAgICAg
ICAgV1RGR2V0QmFja3RyYWNlKG1fYXJyYXkuZ2V0KCksICZpbnRTaXplKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW50U2l6ZSkgPD0gc2l6ZSk7CkBA
IC01NSw3ICs1Niw3IEBAIGNsYXNzIFN0YWNrU2hvdCB7CiAgICAgCiAgICAgU3RhY2tTaG90JiBv
cGVyYXRvcj0oY29uc3QgU3RhY2tTaG90JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjx2b2lkKltdPiBuZXdBcnJheSA9IHN0ZDo6bWFrZV91bmlxdWU8dm9pZCpbXT4ob3Ro
ZXIubV9zaXplKTsKKyAgICAgICAgYXV0byBuZXdBcnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lk
Kj4ob3RoZXIubV9zaXplKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IG90aGVyLm1fc2l6ZTsg
aS0tOykKICAgICAgICAgICAgIG5ld0FycmF5W2ldID0gb3RoZXIubV9hcnJheVtpXTsKICAgICAg
ICAgbV9zaXplID0gb3RoZXIubV9zaXplOwpAQCAtMTA2LDggKzEwNyw4IEBAIGNsYXNzIFN0YWNr
U2hvdCB7CiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkKiogZGVsZXRlZFZhbHVlQXJy
YXkoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCoqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKTsgfQotICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjx2b2lkKltdPiBtX2FycmF5OworCisg
ICAgVW5pcXVlQXJyYXk8dm9pZCo+IG1fYXJyYXk7CiAgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUuaCBiL1NvdXJjZS9X
VEYvd3RmL1N5c3RlbUZyZWUuaAppbmRleCAzZWY3NTYyODJjZjIwZDQwZDhjNjE4NTQ3OTQ2ZDA0
ZjViYWVjZWY1Li43M2I2OTNmMDY4MzhiY2M4Y2NjODNhNDY4ZDRkYmMzYThhYjgyZjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKKysrIGIvU291cmNlL1dURi93dGYv
U3lzdGVtRnJlZS5oCkBAIC0zMSw2ICszMSw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogc3RydWN0IFN5c3RlbUZyZWUgeworICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIpOworCiAgICAgdm9pZCBv
cGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0CiAgICAgewogICAgICAgICBmcmVlKGNvbnN0X2Nh
c3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY3Y8VD46OnR5cGUqPihwb2ludGVyKSk7CkBAIC0zOSwx
MSArNDEsMTIgQEAgc3RydWN0IFN5c3RlbUZyZWUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
c3RydWN0IFN5c3RlbUZyZWU8VFtdPiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCko
VCogcG9pbnRlcikgY29uc3QKICAgICB7CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKICAgICB9Ci0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXku
aCBiL1NvdXJjZS9XVEYvd3RmL1VuaXF1ZUFycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjAxYWQ0MzcyZGYx
MDMwYzY5YjI2YjFkNTM1ZWExNGQ3M2U2NDU4YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1VuaXF1ZUFycmF5LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ2hl
Y2tlZEFyaXRobWV0aWMuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGJvb2wgaXNUcml2
aWFsbHlEZXN0cnVjdGlibGUsIHR5cGVuYW1lIFQ+IHN0cnVjdCBVbmlxdWVBcnJheU1ha2VyOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IFVuaXF1ZUFycmF5TWFrZXI8dHJ1ZSwgVD4g
eworICAgIHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8VFtdLCBG
YXN0RnJlZTxUW10+PjsKKworICAgIHN0YXRpYyBSZXN1bHRUeXBlIG1ha2Uoc2l6ZV90IHNpemUp
CisgICAgeworICAgICAgICAvLyBDKysgYG5ldyBUW05dYCBzdG9yZXMgaXRzIGBOYCB0byBzb21l
d2hlcmUuIE90aGVyd2lzZSwgYGRlbGV0ZSBbXWAgY2Fubm90IGRlc3Ryb3kKKyAgICAgICAgLy8g
dGhlc2UgTiBlbGVtZW50cy4gQnV0IHdlIGRvIG5vdCB3YW50IHRvIGluY3JlYXNlIHRoZSBzaXpl
IG9mIGFsbG9jYXRlZCBtZW1vcnkuCisgICAgICAgIC8vIElmIGl0IGlzIGFjY2VwdGFibGUsIHdl
IGNhbiBqdXN0IHVzZSBWZWN0b3I8VD4gaW5zdGVhZC4gU28gdGhpcyBVbmlxdWVBcnJheTxUPiBv
bmx5CisgICAgICAgIC8vIGFjY2VwdHMgdGhlIHR5cGUgVCB3aGljaCBoYXMgYSB0cml2aWFsIGRl
c3RydWN0b3IuIFRoaXMgYWxsb3dzIHVzIHRvIHNraXAgY2FsbGluZworICAgICAgICAvLyBkZXN0
cnVjdG9ycyBmb3IgTiBlbGVtZW50cy4gQW5kIHRoaXMgYWxsb3dzIFVuaXF1ZUFycmF5PFQ+IG5v
dCB0byBzdG9yZSBpdHMgTiBzaXplLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAgICAgICAvLyBEbyBub3Qg
dXNlIHBsYWNlbWVudCBuZXcgbGlrZSBgbmV3IChzdG9yYWdlKSBUW3NpemVdKClgLiBgbmV3IFRb
c2l6ZV0oKWAgcmVxdWlyZXMKKyAgICAgICAgLy8gbGFyZ2VyIHN0b3JhZ2UgdGhhbiB0aGUgYHNp
emVvZihUKSAqIHNpemVgIHN0b3JhZ2Ugc2luY2UgaXQgd2FudCB0byBzdG9yZSBgc2l6ZWAKKyAg
ICAgICAgLy8gdG8gc29tZXdoZXJlLgorICAgICAgICBUKiBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8
VCo+KGZhc3RNYWxsb2MoKENoZWNrZWQ8c2l6ZV90PihzaXplb2YoVCkpICogc2l6ZSkudW5zYWZl
R2V0KCkpKTsKKyAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OmZvcmNlSW5pdGlhbGl6
ZShzdG9yYWdlLCBzdG9yYWdlICsgc2l6ZSk7CisgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKHN0
b3JhZ2UpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVW5pcXVl
QXJyYXlNYWtlcjxmYWxzZSwgVD4geworICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IGhvdyB0
byBzdG9yZS9yZXRyaWV2ZSBOIHNpemUgdG8vZnJvbSBhbGxvY2F0ZWQgbWVtb3J5IHdoZW4gY2Fs
bGluZyBuZXcgW10gYW5kIGRlbGV0ZSBbXSwKKyAgICAvLyB3ZSB1c2UgbmV3IFtdIGFuZCBkZWxl
dGUgW10gb3BlcmF0b3JzIHNpbXBseS4gV2UgY3JlYXRlIFVuaXF1ZUFycmF5RWxlbWVudCBjb250
YWluZXIgZm9yIHRoZSB0eXBlIFQuCisgICAgLy8gVW5pcXVlQXJyYXlFbGVtZW50IGhhcyBuZXcg
W10gYW5kIGRlbGV0ZSBbXSBvcGVyYXRvcnMgZm9yIEZhc3RNYWxsb2MuIFdlIGFsbG9jYXRlIFVu
aXF1ZUFycmF5RWxlbWVudFtdIGFuZCBjYXN0CisgICAgLy8gaXQgdG8gVFtdLiBXaGVuIGRlbGV0
aW5nLCB0aGUgY3VzdG9tIGRlbGV0ZXIgY2FzdHMgVFtdIHRvIFVuaXF1ZUFycmF5RWxlbWVudFtd
IGFuZCBkZWxldGVzIGl0LgorICAgIGNsYXNzIFVuaXF1ZUFycmF5RWxlbWVudCB7CisgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgc3RydWN0IERl
bGV0ZXIgeworICAgICAgICAgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZGVsZXRlIFtdIGJpdHdpc2VfY2FzdDxVbmlxdWVBcnJh
eUVsZW1lbnQqPihwb2ludGVyKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH07CisKKyAgICAg
ICAgVW5pcXVlQXJyYXlFbGVtZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIFQgdmFsdWUgeyB9
OworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9mKFVuaXF1ZUFy
cmF5RWxlbWVudCksICIiKTsKKworICAgIHVzaW5nIFJlc3VsdFR5cGUgPSB0eXBlbmFtZSBzdGQ6
OnVuaXF1ZV9wdHI8VFtdLCB0eXBlbmFtZSBVbmlxdWVBcnJheUVsZW1lbnQ6OkRlbGV0ZXI+Owor
CisgICAgc3RhdGljIFJlc3VsdFR5cGUgbWFrZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBSZXN1bHRUeXBlKGJpdHdpc2VfY2FzdDxUKj4obmV3IFVuaXF1ZUFycmF5RWxlbWVu
dFtzaXplXSgpKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFVu
aXF1ZUFycmF5ID0gdHlwZW5hbWUgVW5pcXVlQXJyYXlNYWtlcjxzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8VD46OnZhbHVlLCBUPjo6UmVzdWx0VHlwZTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK1VuaXF1ZUFycmF5PFQ+IG1ha2VVbmlxdWVBcnJheShzaXplX3Qgc2l6ZSkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8
VD46OnR5cGUsIFQ+Ojp2YWx1ZSwgIiIpOworICAgIHJldHVybiBVbmlxdWVBcnJheU1ha2VyPHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsIFQ+OjptYWtlKHNpemUpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpVbmlxdWVBcnJheTsKK3VzaW5n
IFdURjo6bWFrZVVuaXF1ZUFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBhYmNhYmQwNmM1YmFlZTQ0NGNhZWY1
ZTgwZjQwYWI0ZDc2YzdjOTJjLi4yN2ZjMTQ1M2EwZDBhMDY3MmUzZDc0MWU3MTU5MjlmNjk3MmQ1
NThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9WZWN0b3IuaApAQCAtNjUsMTAgKzY1LDE1IEBAIHN0cnVjdCBWZWN0b3JEZXN0cnVjdG9y
PHRydWUsIFQ+CiB0ZW1wbGF0ZSA8Ym9vbCBuZWVkc0luaXRpYWxpemF0aW9uLCBib29sIGNhbklu
aXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgogc3RydWN0IFZlY3RvckluaXRpYWxpemVy
OwogCi10ZW1wbGF0ZTxib29sIGlnbm9yZSwgdHlwZW5hbWUgVD4KLXN0cnVjdCBWZWN0b3JJbml0
aWFsaXplcjxmYWxzZSwgaWdub3JlLCBUPgordGVtcGxhdGU8Ym9vbCBjYW5Jbml0aWFsaXplV2l0
aE1lbXNldCwgdHlwZW5hbWUgVD4KK3N0cnVjdCBWZWN0b3JJbml0aWFsaXplcjxmYWxzZSwgY2Fu
SW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+CiB7CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShU
KiwgVCopIHt9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4sIFQq
IGVuZCkKKyAgICB7CisgICAgICAgIFZlY3RvckluaXRpYWxpemVyPHRydWUsIGNhbkluaXRpYWxp
emVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03OSw2ICs4NCwxMSBAQCBzdHJ1Y3QgVmVjdG9y
SW5pdGlhbGl6ZXI8dHJ1ZSwgZmFsc2UsIFQ+CiAgICAgICAgIGZvciAoVCogY3VyID0gYmVnaW47
IGN1ciAhPSBlbmQ7ICsrY3VyKQogICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBjdXIpIFQ7CiAg
ICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBUKiBlbmQp
CisgICAgeworICAgICAgICBpbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC04OCw2ICs5OCwxMSBAQCBzdHJ1Y3QgVmVjdG9ySW5pdGlh
bGl6ZXI8dHJ1ZSwgdHJ1ZSwgVD4KICAgICB7CiAgICAgICAgIG1lbXNldChiZWdpbiwgMCwgcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oZW5kKSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJlZ2lu
KSk7CiAgICAgfQorCisgICAgc3RhdGljIHZvaWQgZm9yY2VJbml0aWFsaXplKFQqIGJlZ2luLCBU
KiBlbmQpCisgICAgeworICAgICAgICBpbml0aWFsaXplKGJlZ2luLCBlbmQpOworICAgIH0KIH07
CiAKIHRlbXBsYXRlIDxib29sIGNhbk1vdmVXaXRoTWVtY3B5LCB0eXBlbmFtZSBUPgpAQCAtMjMw
LDYgKzI0NSwxMSBAQCBzdHJ1Y3QgVmVjdG9yVHlwZU9wZXJhdGlvbnMKICAgICAgICAgVmVjdG9y
SW5pdGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JU
cmFpdHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6aW5pdGlhbGl6ZShiZWdpbiwg
ZW5kKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRpYWxpemUoVCogYmVnaW4s
IFQqIGVuZCkKKyAgICB7CisgICAgICAgIFZlY3RvckluaXRpYWxpemVyPFZlY3RvclRyYWl0czxU
Pjo6bmVlZHNJbml0aWFsaXphdGlvbiwgVmVjdG9yVHJhaXRzPFQ+OjpjYW5Jbml0aWFsaXplV2l0
aE1lbXNldCwgVD46OmZvcmNlSW5pdGlhbGl6ZShiZWdpbiwgZW5kKTsKKyAgICB9CisKICAgICBz
dGF0aWMgdm9pZCBtb3ZlKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgewogICAgICAg
ICBWZWN0b3JNb3ZlcjxWZWN0b3JUcmFpdHM8VD46OmNhbk1vdmVXaXRoTWVtY3B5LCBUPjo6bW92
ZShzcmMsIHNyY0VuZCwgZHN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCBjNzFmMzkyOTM0ODFl
Y2VlOGQ1NWViNzZjNGMzYjU1ZjQwOGYyZjFhLi41ZTYyYzVhYzJkYzljYzAxMGI1ZTk5M2RiMTNj
Y2E1ZTQ2MjNlODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00MjEsOCArNDIxLDggQEAgdm9p
ZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYg
YnVmZmVyKQogCiAgICAgICAgIG91dHB1dCgwKS0+c2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJP
ZkNoYW5uZWxzKTsKIAotICAgICAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1
ZTxjb25zdCBmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgICAgIG1fZGVzdGluYXRp
b25DaGFubmVscyA9IHN0ZDo6bWFrZV91bmlxdWU8ZmxvYXQqW10+KG51bWJlck9mQ2hhbm5lbHMp
OworICAgICAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNvbnN0IGZsb2F0
Kj4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1h
a2VVbmlxdWVBcnJheTxmbG9hdCo+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNoYW5uZWxzOyArK2kpIAogICAgICAgICAgICAg
bV9zb3VyY2VDaGFubmVsc1tpXSA9IGJ1ZmZlci0+Y2hhbm5lbERhdGEoaSktPmRhdGEoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3Vy
Y2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5oCmluZGV4IGY0ZTYzYTg1OWMwMWI0MTVlMWNmMzQ3ZjI3ODhkZGQ4YjdiNzNiYTEu
LjMwYjc5Yjc5MzMzNzMxODIxZmEyNTdhMDhkMTM1ODBmYTI1OTBkYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
aApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2Rl
LmgiCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDksOCArMTEwLDggQEAgY2xhc3MgQXVkaW9C
dWZmZXJTb3VyY2VOb2RlIGZpbmFsIDogcHVibGljIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSB7
CiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2J1ZmZlcjsKIAogICAgIC8vIFBvaW50ZXJzIGZv
ciB0aGUgYnVmZmVyIGFuZCBkZXN0aW5hdGlvbi4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
ZmxvYXQqW10+IG1fc291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0Kltd
PiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBt
X3NvdXJjZUNoYW5uZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNo
YW5uZWxzOwogCiAgICAgLy8gVXNlZCBmb3IgdGhlICJnYWluIiBhbmQgInBsYXliYWNrUmF0ZSIg
YXR0cmlidXRlcy4KICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9nYWluOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcAppbmRleCA4Y2E0Yzk2ZmVhZjhiYmFlNjEwODIx
MTMxMzg3YWUzNDVmMDdkYzI1Li45NWNjOGQzYzcyYWVlNjYxNzU5YzYwZmU0NzhhZDNhNTExNjU4
NWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIs
MTIgKzQyLDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0
aCk7CiAKLSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVu
dFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVu
dFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVu
Z3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5n
KGJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUnVsZS5oCmluZGV4IDk5OGFjZTRlN2Q0ZGU3ZmEzNTAxYmZhNzEwYWEx
NTU5MGE1ZTBkYWIuLjJjMWZlZGQxMmU0NzI4YTJhMjA5ODA3NDk1Y2Q5M2M2N2JkMDI0M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSdWxlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJTdHlsZVBy
b3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVD
YXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTE0OSw3ICsxNTAsNyBAQCBjbGFzcyBTdHlsZVJ1bGUgZmluYWwgOiBwdWJsaWMg
U3R5bGVSdWxlQmFzZSB7CiAgICAgQ29tcGlsZWRTZWxlY3RvciYgY29tcGlsZWRTZWxlY3RvckZv
ckxpc3RJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAgIGlmICghbV9jb21waWxl
ZFNlbGVjdG9ycykKLSAgICAgICAgICAgIG1fY29tcGlsZWRTZWxlY3RvcnMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbXBpbGVkU2VsZWN0b3JbXT4obV9zZWxlY3Rvckxpc3QubGlzdFNpemUoKSk7Cisg
ICAgICAgICAgICBtX2NvbXBpbGVkU2VsZWN0b3JzID0gbWFrZVVuaXF1ZUFycmF5PENvbXBpbGVk
U2VsZWN0b3I+KG1fc2VsZWN0b3JMaXN0Lmxpc3RTaXplKCkpOwogICAgICAgICByZXR1cm4gbV9j
b21waWxlZFNlbGVjdG9yc1tpbmRleF07CiAgICAgfQogICAgIHZvaWQgcmVsZWFzZUNvbXBpbGVk
U2VsZWN0b3JzKCkgY29uc3QKQEAgLTE3MCw3ICsxNzEsNyBAQCBjbGFzcyBTdHlsZVJ1bGUgZmlu
YWwgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0
b3JMaXN0OwogCiAjaWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCi0gICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8Q29tcGlsZWRTZWxlY3RvcltdPiBtX2NvbXBpbGVkU2VsZWN0b3JzOworICAg
IG11dGFibGUgVW5pcXVlQXJyYXk8Q29tcGlsZWRTZWxlY3Rvcj4gbV9jb21waWxlZFNlbGVjdG9y
czsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L0NvbXBp
bGVkU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgK
aW5kZXggYTgzM2RiYTAyZmYzM2QxZGY2MzA4ZTE4ODgwMmJjNzA4OGU3NjY5MS4uMDk5YWM5M2I3
NTRkMjE0ODE5NzcwMzA4YmViYmYzMzg5MzMyNTY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQv
Q29tcGlsZWRTZWxlY3Rvci5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIFNlbGVjdG9yQ29tcGls
YXRpb25TdGF0dXMgewogfTsKIAogc3RydWN0IENvbXBpbGVkU2VsZWN0b3IgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBTZWxlY3RvckNvbXBpbGF0aW9uU3RhdHVz
IHN0YXR1czsKICAgICBKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVJlZiBjb2RlUmVmOwogI2lmIGRl
ZmluZWQoQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcpICYmIENTU19TRUxFQ1RPUl9KSVRfUFJP
RklMSU5HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmluZGV4IGQ1
NGNkZGNlNWQ0NGMwOGE5NmQ2M2QwZDI4ZWY3MDA2NzcyOGFlMzQuLjNmZDY2N2ZmZTRiNWQzZjEy
NTdhNWQ2ZGY1MGVkODRhOGZmZTNhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5oCkBAIC0yNCw3ICsyNCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVB
cnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDggKzY3LDggQEAgY2xhc3Mg
SFRNTEZyYW1lU2V0RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CiAgICAgSW5z
ZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlw
ZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihS
ZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PExlbmd0aFtdPiBtX3Jvd0xlbmd0aHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBt
X2NvbExlbmd0aHM7CisgICAgVW5pcXVlQXJyYXk8TGVuZ3RoPiBtX3Jvd0xlbmd0aHM7CisgICAg
VW5pcXVlQXJyYXk8TGVuZ3RoPiBtX2NvbExlbmd0aHM7CiAKICAgICBpbnQgbV90b3RhbFJvd3M7
CiAgICAgaW50IG1fdG90YWxDb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAyY2RhYzkxMjJlZjll
YTc3Mjc5YmNkYzBkNjNhNGVhZGZlOTc4ZWRkLi4zYWFhNDdlODcwMjg4Y2ZmYWNlMjc2OTg0MjU0
MjNiYWQ3YzdkNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtOTksNiArOTksNyBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQzMkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRB
cml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE1NTMsNyArMTU1NCw3IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCAiY29weVRleFN1YkltYWdlMkQiLCAiVGV4dHVyZSBo
YXMgdW5rbm93biBpbnRlcm5hbCBmb3JtYXQiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOworICAg
ICAgICBVbmlxdWVBcnJheTx1bnNpZ25lZCBjaGFyPiB6ZXJvOwogICAgICAgICBpZiAod2lkdGgg
JiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzaXplOwogICAgICAgICAgICAgR0Mz
RGVudW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwg
dHlwZSwgd2lkdGgsIGhlaWdodCwgbV91bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRyKTsK
QEAgLTE1NjEsNyArMTU2Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y29w
eVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsCiAgICAgICAgICAg
ICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJjb3B5VGV4U3ViSW1hZ2UyRCIsICJiYWQg
ZGltZW5zaW9ucyIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4oc2l6ZSk7
CisgICAgICAgICAgICB6ZXJvID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHNpemUp
OwogICAgICAgICAgICAgaWYgKCF6ZXJvKSB7CiAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJjb3B5VGV4U3ViSW1hZ2Uy
RCIsICJvdXQgb2YgbWVtb3J5Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTc2MSw3
ICs1NzYyLDcgQEAgc3RkOjpvcHRpb25hbDxib29sPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpzaW11bGF0ZVZlcnRleEF0dHJpYjAoR0MzRHVpbnQgbnUKICAgICAgICAgICAgIHx8IGF0dHJp
YlZhbHVlLnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCiAgICAgICAg
ICAgICB8fCBhdHRyaWJWYWx1ZS52YWx1ZVszXSAhPSBtX3ZlcnRleEF0dHJpYjBCdWZmZXJWYWx1
ZVszXSkpIHsKIAotICAgICAgICBhdXRvIGJ1ZmZlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPEdD
M0RmbG9hdFtdPihidWZmZXJTaXplKTsKKyAgICAgICAgYXV0byBidWZmZXJEYXRhID0gbWFrZVVu
aXF1ZUFycmF5PEdDM0RmbG9hdD4oYnVmZmVyU2l6ZSk7CiAgICAgICAgIGZvciAoR0MzRHVpbnQg
aWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKICAgICAgICAgICAgIGJ1ZmZlckRh
dGFbaWkgKiA0XSA9IGF0dHJpYlZhbHVlLnZhbHVlWzBdOwogICAgICAgICAgICAgYnVmZmVyRGF0
YVtpaSAqIDQgKyAxXSA9IGF0dHJpYlZhbHVlLnZhbHVlWzFdOwpAQCAtNTkwNywxNSArNTkwOCwx
NCBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZW5zdXJlTm90TnVsbChjb25z
dCBTdHJpbmcmIHRleHQpIGNvbnN0CiB9CiAKIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxS
VUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5KQotICAg
IDogbV9idWZmZXJzKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PltdPihjYXBhY2l0eSkpCi0gICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQorICAgIDogbV9idWZm
ZXJzKGNhcGFjaXR5KQogewogfQogCiBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKLSAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbV9jYXBhY2l0eTsgKytpKSB7
CisgICAgc2l6ZV90IGk7CisgICAgZm9yIChpID0gMDsgaSA8IG1fYnVmZmVycy5zaXplKCk7ICsr
aSkgewogICAgICAgICBJbWFnZUJ1ZmZlciogYnVmID0gbV9idWZmZXJzW2ldLmdldCgpOwogICAg
ICAgICBpZiAoIWJ1ZikKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkzMCw3ICs1OTMwLDggQEAg
SW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2Fj
aGU6OmltYWdlQnVmZmVyKGNvbnN0IEkKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFVuYWNjZWxlcmF0ZWQpOwogICAgIGlm
ICghdGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaSA9IHN0ZDo6bWluKG1fY2Fw
YWNpdHkgLSAxLCBpKTsKKyAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOworICAgIGkg
PSBzdGQ6Om1pbihtX2J1ZmZlcnMuc2l6ZSgpIC0gMSwgaSk7CiAgICAgbV9idWZmZXJzW2ldID0g
V1RGTW92ZSh0ZW1wKTsKIAogICAgIEltYWdlQnVmZmVyKiBidWYgPSBtX2J1ZmZlcnNbaV0uZ2V0
KCk7CkBAIC01OTM4LDkgKzU5MzksOSBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHJl
dHVybiBidWY7CiB9CiAKLXZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6YnViYmxlVG9Gcm9udChpbnQgaWR4KQordm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KHNpemVfdCBpZHgp
CiB7Ci0gICAgZm9yIChpbnQgaSA9IGlkeDsgaSA+IDA7IC0taSkKKyAgICBmb3IgKHNpemVfdCBp
ID0gaWR4OyBpID4gMDsgLS1pKQogICAgICAgICBtX2J1ZmZlcnNbaV0uc3dhcChtX2J1ZmZlcnNb
aS0xXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaAppbmRleCA2YTM1NzRiODhmM2Y2YTBkN2Y0YjAxNGU3YWZi
NzgwYzVkNzI5YzQ5Li5kMmEzOTE5NTlkYmMxNGVlY2FmYjBhMGUwMGViN2U4ODk2NjJmN2JkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5oCkBAIC01MTcsOSArNTE3LDggQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSA6IHB1YmxpYyBHUFVCYXNlZENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHByaXZhdGUK
ICAgICAgICAgLy8gVGhlIHBvaW50ZXIgcmV0dXJuZWQgaXMgb3duZWQgYnkgdGhlIGltYWdlIGJ1
ZmZlciBtYXAuCiAgICAgICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXpl
JiBzaXplKTsKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGJ1YmJsZVRvRnJvbnQoaW50IGlk
eCk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
W10+IG1fYnVmZmVyczsKLSAgICAgICAgaW50IG1fY2FwYWNpdHk7CisgICAgICAgIHZvaWQgYnVi
YmxlVG9Gcm9udChzaXplX3QgaWR4KTsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4+IG1fYnVmZmVyczsKICAgICB9OwogICAgIExSVUltYWdlQnVmZmVyQ2FjaGUg
bV9nZW5lcmF0ZWRJbWFnZUNhY2hlIHsgMCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNw
cAppbmRleCBkNzllMDM5OWM0ODgxZTRmOWZlZjYzY2ZmYjRlYThlMDdmNWViMjgwLi40NjU4ZmQw
OGU2ZGZkOGI4MWNkNDRhYTM3MzFhZDZiMTFkMWUxZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNvdW50Q2hhcmFjdGVy
KFN0cmluZ0ltcGwmIHN0cmluZywgVUNoYXIgY2hhcmFjdGVyKQogICAgIHJldHVybiBjb3VudDsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJp
bmcmIHN0cmluZywgaW50JiBsZW4pCitVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0Nvb3Jkc0FycmF5
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIHsKICAgICB1bnNpZ25lZCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgU3RyaW5nQnVmZmVyPFVDaGFyPiBzcGFjaWZpZWQobGVu
Z3RoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0Nv
b3Jkc0FycmF5KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKICAgICBzdHIgPSBzdHIt
PnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwogCiAgICAgbGVuID0gY291bnRDaGFyYWN0ZXIoKnN0ciwg
JyAnKSArIDE7Ci0gICAgYXV0byByID0gc3RkOjptYWtlX3VuaXF1ZTxMZW5ndGhbXT4obGVuKTsK
KyAgICBhdXRvIHIgPSBtYWtlVW5pcXVlQXJyYXk8TGVuZ3RoPihsZW4pOwogCiAgICAgaW50IGkg
PSAwOwogICAgIHVuc2lnbmVkIHBvcyA9IDA7CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50
JiBsZW4pCiAgICAgcmV0dXJuIHI7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3
TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQorVW5pcXVlQXJyYXk8
TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiB7
CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IHN0ciA9IHN0cmluZy5pbXBsKCktPnNpbXBsaWZ5V2hp
dGVTcGFjZSgpOwogICAgIGlmICghc3RyLT5sZW5ndGgoKSkgewpAQCAtMTMyLDcgKzEzMiw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGludCYgbGVuKQogICAgIH0KIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKCpzdHIs
ICcsJykgKyAxOwotICAgIGF1dG8gciA9IHN0ZDo6bWFrZV91bmlxdWU8TGVuZ3RoW10+KGxlbik7
CisgICAgYXV0byByID0gbWFrZVVuaXF1ZUFycmF5PExlbmd0aD4obGVuKTsKIAogICAgIGludCBp
ID0gMDsKICAgICB1bnNpZ25lZCBwb3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAppbmRl
eCA1N2NlMGNlNzhiYjNlZTEzYzIzY2ZiNjE5NzEwYjA2N2IyNGMwYWYxLi42NGEwOGU4YzFiNGZj
OTZlNTNjYzcyYmViNmVjODRiMGM3NTdhNzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIFRleHRTdHJlYW07CkBA
IC0xMzgsOCArMTM5LDggQEAgc3RydWN0IExlbmd0aCB7CiAvLyBCbGVuZCB0d28gbGVuZ3RocyB0
byBwcm9kdWNlIGEgbmV3IGxlbmd0aCB0aGF0IGlzIGluIGJldHdlZW4gdGhlbS4gVXNlZCBmb3Ig
YW5pbWF0aW9uLgogTGVuZ3RoIGJsZW5kKGNvbnN0IExlbmd0aCYgZnJvbSwgY29uc3QgTGVuZ3Ro
JiB0bywgZG91YmxlIHByb2dyZXNzKTsKIAotc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdD
b29yZHNBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7Ci1zdGQ6OnVuaXF1ZV9wdHI8
TGVuZ3RoW10+IG5ld0xlbmd0aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKK1Vu
aXF1ZUFycmF5PExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW5n
dGgpOworVW5pcXVlQXJyYXk8TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBp
bnQmIGxlbmd0aCk7CiAKIGlubGluZSBMZW5ndGg6Okxlbmd0aChMZW5ndGhUeXBlIHR5cGUpCiAg
ICAgOiBtX2ludFZhbHVlKDApLCBtX2hhc1F1aXJrKGZhbHNlKSwgbV90eXBlKHR5cGUpLCBtX2lz
RmxvYXQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHlu
YW1pY3NDb21wcmVzc29yLmNwcAppbmRleCAzMDEyNWFlYjMyYWExMzFkNzBjYjM0YThmOWNkODVj
MTczMjZhZWYwLi5iMjU1MThkODgwYThkMmQ5OTRhNzY5NmI4ZmFkYTllNTU0OGMyOWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
ci5jcHAKQEAgLTI3NSw4ICsyNzUsOCBAQCB2b2lkIER5bmFtaWNzQ29tcHJlc3Nvcjo6c2V0TnVt
YmVyT2ZDaGFubmVscyh1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKQogICAgICAgICBtX3Bvc3RG
aWx0ZXJQYWNrcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxaZXJvUG9sZUZpbHRlclBhY2s0Pigp
KTsKICAgICB9CiAKLSAgICBtX3NvdXJjZUNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxjb25z
dCBmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7Ci0gICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxz
ID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9hdCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9z
b3VyY2VDaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxjb25zdCBmbG9hdCo+KG51bWJlck9mQ2hh
bm5lbHMpOworICAgIG1fZGVzdGluYXRpb25DaGFubmVscyA9IG1ha2VVbmlxdWVBcnJheTxmbG9h
dCo+KG51bWJlck9mQ2hhbm5lbHMpOwogCiAgICAgbV9jb21wcmVzc29yLnNldE51bWJlck9mQ2hh
bm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CiAgICAgbV9udW1iZXJPZkNoYW5uZWxzID0gbnVtYmVy
T2ZDaGFubmVsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1p
Y3NDb21wcmVzc29yLmgKaW5kZXggYTExZDg3ZGU1NzVjNTJlYTMxYTIyYjk4M2ExZTM0NmNiZDJh
ZWJkNS4uZjcxNmNlZjczYTM1ZWU2ZWU4OGJhOThiYjk4ZDI2MjUzN2JkNjk3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEeW5hbWljc0NvbXByZXNzb3JLZXJuZWwuaCIKICNp
bmNsdWRlICJaZXJvUG9sZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRlIDx3dGYvVW5p
cXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDEsOCArMTAyLDggQEAg
Y2xhc3MgRHluYW1pY3NDb21wcmVzc29yIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFpl
cm9Qb2xlRmlsdGVyUGFjazQ+PiBtX3ByZUZpbHRlclBhY2tzOwogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcG9zdEZpbHRlclBhY2tzOwogCi0gICAg
c3RkOjp1bmlxdWVfcHRyPGNvbnN0IGZsb2F0KltdPiBtX3NvdXJjZUNoYW5uZWxzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxmbG9hdCpbXT4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOworICAgIFVuaXF1
ZUFycmF5PGNvbnN0IGZsb2F0Kj4gbV9zb3VyY2VDaGFubmVsczsKKyAgICBVbmlxdWVBcnJheTxm
bG9hdCo+IG1fZGVzdGluYXRpb25DaGFubmVsczsKIAogICAgIHZvaWQgc2V0RW1waGFzaXNTdGFn
ZVBhcmFtZXRlcnModW5zaWduZWQgc3RhZ2VJbmRleCwgZmxvYXQgZ2FpbiwgZmxvYXQgbm9ybWFs
aXplZEZyZXF1ZW5jeSAvKiAwIC0+IDEgKi8pOwogICAgIHZvaWQgc2V0RW1waGFzaXNQYXJhbWV0
ZXJzKGZsb2F0IGdhaW4sIGZsb2F0IGFuY2hvckZyZXEsIGZsb2F0IGZpbHRlclN0YWdlUmF0aW8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKaW5kZXggNDA2MjBmYjg0
MTAxZjY2YjVmYzA5YWEzZWZiMTI1ODEzYmZjZDA3MS4uNzI3YzkyYTNhMDdkZWQ5MzczNzY0Y2Mx
YWRjY2JmZWFjMDRkNTAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vRkZURnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFt
ZS5oCkBAIC00NCw2ICs0NCw3IEBAIEdfRU5EX0RFQ0xTCiAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDcsNyArMTA4LDcgQEAgY2xhc3MgRkZURnJhbWUg
ewogI2lmIFVTRShXRUJBVURJT19HU1RSRUFNRVIpCiAgICAgR3N0RkZURjMyKiBtX2ZmdDsKICAg
ICBHc3RGRlRGMzIqIG1faW52ZXJzZUZmdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3N0RkZURjMy
Q29tcGxleFtdPiBtX2NvbXBsZXhEYXRhOworICAgIFVuaXF1ZUFycmF5PEdzdEZGVEYzMkNvbXBs
ZXg+IG1fY29tcGxleERhdGE7CiAgICAgQXVkaW9GbG9hdEFycmF5IG1fcmVhbERhdGE7CiAgICAg
QXVkaW9GbG9hdEFycmF5IG1faW1hZ0RhdGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0dTVFJF
QU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9GRlRGcmFtZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3BwCmluZGV4IDY1NjZjMTgxOGE1MjUxOTM0MzY4
ZTk1ZjJkMmI4MjdkMTU5ZTMxOTcuLjFiNjZlNDAwNjNiNmZkNDhkOGU4NDFiOTIzNGY3ODllYzBl
MzJhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBGRlRGcmFtZTo6RkZURnJhbWUodW5zaWduZWQgZmZ0U2l6ZSkKICAg
ICA6IG1fRkZUU2l6ZShmZnRTaXplKQogICAgICwgbV9sb2cyRkZUU2l6ZShzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obG9nMihmZnRTaXplKSkpCi0gICAgLCBtX2NvbXBsZXhEYXRhKHN0ZDo6bWFrZV91
bmlxdWU8R3N0RkZURjMyQ29tcGxleFtdPih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkp
KQorICAgICwgbV9jb21wbGV4RGF0YShtYWtlVW5pcXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4o
dW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKSkKICAgICAsIG1fcmVhbERhdGEodW5wYWNr
ZWRGRlREYXRhU2l6ZShtX0ZGVFNpemUpKQogICAgICwgbV9pbWFnRGF0YSh1bnBhY2tlZEZGVERh
dGFTaXplKG1fRkZUU2l6ZSkpCiB7CkBAIC02Niw3ICs2Niw3IEBAIEZGVEZyYW1lOjpGRlRGcmFt
ZSgpCiBGRlRGcmFtZTo6RkZURnJhbWUoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIDogbV9G
RlRTaXplKGZyYW1lLm1fRkZUU2l6ZSkKICAgICAsIG1fbG9nMkZGVFNpemUoZnJhbWUubV9sb2cy
RkZUU2l6ZSkKLSAgICAsIG1fY29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJD
b21wbGV4W10+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBs
ZXhEYXRhKG1ha2VVbmlxdWVBcnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFT
aXplKG1fRkZUU2l6ZSkpKQogICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKGZy
YW1lLm1fRkZUU2l6ZSkpCiAgICAgLCBtX2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUoZnJh
bWUubV9GRlRTaXplKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9ybWF0Q29udmVydGVyLmgKaW5kZXggZGQ5N2IzN2M3N2Q4MTJiNzgzNmQyYzJhYjQ4M2U2
OTliNTU0MGY1My4uNThmY2UwZjU0ZTMxYTIxMGU2ZTJhNDgwMWUyZTVmOGI5YzAyMTcxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVy
LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgRm9ybWF0
Q29udmVydGVyIHsKICAgICB7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heE51bWJlck9mQ29t
cG9uZW50cyA9IDQ7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE1heEJ5dGVzUGVyQ29tcG9uZW50
ICA9IDQ7Ci0gICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhID0gc3RkOjptYWtl
X3VuaXF1ZTx1aW50OF90W10+KG1fd2lkdGggKiBNYXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhC
eXRlc1BlckNvbXBvbmVudCk7CisgICAgICAgIG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRh
ID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVja2VkPHNpemVfdD4obV93aWR0aCkgKiBN
YXhOdW1iZXJPZkNvbXBvbmVudHMgKiBNYXhCeXRlc1BlckNvbXBvbmVudCkudW5zYWZlR2V0KCkp
OwogCiAgICAgICAgIEFTU0VSVChtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YS5nZXQoKSk7
CiAgICAgfQpAQCAtNjgsNyArNjksNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgewogICAgIHZv
aWQqIGNvbnN0IG1fZHN0U3RhcnQ7CiAgICAgY29uc3QgaW50IG1fc3JjU3RyaWRlLCBtX2RzdFN0
cmlkZTsKICAgICBib29sIG1fc3VjY2VzczsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtd
PiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKKyAgICBVbmlxdWVBcnJheTx1aW50OF90
PiBtX3VucGFja2VkSW50ZXJtZWRpYXRlU3JjRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmNwcAppbmRleCA0ZTc1N2EwZTFlZjc0NDdjZTQ3OTM0ODZhNzQxZGY4ODJk
NjI5ZDQwLi4zMjJiZWQwYjhjNTc5ZmM5NTFmYjY1NjEyNzc4NGM4YjAzNDA4NDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJ
bWFnZURhdGEuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ2LDcgKzE0Nyw3IEBA
IEdyYXBoaWNzQ29udGV4dDNEOjpEYXRhRm9ybWF0IGdldERhdGFGb3JtYXQoR0MzRGVudW0gZGVz
dGluYXRpb25Gb3JtYXQsIEdDM0RlbnVtCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFn
ZTJEUmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGlu
dCBib3JkZXIsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCB1bnBhY2tB
bGlnbm1lbnQpCiB7CiAgICAgQVNTRVJUKHVucGFja0FsaWdubWVudCA9PSAxIHx8IHVucGFja0Fs
aWdubWVudCA9PSAyIHx8IHVucGFja0FsaWdubWVudCA9PSA0IHx8IHVucGFja0FsaWdubWVudCA9
PSA4KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8dW5zaWduZWQgY2hhcltdPiB6ZXJvOworICAgIFVu
aXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHplcm87CiAgICAgaWYgKHdpZHRoID4gMCAmJiBoZWln
aHQgPiAwKSB7CiAgICAgICAgIHVuc2lnbmVkIGludCBzaXplOwogICAgICAgICBHQzNEZW51bSBl
cnJvciA9IGNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lkdGgsIGhlaWdo
dCwgdW5wYWNrQWxpZ25tZW50LCAmc2l6ZSwgbnVsbHB0cik7CkBAIC0xNTQsNyArMTU1LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHQzNEZW51bSB0
YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEcKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVy
cm9yKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICB6ZXJv
ID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25lZCBjaGFyW10+KHNpemUpOworICAgICAgICB6ZXJv
ID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+KHNpemUpOwogICAgICAgICBpZiAoIXpl
cm8pIHsKICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlZBTElEX1ZBTFVFKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDE4
MWI0NjcxMmU2YTg0MTcwMGI2MmRjMWQxYTk2ZTBmNjViZjNjZmEuLjJlNzQ4NzlkOGQyYzYyYjYw
YjQxMmNkOGEyMzJjNDIzOTIzOGE2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENBKQpAQCAtMTI2MSw3
ICsxMjYyLDcgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0QgOiBwdWJsaWMgUmVmQ291bnRlZDxH
cmFwaGljc0NvbnRleHQzRD4gewogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9jZ0lt
YWdlOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbV9kZWNvZGVkSW1hZ2U7CiAgICAg
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IG1fcGl4ZWxEYXRhOwotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDhfdFtdPiBtX2Zvcm1hbGl6ZWRSR0JBOERhdGE7CisgICAgICAgIFVuaXF1ZUFy
cmF5PHVpbnQ4X3Q+IG1fZm9ybWFsaXplZFJHQkE4RGF0YTsKICNlbmRpZgogICAgICAgICBJbWFn
ZSogbV9pbWFnZTsKICAgICAgICAgSW1hZ2VIdG1sRG9tU291cmNlIG1faW1hZ2VIdG1sRG9tU291
cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjIxNjBlOTBhNzBlODI5ZTcyODlm
NjkyZmY2NGQ1OWM2ODUzMGI4Zi4uNWZhZmYzOTk4MWQ5Njg1MDlmYmY2ZTk5MzAzZTg2ODFlYTk3
MjQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5j
bHVkZSA8UXVhcnR6Q29yZS9DQUJhc2UuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAjaW5jbHVkZSA8d3RmL3dpbi9HRElPYmplY3QuaD4KIAogI2lmZGVmIERFQlVHX0FMTApA
QCAtMjYyLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIGdldERpcnR5UmVjdHMoSFdORCB3aW5kb3cs
IFZlY3RvcjxDR1JlY3Q+JiBvdXRSZWN0cykKICAgICB9CiAKICAgICBEV09SRCBkYXRhU2l6ZSA9
IDo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIDAsIDApOwotICAgIGF1dG8gcmVnaW9uRGF0
YUJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8dW5zaWduZWQgY2hhcltdPihkYXRhU2l6ZSk7Cisg
ICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+
KGRhdGFTaXplKTsKICAgICBSR05EQVRBKiByZWdpb25EYXRhID0gcmVpbnRlcnByZXRfY2FzdDxS
R05EQVRBKj4ocmVnaW9uRGF0YUJ1ZmZlci5nZXQoKSk7CiAgICAgaWYgKCE6OkdldFJlZ2lvbkRh
dGEocmVnaW9uLmdldCgpLCBkYXRhU2l6ZSwgcmVnaW9uRGF0YSkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvVXRpbGl0aWVzLmNwcAppbmRleCAyNGQ0ZWI1MDI4MTUyMmFmMTFiMjFjMTc3NzZhODUwYTMw
MzVmMDA5Li4wNGQ2ODJmOTQ3ZjVlNDFiNjgzNjQzMjU5ZjM1MDRkZjFkOWZlYTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9V
dGlsaXRpZXMuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQpAQCAtMzQwLDcgKzM0MSw3IEBAIHZv
aWQgZmxpcEltYWdlU3VyZmFjZVZlcnRpY2FsbHkoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQog
ICAgIGludCBoYWxmSGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKSAvIDI7CiAKICAgICB1aW50OF90KiBz
b3VyY2UgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZGF0
YShzdXJmYWNlKSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXT4gdG1wID0gc3RkOjpt
YWtlX3VuaXF1ZTx1aW50OF90W10+KHN0cmlkZSk7CisgICAgYXV0byB0bXAgPSBtYWtlVW5pcXVl
QXJyYXk8dWludDhfdD4oc3RyaWRlKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGFsZkhl
aWdodDsgKytpKSB7CiAgICAgICAgIHVpbnQ4X3QqIHRvcCA9IHNvdXJjZSArIChpICogc3RyaWRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggOGViNmY0ZTNiNmFhYTdkY2MxYjE3OTRiY2Mx
OWZjZDc0YjA2YmQ0Zi4uNmJjYmFmMThkYmVhMWFlYzM0YzhiOGZhYTVjMjczNTBjYzE1MGM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTQ3OCw3ICs0NzgsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3Rvcjo6ZXh0cmFjdEltYWdlKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwgYm9vbAogICAgIC8vIGJ1dCBpdCB3b3VsZCBwcmVtdWx0aXBseSB0aGUgYWxwaGEgY2hh
bm5lbCBhcyBhIHNpZGUgZWZmZWN0LgogICAgIC8vIFByZWZlciB0byBtYW5udWFsbHkgQ29udmVy
dCAxNmJpdCBwZXItY29tcG9uZW50IGZvcm1hdHMgdG8gUkdCQTggZm9ybWF0cyBpbnN0ZWFkLgog
ICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDE2KSB7Ci0gICAgICAgIG1fZm9ybWFsaXplZFJH
QkE4RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhfdFtdPihtX2ltYWdlV2lkdGggKiBtX2lt
YWdlSGVpZ2h0ICogNCk7CisgICAgICAgIG1fZm9ybWFsaXplZFJHQkE4RGF0YSA9IG1ha2VVbmlx
dWVBcnJheTx1aW50OF90PigoQ2hlY2tlZDxzaXplX3Q+KG1faW1hZ2VXaWR0aCkgKiBtX2ltYWdl
SGVpZ2h0ICogNCkudW5zYWZlR2V0KCkpOwogICAgICAgICBjb25zdCB1aW50MTZfdCogc291cmNl
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KG1faW1hZ2VQaXhlbERhdGEpOwog
ICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IG1fZm9ybWFsaXplZFJHQkE4RGF0YS5nZXQo
KTsKICAgICAgICAgY29uc3QgcHRyZGlmZl90IHNyY1N0cmlkZUluRWxlbWVudHMgPSBieXRlc1Bl
clJvdyAvIHNpemVvZih1aW50MTZfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWQyMmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVm
ZDU0MjFmYmI1MjY0Ni4uODY5ODEzNjQ1MTNiOGU2ZjBkN2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNw
cApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2
b2lkIFRleHR1cmU6OnVwZGF0ZVN1YlJlY3Qodm9pZCogcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1
cGRhdGVSZWN0KQogICAgIGludCB0ZW1wQnVmZlNpemUgPSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNp
emUgaXMgdGhlIHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJl
Y3RTYW5pdGl6ZWQKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndp
ZHRoKCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1cGRhdGVSZWN0U2FuaXRpemVkLndpZHRo
KCkpICoKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgp
LCBtX3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRlUmVjdFNhbml0aXplZC5oZWlnaHQoKSk7
Ci0gICAgYXV0byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1
ZmZTaXplKTsKKyAgICBhdXRvIHRlbXBCdWZmID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0
ZW1wQnVmZlNpemUpOwogCiAgICAgZm9yIChpbnQgdGlsZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51
bVRpbGVzWCgpICogbV90aWxlcy5udW1UaWxlc1koKTsgdGlsZSsrKSB7CiAgICAgICAgIGludCB4
SW5kZXggPSB0aWxlICUgbV90aWxlcy5udW1UaWxlc1goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2Mz
ODZhOWRiYjhlNmRiNzIzZTEuLjU0NzI3NGZmYTY4YTUyZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBi
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApA
QCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTcGVjaWZpYy5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFn
ZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgdG90YWxCeXRl
cyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgpOwogCi0gICAgYXV0byBwaXhlbHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4odG90YWxCeXRlcyk7CisgICAgYXV0byBw
aXhlbHMgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4odG90YWxCeXRlcyk7CiAgICAg
aWYgKCFwaXhlbHMpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjY4LDExICs2NjksMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRl
cikKIAogICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICAg
ICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxHTGNoYXJbXT4obGVuZ3RoKTsKLSAgICAg
ICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgp
KTsKKyAgICAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsZW5ndGgpOworICAgICAgICA6OmdsR2V0
U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAg
ICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgICAg
ICBlbnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZv
LmdldCgpKSk7CisgICAgICAgIGVudHJ5LmxvZyA9IGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVy
cywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiAgICAgfQogCiAgICAgaWYgKGNvbXBp
bGVTdGF0dXMgIT0gR0xfVFJVRSkgewpAQCAtODUxLDE4ICs4NTIsMTggQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0R1aW50IGkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhBdHRy
aWJ1dGVTaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9B
VFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9
IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJ
VkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBW
ZWN0b3I8R0xjaGFyPiBuYW1lKG1heEF0dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklC
VVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBHTHNpemVpIG5h
bWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsK
LSAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXpl
LCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwg
JnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5nIG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFs
U3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBTdHJpbmco
bmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmln
aW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgU3Ry
aW5nKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKSk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAg
IFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmdldCgpLCBuYW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcg
dW5pZm9ybU5hbWUobmFtZS5kYXRhKCksIG5hbWVMZW5ndGgpOwogICAgIExPRyhXZWJHTCwgIlBy
b2dyYW0gJWQgaXMgbWFwcGluZyBhY3RpdmUgYXR0cmlidXRlICVkIGZyb20gJyVzJyB0byAnJXMn
IiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFt
ZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCkBAIC04OTgsMTggKzg5OSwxOCBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3JtSW1wbChQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0sIEdDM0R1aW50CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwogICAgIDo6Z2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVu
aWZvcm1TaXplKTsKIAotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+
KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRl
cyBudWxsIHRlcm1pbmF0aW9uLgorICAgIFZlY3RvcjxHTGNoYXI+IG5hbWUobWF4VW5pZm9ybVNp
emUpOyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWlu
YXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsK
ICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwg
aW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdl
dCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9y
bVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUuZGF0YSgpKTsKICAgICBpZiAo
IW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBTdHJpbmcgb3Jp
Z2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHByb2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQ
RV9VTklGT1JNLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0cmluZyBv
cmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9U
WVBFX1VOSUZPUk0sIFN0cmluZyhuYW1lLmRhdGEoKSwgbmFtZUxlbmd0aCkpOwogICAgIAogI2lm
bmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0
aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAg
ICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBpbmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJv
bSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwgdW5pZm9ybU5hbWUudXRmOCgpLmRhdGEo
KSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0
ICsxNzAwLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2co
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7IAogCiAg
ICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdM
Y2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5n
dGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7
CisgICAgOjpnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8u
ZGF0YSgpKTsKIAogICAgIEdDM0RzaXplaSBjb3VudDsKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcnNbMl07CiAgICAgZ2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIDIsICZjb3VudCwgc2hh
ZGVycyk7CiAKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwg
U3RyaW5nKGluZm8uZ2V0KCkpKTsKKyAgICByZXR1cm4gZ2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFk
ZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTc3MCwxMSArMTc3MSwxMSBAQCBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsgCiAKICAgICBHTHNpemVpIHNpemUg
PSAwOwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7
Ci0gICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmdl
dCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFNoYWRl
ckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvLmRhdGEoKSk7CiAKICAgICBQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRlciwgMCB9OwotICAgIHJldHVybiBnZXRV
bm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgcmV0
dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBz
aXplKSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyU291cmNlKFBs
YXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJv
Z3JhbS5jcHAKaW5kZXggYWJlZGY1MzU1M2RkMzU2ZDEwZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4u
MmU2YzUyYzYzNDg5NjY0OWFmNWM2YTQ0NDdiOThmMTBhM2QyNDI5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0
aWMgQ1N0cmluZyBnZXRTaGFkZXJMb2coR0x1aW50IHNoYWRlcikKICAgICBpZiAoIWxvZ0xlbmd0
aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlx
dWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5n
dGgpOwogICAgIEdMc2l6ZWkgaW5mb0xlbmd0aCA9IDA7Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9n
KHNoYWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRT
aGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5kYXRhKCkp
OwogCiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IHN0ZDo6bWF4KGluZm9MZW5ndGgsIDApOwot
ICAgIHJldHVybiB7IGluZm8uZ2V0KCksIHN0cmluZ0xlbmd0aCB9OworICAgIHJldHVybiB7IGlu
Zm8uZGF0YSgpLCBzdHJpbmdMZW5ndGggfTsKIH0KIAogc3RhdGljIENTdHJpbmcgZ2V0UHJvZ3Jh
bUxvZyhHTHVpbnQgcHJvZ3JhbSkKQEAgLTQ2NSwxMiArNDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5n
IGdldFByb2dyYW1Mb2coR0x1aW50IHByb2dyYW0pCiAgICAgaWYgKCFsb2dMZW5ndGgpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hh
cltdPihsb2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNoYXI+IGluZm8obG9nTGVuZ3RoKTsKICAg
ICBHTHNpemVpIGluZm9MZW5ndGggPSAwOwotICAgIGdsR2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3Jh
bSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5nZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZpbmZvTGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAK
ICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gc3RkOjptYXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAg
cmV0dXJuIHsgaW5mby5nZXQoKSwgc3RyaW5nTGVuZ3RoIH07CisgICAgcmV0dXJuIHsgaW5mby5k
YXRhKCksIHN0cmluZ0xlbmd0aCB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VCdWZmZXJEYXRhRGly
ZWN0MkQuY3BwCmluZGV4IDNlZGFkMTgyMWVjNDZkY2I0MGZlNTA2MmNhMjg5NGZiNDU4ZmQ3ZmUu
LmYwZTI1ODA5MjA1Mzg1NGNkNTE1OTZjN2UwNzE3NTllZjdjYmY1YTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3Qy
RC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVm
ZmVyRGF0YURpcmVjdDJELmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTM0LDcgKzEzNSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRh
OjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlw
bGljCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cgPSA0ICogc291cmNlU2l6ZS53aWR0aCgp
OwogICAgIGNvbnN0IHVpbnQ4X3QqIHNyY1Jvd3MgPSBzb3VyY2UuZGF0YSgpICsgKG9yaWdpbnkg
KiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0KS51bnNhZmVHZXQoKTsKIAotICAgIHVpbnQ4
X3QqIHJvdyA9IG5ldyB1aW50OF90W3NyY0J5dGVzUGVyUm93XTsKKyAgICBhdXRvIHJvdyA9IG1h
a2VVbmlxdWVBcnJheTx1aW50OF90PihzcmNCeXRlc1BlclJvdyk7CiAKICAgICBmb3IgKGludCB5
ID0gMDsgeSA8IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5KSB7CiAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgd2lkdGgudW5zYWZlR2V0KCk7IHgrKykgewpAQCAtMTQ2LDE3ICsxNDcsMTUgQEAg
dm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgQWxwaGFQcmVtdWx0aXBsaWMKICAgICAgICAgICAgICAgICByb3dbYmFzZXggKyAyXSA9
IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1NCkgLyAyNTU7CiAgICAgICAgICAgICAg
ICAgcm93W2Jhc2V4ICsgM10gPSBhbHBoYTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihyb3cgKyBiYXNleClbMF0gPSByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cyArIGJhc2V4KVswXTsKKyAgICAgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4ocm93LmdldCgpICsgYmFzZXgpWzBdID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHNyY1Jvd3MgKyBiYXNleClbMF07CiAgICAgICAg
IH0KIAogICAgICAgICBEMkQxX1JFQ1RfVSBkc3RSZWN0ID0gRDJEMTo6UmVjdFUoZGVzdFBvaW50
LngoKSwgZGVzdFBvaW50LnkoKSArIHksIGRlc3RQb2ludC54KCkgKyBzaXplLndpZHRoKCksIGRl
c3RQb2ludC55KCkgKyB5ICsgMSk7Ci0gICAgICAgIGhyID0gYml0bWFwLT5Db3B5RnJvbU1lbW9y
eSgmZHN0UmVjdCwgcm93LCBzcmNCeXRlc1BlclJvdyk7CisgICAgICAgIGhyID0gYml0bWFwLT5D
b3B5RnJvbU1lbW9yeSgmZHN0UmVjdCwgcm93LmdldCgpLCBzcmNCeXRlc1BlclJvdyk7CiAgICAg
ICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVz
UGVyUm93OwogICAgIH0KLQotICAgIGRlbGV0ZVtdIHJvdzsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBkNWM5MTI0ODc2MDU3NTI3
MGUwNzJmNTYyZWRjZWQ5MmMxMmI5NWZhLi5hOWYzNzM2NzdlM2Q1MTE2NmU5YzI2NjI4YmY2OWZl
NGE0MzA1MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDQsNiArNDQsNyBA
QAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8cG5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiAjaWYgZGVmaW5l
ZChQTkdfTElCUE5HX1ZFUl9NQUpPUikgJiYgZGVmaW5lZChQTkdfTElCUE5HX1ZFUl9NSU5PUikg
JiYgKFBOR19MSUJQTkdfVkVSX01BSk9SID4gMSB8fCAoUE5HX0xJQlBOR19WRVJfTUFKT1IgPT0g
MSAmJiBQTkdfTElCUE5HX1ZFUl9NSU5PUiA+PSA0KSkKICNkZWZpbmUgSk1QQlVGKHBuZ19wdHIp
IHBuZ19qbXBidWYocG5nX3B0cikKQEAgLTEyMCw3ICsxMjEsNiBAQCBjbGFzcyBQTkdJbWFnZVJl
YWRlciB7CiAgICAgICAgICwgbV9jdXJyZW50QnVmZmVyU2l6ZSgwKQogICAgICAgICAsIG1fZGVj
b2RpbmdTaXplT25seShmYWxzZSkKICAgICAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQotICAgICAg
ICAsIG1faW50ZXJsYWNlQnVmZmVyKDApCiAgICAgewogICAgICAgICBtX3BuZyA9IHBuZ19jcmVh
dGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RSSU5HLCAwLCBkZWNvZGluZ0ZhaWxlZCwg
ZGVjb2RpbmdXYXJuaW5nKTsKICAgICAgICAgbV9pbmZvID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVj
dChtX3BuZyk7CkBAIC0xNDMsOCArMTQzLDcgQEAgY2xhc3MgUE5HSW1hZ2VSZWFkZXIgewogICAg
ICAgICBpZiAobV9wbmcgJiYgbV9pbmZvKQogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHplcm8g
dGhlIHBvaW50ZXJzLgogICAgICAgICAgICAgcG5nX2Rlc3Ryb3lfcmVhZF9zdHJ1Y3QoJm1fcG5n
LCAmbV9pbmZvLCAwKTsKLSAgICAgICAgZGVsZXRlW10gbV9pbnRlcmxhY2VCdWZmZXI7Ci0gICAg
ICAgIG1faW50ZXJsYWNlQnVmZmVyID0gMDsKKyAgICAgICAgbV9pbnRlcmxhY2VCdWZmZXIucmVz
ZXQoKTsKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKQEAgLTE4OCw4ICsxODcs
OCBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGhh
c0FscGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsgfQogICAgIGJvb2wgaGFzQWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CiAKLSAgICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmxhY2VCdWZmZXI7IH0KLSAgICB2b2lkIGNyZWF0
ZUludGVybGFjZUJ1ZmZlcihpbnQgc2l6ZSkgeyBtX2ludGVybGFjZUJ1ZmZlciA9IG5ldyBwbmdf
Ynl0ZVtzaXplXTsgfQorICAgIHBuZ19ieXRlcCBpbnRlcmxhY2VCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2ludGVybGFjZUJ1ZmZlci5nZXQoKTsgfQorICAgIHZvaWQgY3JlYXRlSW50ZXJsYWNl
QnVmZmVyKGludCBzaXplKSB7IG1faW50ZXJsYWNlQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PHBu
Z19ieXRlPihzaXplKTsgfQogCiBwcml2YXRlOgogICAgIHBuZ19zdHJ1Y3RwIG1fcG5nOwpAQCAt
MTk4LDcgKzE5Nyw3IEBAIGNsYXNzIFBOR0ltYWdlUmVhZGVyIHsKICAgICB1bnNpZ25lZCBtX2N1
cnJlbnRCdWZmZXJTaXplOwogICAgIGJvb2wgbV9kZWNvZGluZ1NpemVPbmx5OwogICAgIGJvb2wg
bV9oYXNBbHBoYTsKLSAgICBwbmdfYnl0ZXAgbV9pbnRlcmxhY2VCdWZmZXI7CisgICAgVW5pcXVl
QXJyYXk8cG5nX2J5dGU+IG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAogUE5HSW1hZ2VEZWNvZGVy
OjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKaW5kZXggZjVjMGVhZmQxODg1MTcxY2E4ZjU0ZjJlNTk4OGJjYWE1NTM5
ZTUxMS4uOTI2NzdiOTg5YjZmMDc0ZDU2MDlmOWQ1ZTBjZTQ2NTEyOTkwNDU1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgiCisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZUFycmF5Lmg+CiAKICNpZiBVU0UoV0VCUCkKIApAQCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQg
V0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlRnJhbWUoc2l6ZV90IGZyYW1lSW5kZXgsIFdlYlBEZW11
eGVyKiBkZW11eGVyKQogICAgIGRlY29kZXJCdWZmZXIudS5SR0JBLnN0cmlkZSA9IHdlYnBGcmFt
ZS53aWR0aCAqIHNpemVvZih1aW50MzJfdCk7CiAgICAgZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6
ZSA9IGRlY29kZXJCdWZmZXIudS5SR0JBLnN0cmlkZSAqIHdlYnBGcmFtZS5oZWlnaHQ7CiAgICAg
ZGVjb2RlckJ1ZmZlci5pc19leHRlcm5hbF9tZW1vcnkgPSAxOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjx1bnNpZ25lZCBjaGFyW10+IHAobmV3IHVpbnQ4X3RbZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6
ZV0oKSk7CisgICAgYXV0byBwID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KGRlY29kZXJCdWZm
ZXIudS5SR0JBLnNpemUpOwogICAgIGRlY29kZXJCdWZmZXIudS5SR0JBLnJnYmEgPSBwLmdldCgp
OwogICAgIGlmICghZGVjb2RlckJ1ZmZlci51LlJHQkEucmdiYSkgewogICAgICAgICBzZXRGYWls
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmluZGV4IDM0MmJlNTY5YjQ3MzJmMmM5NmQ1
ZDBjYzVhZWNmMTA3Y2NhMzJiYjIuLjVjNGNhMjkxNWZjMTg0ZGZlYWU1MzJlZWNhZDY5ZDU0MWNi
ZjMwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmVhbUJ1ZmZlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVh
bUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKICAgICB2b2lkIGRpZE9w
ZW5Tb2NrZXQoKTsKIAogICAgIHN0cnVjdCBTb2NrZXREYXRhIHsKLSAgICAgICAgU29ja2V0RGF0
YShzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiYmIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKKyAgICAg
ICAgU29ja2V0RGF0YShVbmlxdWVBcnJheTxjaGFyPiYmIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkK
ICAgICAgICAgewogICAgICAgICAgICAgZGF0YSA9IFdURk1vdmUoc291cmNlKTsKICAgICAgICAg
ICAgIHNpemUgPSBsZW5ndGg7CkBAIC04OSw3ICs5MCw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhh
bmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKICAgICAgICAgICAgIG90aGVy
LnNpemUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4g
ZGF0YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8Y2hhcj4gZGF0YTsKICAgICAgICAgc2l6ZV90IHNp
emUgeyAwIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAK
aW5kZXggNmZjYmY4Mzc4Y2EzNzVjZjkyMWFkZjlhYTY0YWNlNTVhZDJjNmRjMS4uNWE0NWRkOGRi
NTJkYThiZjFlZjViYWVmNDRiMTE1ZGU3NjU3MjAwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbEN1cmwuY3BwCkBAIC00NCw5ICs0NCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+IGNyZWF0ZUNvcHkoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKK3N0YXRpYyBVbmlxdWVBcnJheTxjaGFyPiBjcmVhdGVDb3B5KGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJb
XT4gY29weShuZXcgY2hhcltsZW5ndGhdKTsKKyAgICBhdXRvIGNvcHkgPSBtYWtlVW5pcXVlQXJy
YXk8Y2hhcj4obGVuZ3RoKTsKICAgICBtZW1jcHkoY29weS5nZXQoKSwgZGF0YSwgbGVuZ3RoKTsK
IAogICAgIHJldHVybiBjb3B5OwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFNvY2tldFN0cmVhbUhh
bmRsZUltcGw6OnJlYWREYXRhKENVUkwqIGN1cmxIYW5kbGUpCiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAKICAgICBjb25zdCBzaXplX3QgYnVmZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPGNoYXJbXT4gZGF0YShuZXcgY2hhcltidWZmZXJTaXplXSk7CisgICAgYXV0
byBkYXRhID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBi
eXRlc1JlYWQgPSAwOwogCiAgICAgQ1VSTGNvZGUgcmV0ID0gY3VybF9lYXN5X3JlY3YoY3VybEhh
bmRsZSwgZGF0YS5nZXQoKSwgYnVmZmVyU2l6ZSwgJmJ5dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZUltcGwuaAppbmRleCBlMGE4ZjlkNDJhMzU5YjM5NDIzNGI5Njk1MTMyNzQ1YmYwMDNiOGRk
Li44YTMyZWIxMzZmMTMyNGU5MjAyOWFjYmVmMGFiNjhmMjY0ZmU4YjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsLmgKQEAgLTM4LDYgKzM4LDcgQEAKIAogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgZmlu
YWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsKICAgICBHUmVmUHRyPEdQb2xsYWJsZU91
dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJlYW07CiAgICAgR1JlZlB0cjxHU291cmNlPiBtX3dyaXRl
UmVhZHlTb3VyY2U7CiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2FuY2VsbGFibGU7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gbV9yZWFkQnVmZmVyOworICAgIFVuaXF1ZUFycmF5
PGNoYXI+IG1fcmVhZEJ1ZmZlcjsKIAogICAgIFN0cmVhbUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAy
ND4gbV9idWZmZXI7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heEJ1ZmZlclNpemUgPSAx
MDAgKiAxMDI0ICogMTAyNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmlu
ZGV4IDQ0YzEzZGI5MWMxNzZlMjJiNjQ2MDdlM2ZhZmNhMjUxZDg5NzVlNGQuLjE3ODgwNjYzMjlh
MzQ2Yjc2YjYxNzlkMmIyMjRiZDMwNjk1NzQ1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsU291cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxTb3VwLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxl
SW1wbDo6Y29ubmVjdGVkKEdSZWZQdHI8R0lPU3RyZWFtPiYmIHN0cmVhbSkKICAgICBtX3N0cmVh
bSA9IFdURk1vdmUoc3RyZWFtKTsKICAgICBtX291dHB1dFN0cmVhbSA9IEdfUE9MTEFCTEVfT1VU
UFVUX1NUUkVBTShnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShtX3N0cmVhbS5nZXQoKSkp
OwogICAgIG1faW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKG1fc3Ry
ZWFtLmdldCgpKTsKLSAgICBtX3JlYWRCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4o
UkVBRF9CVUZGRVJfU0laRSk7CisgICAgbV9yZWFkQnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNo
YXI+KFJFQURfQlVGRkVSX1NJWkUpOwogCiAgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyht
X2lucHV0U3RyZWFtLmdldCgpLCBtX3JlYWRCdWZmZXIuZ2V0KCksIFJFQURfQlVGRkVSX1NJWkUs
IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6QXN5bmNJT05ldHdvcmssIG1fY2FuY2VsbGFibGUuZ2V0
KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAKaW5kZXggYTll
ZTRlZDUyZWU5NGQxMzhlZmQ5ZjNiNjE1YjdkYjJlYTUxMzgzYS4uMzVkNzY5OGQ5ZGRiZmU1ZDY4
MjJkMGFkMjA1MTc2NTgyNmFiZDUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygp
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAg
YXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFi
bGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZ2V0KCksIGxlbmd0aCkpCisg
ICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShsb2dnaW5nRW52aXJvbm1lbnRWYXJpYWJs
ZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5nZXQoKSk7CisgICAgcmV0dXJuIFN0cmluZyhi
dWZmZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lzdGVtUHJveHlXaW4uY3BwCmluZGV4IDk1
MzYyZmExNmYzNjA1YjY3ZDBiYjMxMjA3MzM4YTBmNTBlZjQ4NTMuLmQxNzMyZGRiNGI1MTIxYjgz
YjA5OWRhOWY5ZTY4NDk5YmFjNWYwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAKQEAgLTMwLDEwICszMCw4IEBACiAKIGJv
b2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJveHkoY2hhciogYnVmZmVyLCBp
bnQgYnVmZmVyTGVuLCBpbnQqIHBvcnQpCiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+
IHRSZWdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRDSEFSW10+KGJ1ZmZlckxlbik7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRIb3N0ID0gc3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltd
PihidWZmZXJMZW4pOwotICAgIGlmICghdFJlZ0J1ZmZlciB8fCAhdEhvc3QpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBWZWN0b3I8VENIQVI+IHRSZWdCdWZmZXIoYnVmZmVyTGVuKTsKKyAg
ICBWZWN0b3I8VENIQVI+IHRIb3N0KGJ1ZmZlckxlbik7CiAgICAgRFdPUkQgdHlwZTsKICAgICBE
V09SRCBzaXplOwogICAgIEhLRVkga2V5OwpAQCAtNTEsMTYgKzQ5LDE2IEBAIGJvb2wgV2luZG93
c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVy
TGVuLCBpbnQqIHBvCiAgICAgICAgIEwiUHJveHlTZXJ2ZXIiLAogICAgICAgICBudWxscHRyLAog
ICAgICAgICAmdHlwZSwKLSAgICAgICAgKExQQllURSl0UmVnQnVmZmVyLmdldCgpLAorICAgICAg
ICAoTFBCWVRFKXRSZWdCdWZmZXIuZGF0YSgpLAogICAgICAgICAmc2l6ZSk7CiAKICAgICBpZiAo
cmV0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICgh
cGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmdldCgpLCB0SG9zdC5nZXQoKSwgYnVmZmVyTGVu
LCBwb3J0KSkKKyAgICBpZiAoIXBhcnNlUHJveHlTdHJpbmcodFJlZ0J1ZmZlci5kYXRhKCksIHRI
b3N0LmRhdGEoKSwgYnVmZmVyTGVuLCBwb3J0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgd2NzdG9tYnMoYnVmZmVyLCB0SG9zdC5nZXQoKSwgYnVmZmVyTGVuKTsKKyAgICB3Y3N0b21i
cyhidWZmZXIsIHRIb3N0LmRhdGEoKSwgYnVmZmVyTGVuKTsKICAgICBidWZmZXJbYnVmZmVyTGVu
LTFdID0gJ1wwJzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggMjAzYzU2YWRiNjI2OTll
MzA2ZDkzODRjYzg2MzdkNDYxYzg3NDY0NS4uM2M0NjM5NGUyZTNkMzQ3NTJiYmM2NmQxYTU1MjUy
YWJiYzM3MDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKQEAgLTE0MywxMSArMTQzLDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6
cHJvY2Vzc01lc3NhZ2UoKQogCiAgICAgc2l6ZV90IGF0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNv
dW50ID0gMDsKICAgICBzaXplX3QgYXR0YWNobWVudENvdW50ID0gbWVzc2FnZUluZm8uYXR0YWNo
bWVudENvdW50KCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF0dGFjaG1lbnRJbmZvW10+IGF0dGFj
aG1lbnRJbmZvOworICAgIFZlY3RvcjxBdHRhY2htZW50SW5mbz4gYXR0YWNobWVudEluZm8oYXR0
YWNobWVudENvdW50KTsKIAogICAgIGlmIChhdHRhY2htZW50Q291bnQpIHsKLSAgICAgICAgYXR0
YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1l
bnRDb3VudCk7Ci0gICAgICAgIG1lbWNweShhdHRhY2htZW50SW5mby5nZXQoKSwgbWVzc2FnZURh
dGEsIHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50Q291bnQpOworICAgICAgICBt
ZW1jcHkoYXR0YWNobWVudEluZm8uZGF0YSgpLCBtZXNzYWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1l
bnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7CiAgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVv
ZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50Q291bnQ7CiAKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsraSkgewpAQCAtNDE3LDcgKzQxNiw3IEBA
IGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3NhZ2UoVW5peE1lc3NhZ2UmIG91dHB1dE1l
c3NhZ2UpCiAgICAgaW92WzBdLmlvdl9iYXNlID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oJm1l
c3NhZ2VJbmZvKTsKICAgICBpb3ZbMF0uaW92X2xlbiA9IHNpemVvZihtZXNzYWdlSW5mbyk7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudEluZm9bXT4gYXR0YWNobWVudEluZm87Cisg
ICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2htZW50SW5mbzsKICAgICBNYWxsb2NQdHI8
Y2hhcj4gYXR0YWNobWVudEZEQnVmZmVyOwogCiAgICAgYXV0byYgYXR0YWNobWVudHMgPSBvdXRw
dXRNZXNzYWdlLmF0dGFjaG1lbnRzKCk7CkBAIC00NDQsNyArNDQzLDcgQEAgYm9vbCBDb25uZWN0
aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0TWVzc2FnZSkKICAgICAg
ICAgICAgIGZkUHRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqPihDTVNHX0RBVEEoY21zZykpOwog
ICAgICAgICB9CiAKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0
dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgICAgIGF0dGFjaG1lbnRJ
bmZvLnJlc2l6ZShhdHRhY2htZW50cy5zaXplKCkpOwogICAgICAgICBpbnQgZmRJbmRleCA9IDA7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0YWNobWVudHMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvW2ldLnNldFR5cGUoYXR0YWNobWVudHNbaV0u
dHlwZSgpKTsKQEAgLTQ2Niw3ICs0NjUsNyBAQCBib29sIENvbm5lY3Rpb246OnNlbmRPdXRwdXRN
ZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdlKQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5n
ZXQoKTsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92X2Jhc2UgPSBhdHRhY2htZW50SW5mby5k
YXRhKCk7CiAgICAgICAgIGlvdltpb3ZMZW5ndGhdLmlvdl9sZW4gPSBzaXplb2YoQXR0YWNobWVu
dEluZm8pICogYXR0YWNobWVudHMuc2l6ZSgpOwogICAgICAgICArK2lvdkxlbmd0aDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4IDZkZTFiYWI4
NTkwNzdmODE3MGM4YmQyYmZhNTIxOTVmYWE3MWI3MmQuLmQwNjM4ZDMxM2E2ZTdjOTJlYjgyNDE0
ODI0ODkzZGI2NjU3NmJkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2lu
L0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdX
aW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1
ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZlY3RvcjxjaGFy
PiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJpYWJsZUEobG9n
Z2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAo
IUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBidWZm
ZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAg
IHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5k
YXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nh
bmRib3hFeHRlbnNpb24uaAppbmRleCBlNTI3ZjgxNTI1N2MwODcwOWNiNGZhMTViOWIwNzk1OTIx
YzAxM2Y5Li4xZjc2ODA4NTY0ZWQ0ZGI2ZTVjMGNlMWViNjMwMjExNzFlOTBlZDFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTg2LDggKzg3LDcg
QEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbmRib3hFeHRl
bnNpb24+IHsKICAgICAgICAKICAgICBwcml2YXRlOgogI2lmIEVOQUJMRShTQU5EQk9YX0VYVEVO
U0lPTlMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxIYW5kbGVbXT4gbV9kYXRhOwotICAgICAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OworICAgICAgICBWZWN0b3I8SGFuZGxlPiBtX2RhdGE7CiAj
ZWxzZQogICAgICAgICBIYW5kbGUgbV9lbXB0eUhhbmRsZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCA5ZDhiOWViMWI3
ZjUwYWQyZGE2ZTE1ZTAzMjg0MThiYzNiMGFiMzNkLi5iOGU3NDNkMjM2MGNmZWVmYzE3YmNhMjRk
NTk3MTFjZGQ1OGE1YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2Fu
ZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJv
eEV4dGVuc2lvbk1hYy5tbQpAQCAtMTYzLDM0ICsxNjMsMzMgQEAgdm9pZCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCiAgICAgaWYgKCFzaXplKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIW1fZGF0YSk7CisgICAgQVNTRVJUKG1fZGF0
YS5pc0VtcHR5KCkpOwogCi0gICAgbV9kYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVbXT4oc2l6ZSk7Ci0gICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2RhdGEu
cmVzaXplKHNpemUpOwogfQogCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKQogewotICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX3NpemUpOyAKKyAgICBSRUxFQVNFX0FTU0VS
VF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX2RhdGEuc2l6ZSgpKTsKICAgICByZXR1
cm4gbV9kYXRhW2ldOwogfQogCiBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdAogewot
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX3NpemUpOworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IG1fZGF0YS5zaXplKCkp
OwogICAgIHJldHVybiBtX2RhdGFbaV07CiB9CiAKIHNpemVfdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc2l6ZTsKKyAgICByZXR1
cm4gbV9kYXRhLnNpemUoKTsKIH0KIAogdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9zaXplOyArK2kpCi0gICAgICAgIGVuY29kZXIgPDwgbV9kYXRhW2ldOworICAgIGZvciAo
YXV0byYgaGFuZGxlIDogbV9kYXRhKQorICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKIH0KIAog
Ym9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmIGhhbmRsZXMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdIZWxwZXJzLmNwcAppbmRleCBmYjhiNzM1
Zjg3M2ExNTNhNTkxNzNmNzI0OTU4MDI0ZjU4ZDY1MmQzLi42YWYzMTUxMzE2NTE4YTJjZjU2Mjg4
ODFiNDg1YzIyMzMwY2M4MDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
YXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01hcnNo
YWxsaW5nSGVscGVycy5jcHAKQEAgLTIxMCwxOCArMjEwLDE2IEBAIENGQXJyYXlSZWYgTWFyc2hh
bGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0FycmF5KFNBRkVBUlJBWSogaW5BcnJheSkK
ICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdldFVCb3Vu
ZChpbkFycmF5LCAxLCAmdUJvdW5kKTsKICAgICBsb25nIGxlbiA9IChTVUNDRUVERUQoaHIpKSA/
ICh1Qm91bmQtbEJvdW5kKzEpIDogMDsKLSAgICBDRlN0cmluZ1JlZiogaXRlbXMgPSAwOworICAg
IFZlY3RvcjxDRlN0cmluZ1JlZj4gaXRlbXM7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAg
aXRlbXMgPSBuZXcgQ0ZTdHJpbmdSZWZbbGVuXTsKKyAgICAgICAgaXRlbXMucmVzaXplKGxlbik7
CiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0gdUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAg
ICAgQlN0cmluZyBzdHI7CiAgICAgICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChp
bkFycmF5LCAmbEJvdW5kLCAmc3RyKTsKICAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RS
VG9DRlN0cmluZ1JlZihzdHIpOwogICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVz
dWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLCBsZW4sICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykKLSAgICAgICAgZGVsZXRlW10gaXRlbXM7
CisgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTIzMiwxOCArMjMwLDE2IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdI
ZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAgICBpZiAo
U1VDQ0VFREVEKGhyKSkKICAgICAgICAgaHIgPSA6OlNhZmVBcnJheUdldFVCb3VuZChpbkFycmF5
LCAxLCAmdUJvdW5kKTsKICAgICBsb25nIGxlbiA9IChTVUNDRUVERUQoaHIpKSA/ICh1Qm91bmQt
bEJvdW5kKzEpIDogMDsKLSAgICBDRk51bWJlclJlZiogaXRlbXMgPSAwOworICAgIFZlY3RvcjxD
Rk51bWJlclJlZj4gaXRlbXM7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgaXRlbXMgPSBu
ZXcgQ0ZOdW1iZXJSZWZbbGVuXTsKKyAgICAgICAgaXRlbXMucmVzaXplKGxlbik7CiAgICAgICAg
IGZvciAoOyBsQm91bmQgPD0gdUJvdW5kOyBsQm91bmQrKykgewogICAgICAgICAgICAgaW50IG51
bSA9IDA7CiAgICAgICAgICAgICBociA9IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAm
bEJvdW5kLCAmbnVtKTsKICAgICAgICAgICAgIGl0ZW1zW2xCb3VuZF0gPSBTVUNDRUVERUQoaHIp
ID8gaW50VG9DRk51bWJlclJlZihudW0pIDoga0NGTnVtYmVyTmFOOwogICAgICAgICB9CiAgICAg
fQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoq
KSBpdGVtcywgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLSAgICBpZiAoaXRlbXMpCi0g
ICAgICAgIGRlbGV0ZVtdIGl0ZW1zOworICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNy
ZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEoKSwgbGVuLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlV2luLmNwcAppbmRleCBiYWU3Mjc2Y2Jh
NmIyNDAzMDgyZTBkOWM0YTI0OWMwMWE4NWQxNTY1Li4xNTJlYjUzNDYxYzNjM2JmMTVjMzRjZjUw
NDFmMmNlZTZiODI2NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKQEAgLTE3MCwxOSArMTcwLDE5IEBAIGJvb2wgUGx1
Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBpZiAodmVyc2lvbkluZm9TaXplID09IDApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdmVyc2lvbkluZm9EYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6ZSk7CisgICAgVmVjdG9yPGNoYXI+IHZl
cnNpb25JbmZvRGF0YSh2ZXJzaW9uSW5mb1NpemUpOwogCi0gICAgaWYgKCFHZXRGaWxlVmVyc2lv
bkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihtX3BhdGgpLmRhdGEoKSwgMCwgdmVy
c2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZ2V0KCkpKQorICAgIGlmICghR2V0RmlsZVZl
cnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIobV9wYXRoKS5kYXRhKCksIDAs
IHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRhLmRhdGEoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSwgIlByb2R1Y3ROYW1lIik7Ci0gICAgbV9kZXNjcmlwdGlvbiA9IGdldFZlcnNpb25JbmZv
KHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVEZXNjcmlwdGlvbiIpOworICAgIG1fbmFtZSA9
IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJQcm9kdWN0TmFtZSIpOwor
ICAgIG1fZGVzY3JpcHRpb24gPSBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgp
LCAiRmlsZURlc2NyaXB0aW9uIik7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSB8fCBtX2Rlc2Ny
aXB0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWU19GSVhFREZJ
TEVJTkZPKiBpbmZvOwogICAgIFVJTlQgaW5mb1NpemU7Ci0gICAgaWYgKCFWZXJRdWVyeVZhbHVl
Vyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksIEwiXFwiLCAoTFBWT0lEKikgJmluZm8sICZpbmZvU2l6
ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURGSUxFSU5GTykpCisgICAgaWYgKCFWZXJR
dWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCBMIlxcIiwgKExQVk9JRCopICZpbmZv
LCAmaW5mb1NpemUpIHx8IGluZm9TaXplIDwgc2l6ZW9mKFZTX0ZJWEVERklMRUlORk8pKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9tb2R1bGVWZXJzaW9uLmxlYXN0U2lnID0gaW5mby0+
ZHdGaWxlVmVyc2lvbkxTOwogICAgIG1fbW9kdWxlVmVyc2lvbi5tb3N0U2lnID0gaW5mby0+ZHdG
aWxlVmVyc2lvbk1TOwpAQCAtMTkxLDExICsxOTEsMTEgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpm
ZXRjaEluZm8oKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKLSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksICJNSU1FVHlw
ZSIpLnNwbGl0KCd8JywgdHlwZXMpOworICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0
YS5kYXRhKCksICJNSU1FVHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOwogICAgIFZlY3RvcjxTdHJp
bmc+IGV4dGVuc2lvbkxpc3RzOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5n
ZXQoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBleHRlbnNpb25MaXN0cyk7CisgICAgZ2V0
VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQo
J3wnLCBleHRlbnNpb25MaXN0cyk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25zOwot
ICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVPcGVuTmFtZSIp
LnNwbGl0KCd8JywgZGVzY3JpcHRpb25zKTsKKyAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5m
b0RhdGEuZGF0YSgpLCAiRmlsZU9wZW5OYW1lIikuc3BsaXQoJ3wnLCBkZXNjcmlwdGlvbnMpOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHR5cGVzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgIFN0cmluZyB0eXBlID0gdHlwZXNbaV0uY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBjYjA0N2M1NGJk
MzU5YzFiYmJjZDU2NjE1N2EyN2RiN2VjOTgwM2Y2Li4zN2NjMDIwMDEzZTQ4NmRkZGYxNjA1ZTU1
ODJiOWNjYWFlYzQ2NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwCkBAIC01MzQsOSArNTM0LDkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktp
dFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQogICAgIENG
U3RyaW5nUmVmIGRpZFJlbW92ZURlZmF1bHRzS2V5ID0gQ0ZTVFIoV2ViS2l0RGlkTWlncmF0ZURl
ZmF1bHRTZXR0aW5nc0Zyb21TYWZhcmkzQmV0YVByZWZlcmVuY2VLZXkpOwogICAgIGJvb2wgb21p
dERlZmF1bHRzID0gIWJvb2xlYW5WYWx1ZUZvclByZWZlcmVuY2VzVmFsdWUoQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdCwgZGlkUmVtb3ZlRGVmYXVsdHNLZXkpKTsKIAotICAgIGF1dG8ga2V5cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKLSAgICBhdXRvIHZhbHVlcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNvdW50KTsKLSAgICBDRkRpY3Rpb25hcnlH
ZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMuZ2V0KCksIHZhbHVlcy5nZXQoKSk7CisgICAgVmVj
dG9yPENGVHlwZVJlZj4ga2V5cyhjb3VudCk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4gdmFsdWVz
KGNvdW50KTsKKyAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMuZGF0
YSgpLCB2YWx1ZXMuZGF0YSgpKTsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewogICAgICAgICBpZiAoIWtleXNbaV0gfHwgIXZhbHVlc1tpXSB8fCBDRkdldFR5cGVJRChr
ZXlzW2ldKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAppbmRleCBjNzk5MDM5OGZjZjM1MzEyYWU3NjM0YjQ1OTk2Y2Y0MDM5MTNiN2RkLi4yZDk1
N2VhODgzZmFjMDAxYjE1NzJlNGZiMzc4ZTczYWE1NzMwMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcApAQCAtMTc4NCw4ICsxNzg0LDggQEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVD
b21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgbWVudUl0ZW1JbmZvLmZN
YXNrID0gTUlJTV9TVFJJTkc7CiAgICAgOjpHZXRNZW51SXRlbUluZm8oaE1lbnUsIGluZGV4LCB0
cnVlLCAmbWVudUl0ZW1JbmZvKTsKIAotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxXQ0hBUltdPihtZW51SXRlbUluZm8uY2NoICsgMSk7Ci0gICAgbWVudUl0ZW1JbmZvLmR3VHlw
ZURhdGEgPSBidWZmZXIuZ2V0KCk7CisgICAgVmVjdG9yPFdDSEFSPiBidWZmZXIobWVudUl0ZW1J
bmZvLmNjaCArIDEpOworICAgIG1lbnVJdGVtSW5mby5kd1R5cGVEYXRhID0gYnVmZmVyLmRhdGEo
KTsKICAgICBtZW51SXRlbUluZm8uY2NoKys7CiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrIHw9IE1J
SU1fSUQ7CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZvaWQgV2ViVmlldzo6b25NZW51Q29tbWFu
ZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIDo6RGVzdHJveU1lbnUobV9jdXJy
ZW50Q29udGV4dE1lbnUpOwogICAgIG1fY3VycmVudENvbnRleHRNZW51ID0gbnVsbHB0cjsKIAot
ICAgIFN0cmluZyB0aXRsZShidWZmZXIuZ2V0KCksIG1lbnVJdGVtSW5mby5jY2gpOworICAgIFN0
cmluZyB0aXRsZShidWZmZXIuZGF0YSgpLCBtZW51SXRlbUluZm8uY2NoKTsKICAgICBDb250ZXh0
TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4obWVudUl0
ZW1JbmZvLndJRCk7CiAKICAgICBpZiAoYWN0aW9uID49IENvbnRleHRNZW51SXRlbUJhc2VBcHBs
aWNhdGlvblRhZykgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDE3MTRkYWY2ZTRkOTFjZjE3YjI1MjZjOGY4MWRiODdiYjY5ZGNiMWQuLmE5YmQ4
NzE0YTQ2YzhkZTM0OWNhNjg4NGRmNTI3YzM3NjMxZTc3NTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wMy0w
MyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBGaXgg
c3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
bmlxdWVBcnJheS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xv
Z2dpbmdXaW4uY3BwLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Tm9uVHJpdmlhbERlc3RydWN0
b3I6Ok5vblRyaXZpYWxEZXN0cnVjdG9yKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Ok5vblRy
aXZpYWxEZXN0cnVjdG9yOjp+Tm9uVHJpdmlhbERlc3RydWN0b3IpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Tm9uVHJpdmlhbERlc3RydWN0b3I6OnNldExvZyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxOC0wMy0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbnZlcnRpbmcgYSBsb2FkIHRvIGEgZG93bmxvYWQgZG9lcyBub3Qg
d29yayB3aXRoIGFzeW5jIHBvbGljeSBkZWxlZ2F0ZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGRmNDljMjE0NDQ1ZWEzYjcyMGUyMmMwODk4ZTBiNmQ1NjUxNTZlYzAuLmViNzhl
OWE4YzdmYjc2NjgwZjhmOWFmNDllNjA3YTc0NTQwYTMwZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVhZGluZy5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvVGltZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1VuaXF1ZVJlZi5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmFy
aWFudC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmVjdG9yLmNwcApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NTQzM2Q4ZDhjOTNiZjAwM2NhMjRiMjUxNzgxNjNl
MTE1OGNjMDA5Li5mNGU3ZjVmOWFkZDMxY2QxMzdiNDVjYTE4MTNhMDI1NzllOTk0NzlkIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzE4LDYgKzcxOCw3IEBACiAJCUQzNEUwODc2MUU0RTQy
RTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQkU1RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBX
S1dlYlZpZXdHZXRDb250ZW50cy5tbSAqLzsgfTsKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBE
QzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUg
LyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CisJCUUzMjRB
NkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcxMzYgLyog
VW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzczRDc5MTFGMkNGMzUyMDBDNkZBQUYgLyogU2ln
bmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCUUzOEEwRDM1
MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVh
ZGluZy5jcHAgKi87IH07CiAJCUUzREVBODExMUYwQTU4OTAwMENCQzJFOCAvKiBUaHJlYWRHcm91
cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0RF
QTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwICovOyB9OwpAQCAtMTg0NSw2
ICsxODQ2LDcgQEAKIAkJRTE5REI5NzgxQjMyMTM3QzAwREIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1
YWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF2aWdhdG9y
TGFuZ3VhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEEwRDM0MUZENTBD
QkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5
NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVBcnJheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzREVBODEwMUYwQTU4ODAwMENCQzJFOCAvKiBUaHJlYWRHcm91
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRHcm91cC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEy
QSAvKiBCbG9vbUZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCbG9vbUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3
MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NzcsNiArMjc3OSw3IEBACiAJCQkJRTM4QTBEMzQxRkQ1MENC
QzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8sCiAJCQkJNTMxMUJENUQxRUE5NDkwRDAwNTI1
MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCAqLywKIAkJCQkwRjJDMjBCNzFEQ0Q1NDQ4MDA1NDJE
OUUgLyogVGltZS5jcHAgKi8sCisJCQkJRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1
ZUFycmF5LmNwcCAqLywKIAkJCQk1QzVFNjMzRDFEMEI2Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVm
LmNwcCAqLywKIAkJCQk3Q0QwRDVBQTFENTUzNERFMDAwQ0M5RTEgLyogVmFyaWFudC5jcHAgKi8s
CiAJCQkJQkM1NUY1RjgxNEFENzhFRTAwNDg0QkUxIC8qIFZlY3Rvci5jcHAgKi8sCkBAIC0zMzQx
LDYgKzMzNDQsNyBAQAogCQkJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUUxRUE5NDkwRTAwNTI1MjgxIC8qIFRocmVh
ZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkMyMEI4MURDRDU0NTAwMDU0MkQ5
RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjRBNkYwMjA0MUM4MjAwMEE3NjU5
MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTAzQjFEMEE2MDI3
MDBGRUJDRjMgLyogVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRkM3
MTFENTUzNUE4MDAxREZCQ0QgLyogVmFyaWFudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REY0QzFEMEE1OTBDMDBGRUJDRjMgLyogVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJj
YmZiNzJkNDA0Y2Q5NWNmNWZjNjc5ZDgyMmQ5N2YxMzdjZGFjOTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVBcnJheS5jcHAKQEAgLTAsMCAr
MSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHVuc2lnbmVkIG51bWJlck9mQ29uc3RydWN0aW9u
cyB7IDAgfTsKK2NsYXNzIE5vblRyaXZpYWxEZXN0cnVjdG9yIHsKK3B1YmxpYzoKKyAgICBOb25U
cml2aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAgICBudW1iZXJPZkNvbnN0cnVjdGlvbnMr
KzsKKyAgICB9CisKKyAgICB+Tm9uVHJpdmlhbERlc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAg
KCptX2xvZykrKzsKKyAgICB9CisKKyAgICB2b2lkIHNldExvZyh1bnNpZ25lZCogbG9nKQorICAg
IHsKKyAgICAgICAgbV9sb2cgPSBsb2c7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVk
KiBtX2xvZyB7IG51bGxwdHIgfTsKK307CisKK1RFU1QoV1RGX1VuaXF1ZUFycmF5LCBOb25Ucml2
aWFsRGVzdHJ1Y3RvcikKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gNDI7CisgICAgdW5zaWduZWQg
bG9nID0gMDsKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUShsb2csIDBVKTsKKyAgICAgICAgYXV0
byBhcnJheSA9IG1ha2VVbmlxdWVBcnJheTxOb25Ucml2aWFsRGVzdHJ1Y3Rvcj4oc2l6ZSk7Cisg
ICAgICAgIEVYUEVDVF9FUShsb2csIDBVKTsKKyAgICAgICAgRVhQRUNUX0VRKG51bWJlck9mQ29u
c3RydWN0aW9ucywgc2l6ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBhcnJheVtpXS5zZXRMb2coJmxvZyk7CisgICAgfQorICAgIEVY
UEVDVF9FUShsb2csIHNpemUpOworfQorCitURVNUKFdURl9VbmlxdWVBcnJheSwgVHJpdmlhbERl
c3RydWN0b3IpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9IDQyOworICAgIHsKKyAgICAgICAgYXV0
byBhcnJheSA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25lZD4oc2l6ZSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShh
cnJheVtpXSwgMFUpOworICAgICAgICAgICAgYXJyYXlbaV0gPSA0MjsKKyAgICAgICAgfQorICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgRVhQ
RUNUX0VRKGFycmF5W2ldLCA0MlUpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334955</attachid>
            <date>2018-03-03 07:14:25 -0800</date>
            <delta_ts>2018-03-05 09:53:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182975-20180304001423.patch</filename>
            <type>text/plain</type>
            <size>111923</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
YTUwMzQ5OTQyYjE1ZjUwMTliOGE2NDlmNGJiYWQ4MDVjNDgwNzg0Li5hNDZiZjQ0MjZlZGQ0NmU1
YTJmN2Q3ZWIxMzVjODE3OWJhOTNiYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOC0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3Rl
bSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBWZWN0b3IsIEZBU1RfQUxMT0NBVEVELCBvciBVbmlxdWVBcnJheSBpbnN0ZWFkLgorCisg
ICAgICAgICogQVBJL0pTU3RyaW5nUmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVX
aXRoQ0ZTdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaDoKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgICogZGZn
L0RGR0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6RGlzYXNzZW1ibGVyOjpk
dW1wRGlzYXNzZW1ibHkpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjpQb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmg6CisgICAgICAgICogaml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjpsaW5r
UG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoY3VycmVudFdv
cmtpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkxMSW50Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoK
KyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZUlEVGFibGU6OnJlc2l6ZSk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwOgorICAg
ICAgICAoSlNDOjpUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZyk6CisgICAgICAgIChK
U0M6OlR5cGVQcm9maWxlckxvZzo6aW5pdGlhbGl6ZUxvZyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9UeXBlUHJvZmlsZXJMb2cuaDoKKyAgICAgICAgKEpTQzo6VHlwZVByb2ZpbGVyTG9n
OjpUeXBlUHJvZmlsZXJMb2cpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6flZNKToKKyAgICAgICAgKEpTQzo6Vk06OmFjcXVpcmVSZWdFeHBQ
YXR0ZXJuQ29udGV4QnVmZmVyKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICog
dGVzdFJlZ0V4cC5jcHA6CisgICAgICAgIChydW5Gcm9tRmlsZXMpOgorICAgICAgICAqIHRvb2xz
L0hlYXBWZXJpZmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6SGVhcFZlcmlm
aWVyKToKKyAgICAgICAgKiB0b29scy9IZWFwVmVyaWZpZXIuaDoKKwogMjAxOC0wMy0wMiAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB0aGUgTExJbnQgcHJv
YmUgd29yayBmb3IgQVJNNjQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0NzAyMjhlY2EyZGNiOGEzMmVkYWRkODcwZGQwYjQ0
MDBkNDk0MDUuLmZjMjgwYzc3Zjc4MDNlMzFlYzMwOWM0NDMwM2FhZThlYjllMDUzNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMTgtMDMtMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgRml4IHN0ZDo6bWFrZV91bmlxdWUgLyBuZXdbXSB1c2luZyBz
eXN0ZW0gbWFsbG9jCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODI5NzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB3ZSB1c2UgYG1ha2VfdW5pcXVlPGNoYXJbXT4obnVtKWAgb3IgYG5ldyBjaGFyW251
bV1gLCBhbGxvY2F0aW9uIGlzCisgICAgICAgIGRvbmUgYnkgdGhlIHN5c3RlbSBtYWxsb2MgaW5z
dGVhZCBvZiBibWFsbG9jLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKKyAgICAgICAgYnkg
Zm9sbG93aW5nIHRocmVlIGNoYW5nZXMuCisKKyAgICAgICAgMS4gSW50cm9kdWNlIFVuaXF1ZUFy
cmF5PFQ+LiBJdCBhbGxvY2F0ZXMgbWVtb3J5IGZyb20gRmFzdE1hbGxvYy4gV2hpbGUgQysrCisg
ICAgICAgIGFycmF5IHdpdGggYG5ld2AgbmVlZCB0byBob2xkIHRoZSBzaXplIHRvIGNhbGwgZGVz
dHJ1Y3RvciBjb3JyZWN0bHksIG91cgorICAgICAgICBVbmlxdWVBcnJheSBvbmx5IHN1cHBvcnRz
IHR5cGUgVCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgbm9uIHRyaXZpYWwgZGVzdHJ1Y3Rvci4KKyAg
ICAgICAgSXQgcmVkdWNlcyB0aGUgYWxsb2NhdGlvbiBzaXplIHNpbmNlIHdlIGRvIG5vdCBuZWVk
IHRvIHRyYWNrIHRoZSBzaXplIG9mIHRoZQorICAgICAgICBhcnJheSBjb21wYXJlZCB0byBzdGFu
ZGFyZCBgbmV3IFRbXWAuIFRoaXMgaXMgYmFzaWNhbGx5IHVzYWJsZSBpZiB3ZSB3YW50IHRvCisg
ICAgICAgIGhhdmUgcmF3IGFycmF5IHdoaWNoIHBvaW50ZXIgd29uJ3QgYmUgY2hhbmdlZCBldmVu
IGlmIHRoZSBjb250YWluZXIgaXMgbW92ZWQuCisgICAgICAgIEluIGFkZGl0aW9uLCB3ZSBhbHNv
IGV4dGVuZCBVbmlxdWVBcnJheTxUPiBmb3IgdHlwZXMgd2hpY2ggaGF2ZSBub24gdHJpdmlhbAor
ICAgICAgICBkZXN0cnVjdG9ycy4KKworICAgICAgICAyLiBVc2UgVmVjdG9yPFQ+IGluc3RlYWQu
CisKKyAgICAgICAgMy4gQW5ub3RhdGUgYWxsb2NhdGVkIHR5cGVzIHdpdGggTUFLRV9GQVNUX0FM
TE9DQVRFRC4gU2luY2UgaXQgaW50cm9kdWNlcworICAgICAgICBuZXdbXSBhbmQgZGVsZXRlW10g
b3BlcmF0b3JzLCBtYWtlX3VuaXF1ZTxUW10+KG51bSkgd2lsbCBhbGxvY2F0ZSBtZW1vcnkKKyAg
ICAgICAgZnJvbSBGYXN0TWFsbG9jLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogd3RmL0Fzc2VydGlvbnMuY3BwOgorICAgICAgICAqIHd0Zi9D
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RG
OjpGYXN0RnJlZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXVEY6OkZhc3RGcmVlPFQ6
Om9wZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAqIHd0Zi9NYWxsb2NQdHIuaDoKKyAgICAgICAg
KFdURjo6TWFsbG9jUHRyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKiB3dGYvU3Rh
Y2tTaG90Lmg6CisgICAgICAgIChXVEY6OlN0YWNrU2hvdDo6U3RhY2tTaG90KToKKyAgICAgICAg
KFdURjo6U3RhY2tTaG90OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0Zi9TeXN0ZW1GcmVlLmg6
CisgICAgICAgIChXVEY6OlN5c3RlbUZyZWU8VDo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAg
ICogd3RmL1VuaXF1ZUFycmF5Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
d2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoV1RGOjptYWtlVW5pcXVlQXJyYXkpOgorICAg
ICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yVHlwZU9wZXJhdGlvbnM6
OmZvcmNlSW5pdGlhbGl6ZSk6CisKIDIwMTgtMDMtMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dURl0gUmVtb3ZlIFJ1bkxvb3AgYW5kIFJ1bkxv
b3A6OlRpbWVyJ3MgaW50ZXJmYWNlIHVzaW5nIGRvdWJsZSBhcyBzZWNvbmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNzdlMzQ1OTRjMDg1ZWI3MTU5NDY3YmVmZjkzMDRkOWY2MjYzOTFlYy4uODExNjU4NGUwZGY5
YjAwOWZmMTI5YzA5Y2VmNGJmNzVkNmI3NDAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBA
CisyMDE4LTAzLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisg
ICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3Rv
ciwgRkFTVF9BTExPQ0FURUQsIG9yIFVuaXF1ZUFycmF5IGluc3RlYWQuCisKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaDoKKyAgICAgICAgKiBjc3MvU3R5bGVS
dWxlLmg6CisgICAgICAgICogY3Nzaml0L0NvbXBpbGVkU2VsZWN0b3IuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmNvcHlUZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpM
UlVJbWFnZUJ1ZmZlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmJ1
YmJsZVRvRnJvbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6bmV3Q29vcmRzQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6bmV3TGVuZ3RoQXJyYXkpOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9MZW5ndGguaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RHluYW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9G
RlRGcmFtZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6RkZURnJh
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zvcm1hdENvbnZlcnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9ybWF0Q29udmVydGVyOjpGb3JtYXRDb252ZXJ0ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXREaXJ0eVJlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmbGlwSW1hZ2VTdXJmYWNl
VmVydGljYWxseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VF
eHRyYWN0b3I6OmV4dHJhY3RJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6dXBkYXRlU3ViUmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Y29tcGlsZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0U2hhZGVyTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1Mb2cpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VSZWFkZXI6OlBOR0ltYWdlUmVhZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlBOR0ltYWdlUmVhZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpQTkdJ
bWFnZVJlYWRlcjo6aW50ZXJsYWNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBO
R0ltYWdlUmVhZGVyOjpjcmVhdGVJbnRlcmxhY2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldERhdGE6OlNvY2tldERhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnJlYWREYXRhKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbFNvdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsb2dMZXZlbFN0cmluZyk6CisKIDIwMTgtMDMtMDMgIFlvYXYgV2Vpc3MgIDx5b2F2QHlv
YXYud3M+CiAKICAgICAgICAgTGluayBoZWFkZXJzIGZvciBzdWJyZXNvdXJjZXMgYXJlIG5vdCBi
ZWluZyBwcm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDg0ZjNkZjgxNTczMGE3ZDE1ZTlj
MWU0NTRiMTA3ODEwNzNlY2RkNTguLmZmOGZiZmEyNzRjYTBjYTJhN2Y0YmEwZTkyY2YyNmNhN2Y1
YzQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTAzICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIEZpeCBzdGQ6
Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1hbGxvYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyOTc1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFZlY3RvciBpbnN0ZWFkLgorCisg
ICAgICAgICogcGFsL3dpbi9Mb2dnaW5nV2luLmNwcDoKKyAgICAgICAgKFBBTDo6bG9nTGV2ZWxT
dHJpbmcpOgorCiAyMDE4LTAzLTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggM2NmNGU4MzM0OGM3MGNiMzlkNmExOGI1MjNiMjA4YTI1NmZhNDQ4NS4uYWEwY2ZiYWRl
NWM4YjY1M2JkMTZkZDc4ZmZmMDI0MjM0ZmZiZDNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAxOC0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5c3RlbSBtYWxsb2MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mjk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBWZWN0
b3IgaW5zdGVhZC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdp
bi5jcHA6CisgICAgICAgIChXaW5kb3dzU3lzdGVtUHJveHk6OmdldFN5c3RlbUh0dHBQcm94eSk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS93aW4vTG9nZ2lu
Z1dpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxvZ0xldmVsU3RyaW5nKToKKyAgICAgICAgKiBT
aGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXk6OmFsbG9jYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXk6Om9wZXJhdG9yW10pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheTo6b3BlcmF0b3JbXSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXk6OmVuY29kZSBjb25zdCk6CisKIDIwMTgtMDMt
MDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dU
Rl0gUmVtb3ZlIFJ1bkxvb3AgYW5kIFJ1bkxvb3A6OlRpbWVyJ3MgaW50ZXJmYWNlIHVzaW5nIGRv
dWJsZSBhcyBzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTgwODBlOTEz
MmZmZjczODc0ZjAyYjZhZmYxNTRkNmM5N2YyYTFmYy4uMTVmOTYzODI3OWViNGUyODA2ZTU1ZmU4
NzAxNzYzMTAxNTgwZTg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDE4LTAzLTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIEZpeCBzdGQ6Om1ha2VfdW5pcXVlIC8gbmV3W10gdXNpbmcgc3lzdGVtIG1h
bGxvYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
OTc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNl
IFZlY3RvciBpbnN0ZWFkLgorCisgICAgICAgICogTWFyc2hhbGxpbmdIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKE1hcnNoYWxsaW5nSGVscGVyczo6c2FmZUFycmF5VG9TdHJpbmdBcnJheSk6CisgICAg
ICAgIChNYXJzaGFsbGluZ0hlbHBlcnM6OnNhZmVBcnJheVRvSW50QXJyYXkpOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5Q
YWNrYWdlOjpmZXRjaEluZm8pOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAg
ICAgKFdlYlByZWZlcmVuY2VzOjpjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMp
OgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6b25NZW51Q29tbWFu
ZCk6CisKIDIwMTgtMDMtMDEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgUmVtb3ZlIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKaW5kZXggMDU4NzI1OTNmNmRiYjlh
ODUzYTgxNjFhNjliYmRmNzQyYTIzMzNhMy4uMTM2NzcxNTNkNWZhMDRkZmI4ZTlmZWE3ZTQ0OGFj
NDE3ZjljNmUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmlu
Z1JlZkNGLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0Yu
Y3BwCkBAIC00OSwxMCArNDksMTAgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZT
dHJpbmcoQ0ZTdHJpbmdSZWYgc3RyaW5nKQogICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
bnZlcnRlZFNpemUpID09IGxlbmd0aCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHVzZWRCdWZmZXJM
ZW5ndGgpID09IGxlbmd0aCkKICAgICAgICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRl
KGxjaGFyQnVmZmVyLmRhdGEoKSwgbGVuZ3RoKS5sZWFrUmVmKCk7CiAKLSAgICBhdXRvIGJ1ZmZl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8VW5pQ2hhcltdPihsZW5ndGgpOwotICAgIENGU3RyaW5nR2V0
Q2hhcmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIGJ1ZmZlci5nZXQoKSk7
CisgICAgVmVjdG9yPFVuaUNoYXI+IGJ1ZmZlcihsZW5ndGgpOworICAgIENGU3RyaW5nR2V0Q2hh
cmFjdGVycyhzdHJpbmcsIENGUmFuZ2VNYWtlKDAsIGxlbmd0aCksIGJ1ZmZlci5kYXRhKCkpOwog
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciksICJVbmlD
aGFyIGFuZCBVQ2hhciBtdXN0IGJlIHNhbWUgc2l6ZSIpOwotICAgIHJldHVybiAmT3BhcXVlSlNT
dHJpbmc6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLmdldCgpKSwgbGVu
Z3RoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuICZPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVuZ3RoKS5sZWFrUmVmKCk7CiB9
CiAKIENGU3RyaW5nUmVmIEpTU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvciwgSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUtpbGxzLmgKaW5kZXggZWE4NTljNGE5YTEyZmU0ZGRmMmU1MmMyYjg2ODZk
MjA4ODgzYjg3NC4uYmYyYmIzZTE1MWZhYzEzM2Q4YTA1MDc4NTBjNGI3YzQ0NjAzZTA3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlS2lsbHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVLaWxscy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzQsNiAr
NzUsNyBAQCBjbGFzcyBCeXRlY29kZUtpbGxzIHsKICAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOwogCiAgICAgY2xhc3MgS2lsbFNldCB7CisgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKICAgICAgICAgS2lsbFNldCgpCiAgICAgICAg
ICAgICA6IG1fd29yZCgwKQpAQCAtMTcwLDcgKzE3Miw3IEBAIGNsYXNzIEJ5dGVjb2RlS2lsbHMg
ewogICAgIH07CiAgICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8S2lsbFNldFtdPiBtX2tpbGxTZXRzOworICAgIFVuaXF1ZUFycmF5PEtpbGxTZXQ+
IG1fa2lsbFNldHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKaW5kZXggNDJkOWFkNmM2ODY2ZDA4ZDk5ZGFmNDY5NWYwY2MxMzdhMDExMDMyMi4uZTAxNjlk
ZmI0OThlZTY0NGQ2MTBhYWY0ZGY5MGI0ODQ1ZmFiYWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVLaWxscyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVLaWxscyYKICAgICBGYXN0Qml0
VmVjdG9yIG91dDsKIAogICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKLSAgICBy
ZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNl
dFtdPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fa2ls
bFNldHMgPSBtYWtlVW5pcXVlQXJyYXk8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldD4oY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAogICAgIGZvciAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+
aXNFeGl0QmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGlzYXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcAppbmRleCBhZDAzNTZlOGY5MGJkZjhhMzVhMWUzZTUzZGY4NzYyNTQ0ZTQzMTBhLi4w
YzIwNzAzZWQ4ZTJkODEzZjVkMjE4MDhhYWMyZjNjZDI4NjIwNDJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xNTksOCArMTU5LDggQEAg
dm9pZCBEaXNhc3NlbWJsZXI6OmR1bXBEaXNhc3NlbWJseShQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBjaGFyKiBwcmVmaXgsIExpbmtCdWYKICAgICAgICAgYW1vdW50T2ZOb2RlV2hpdGVTcGFjZSA9
IDA7CiAgICAgZWxzZQogICAgICAgICBhbW91bnRPZk5vZGVXaGl0ZVNwYWNlID0gR3JhcGg6OmFt
b3VudE9mTm9kZVdoaXRlU3BhY2UoY29udGV4dCk7Ci0gICAgYXV0byBwcmVmaXhCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4ocHJlZml4TGVuZ3RoICsgYW1vdW50T2ZOb2RlV2hpdGVT
cGFjZSArIDEpOwotICAgIG1lbWNweShwcmVmaXhCdWZmZXIuZ2V0KCksIHByZWZpeCwgcHJlZml4
TGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gcHJlZml4QnVmZmVyKHByZWZpeExlbmd0aCArIGFt
b3VudE9mTm9kZVdoaXRlU3BhY2UgKyAxKTsKKyAgICBtZW1jcHkocHJlZml4QnVmZmVyLmRhdGEo
KSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYW1vdW50
T2ZOb2RlV2hpdGVTcGFjZTsgKytpKQogICAgICAgICBwcmVmaXhCdWZmZXJbaSArIHByZWZpeExl
bmd0aF0gPSAnICc7CiAgICAgcHJlZml4QnVmZmVyW3ByZWZpeExlbmd0aCArIGFtb3VudE9mTm9k
ZVdoaXRlU3BhY2VdID0gMDsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIERpc2Fzc2VtYmxlcjo6
ZHVtcERpc2Fzc2VtYmx5KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IGNoYXIqIHByZWZpeCwgTGlu
a0J1ZgogICAgIENvZGVMb2NhdGlvbkxhYmVsIGVuZCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihj
dXJyZW50TGFiZWwpOwogICAgIHByZXZpb3VzTGFiZWwgPSBjdXJyZW50TGFiZWw7CiAgICAgQVNT
RVJUKGVuZC5leGVjdXRhYmxlQWRkcmVzczx1aW50cHRyX3Q+KCkgPj0gc3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3M8dWludHB0cl90PigpKTsKLSAgICBkaXNhc3NlbWJsZShzdGFydCwgZW5kLmV4ZWN1
dGFibGVBZGRyZXNzPHVpbnRwdHJfdD4oKSAtIHN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzPHVpbnRw
dHJfdD4oKSwgcHJlZml4QnVmZmVyLmdldCgpLCBvdXQpOworICAgIGRpc2Fzc2VtYmxlKHN0YXJ0
LCBlbmQuZXhlY3V0YWJsZUFkZHJlc3M8dWludHB0cl90PigpIC0gc3RhcnQuZXhlY3V0YWJsZUFk
ZHJlc3M8dWludHB0cl90PigpLCBwcmVmaXhCdWZmZXIuZGF0YSgpLCBvdXQpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCmluZGV4IDg1OGI1NDE3NGJmZWIy
ZTIyMWQ4MzA2ZmE5ODhhMjI5MWQ1MDI0ZTMuLmJjMGY4NDFkZjc1MTQ1OTM0NTkyN2RmM2RhNmFh
YmQwOTE2NzViNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1v
cnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgUG9s
eW1vcnBoaWNDYWxsQ2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogUG9seW1vcnBo
aWNDYWxsU3R1YlJvdXRpbmU6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lKAogICAgIGNvbnN0
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiYgY29kZVJlZiwgVk0mIHZtLCBjb25zdCBKU0NlbGwqIG93
bmVyLCBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLAogICAgIENhbGxMaW5rSW5mbyYgaW5mbywgY29u
c3QgVmVjdG9yPFBvbHltb3JwaGljQ2FsbENhc2U+JiBjYXNlcywKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8dWludDMyX3RbXT4gZmFzdENvdW50cykKKyAgICBVbmlxdWVBcnJheTx1aW50MzJfdD4mJiBm
YXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0aW5lKGNvZGVSZWYsIHZtKQogICAg
ICwgbV9mYXN0Q291bnRzKFdURk1vdmUoZmFzdENvdW50cykpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXgg
ZDk2YWU1NmM0N2Y0YWFiOWZkNDcyZmUyNDMyYmNmNTk1YjIyZjk1ZC4uMmEzOTU3NzJiNGFiMDQ2
NWJhMWE4YzA4ZThjOGQyMWRhYzk2ZWIzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkNhbGxWYXJpYW50LmgiCiAjaW5jbHVkZSAiR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1
ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTg0LDcgKzg1LDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUgOiBwdWJsaWMg
R0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKICAgICBQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgK
ICAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmJiwgVk0mLCBjb25zdCBKU0NlbGwq
IG93bmVyLAogICAgICAgICBFeGVjU3RhdGUqIGNhbGxlckZyYW1lLCBDYWxsTGlua0luZm8mLCBj
b25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mLAotICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8dWludDMyX3RbXT4gZmFzdENvdW50cyk7CisgICAgICAgIFVuaXF1ZUFycmF5PHVpbnQzMl90
PiYmIGZhc3RDb3VudHMpOwogICAgIAogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lKCk7CiAgICAgCkBAIC0xMDAsNyArMTAxLDcgQEAgY2xhc3MgUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUgOiBwdWJsaWMgR0NBd2FyZUpJVFN0dWJSb3V0aW5lIHsKIAogcHJpdmF0ZToK
ICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4sIDI+IG1fdmFyaWFudHM7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+IG1fZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1
aW50MzJfdD4gbV9mYXN0Q291bnRzOwogICAgIEJhZzxQb2x5bW9ycGhpY0NhbGxOb2RlPiBtX2Nh
bGxOb2RlczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCmluZGV4IDI4
YzBiYzY2YWJlMmU5YTBmNjMxNTM1ZGQzMGI3MjkxOTk0ODQ4YjkuLmM5NmRjNDhkMGVlYTk3NWIx
YTg2YjZhYzAzMWM4YmZlNTkzYWJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNo
LmNwcApAQCAtOTQ0LDEwICs5NDQsMTAgQEAgdm9pZCBsaW5rUG9seW1vcnBoaWNDYWxsKAogICAg
IAogICAgIFZlY3RvcjxpbnQ2NF90PiBjYXNlVmFsdWVzKGNhbGxDYXNlcy5zaXplKCkpOwogICAg
IFZlY3RvcjxDYWxsVG9Db2RlUHRyPiBjYWxscyhjYWxsQ2FzZXMuc2l6ZSgpKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4gZmFzdENvdW50czsKKyAgICBVbmlxdWVBcnJheTx1aW50
MzJfdD4gZmFzdENvdW50czsKICAgICAKICAgICBpZiAoIWlzV2ViQXNzZW1ibHkgJiYgY2FsbGVy
Q29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6dG9wVGllckpJVCgpKQotICAgICAgICBm
YXN0Q291bnRzID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50MzJfdFtdPihjYWxsQ2FzZXMuc2l6ZSgp
KTsKKyAgICAgICAgZmFzdENvdW50cyA9IG1ha2VVbmlxdWVBcnJheTx1aW50MzJfdD4oY2FsbENh
c2VzLnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsQ2FzZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGZhc3RDb3VudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CmluZGV4IGYwZjQ1NjA1ZGU4NGE0ZTdhZDQ3NzMwMmE5YjZkOTNkNzBjNGNkYzMuLmY3MGNjNjg1
NTAxNTVmZjIxYzcyYjM3ZDgwNjI1ZGQxZjRjZmY0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBA
IC03MTgsMTcgKzcxOCwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxEaXJlY3RvcnlOYW1lPiBj
dXJyZW50V29ya2luZ0RpcmVjdG9yeSgpCiAgICAgLy8gSW4gV2luZG93cywgd2NoYXJfdCBpcyB0
aGUgVVRGLTE2TEUuCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGli
cmFyeS9kZDM3NDA4MS5hc3B4CiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvZmYzODE0MDcuYXNweAotICAgIGF1dG8gYnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTx3Y2hhcl90W10+KGJ1ZmZlckxlbmd0aCk7Ci0gICAgRFdPUkQg
bGVuZ3RoTm90SW5jbHVkaW5nTnVsbCA9IDo6R2V0Q3VycmVudERpcmVjdG9yeVcoYnVmZmVyTGVu
Z3RoLCBidWZmZXIuZ2V0KCkpOwotICAgIFN0cmluZyBkaXJlY3RvcnlTdHJpbmcgPSB3Y2hhclRv
U3RyaW5nKGJ1ZmZlci5nZXQoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CisgICAgVmVjdG9y
PHdjaGFyX3Q+IGJ1ZmZlcihidWZmZXJMZW5ndGgpOworICAgIERXT1JEIGxlbmd0aE5vdEluY2x1
ZGluZ051bGwgPSA6OkdldEN1cnJlbnREaXJlY3RvcnlXKGJ1ZmZlckxlbmd0aCwgYnVmZmVyLmRh
dGEoKSk7CisgICAgU3RyaW5nIGRpcmVjdG9yeVN0cmluZyA9IHdjaGFyVG9TdHJpbmcoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoTm90SW5jbHVkaW5nTnVsbCk7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9y
dCBuZXR3b3JrIHBhdGggbGlrZSBcXGhvc3Rcc2hhcmVcPHBhdGggbmFtZT4uCiAgICAgaWYgKGRp
cmVjdG9yeVN0cmluZy5zdGFydHNXaXRoKCJcXFxcIikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAjZWxzZQotICAgIGF1dG8gYnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+
KFBBVEhfTUFYKTsKLSAgICBpZiAoIWdldGN3ZChidWZmZXIuZ2V0KCksIFBBVEhfTUFYKSkKKyAg
ICBWZWN0b3I8Y2hhcj4gYnVmZmVyKFBBVEhfTUFYKTsKKyAgICBpZiAoIWdldGN3ZChidWZmZXIu
ZGF0YSgpLCBQQVRIX01BWCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgU3Ry
aW5nIGRpcmVjdG9yeVN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKKyAg
ICBTdHJpbmcgZGlyZWN0b3J5U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZGF0YSgp
KTsKICNlbmRpZgogICAgIGlmIChkaXJlY3RvcnlTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAppbmRleCA0Y2Y4YzZkNGVkOWYxYTMxMmM0MTQzZTU0YjEwMjZiNTU3YTYwMDZiLi4zYTFl
YTM3NDgyNDFhNGMwZDZhNTdmMmJkZjE4YWQ2NjUyNWIxZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcApAQCAtNDcsNyArNDcsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKIAotSW5zdHJ1Y3Rpb24qIERhdGE6OnNfZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zID0gMDsKK0luc3RydWN0aW9uIERhdGE6OnNfZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zW21heE9wY29kZUxlbmd0aCArIDFdID0geyB9OwogT3Bjb2RlIERhdGE6OnNfb3Bjb2RlTWFw
W251bU9wY29kZUlEc10gPSB7IH07CiBPcGNvZGVTdGF0c0FycmF5KiBEYXRhOjpzX29wY29kZVN0
YXRzQXJyYXkgPSBudWxscHRyOwogCkBAIC01Nyw4ICs1Nyw2IEBAIGV4dGVybiAiQyIgdm9pZCBs
bGludF9lbnRyeSh2b2lkKik7CiAKIHZvaWQgaW5pdGlhbGl6ZSgpCiB7Ci0gICAgRGF0YTo6c19l
eGNlcHRpb25JbnN0cnVjdGlvbnMgPSBuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV07Ci0KICNpZiAhRU5BQkxFKEpJVCkKICAgICBDTG9vcDo6aW5pdGlhbGl6ZSgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggNjAyZGQ2NDZlNTczYjg2MWI1
YjI2ZmM4NjM1ZGY1NDc0NjA5Y2E3Yi4uMzAxZDA3N2VjYmI1OWU2NjU1Nzk2ODg4NTQ3MWQwMjQy
ZGM2NGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtNjYs
NyArNjYsNyBAQCBjbGFzcyBEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXNldFN0YXRzKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2F2ZVN0YXRzKCk7CiAKLSAgICBzdGF0aWMgSW5zdHJ1Y3Rpb24qIHNf
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIHN0YXRpYyBJbnN0cnVjdGlvbiBzX2V4Y2VwdGlv
bkluc3RydWN0aW9uc1ttYXhPcGNvZGVMZW5ndGggKyAxXTsKICAgICBzdGF0aWMgT3Bjb2RlIHNf
b3Bjb2RlTWFwW251bU9wY29kZUlEc107CiAgICAgc3RhdGljIE9wY29kZVN0YXRzQXJyYXkqIHNf
b3Bjb2RlU3RhdHNBcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJnTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5o
CmluZGV4IDM5MTg5Zjg3ZDI1ZWRiNTdjMmVhMjI4MzUwNGY2MTFmNTI1MGUxNmUuLjYzYzJkZTkx
M2ZkZjRkYjVlNTRhY2ZlMmVhYjRhZGRmOTBlYzMyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcmdMaXN0LmgKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciA6IHB1YmxpYyBSZWNvcmRPdmVyZmxvdyB7CiB9OwogCiBjbGFzcyBBcmdMaXN0IHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgSW50ZXJwcmV0
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCmluZGV4IDQ3ZjNhNWYxYmZkMmE1OTA2NDY1
NjFjNzJiYjQ0YzIxMzcyNmI2MDQuLmQ2MmQxMDYwZWQ2NGVhYzI4MmYwNmNmZTI1YzY5MTMyOTFl
ZmNjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNzAsNyArNzEsNyBAQCBj
bGFzcyBTdHJ1Y3R1cmVDaGFpbiBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmb3Ig
KEpTT2JqZWN0KiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0
cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdChjdXJyZW50KSkKICAgICAgICAgICAg
ICsrc2l6ZTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT5bXT4gdmVjdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPltd
PihzaXplICsgMSk7CisgICAgICAgIGF1dG8gdmVjdG9yID0gbWFrZVVuaXF1ZUFycmF5PFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+PihzaXplICsgMSk7CiAKICAgICAgICAgc2l6ZV90IGkgPSAwOwog
ICAgICAgICBmb3IgKEpTT2JqZWN0KiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9
IGN1cnJlbnQtPnN0cnVjdHVyZSh2bSktPnN0b3JlZFByb3RvdHlwZU9iamVjdChjdXJyZW50KSkK
QEAgLTg1LDcgKzg2LDcgQEAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgU3Ry
dWN0dXJlQ2hhaW4oVk0mLCBTdHJ1Y3R1cmUqKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT5bXT4gbV92ZWN0b3I7CisgICAgVW5pcXVlQXJyYXk8V3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4+IG1fdmVjdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCmlu
ZGV4IGEyMDI1YWYxNjRlM2VlNTg3YmYzMDI1MTZlZGNhY2Y5MjljMWUxMjUuLjhlZWIzOTFkYWY0
YjQxMGI2ODE2N2FmMGU2MTk1NmU4NDc5NTRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBTdHJ1Y3R1cmVJRFRhYmxlOjpTdHJ1Y3R1cmVJRFRhYmxlKCkKICAg
ICA6IG1fZmlyc3RGcmVlT2Zmc2V0KDApCi0gICAgLCBtX3RhYmxlKHN0ZDo6bWFrZV91bmlxdWU8
U3RydWN0dXJlT3JPZmZzZXRbXT4oc19pbml0aWFsU2l6ZSkpCisgICAgLCBtX3RhYmxlKG1ha2VV
bmlxdWVBcnJheTxTdHJ1Y3R1cmVPck9mZnNldD4oc19pbml0aWFsU2l6ZSkpCiAgICAgLCBtX3Np
emUoMCkKICAgICAsIG1fY2FwYWNpdHkoc19pbml0aWFsU2l6ZSkKIHsKQEAgLTQ1LDcgKzQ1LDcg
QEAgU3RydWN0dXJlSURUYWJsZTo6U3RydWN0dXJlSURUYWJsZSgpCiB2b2lkIFN0cnVjdHVyZUlE
VGFibGU6OnJlc2l6ZShzaXplX3QgbmV3Q2FwYWNpdHkpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBu
ZXcgdGFibGUuCi0gICAgYXV0byBuZXdUYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3RydWN0dXJl
T3JPZmZzZXRbXT4obmV3Q2FwYWNpdHkpOworICAgIGF1dG8gbmV3VGFibGUgPSBtYWtlVW5pcXVl
QXJyYXk8U3RydWN0dXJlT3JPZmZzZXQ+KG5ld0NhcGFjaXR5KTsKIAogICAgIC8vIENvcHkgdGhl
IGNvbnRlbnRzIG9mIHRoZSBvbGQgdGFibGUgdG8gdGhlIG5ldyB0YWJsZS4KICAgICBtZW1jcHko
bmV3VGFibGUuZ2V0KCksIHRhYmxlKCksIG1fY2FwYWNpdHkgKiBzaXplb2YoU3RydWN0dXJlT3JP
ZmZzZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlE
VGFibGUuaAppbmRleCBhMmM1OGRmNjBhYzQ1MjQ5NjZiODJhNmM3MzMwOWVkMjU2YzhiMTY5Li43
Nzg5ZGY4OTU5ZjdmZWQ1ZTAwMmE2NGE2MzNmNmI5MTRmYmJjZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTA3LDEwICsxMDgsMTAgQEAgY2xhc3MgU3RydWN0dXJlSURUYWJsZSB7CiAg
ICAgCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzX2luaXRpYWxTaXplID0gMjU2OwogCi0gICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTdHJ1Y3R1cmVPck9mZnNldFtdPj4gbV9vbGRUYWJsZXM7
CisgICAgVmVjdG9yPFVuaXF1ZUFycmF5PFN0cnVjdHVyZU9yT2Zmc2V0Pj4gbV9vbGRUYWJsZXM7
CiAKICAgICB1aW50MzJfdCBtX2ZpcnN0RnJlZU9mZnNldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
U3RydWN0dXJlT3JPZmZzZXRbXT4gbV90YWJsZTsKKyAgICBVbmlxdWVBcnJheTxTdHJ1Y3R1cmVP
ck9mZnNldD4gbV90YWJsZTsKIAogICAgIHNpemVfdCBtX3NpemU7CiAgICAgc2l6ZV90IG1fY2Fw
YWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXJMb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVy
TG9nLmNwcAppbmRleCBmZjBhNzYxNzM5NGE0OWRkM2Q4ZmJhYzhjYmNhZTY4YWYzZTRmNWUxLi4w
OWQ0MjIwNWY2Yjk5ODMyZjM5Zjk5YzcyOTExODg1MmZmOGIzNjljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXJMb2cuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5jcHAKQEAgLTQxLDEzICs0
MSwxMyBAQCBuYW1lc3BhY2UgVHlwZVByb2ZpbGVyTG9nSW50ZXJuYWwgewogc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogfQogCi12b2lkIFR5cGVQcm9maWxlckxvZzo6aW5pdGlh
bGl6ZUxvZygpCitUeXBlUHJvZmlsZXJMb2c6OlR5cGVQcm9maWxlckxvZygpCisgICAgOiBtX2xv
Z1NpemUoNTAwMDApCisgICAgLCBtX2xvZ1N0YXJ0UHRyKG5ldyBMb2dFbnRyeVttX2xvZ1NpemVd
KQorICAgICwgbV9jdXJyZW50TG9nRW50cnlQdHIobV9sb2dTdGFydFB0cikKKyAgICAsIG1fbG9n
RW5kUHRyKG1fbG9nU3RhcnRQdHIgKyBtX2xvZ1NpemUpCiB7CiAgICAgQVNTRVJUKCFtX2xvZ1N0
YXJ0UHRyKTsKLSAgICBtX2xvZ1NpemUgPSA1MDAwMDsKLSAgICBtX2xvZ1N0YXJ0UHRyID0gbmV3
IExvZ0VudHJ5W21fbG9nU2l6ZV07Ci0gICAgbV9jdXJyZW50TG9nRW50cnlQdHIgPSBtX2xvZ1N0
YXJ0UHRyOwotICAgIG1fbG9nRW5kUHRyID0gbV9sb2dTdGFydFB0ciArIG1fbG9nU2l6ZTsKIH0K
IAogVHlwZVByb2ZpbGVyTG9nOjp+VHlwZVByb2ZpbGVyTG9nKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlckxvZy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyTG9nLmgKaW5kZXggOWI1N2NjNTg2NzBmNDU5
OTE1ZWNlZGU2YzEzZWFhNTU4NTg0OWYxNy4uMzk0MTkzMzQ4YzZlOTQwNDQwMzljY2VjNjc4YTMz
MGJiODg0M2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVByb2ZpbGVyTG9nLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVBy
b2ZpbGVyTG9nLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgVHlwZVByb2ZpbGVyTG9nIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgTG9nRW50cnkg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgog
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCkBAIC01MiwxMiAr
NTMsNyBAQCBjbGFzcyBUeXBlUHJvZmlsZXJMb2cgewogICAgIH07CiAKIAotICAgIFR5cGVQcm9m
aWxlckxvZygpCi0gICAgICAgIDogbV9sb2dTdGFydFB0cigwKQotICAgIHsKLSAgICAgICAgaW5p
dGlhbGl6ZUxvZygpOwotICAgIH0KLQorICAgIFR5cGVQcm9maWxlckxvZygpOwogICAgIH5UeXBl
UHJvZmlsZXJMb2coKTsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJvY2Vzc0xvZ0Vu
dHJpZXMoY29uc3QgU3RyaW5nJik7CkBAIC03MSw4ICs2Nyw2IEBAIGNsYXNzIFR5cGVQcm9maWxl
ckxvZyB7CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKLSAgICB2b2lkIGluaXRpYWxpemVMb2coKTsKLQogICAgIHVuc2lnbmVkIG1fbG9nU2l6ZTsK
ICAgICBMb2dFbnRyeSogbV9sb2dTdGFydFB0cjsKICAgICBMb2dFbnRyeSogbV9jdXJyZW50TG9n
RW50cnlQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggY2U2ZTRjMWY0
NWNiOWViOWU1ODVlNzJiZGMwZTcwYWI2N2JhZWZiYi4uYjY2N2VkNzJlNjUyMzMxNDc2NWEyMDI4
MWZmYWIzNDM1MTZhNzJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
NTM2LDExICs1MzYsNiBAQCBWTTo6flZNKCkKICAgICBkZWxldGUgY2xpZW50RGF0YTsKICAgICBk
ZWxldGUgbV9yZWdFeHBDYWNoZTsKIAotI2lmIEVOQUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VY
UFJFU1NJT05TKQotICAgIGlmIChtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIpCi0gICAgICAg
IGRlbGV0ZVtdIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKLSNlbmRpZgotCiAjaWYgRU5B
QkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIGRlbGV0ZSBtX3J0VHJhY2VMaXN0OwogI2VuZGlmCkBA
IC05MDcsOCArOTAyLDggQEAgY2hhciogVk06OmFjcXVpcmVSZWdFeHBQYXR0ZXJuQ29udGV4QnVm
ZmVyKCkKIAogICAgIG1fcmVnRXhwUGF0dGVybkNvbnRleHRMb2NrLmxvY2soKTsKICAgICBpZiAo
IW1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcikKLSAgICAgICAgbV9yZWdFeHBQYXR0ZXJuQ29u
dGV4QnVmZmVyID0gbmV3IGNoYXJbVk06OnBhdHRlcm5Db250ZXh0QnVmZmVyU2l6ZV07Ci0gICAg
cmV0dXJuIG1fcmVnRXhwUGF0dGVybkNvbnRleEJ1ZmZlcjsKKyAgICAgICAgbV9yZWdFeHBQYXR0
ZXJuQ29udGV4QnVmZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KFZNOjpwYXR0ZXJuQ29udGV4
dEJ1ZmZlclNpemUpOworICAgIHJldHVybiBtX3JlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIuZ2V0
KCk7CiB9CiAKIHZvaWQgVk06OnJlbGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGQ3M2ZjNmI5NzQ2OGM4YjQxZGExZWEwZmY4
OTA4ZGRmZDNkYjQyYTUuLjc2ZGIwNTgyZmFmM2EyNmIxNTY3ZjI5ODQ5NWI2ODFmODhmNWJkMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNjksNiArNjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU3BlY2lmaWMuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TeW1ib2xSZWdpc3RyeS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTY4
NSw3ICs2ODYsNyBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4s
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogCiAjaWYgRU5BQkxFKFlBUlJfSklU
X0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGF0
dGVybkNvbnRleHRCdWZmZXJTaXplID0gODE5MjsgLy8gU3BhY2UgYWxsb2NhdGVkIHRvIHNhdmUg
bmVzdGVkIHBhcmVudGhlc2lzIGNvbnRleHQKLSAgICBjaGFyKiBtX3JlZ0V4cFBhdHRlcm5Db250
ZXhCdWZmZXIgeyBudWxscHRyIH07CisgICAgVW5pcXVlQXJyYXk8Y2hhcj4gbV9yZWdFeHBQYXR0
ZXJuQ29udGV4QnVmZmVyOwogICAgIExvY2sgbV9yZWdFeHBQYXR0ZXJuQ29udGV4dExvY2s7CiAg
ICAgY2hhciogYWNxdWlyZVJlZ0V4cFBhdHRlcm5Db250ZXhCdWZmZXIoKTsKICAgICB2b2lkIHJl
bGVhc2VSZWdFeHBQYXR0ZXJuQ29udGV4QnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJl
Z0V4cC5jcHAKaW5kZXggZTQzOGY1NjA0YjcwZDI2OThhYjNmNzk5NGE1NDAxYzljYmFiM2FkYy4u
ZjE5ODRiNWI4MDg4ZDU0OTY1MjY1ZmZkNDkwNjg0ZjM5ZjQ2N2Y5YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmICFP
UyhXSU5ET1dTKQpAQCAtNDE2LDcgKzQxNyw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAg
ICAgVmVjdG9yPGNoYXI+IHNjcmlwdEJ1ZmZlcjsKICAgICB1bnNpZ25lZCB0ZXN0cyA9IDA7CiAg
ICAgdW5zaWduZWQgZmFpbHVyZXMgPSAwOwotICAgIGNoYXIqIGxpbmVCdWZmZXIgPSBuZXcgY2hh
cltNYXhMaW5lTGVuZ3RoICsgMV07CisgICAgVmVjdG9yPGNoYXI+IGxpbmVCdWZmZXIoTWF4TGlu
ZUxlbmd0aCArIDEpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC00
MzUsNyArNDM2LDcgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICAgICAgdW5zaWduZWQg
aW50IGxpbmVOdW1iZXIgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiByZWdleHBFcnJvciA9IG51
bGxwdHI7CiAKLSAgICAgICAgd2hpbGUgKChsaW5lUHRyID0gZmdldHMoJmxpbmVCdWZmZXJbMF0s
IE1heExpbmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkgeworICAgICAgICB3aGlsZSAoKGxpbmVQ
dHIgPSBmZ2V0cyhsaW5lQnVmZmVyLmRhdGEoKSwgTWF4TGluZUxlbmd0aCwgdGVzdENhc2VzRmls
ZSkpKSB7CiAgICAgICAgICAgICBsaW5lTGVuZ3RoID0gc3RybGVuKGxpbmVQdHIpOwogICAgICAg
ICAgICAgaWYgKGxpbmVQdHJbbGluZUxlbmd0aCAtIDFdID09ICdcbicpIHsKICAgICAgICAgICAg
ICAgICBsaW5lUHRyW2xpbmVMZW5ndGggLSAxXSA9ICdcMCc7CkBAIC00ODQsOCArNDg1LDYgQEAg
c3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICBlbHNlCiAgICAgICAgIHByaW50ZigiJXUgdGVz
dHMgcGFzc2VkXG4iLCB0ZXN0cyk7CiAKLSAgICBkZWxldGVbXSBsaW5lQnVmZmVyOwotCiAjaWYg
RU5BQkxFKFJFR0VYUF9UUkFDSU5HKQogICAgIHZtLmR1bXBSZWdFeHBUcmFjZSgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCmluZGV4IGNk
OTFlZTFhNGUwMzBlOGU4Y2FhMTVjYTdmOWVhYWFhNDEwMmNlY2EuLmE3ZjkyN2Y5YjlmMDVhMTYx
ZDA2ZGQ5MDJhMTFlZmNjMjA2MmQyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9IZWFwVmVyaWZpZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEhlYXBWZXJpZmllcjo6SGVhcFZl
cmlmaWVyKEhlYXAqIGhlYXAsIHVuc2lnbmVkIG51bWJlck9mR0NDeWNsZXNUb1JlY29yZCkKICAg
ICAsIG1fbnVtYmVyT2ZDeWNsZXMobnVtYmVyT2ZHQ0N5Y2xlc1RvUmVjb3JkKQogewogICAgIFJF
TEVBU0VfQVNTRVJUKG1fbnVtYmVyT2ZDeWNsZXMgPiAwKTsKLSAgICBtX2N5Y2xlcyA9IHN0ZDo6
bWFrZV91bmlxdWU8R0NDeWNsZVtdPihtX251bWJlck9mQ3ljbGVzKTsKKyAgICBtX2N5Y2xlcyA9
IG1ha2VVbmlxdWVBcnJheTxHQ0N5Y2xlPihtX251bWJlck9mQ3ljbGVzKTsKIH0KIAogY29uc3Qg
Y2hhciogSGVhcFZlcmlmaWVyOjpwaGFzZU5hbWUoSGVhcFZlcmlmaWVyOjpQaGFzZSBwaGFzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuaAppbmRleCA0ODI0YjFj
NmIzZTZmYWIyYmEyYTdkODIxMWU3OWUwNzg3ZmM0OTQzLi5jYzIwMWM0YTI4MGM4OWU3NTFkNGEz
NWU2MTBhZDI2OGU1MTUzZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSGVhcFZlcmlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBW
ZXJpZmllci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2VsbExpc3QuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTY0LDYgKzY1LDggQEAg
Y2xhc3MgSGVhcFZlcmlmaWVyIHsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgR0NDeWNsZSB7Cisg
ICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKwogICAgICAgICBHQ0N5Y2xl
KCkKICAgICAgICAgICAgIDogYmVmb3JlKCJCZWZvcmUgTWFya2luZyIpCiAgICAgICAgICAgICAs
IGFmdGVyKCJBZnRlciBNYXJraW5nIikKQEAgLTEwNyw3ICsxMTAsNyBAQCBjbGFzcyBIZWFwVmVy
aWZpZXIgewogICAgIGludCBtX2N1cnJlbnRDeWNsZTsKICAgICBpbnQgbV9udW1iZXJPZkN5Y2xl
czsKICAgICBib29sIG1fZGlkUHJpbnRMb2dzIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8R0NDeWNsZVtdPiBtX2N5Y2xlczsKKyAgICBVbmlxdWVBcnJheTxHQ0N5Y2xlPiBtX2N5Y2xl
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNjBhMjViZjM2MzdmYTU5NjYyYTU1Yjk1NmRkYWVkZTgzZWFmNWNl
MC4uZWJhYTU1MTFkMTBkZGY0ZjQzNmI1NjY5ZmJiYmVjMWUwYjE4N2NlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDIsNiArNjAyLDcgQEAKIAkJREU1
QTA5RkIxQkEzNjk5MjAwM0Q0NDI0IC8qIENvbW1vbkNyeXB0b1NQSS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25DcnlwdG9TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTE1NTU2RjMxOEEwQ0MxODAwNkY0OEZCIC8qIENyeXB0b2dyYXBoaWNVdGls
aXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvZ3Jh
cGhpY1V0aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxNTU1NkY0
MThBMENDMTgwMDZGNDhGQiAvKiBDcnlwdG9ncmFwaGljVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMwMEU1MjEyMDNENjQ1RjAwREE3OUJFIC8qIFVuaXF1ZUFy
cmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaXF1ZUFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTFGQjE1MUYwQTU2OEIwMDNDMDhERSAvKiBU
aHJlYWRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJl
YWRHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMTFGQjE2MUYwQTU2
OEIwMDNDMDhERSAvKiBUaHJlYWRHcm91cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzIwMEFC
NDFFOUE1MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1SZWdpc3RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg1NSwxMCArODU2LDEwIEBACiAJCQkJQThBNDcyN0YxNTFBODI1QTAwNDEy
M0ZGIC8qIERpc3BhdGNoUHRyLmggKi8sCiAJCQkJMEY0NTcwNDIxQkU1QjU4RjAwNjJBNjI5IC8q
IERvbWluYXRvcnMuaCAqLywKIAkJCQlBOEE0NzI4MDE1MUE4MjVBMDA0MTIzRkYgLyogRG91Ymx5
TGlua2VkTGlzdC5oICovLAotCQkJCUZFMDVGQUU2MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1iUHRy
VHJhaXRzLmggKi8sCi0JCQkJQUQ2NTNEQTgyMDA2QjZDMjAwRDgyMEQ3IC8qIER1bWJWYWx1ZVRy
YWl0cy5oICovLAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEwMDQxMjNGRiAvKiBkdG9hLmNwcCAqLywK
IAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5oICovLAorCQkJCUZFMDVGQUU2
MUZEQjIxNDMwMDA5MzIzMCAvKiBEdW1iUHRyVHJhaXRzLmggKi8sCisJCQkJQUQ2NTNEQTgyMDA2
QjZDMjAwRDgyMEQ3IC8qIER1bWJWYWx1ZVRyYWl0cy5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJD
RjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3QzQzNEExREQyQTRBNzAwMjY4
ODhCIC8qIEV4cGVjdGVkLmggKi8sCiAJCQkJQThBNDcyOUYxNTFBODI1QTAwNDEyM0ZGIC8qIEV4
cG9ydE1hY3Jvcy5oICovLApAQCAtMTA4Myw2ICsxMDg0LDcgQEAKIAkJCQkxNDlFRjE2MjE2QkJG
RTBEMDAwQTQzMzEgLyogVHJpU3RhdGUuaCAqLywKIAkJCQk4M0ZCQTkzMTE5REY0NTk3MDBGMzBB
REIgLyogVHlwZUNhc3RzLmggKi8sCiAJCQkJQThBNDczNUMxNTFBODI1QjAwNDEyM0ZGIC8qIFVu
aW9uRmluZC5oICovLAorCQkJCUUzMDBFNTIxMjAzRDY0NUYwMERBNzlCRSAvKiBVbmlxdWVBcnJh
eS5oICovLAogCQkJCTVDN0M4OEQzMUQwQTNBMEEwMDlEMkY2RCAvKiBVbmlxdWVSZWYuaCAqLywK
IAkJCQlDRDc2MDBGRjFGOTBBM0NBMDAwMjZFMjYgLyogVW5zYWZlUG9pbnRlci5oICovLAogCQkJ
CTdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAqLywKQEAgLTEwOTIsNyArMTA5
NCw2IEBACiAJCQkJQThBNDczNzAxNTFBODI1QjAwNDEyM0ZGIC8qIFZlY3Rvci5oICovLAogCQkJ
CUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBWZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlBOEE0
NzM3MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggKi8sCi0JCQkJRkUwNUZBRkUxRkU1MDA3
NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovLAogCQkJCTBGNjZCMjg4MURDOTdCQUIw
MDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgKi8sCiAJCQkJMEY2NkIyODkxREM5N0JBQjAwNEExRDNG
IC8qIFdhbGxUaW1lLmggKi8sCiAJCQkJOTc0Q0ZDOEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQ
dHIuaCAqLywKQEAgLTExMDEsNiArMTEwMiw3IEBACiAJCQkJMEZFNDQ3OUIxQjdBQUEwMzAwOTQ5
OEVCIC8qIFdvcmRMb2NrLmggKi8sCiAJCQkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5jcHAgKi8sCiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1
ZS5oICovLAorCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNw
cCAqLywKIAkJCSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTE0MjQsNyArMTQyNiw2IEBACiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENs
b2NrVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYg
LyogQ29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUxQTgy
NUIwMDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1RkFG
RjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJI
YXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAv
KiBDb3VudGluZ0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNTMzLDYgKzE1MzQsNyBAQAog
CQkJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBXb3JkTG9jay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFNEEwQUQzOTFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNz
ZXJ0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ0NTE1MUE4MjVCMDA0MTIzRkYg
LyogV1RGU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXNz
ZXJ0aW9ucy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcAppbmRleCAwNjEwOTNh
Y2M5ZTk3OTExMTRmYzZjMTViYTFlMmNhYzMwYjA5YTZlLi4wZDk3M2U2NDcwOTdhYTU5MzI0Mjlj
NTgxNjliYWFlNjAxMDljNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25z
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmNwcApAQCAtMTUwLDEyICsxNTAs
MTIgQEAgc3RhdGljIHZvaWQgdnByaW50Zl9zdGRlcnJfd2l0aF9wcmVmaXgoY29uc3QgY2hhciog
cHJlZml4LCBjb25zdCBjaGFyKiBmb3JtYXQsIHYKIHsKICAgICBzaXplX3QgcHJlZml4TGVuZ3Ro
ID0gc3RybGVuKHByZWZpeCk7CiAgICAgc2l6ZV90IGZvcm1hdExlbmd0aCA9IHN0cmxlbihmb3Jt
YXQpOwotICAgIGF1dG8gZm9ybWF0V2l0aFByZWZpeCA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltd
PihwcmVmaXhMZW5ndGggKyBmb3JtYXRMZW5ndGggKyAxKTsKLSAgICBtZW1jcHkoZm9ybWF0V2l0
aFByZWZpeC5nZXQoKSwgcHJlZml4LCBwcmVmaXhMZW5ndGgpOwotICAgIG1lbWNweShmb3JtYXRX
aXRoUHJlZml4LmdldCgpICsgcHJlZml4TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7Cisg
ICAgVmVjdG9yPGNoYXI+IGZvcm1hdFdpdGhQcmVmaXgocHJlZml4TGVuZ3RoICsgZm9ybWF0TGVu
Z3RoICsgMSk7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpLCBwcmVmaXgsIHBy
ZWZpeExlbmd0aCk7CisgICAgbWVtY3B5KGZvcm1hdFdpdGhQcmVmaXguZGF0YSgpICsgcHJlZml4
TGVuZ3RoLCBmb3JtYXQsIGZvcm1hdExlbmd0aCk7CiAgICAgZm9ybWF0V2l0aFByZWZpeFtwcmVm
aXhMZW5ndGggKyBmb3JtYXRMZW5ndGhdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1v
bihmb3JtYXRXaXRoUHJlZml4LmdldCgpLCBhcmdzKTsKKyAgICB2cHJpbnRmX3N0ZGVycl9jb21t
b24oZm9ybWF0V2l0aFByZWZpeC5kYXRhKCksIGFyZ3MpOwogfQogCiBzdGF0aWMgdm9pZCB2cHJp
bnRmX3N0ZGVycl93aXRoX3RyYWlsaW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0IGFyZ3MpCkBAIC0xNjYsMTIgKzE2NiwxMiBAQCBzdGF0aWMgdm9pZCB2cHJpbnRmX3N0ZGVy
cl93aXRoX3RyYWlsaW5nX25ld2xpbmUoY29uc3QgY2hhciogZm9ybWF0LCB2YV9saXN0IGFyZwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBmb3JtYXRXaXRoTmV3bGluZSA9IHN0
ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihmb3JtYXRMZW5ndGggKyAyKTsKLSAgICBtZW1jcHkoZm9y
bWF0V2l0aE5ld2xpbmUuZ2V0KCksIGZvcm1hdCwgZm9ybWF0TGVuZ3RoKTsKKyAgICBWZWN0b3I8
Y2hhcj4gZm9ybWF0V2l0aE5ld2xpbmUoZm9ybWF0TGVuZ3RoICsgMik7CisgICAgbWVtY3B5KGZv
cm1hdFdpdGhOZXdsaW5lLmRhdGEoKSwgZm9ybWF0LCBmb3JtYXRMZW5ndGgpOwogICAgIGZvcm1h
dFdpdGhOZXdsaW5lW2Zvcm1hdExlbmd0aF0gPSAnXG4nOwogICAgIGZvcm1hdFdpdGhOZXdsaW5l
W2Zvcm1hdExlbmd0aCArIDFdID0gMDsKIAotICAgIHZwcmludGZfc3RkZXJyX2NvbW1vbihmb3Jt
YXRXaXRoTmV3bGluZS5nZXQoKSwgYXJncyk7CisgICAgdnByaW50Zl9zdGRlcnJfY29tbW9uKGZv
cm1hdFdpdGhOZXdsaW5lLmRhdGEoKSwgYXJncyk7CiB9CiAKICNpZiBDT01QSUxFUihHQ0NfT1Jf
Q0xBTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDIyMGJhZmQzNDhiMzA2MzM4M2FiN2E1NDJk
YzJlZGUxMTFhYzcwODUuLmU5N2QwNjE5M2MwYTFkZmZjODMwZTBjYTdkZTY5ZTUwOWQ2NTk3YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzMsNiArMjMzLDcgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgVW5leHBlY3RlZC5oCiAgICAgVW5pU3RkRXh0cmFzLmgKICAgICBVbmlvbkZpbmQuaAor
ICAgIFVuaXF1ZUFycmF5LmgKICAgICBVbmlxdWVSZWYuaAogICAgIFVuc2FmZVBvaW50ZXIuaAog
ICAgIFZNVGFncy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggN2VjMjFhZTc5ODUwNzRmNjM5ZGY0YmFj
YjAwMzZhZTFmYzdlMDI2YS4uNjY3MmNlNDZkOWYxYzJiNDNhMzkxZTU0YjY2MjQ0M2YwOGY5Mzlm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAwLDYgKzIwMCwyNiBAQCBzdHJ1Y3QgRmFzdE1hbGxv
YyB7CiAgICAgc3RhdGljIHZvaWQgZnJlZSh2b2lkKiBwKSB7IGZhc3RGcmVlKHApOyB9CiB9Owog
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVlIHsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsKKworICAg
IHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgZmFzdEZy
ZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIp
KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IEZhc3RGcmVlPFRb
XT4geworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSwgIiIpOworCisgICAgdm9pZCBvcGVyYXRvcigpKFQqIHBvaW50ZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2
PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgIH0KK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgog
CiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtMjA4LDYgKzIyOCw3IEBAIHVzaW5nIFdURjo6ZmFz
dFNldE1heFNpbmdsZUFsbG9jYXRpb25TaXplOwogCiB1c2luZyBXVEY6OkZhc3RBbGxvY2F0b3I7
CiB1c2luZyBXVEY6OkZhc3RNYWxsb2M7Cit1c2luZyBXVEY6OkZhc3RGcmVlOwogdXNpbmcgV1RG
Ojppc0Zhc3RNYWxsb2NFbmFibGVkOwogdXNpbmcgV1RGOjpmYXN0Q2FsbG9jOwogdXNpbmcgV1RG
OjpmYXN0RnJlZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01hbGxvY1B0ci5oIGIvU291
cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKaW5kZXggN2Y2YTAyY2VmMzFiMWEyOWZhYzYzODRjZDJh
Y2UzZThmNzUwYzBiYS4uNjZmMTBhYTliZDViYmEwOWFjNTYxMTM2YWQzNWJmNWU4NGU0OGZjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFsbG9jUHRyLmgKKysrIGIvU291cmNlL1dURi93
dGYvTWFsbG9jUHRyLmgKQEAgLTY2LDYgKzY2LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIE1hbGxvYyA9IEZhc3RNYWxsb2M+IGNsYXNzIE1hbGxvY1B0ciB7CiAgICAgICAgIHJl
dHVybiBzdGQ6OmV4Y2hhbmdlKG1fcHRyLCBudWxscHRyKTsKICAgICB9CiAKKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAg
ICB9CisKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
IW1fcHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RhY2tTaG90LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TdGFja1Nob3QuaAppbmRleCA2ZWZkMDc0ZGUyNzA5ZTYyN2FjZWIzYzgzYjk0MzMx
MzQyZjc1YWZkLi43ZTMyYTM1YmFlM2M3YjU2YThiZTg1YjdkMThkMWU1NTc5YTBiM2ZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja1Nob3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9T
dGFja1Nob3QuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3Bh
Y2UgV1RGIHsKIApAQCAtMzcsNyArMzgsNyBAQCBjbGFzcyBTdGFja1Nob3QgewogICAgICAgICA6
IG1fc2l6ZShzaXplKQogICAgIHsKICAgICAgICAgaWYgKHNpemUpIHsKLSAgICAgICAgICAgIG1f
YXJyYXkgPSBzdGQ6Om1ha2VfdW5pcXVlPHZvaWQqW10+KHNpemUpOworICAgICAgICAgICAgbV9h
cnJheSA9IG1ha2VVbmlxdWVBcnJheTx2b2lkKj4oc2l6ZSk7CiAgICAgICAgICAgICBpbnQgaW50
U2l6ZSA9IHNpemU7CiAgICAgICAgICAgICBXVEZHZXRCYWNrdHJhY2UobV9hcnJheS5nZXQoKSwg
JmludFNpemUpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbnRTaXplKSA8PSBzaXplKTsKQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgU3RhY2tTaG90IHsK
ICAgICAKICAgICBTdGFja1Nob3QmIG9wZXJhdG9yPShjb25zdCBTdGFja1Nob3QmIG90aGVyKQog
ICAgIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHZvaWQqW10+IG5ld0FycmF5ID0gc3RkOjpt
YWtlX3VuaXF1ZTx2b2lkKltdPihvdGhlci5tX3NpemUpOworICAgICAgICBhdXRvIG5ld0FycmF5
ID0gbWFrZVVuaXF1ZUFycmF5PHZvaWQqPihvdGhlci5tX3NpemUpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gb3RoZXIubV9zaXplOyBpLS07KQogICAgICAgICAgICAgbmV3QXJyYXlbaV0gPSBv
dGhlci5tX2FycmF5W2ldOwogICAgICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CkBAIC0xMDYs
OCArMTA3LDggQEAgY2xhc3MgU3RhY2tTaG90IHsKICAgICAKIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQqKiBkZWxldGVkVmFsdWVBcnJheSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKio+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpOyB9Ci0gICAgCi0gICAgc3RkOjp1bmlxdWVfcHRy
PHZvaWQqW10+IG1fYXJyYXk7CisKKyAgICBVbmlxdWVBcnJheTx2b2lkKj4gbV9hcnJheTsKICAg
ICBzaXplX3QgbV9zaXplIHsgMCB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U3lzdGVtRnJlZS5oIGIvU291cmNlL1dURi93dGYvU3lzdGVtRnJlZS5oCmluZGV4IDNlZjc1NjI4
MmNmMjBkNDBkOGM2MTg1NDc5NDZkMDRmNWJhZWNlZjUuLjczYjY5M2YwNjgzOGJjYzhjY2M4M2E0
NjhkNGRiYzNhOGFiODJmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TeXN0ZW1GcmVlLmgKQEAgLTMxLDYgKzMxLDggQEAgbmFt
ZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZSB7
CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZh
bHVlLCAiIik7CisKICAgICB2b2lkIG9wZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKICAgICB7
CiAgICAgICAgIGZyZWUoY29uc3RfY2FzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlw
ZSo+KHBvaW50ZXIpKTsKQEAgLTM5LDExICs0MSwxMiBAQCBzdHJ1Y3QgU3lzdGVtRnJlZSB7CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZTxUW10+IHsKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsICIiKTsK
KwogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
ZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlKj4ocG9pbnRl
cikpOwogICAgIH0KLQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9VbmlxdWVBcnJheS5oIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMDFhZDQzNzJkZjEwMzBjNjliMjZiMWQ1MzVlYTE0ZDczZTY0NThiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvVW5pcXVlQXJyYXkuaApAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgorI2luY2x1ZGUgPHd0Zi9G
YXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8Ym9vbCBpc1RyaXZpYWxseURlc3RydWN0aWJsZSwgdHlwZW5hbWUgVD4gc3Ry
dWN0IFVuaXF1ZUFycmF5TWFrZXI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgVW5p
cXVlQXJyYXlNYWtlcjx0cnVlLCBUPiB7CisgICAgdXNpbmcgUmVzdWx0VHlwZSA9IHR5cGVuYW1l
IHN0ZDo6dW5pcXVlX3B0cjxUW10sIEZhc3RGcmVlPFRbXT4+OworCisgICAgc3RhdGljIFJlc3Vs
dFR5cGUgbWFrZShzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIEMrKyBgbmV3IFRbTl1g
IHN0b3JlcyBpdHMgYE5gIHRvIHNvbWV3aGVyZS4gT3RoZXJ3aXNlLCBgZGVsZXRlIFtdYCBjYW5u
b3QgZGVzdHJveQorICAgICAgICAvLyB0aGVzZSBOIGVsZW1lbnRzLiBCdXQgd2UgZG8gbm90IHdh
bnQgdG8gaW5jcmVhc2UgdGhlIHNpemUgb2YgYWxsb2NhdGVkIG1lbW9yeS4KKyAgICAgICAgLy8g
SWYgaXQgaXMgYWNjZXB0YWJsZSwgd2UgY2FuIGp1c3QgdXNlIFZlY3RvcjxUPiBpbnN0ZWFkLiBT
byB0aGlzIFVuaXF1ZUFycmF5PFQ+IG9ubHkKKyAgICAgICAgLy8gYWNjZXB0cyB0aGUgdHlwZSBU
IHdoaWNoIGhhcyBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4gVGhpcyBhbGxvd3MgdXMgdG8gc2tpcCBj
YWxsaW5nCisgICAgICAgIC8vIGRlc3RydWN0b3JzIGZvciBOIGVsZW1lbnRzLiBBbmQgdGhpcyBh
bGxvd3MgVW5pcXVlQXJyYXk8VD4gbm90IHRvIHN0b3JlIGl0cyBOIHNpemUuCisgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZSwgIiIp
OworCisgICAgICAgIC8vIERvIG5vdCB1c2UgcGxhY2VtZW50IG5ldyBsaWtlIGBuZXcgKHN0b3Jh
Z2UpIFRbc2l6ZV0oKWAuIGBuZXcgVFtzaXplXSgpYCByZXF1aXJlcworICAgICAgICAvLyBsYXJn
ZXIgc3RvcmFnZSB0aGFuIHRoZSBgc2l6ZW9mKFQpICogc2l6ZWAgc3RvcmFnZSBzaW5jZSBpdCB3
YW50IHRvIHN0b3JlIGBzaXplYAorICAgICAgICAvLyB0byBzb21ld2hlcmUuCisgICAgICAgIFQq
IHN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYygoQ2hlY2tlZDxzaXplX3Q+KHNp
emVvZihUKSkgKiBzaXplKS51bnNhZmVHZXQoKSkpOworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0
aW9uczxUPjo6Zm9yY2VJbml0aWFsaXplKHN0b3JhZ2UsIHN0b3JhZ2UgKyBzaXplKTsKKyAgICAg
ICAgcmV0dXJuIFJlc3VsdFR5cGUoc3RvcmFnZSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3N0cnVjdCBVbmlxdWVBcnJheU1ha2VyPGZhbHNlLCBUPiB7CisgICAgLy8gU2lu
Y2Ugd2UgZG8gbm90IGtub3cgaG93IHRvIHN0b3JlL3JldHJpZXZlIE4gc2l6ZSB0by9mcm9tIGFs
bG9jYXRlZCBtZW1vcnkgd2hlbiBjYWxsaW5nIG5ldyBbXSBhbmQgZGVsZXRlIFtdLAorICAgIC8v
IHdlIHVzZSBuZXcgW10gYW5kIGRlbGV0ZSBbXSBvcGVyYXRvcnMgc2ltcGx5LiBXZSBjcmVhdGUg
VW5pcXVlQXJyYXlFbGVtZW50IGNvbnRhaW5lciBmb3IgdGhlIHR5cGUgVC4KKyAgICAvLyBVbmlx
dWVBcnJheUVsZW1lbnQgaGFzIG5ldyBbXSBhbmQgZGVsZXRlIFtdIG9wZXJhdG9ycyBmb3IgRmFz
dE1hbGxvYy4gV2UgYWxsb2NhdGUgVW5pcXVlQXJyYXlFbGVtZW50W10gYW5kIGNhc3QKKyAgICAv
LyBpdCB0byBUW10uIFdoZW4gZGVsZXRpbmcsIHRoZSBjdXN0b20gZGVsZXRlciBjYXN0cyBUW10g
dG8gVW5pcXVlQXJyYXlFbGVtZW50W10gYW5kIGRlbGV0ZXMgaXQuCisgICAgY2xhc3MgVW5pcXVl
QXJyYXlFbGVtZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVi
bGljOgorICAgICAgICBzdHJ1Y3QgRGVsZXRlciB7CisgICAgICAgICAgICB2b2lkIG9wZXJhdG9y
KCkoVCogcG9pbnRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgW10g
Yml0d2lzZV9jYXN0PFVuaXF1ZUFycmF5RWxlbWVudCo+KHBvaW50ZXIpOworICAgICAgICAgICAg
fTsKKyAgICAgICAgfTsKKworICAgICAgICBVbmlxdWVBcnJheUVsZW1lbnQoKSA9IGRlZmF1bHQ7
CisKKyAgICAgICAgVCB2YWx1ZSB7IH07CisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihUKSA9PSBzaXplb2YoVW5pcXVlQXJyYXlFbGVtZW50KSwgIiIpOworCisgICAgdXNpbmcgUmVz
dWx0VHlwZSA9IHR5cGVuYW1lIHN0ZDo6dW5pcXVlX3B0cjxUW10sIHR5cGVuYW1lIFVuaXF1ZUFy
cmF5RWxlbWVudDo6RGVsZXRlcj47CisKKyAgICBzdGF0aWMgUmVzdWx0VHlwZSBtYWtlKHNpemVf
dCBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoYml0d2lzZV9jYXN0PFQq
PihuZXcgVW5pcXVlQXJyYXlFbGVtZW50W3NpemVdKCkpKTsKKyAgICB9Cit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgordXNpbmcgVW5pcXVlQXJyYXkgPSB0eXBlbmFtZSBVbmlxdWVBcnJheU1h
a2VyPHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWUsIFQ+OjpSZXN1bHRU
eXBlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorVW5pcXVlQXJyYXk8VD4gbWFrZVVuaXF1ZUFy
cmF5KHNpemVfdCBzaXplKQoreworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX2V4dGVudDxUPjo6dHlwZSwgVD46OnZhbHVlLCAiIik7CisgICAgcmV0
dXJuIFVuaXF1ZUFycmF5TWFrZXI8c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2
YWx1ZSwgVD46Om1ha2Uoc2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBX
VEY6OlVuaXF1ZUFycmF5OwordXNpbmcgV1RGOjptYWtlVW5pcXVlQXJyYXk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4
IGFiY2FiZDA2YzViYWVlNDQ0Y2FlZjVlODBmNDBhYjRkNzZjN2M5MmMuLjI3ZmMxNDUzYTBkMGEw
NjcyZTNkNzQxZTcxNTkyOWY2OTcyZDU1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC02NSwxMCArNjUsMTUgQEAg
c3RydWN0IFZlY3RvckRlc3RydWN0b3I8dHJ1ZSwgVD4KIHRlbXBsYXRlIDxib29sIG5lZWRzSW5p
dGlhbGl6YXRpb24sIGJvb2wgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIHR5cGVuYW1lIFQ+CiBz
dHJ1Y3QgVmVjdG9ySW5pdGlhbGl6ZXI7CiAKLXRlbXBsYXRlPGJvb2wgaWdub3JlLCB0eXBlbmFt
ZSBUPgotc3RydWN0IFZlY3RvckluaXRpYWxpemVyPGZhbHNlLCBpZ25vcmUsIFQ+Cit0ZW1wbGF0
ZTxib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCB0eXBlbmFtZSBUPgorc3RydWN0IFZlY3Rv
ckluaXRpYWxpemVyPGZhbHNlLCBjYW5Jbml0aWFsaXplV2l0aE1lbXNldCwgVD4KIHsKICAgICBz
dGF0aWMgdm9pZCBpbml0aWFsaXplKFQqLCBUKikge30KKworICAgIHN0YXRpYyB2b2lkIGZvcmNl
SW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5pdGlh
bGl6ZXI8dHJ1ZSwgY2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQsIFQ+Ojpmb3JjZUluaXRpYWxpemUo
YmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTc5LDYg
Kzg0LDExIEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCBmYWxzZSwgVD4KICAgICAg
ICAgZm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCiAgICAgICAgICAgICBu
ZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3JjZUluaXRp
YWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUoYmVnaW4s
IGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTg4LDYgKzk4LDEx
IEBAIHN0cnVjdCBWZWN0b3JJbml0aWFsaXplcjx0cnVlLCB0cnVlLCBUPgogICAgIHsKICAgICAg
ICAgbWVtc2V0KGJlZ2luLCAwLCByZWludGVycHJldF9jYXN0PGNoYXIqPihlbmQpIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4oYmVnaW4pKTsKICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBmb3Jj
ZUluaXRpYWxpemUoVCogYmVnaW4sIFQqIGVuZCkKKyAgICB7CisgICAgICAgIGluaXRpYWxpemUo
YmVnaW4sIGVuZCk7CisgICAgfQogfTsKIAogdGVtcGxhdGUgPGJvb2wgY2FuTW92ZVdpdGhNZW1j
cHksIHR5cGVuYW1lIFQ+CkBAIC0yMzAsNiArMjQ1LDExIEBAIHN0cnVjdCBWZWN0b3JUeXBlT3Bl
cmF0aW9ucwogICAgICAgICBWZWN0b3JJbml0aWFsaXplcjxWZWN0b3JUcmFpdHM8VD46Om5lZWRz
SW5pdGlhbGl6YXRpb24sIFZlY3RvclRyYWl0czxUPjo6Y2FuSW5pdGlhbGl6ZVdpdGhNZW1zZXQs
IFQ+Ojppbml0aWFsaXplKGJlZ2luLCBlbmQpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGZv
cmNlSW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKQorICAgIHsKKyAgICAgICAgVmVjdG9ySW5p
dGlhbGl6ZXI8VmVjdG9yVHJhaXRzPFQ+OjpuZWVkc0luaXRpYWxpemF0aW9uLCBWZWN0b3JUcmFp
dHM8VD46OmNhbkluaXRpYWxpemVXaXRoTWVtc2V0LCBUPjo6Zm9yY2VJbml0aWFsaXplKGJlZ2lu
LCBlbmQpOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIG1vdmUoVCogc3JjLCBUKiBzcmNFbmQs
IFQqIGRzdCkKICAgICB7CiAgICAgICAgIFZlY3Rvck1vdmVyPFZlY3RvclRyYWl0czxUPjo6Y2Fu
TW92ZVdpdGhNZW1jcHksIFQ+Ojptb3ZlKHNyYywgc3JjRW5kLCBkc3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUu
Y3BwCmluZGV4IGM3MWYzOTI5MzQ4MWVjZWU4ZDU1ZWI3NmM0YzNiNTVmNDA4ZjJmMWEuLjVlNjJj
NWFjMmRjOWNjMDEwYjVlOTkzZGIxM2NjYTVlNDYyM2U4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAK
QEAgLTQyMSw4ICs0MjEsOCBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVy
KFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAKICAgICAgICAgb3V0cHV0KDApLT5zZXRO
dW1iZXJPZkNoYW5uZWxzKG51bWJlck9mQ2hhbm5lbHMpOwogCi0gICAgICAgIG1fc291cmNlQ2hh
bm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxz
KTsKLSAgICAgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxzID0gc3RkOjptYWtlX3VuaXF1ZTxmbG9h
dCpbXT4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgICAgIG1fc291cmNlQ2hhbm5lbHMgPSBtYWtl
VW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPihudW1iZXJPZkNoYW5uZWxzKTsKKyAgICAgICAgbV9k
ZXN0aW5hdGlvbkNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFu
bmVscyk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5l
bHM7ICsraSkgCiAgICAgICAgICAgICBtX3NvdXJjZUNoYW5uZWxzW2ldID0gYnVmZmVyLT5jaGFu
bmVsRGF0YShpKS0+ZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKaW5kZXggZjRlNjNhODU5YzAxYjQxNWUx
Y2YzNDdmMjc4OGRkZDhiN2I3M2JhMS4uMzBiNzliNzkzMzM3MzE4MjFmYTI1N2EwOGQxMzU4MGZh
MjU5MGRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlclNvdXJjZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJB
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwOSw4
ICsxMTAsOCBAQCBjbGFzcyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUgZmluYWwgOiBwdWJsaWMgQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlIHsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYnVmZmVy
OwogCiAgICAgLy8gUG9pbnRlcnMgZm9yIHRoZSBidWZmZXIgYW5kIGRlc3RpbmF0aW9uLgotICAg
IHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBmbG9hdCpbXT4gbV9zb3VyY2VDaGFubmVsczsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8ZmxvYXQqW10+IG1fZGVzdGluYXRpb25DaGFubmVsczsKKyAgICBVbmlx
dWVBcnJheTxjb25zdCBmbG9hdCo+IG1fc291cmNlQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8
ZmxvYXQqPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7CiAKICAgICAvLyBVc2VkIGZvciB0aGUgImdh
aW4iIGFuZCAicGxheWJhY2tSYXRlIiBhdHRyaWJ1dGVzLgogICAgIFJlZlB0cjxBdWRpb1BhcmFt
PiBtX2dhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3dpbi9Mb2dnaW5n
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCmluZGV4
IDhjYTRjOTZmZWFmOGJiYWU2MTA4MjExMzEzODdhZTM0NWYwN2RjMjUuLjk1Y2M4ZDNjNzJhZWU2
NjE3NTljNjBmZTQ3OGFkM2E1MTE2NTg1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvd2lu
L0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5n
KCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAg
ICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihsZW5ndGgpOworICAgIFZl
Y3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0RW52aXJvbm1lbnRWYXJp
YWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKSkK
KyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlh
YmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAgICByZXR1cm4gU3RyaW5n
KGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggOTk4YWNl
NGU3ZDRkZTdmYTM1MDFiZmE3MTBhYTE1NTkwYTVlMGRhYi4uMmMxZmVkZDEyZTQ3MjhhMmEyMDk4
MDc0OTVjZDkzYzY3YmQwMjQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ5LDcgKzE1MCw3IEBAIGNsYXNzIFN0
eWxlUnVsZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBDb21waWxlZFNlbGVj
dG9yJiBjb21waWxlZFNlbGVjdG9yRm9yTGlzdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIHsK
ICAgICAgICAgaWYgKCFtX2NvbXBpbGVkU2VsZWN0b3JzKQotICAgICAgICAgICAgbV9jb21waWxl
ZFNlbGVjdG9ycyA9IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsZWRTZWxlY3RvcltdPihtX3NlbGVj
dG9yTGlzdC5saXN0U2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY29tcGlsZWRTZWxlY3RvcnMgPSBt
YWtlVW5pcXVlQXJyYXk8Q29tcGlsZWRTZWxlY3Rvcj4obV9zZWxlY3Rvckxpc3QubGlzdFNpemUo
KSk7CiAgICAgICAgIHJldHVybiBtX2NvbXBpbGVkU2VsZWN0b3JzW2luZGV4XTsKICAgICB9CiAg
ICAgdm9pZCByZWxlYXNlQ29tcGlsZWRTZWxlY3RvcnMoKSBjb25zdApAQCAtMTcwLDcgKzE3MSw3
IEBAIGNsYXNzIFN0eWxlUnVsZSBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKICAgICBD
U1NTZWxlY3Rvckxpc3QgbV9zZWxlY3Rvckxpc3Q7CiAKICNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9S
X0pJVCkKLSAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxlZFNlbGVjdG9yW10+IG1f
Y29tcGlsZWRTZWxlY3RvcnM7CisgICAgbXV0YWJsZSBVbmlxdWVBcnJheTxDb21waWxlZFNlbGVj
dG9yPiBtX2NvbXBpbGVkU2VsZWN0b3JzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
aml0L0NvbXBpbGVkU2VsZWN0b3IuaAppbmRleCBhODMzZGJhMDJmZjMzZDFkZjYzMDhlMTg4ODAy
YmM3MDg4ZTc2NjkxLi4wOTlhYzkzYjc1NGQyMTQ4MTk3NzAzMDhiZWJiZjMzODkzMzI1NjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvQ29tcGlsZWRTZWxlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9Db21waWxlZFNlbGVjdG9yLmgKQEAgLTU1LDYgKzU1LDcg
QEAgY2xhc3MgU2VsZWN0b3JDb21waWxhdGlvblN0YXR1cyB7CiB9OwogCiBzdHJ1Y3QgQ29tcGls
ZWRTZWxlY3RvciB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogICAgIFNl
bGVjdG9yQ29tcGlsYXRpb25TdGF0dXMgc3RhdHVzOwogICAgIEpTQzo6TWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGNvZGVSZWY7CiAjaWYgZGVmaW5lZChDU1NfU0VMRUNUT1JfSklUX1BST0ZJTElORykg
JiYgQ1NTX1NFTEVDVE9SX0pJVF9QUk9GSUxJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmgKaW5kZXggZDU0Y2RkY2U1ZDQ0YzA4YTk2ZDYzZDBkMjhlZjcwMDY3NzI4
YWUzNC4uM2ZkNjY3ZmZlNGI1ZDNmMTI1N2E1ZDZkZjUwZWQ4NGE4ZmZlM2ExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlIDxtZW1vcnk+
CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNjcsOCArNjcsOCBAQCBjbGFzcyBIVE1MRnJhbWVTZXRFbGVtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxFbGVtZW50IHsKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRlZElu
dG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7CiAgICAgdm9p
ZCByZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgZmluYWw7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fcm93TGVuZ3RoczsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fY29sTGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5n
dGg+IG1fcm93TGVuZ3RoczsKKyAgICBVbmlxdWVBcnJheTxMZW5ndGg+IG1fY29sTGVuZ3RoczsK
IAogICAgIGludCBtX3RvdGFsUm93czsKICAgICBpbnQgbV90b3RhbENvbHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCmluZGV4IDJjZGFjOTEyMmVmOWVhNzcyNzliY2RjMGQ2M2E0ZWFkZmU5NzhlZGQuLjNhYWE0
N2U4NzAyODhjZmZhY2UyNzY5ODQyNTQyM2JhZDdjN2Q2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBA
IC05OSw2ICs5OSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDMyQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAt
MTU1Myw3ICsxNTU0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4
U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwKICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJjb3B5VGV4
U3ViSW1hZ2UyRCIsICJUZXh0dXJlIGhhcyB1bmtub3duIGludGVybmFsIGZvcm1hdCIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNp
Z25lZCBjaGFyW10+IHplcm87CisgICAgICAgIFVuaXF1ZUFycmF5PHVuc2lnbmVkIGNoYXI+IHpl
cm87CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IHNpemU7CiAgICAgICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUlt
YWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3VucGFja0FsaWdu
bWVudCwgJnNpemUsIG51bGxwdHIpOwpAQCAtMTU2MSw3ICsxNTYyLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwKICAgICAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgImNv
cHlUZXhTdWJJbWFnZTJEIiwgImJhZCBkaW1lbnNpb25zIik7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgemVybyA9IHN0ZDo6bWFrZV91bmlxdWU8
dW5zaWduZWQgY2hhcltdPihzaXplKTsKKyAgICAgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJy
YXk8dW5zaWduZWQgY2hhcj4oc2l6ZSk7CiAgICAgICAgICAgICBpZiAoIXplcm8pIHsKICAgICAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9W
QUxVRSwgImNvcHlUZXhTdWJJbWFnZTJEIiwgIm91dCBvZiBtZW1vcnkiKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC01NzYxLDcgKzU3NjIsNyBAQCBzdGQ6Om9wdGlvbmFsPGJvb2w+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNpbXVsYXRlVmVydGV4QXR0cmliMChHQzNEdWludCBu
dQogICAgICAgICAgICAgfHwgYXR0cmliVmFsdWUudmFsdWVbMl0gIT0gbV92ZXJ0ZXhBdHRyaWIw
QnVmZmVyVmFsdWVbMl0KICAgICAgICAgICAgIHx8IGF0dHJpYlZhbHVlLnZhbHVlWzNdICE9IG1f
dmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSkgewogCi0gICAgICAgIGF1dG8gYnVmZmVyRGF0
YSA9IHN0ZDo6bWFrZV91bmlxdWU8R0MzRGZsb2F0W10+KGJ1ZmZlclNpemUpOworICAgICAgICBh
dXRvIGJ1ZmZlckRhdGEgPSBtYWtlVW5pcXVlQXJyYXk8R0MzRGZsb2F0PihidWZmZXJTaXplKTsK
ICAgICAgICAgZm9yIChHQzNEdWludCBpaSA9IDA7IGlpIDwgbnVtVmVydGV4ICsgMTsgKytpaSkg
ewogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAqIDRdID0gYXR0cmliVmFsdWUudmFsdWVbMF07
CiAgICAgICAgICAgICBidWZmZXJEYXRhW2lpICogNCArIDFdID0gYXR0cmliVmFsdWUudmFsdWVb
MV07CkBAIC01OTA3LDE1ICs1OTA4LDE0IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjplbnN1cmVOb3ROdWxsKGNvbnN0IFN0cmluZyYgdGV4dCkgY29uc3QKIH0KIAogV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6TFJVSW1hZ2VCdWZmZXJD
YWNoZShpbnQgY2FwYWNpdHkpCi0gICAgOiBtX2J1ZmZlcnMoc3RkOjptYWtlX3VuaXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+W10+KGNhcGFjaXR5KSkKLSAgICAsIG1fY2FwYWNpdHko
Y2FwYWNpdHkpCisgICAgOiBtX2J1ZmZlcnMoY2FwYWNpdHkpCiB7CiB9CiAKIEltYWdlQnVmZmVy
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJiBzaXplKQogewotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7
IGkgPCBtX2NhcGFjaXR5OyArK2kpIHsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBp
IDwgbV9idWZmZXJzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEltYWdlQnVmZmVyKiBidWYgPSBt
X2J1ZmZlcnNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghYnVmKQogICAgICAgICAgICAgYnJlYWs7
CkBAIC01OTMwLDcgKzU5MzAsOCBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6TFJVSW1hZ2VCdWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIoY29uc3QgSQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
VW5hY2NlbGVyYXRlZCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBpID0gc3RkOjptaW4obV9jYXBhY2l0eSAtIDEsIGkpOworICAgIEFTU0VSVChtX2J1ZmZl
cnMuc2l6ZSgpID4gMCk7CisgICAgaSA9IHN0ZDo6bWluKG1fYnVmZmVycy5zaXplKCkgLSAxLCBp
KTsKICAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3ZlKHRlbXApOwogCiAgICAgSW1hZ2VCdWZmZXIq
IGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKQEAgLTU5MzgsOSArNTkzOSw5IEBAIEltYWdlQnVm
ZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjppbWFn
ZUJ1ZmZlcihjb25zdCBJCiAgICAgcmV0dXJuIGJ1ZjsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZlckNhY2hlOjpidWJibGVUb0Zyb250KGludCBpZHgp
Cit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OmJ1
YmJsZVRvRnJvbnQoc2l6ZV90IGlkeCkKIHsKLSAgICBmb3IgKGludCBpID0gaWR4OyBpID4gMDsg
LS1pKQorICAgIGZvciAoc2l6ZV90IGkgPSBpZHg7IGkgPiAwOyAtLWkpCiAgICAgICAgIG1fYnVm
ZmVyc1tpXS5zd2FwKG1fYnVmZmVyc1tpLTFdKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDZhMzU3
NGI4OGYzZjZhMGQ3ZjRiMDE0ZTdhZmI3ODBjNWQ3MjljNDkuLmQyYTM5MTk1OWRiYzE0ZWVjYWZi
MGEwZTAwZWI3ZTg4OTY2MmY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTUxNyw5ICs1MTcsOCBAQCBj
bGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIDogcHVibGljIEdQVUJhc2VkQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCwgcHJpdmF0ZQogICAgICAgICAvLyBUaGUgcG9pbnRlciByZXR1cm5lZCBp
cyBvd25lZCBieSB0aGUgaW1hZ2UgYnVmZmVyIG1hcC4KICAgICAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUpOwogICAgIHByaXZhdGU6Ci0gICAgICAgIHZv
aWQgYnViYmxlVG9Gcm9udChpbnQgaWR4KTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj5bXT4gbV9idWZmZXJzOwotICAgICAgICBpbnQgbV9jYXBh
Y2l0eTsKKyAgICAgICAgdm9pZCBidWJibGVUb0Zyb250KHNpemVfdCBpZHgpOworICAgICAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPj4gbV9idWZmZXJzOwogICAgIH07CiAg
ICAgTFJVSW1hZ2VCdWZmZXJDYWNoZSBtX2dlbmVyYXRlZEltYWdlQ2FjaGUgeyAwIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IGQ3OWUwMzk5YzQ4ODFlNGY5ZmVmNjNjZmZi
NGVhOGUwN2Y1ZWIyODAuLjQ2NThmZDA4ZTZkZmQ4YjgxY2Q0NGFhMzczMWFkNmIxMWQxZTFkM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtODksNyArODksNyBAQCBzdGF0aWMg
dW5zaWduZWQgY291bnRDaGFyYWN0ZXIoU3RyaW5nSW1wbCYgc3RyaW5nLCBVQ2hhciBjaGFyYWN0
ZXIpCiAgICAgcmV0dXJuIGNvdW50OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5l
d0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKK1VuaXF1ZUFycmF5
PExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQog
ewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBTdHJpbmdCdWZm
ZXI8VUNoYXI+IHNwYWNpZmllZChsZW5ndGgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxMZW5ndGhbXT4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGlu
dCYgbGVuKQogICAgIHN0ciA9IHN0ci0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAKICAgICBsZW4g
PSBjb3VudENoYXJhY3Rlcigqc3RyLCAnICcpICsgMTsKLSAgICBhdXRvIHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPExlbmd0aFtdPihsZW4pOworICAgIGF1dG8gciA9IG1ha2VVbmlxdWVBcnJheTxMZW5n
dGg+KGxlbik7CiAKICAgICBpbnQgaSA9IDA7CiAgICAgdW5zaWduZWQgcG9zID0gMDsKQEAgLTEy
Myw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0Nvb3Jkc0FycmF5KGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKICAgICByZXR1cm4gcjsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywg
aW50JiBsZW4pCitVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0xlbmd0aEFycmF5KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBpbnQmIGxlbikKIHsKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gc3RyID0gc3Ry
aW5nLmltcGwoKS0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAgICAgaWYgKCFzdHItPmxlbmd0aCgp
KSB7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdMZW5n
dGhBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgfQogCiAgICAgbGVu
ID0gY291bnRDaGFyYWN0ZXIoKnN0ciwgJywnKSArIDE7Ci0gICAgYXV0byByID0gc3RkOjptYWtl
X3VuaXF1ZTxMZW5ndGhbXT4obGVuKTsKKyAgICBhdXRvIHIgPSBtYWtlVW5pcXVlQXJyYXk8TGVu
Z3RoPihsZW4pOwogCiAgICAgaW50IGkgPSAwOwogICAgIHVuc2lnbmVkIHBvcyA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDU3Y2UwY2U3OGJiM2VlMTNjMjNjZmI2MTk3MTBiMDY3
YjI0YzBhZjEuLjY0YTA4ZThjMWI0ZmM5NmU1M2NjNzJiZWI2ZWM4NGIwYzc1N2E3NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogY2xhc3MgVGV4dFN0cmVhbTsKQEAgLTEzOCw4ICsxMzksOCBAQCBzdHJ1Y3QgTGVuZ3RoIHsK
IC8vIEJsZW5kIHR3byBsZW5ndGhzIHRvIHByb2R1Y2UgYSBuZXcgbGVuZ3RoIHRoYXQgaXMgaW4g
YmV0d2VlbiB0aGVtLiBVc2VkIGZvciBhbmltYXRpb24uCiBMZW5ndGggYmxlbmQoY29uc3QgTGVu
Z3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpOwogCi1zdGQ6OnVu
aXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVu
Z3RoKTsKLXN0ZDo6dW5pcXVlX3B0cjxMZW5ndGhbXT4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3Ry
aW5nJiwgaW50JiBsZW5ndGgpOworVW5pcXVlQXJyYXk8TGVuZ3RoPiBuZXdDb29yZHNBcnJheShj
b25zdCBTdHJpbmcmLCBpbnQmIGxlbmd0aCk7CitVbmlxdWVBcnJheTxMZW5ndGg+IG5ld0xlbmd0
aEFycmF5KGNvbnN0IFN0cmluZyYsIGludCYgbGVuZ3RoKTsKIAogaW5saW5lIExlbmd0aDo6TGVu
Z3RoKExlbmd0aFR5cGUgdHlwZSkKICAgICA6IG1faW50VmFsdWUoMCksIG1faGFzUXVpcmsoZmFs
c2UpLCBtX3R5cGUodHlwZSksIG1faXNGbG9hdChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuY3BwCmluZGV4IDMwMTI1YWVi
MzJhYTEzMWQ3MGNiMzRhOGY5Y2Q4NWMxNzMyNmFlZjAuLmIyNTUxOGQ4ODBhOGQyZDk5NGE3Njk2
YjhmYWRhOWU1NTQ4YzI5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmNwcApAQCAtMjc1LDggKzI3NSw4IEBAIHZvaWQgRHlu
YW1pY3NDb21wcmVzc29yOjpzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMpCiAgICAgICAgIG1fcG9zdEZpbHRlclBhY2tzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PFplcm9Qb2xlRmlsdGVyUGFjazQ+KCkpOwogICAgIH0KIAotICAgIG1fc291cmNlQ2hhbm5lbHMg
PSBzdGQ6Om1ha2VfdW5pcXVlPGNvbnN0IGZsb2F0KltdPihudW1iZXJPZkNoYW5uZWxzKTsKLSAg
ICBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPGZsb2F0KltdPihudW1i
ZXJPZkNoYW5uZWxzKTsKKyAgICBtX3NvdXJjZUNoYW5uZWxzID0gbWFrZVVuaXF1ZUFycmF5PGNv
bnN0IGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CisgICAgbV9kZXN0aW5hdGlvbkNoYW5uZWxz
ID0gbWFrZVVuaXF1ZUFycmF5PGZsb2F0Kj4obnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICBtX2Nv
bXByZXNzb3Iuc2V0TnVtYmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKICAgICBtX251
bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNoYW5uZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3IuaAppbmRleCBhMTFkODdkZTU3NWM1
MmVhMzFhMjJiOTgzYTFlMzQ2Y2JkMmFlYmQ1Li5mNzE2Y2VmNzNhMzVlZTZlZTg4YmE5OGJiOThk
MjYyNTM3YmQ2OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9E
eW5hbWljc0NvbXByZXNzb3IuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkR5bmFtaWNz
Q29tcHJlc3Nvcktlcm5lbC5oIgogI2luY2x1ZGUgIlplcm9Qb2xlLmgiCiAjaW5jbHVkZSA8bWVt
b3J5PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTEwMSw4ICsxMDIsOCBAQCBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3IgewogICAgIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFj
a3M7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9w
b3N0RmlsdGVyUGFja3M7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1f
c291cmNlQ2hhbm5lbHM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0
aW9uQ2hhbm5lbHM7CisgICAgVW5pcXVlQXJyYXk8Y29uc3QgZmxvYXQqPiBtX3NvdXJjZUNoYW5u
ZWxzOworICAgIFVuaXF1ZUFycmF5PGZsb2F0Kj4gbV9kZXN0aW5hdGlvbkNoYW5uZWxzOwogCiAg
ICAgdm9pZCBzZXRFbXBoYXNpc1N0YWdlUGFyYW1ldGVycyh1bnNpZ25lZCBzdGFnZUluZGV4LCBm
bG9hdCBnYWluLCBmbG9hdCBub3JtYWxpemVkRnJlcXVlbmN5IC8qIDAgLT4gMSAqLyk7CiAgICAg
dm9pZCBzZXRFbXBoYXNpc1BhcmFtZXRlcnMoZmxvYXQgZ2FpbiwgZmxvYXQgYW5jaG9yRnJlcSwg
ZmxvYXQgZmlsdGVyU3RhZ2VSYXRpbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9GRlRGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZU
RnJhbWUuaAppbmRleCA0MDYyMGZiODQxMDFmNjZiNWZjMDlhYTNlZmIxMjU4MTNiZmNkMDcxLi43
MjdjOTJhM2EwN2RlZDkzNzM3NjRjYzFhZGNjYmZlYWMwNGQ1MDMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgR19FTkRfREVDTFMK
IAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwNyw3ICsx
MDgsNyBAQCBjbGFzcyBGRlRGcmFtZSB7CiAjaWYgVVNFKFdFQkFVRElPX0dTVFJFQU1FUikKICAg
ICBHc3RGRlRGMzIqIG1fZmZ0OwogICAgIEdzdEZGVEYzMiogbV9pbnZlcnNlRmZ0OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxHc3RGRlRGMzJDb21wbGV4W10+IG1fY29tcGxleERhdGE7CisgICAgVW5p
cXVlQXJyYXk8R3N0RkZURjMyQ29tcGxleD4gbV9jb21wbGV4RGF0YTsKICAgICBBdWRpb0Zsb2F0
QXJyYXkgbV9yZWFsRGF0YTsKICAgICBBdWRpb0Zsb2F0QXJyYXkgbV9pbWFnRGF0YTsKICNlbmRp
ZiAvLyBVU0UoV0VCQVVESU9fR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKaW5k
ZXggNjU2NmMxODE4YTUyNTE5MzQzNjhlOTVmMmQyYjgyN2QxNTllMzE5Ny4uMWI2NmU0MDA2M2I2
ZmQ0OGQ4ZTg0MWI5MjM0Zjc4OWVjMGUzMmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZURnJhbWVHU3RyZWFtZXIuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEZGVEZyYW1lOjpGRlRGcmFt
ZSh1bnNpZ25lZCBmZnRTaXplKQogICAgIDogbV9GRlRTaXplKGZmdFNpemUpCiAgICAgLCBtX2xv
ZzJGRlRTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihsb2cyKGZmdFNpemUpKSkKLSAgICAsIG1f
Y29tcGxleERhdGEoc3RkOjptYWtlX3VuaXF1ZTxHc3RGRlRGMzJDb21wbGV4W10+KHVucGFja2Vk
RkZURGF0YVNpemUobV9GRlRTaXplKSkpCisgICAgLCBtX2NvbXBsZXhEYXRhKG1ha2VVbmlxdWVB
cnJheTxHc3RGRlRGMzJDb21wbGV4Pih1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpKQog
ICAgICwgbV9yZWFsRGF0YSh1bnBhY2tlZEZGVERhdGFTaXplKG1fRkZUU2l6ZSkpCiAgICAgLCBt
X2ltYWdEYXRhKHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkKIHsKQEAgLTY2LDcgKzY2
LDcgQEAgRkZURnJhbWU6OkZGVEZyYW1lKCkKIEZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRG
cmFtZSYgZnJhbWUpCiAgICAgOiBtX0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQogICAgICwgbV9s
b2cyRkZUU2l6ZShmcmFtZS5tX2xvZzJGRlRTaXplKQotICAgICwgbV9jb21wbGV4RGF0YShzdGQ6
Om1ha2VfdW5pcXVlPEdzdEZGVEYzMkNvbXBsZXhbXT4odW5wYWNrZWRGRlREYXRhU2l6ZShtX0ZG
VFNpemUpKSkKKyAgICAsIG1fY29tcGxleERhdGEobWFrZVVuaXF1ZUFycmF5PEdzdEZGVEYzMkNv
bXBsZXg+KHVucGFja2VkRkZURGF0YVNpemUobV9GRlRTaXplKSkpCiAgICAgLCBtX3JlYWxEYXRh
KHVucGFja2VkRkZURGF0YVNpemUoZnJhbWUubV9GRlRTaXplKSkKICAgICAsIG1faW1hZ0RhdGEo
dW5wYWNrZWRGRlREYXRhU2l6ZShmcmFtZS5tX0ZGVFNpemUpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9ybWF0Q29udmVydGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAppbmRleCBkZDk3YjM3
Yzc3ZDgxMmI3ODM2ZDJjMmFiNDgzZTY5OWI1NTQwZjUzLi41OGZjZTBmNTRlMzFhMjEwZTZlMmE0
ODAxZTJlNWY4YjljMDIxNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb3JtYXRDb252ZXJ0ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUs
NyArNDYsNyBAQCBjbGFzcyBGb3JtYXRDb252ZXJ0ZXIgewogICAgIHsKICAgICAgICAgY29uc3Qg
dW5zaWduZWQgTWF4TnVtYmVyT2ZDb21wb25lbnRzID0gNDsKICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgTWF4Qnl0ZXNQZXJDb21wb25lbnQgID0gNDsKLSAgICAgICAgbV91bnBhY2tlZEludGVybWVk
aWF0ZVNyY0RhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4obV93aWR0aCAqIE1heE51
bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVyQ29tcG9uZW50KTsKKyAgICAgICAgbV91bnBh
Y2tlZEludGVybWVkaWF0ZVNyY0RhdGEgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oKENoZWNr
ZWQ8c2l6ZV90PihtX3dpZHRoKSAqIE1heE51bWJlck9mQ29tcG9uZW50cyAqIE1heEJ5dGVzUGVy
Q29tcG9uZW50KS51bnNhZmVHZXQoKSk7CiAKICAgICAgICAgQVNTRVJUKG1fdW5wYWNrZWRJbnRl
cm1lZGlhdGVTcmNEYXRhLmdldCgpKTsKICAgICB9CkBAIC02OCw3ICs2OSw3IEBAIGNsYXNzIEZv
cm1hdENvbnZlcnRlciB7CiAgICAgdm9pZCogY29uc3QgbV9kc3RTdGFydDsKICAgICBjb25zdCBp
bnQgbV9zcmNTdHJpZGUsIG1fZHN0U3RyaWRlOwogICAgIGJvb2wgbV9zdWNjZXNzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwor
ICAgIFVuaXF1ZUFycmF5PHVpbnQ4X3Q+IG1fdW5wYWNrZWRJbnRlcm1lZGlhdGVTcmNEYXRhOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IDRlNzU3YTBlMWVm
NzQ0N2NlNDc5MzQ4NmE3NDFkZjg4MmQ2MjlkNDAuLjMyMmJlZDBiOGM1NzlmYzk1MWZiNjU2MTI3
Nzg0YzhiMDM0MDg0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNDYsNyArMTQ3LDcgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkRhdGFGb3JtYXQgZ2V0
RGF0YUZvcm1hdChHQzNEZW51bSBkZXN0aW5hdGlvbkZvcm1hdCwgR0MzRGVudW0KIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlciwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBHQzNEaW50IHVucGFja0FsaWdubWVudCkKIHsKICAgICBBU1NFUlQodW5wYWNrQWxp
Z25tZW50ID09IDEgfHwgdW5wYWNrQWxpZ25tZW50ID09IDIgfHwgdW5wYWNrQWxpZ25tZW50ID09
IDQgfHwgdW5wYWNrQWxpZ25tZW50ID09IDgpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25l
ZCBjaGFyW10+IHplcm87CisgICAgVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4gemVybzsKICAg
ICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApIHsKICAgICAgICAgdW5zaWduZWQgaW50IHNp
emU7CiAgICAgICAgIEdDM0RlbnVtIGVycm9yID0gY29tcHV0ZUltYWdlU2l6ZUluQnl0ZXMoZm9y
bWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tBbGlnbm1lbnQsICZzaXplLCBudWxscHRy
KTsKQEAgLTE1NCw3ICsxNTUsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJbWFnZTJE
UmVzb3VyY2VTYWZlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgRwogICAgICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIHplcm8gPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJb
XT4oc2l6ZSk7CisgICAgICAgIHplcm8gPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQgY2hhcj4o
c2l6ZSk7CiAgICAgICAgIGlmICghemVybykgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgKaW5kZXggMTgxYjQ2NzEyZTZhODQxNzAwYjYyZGMxZDFhOTZlMGY2NWJm
M2NmYS4uMmU3NDg3OWQ4ZDJjNjJiNjBiNDEyY2Q4YTIzMmM0MjM5MjM4YTY5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0EpCkBAIC0xMjYxLDcgKzEyNjIsNyBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQz
RCA6IHB1YmxpYyBSZWZDb3VudGVkPEdyYXBoaWNzQ29udGV4dDNEPiB7CiAgICAgICAgIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBtX2NnSW1hZ2U7CiAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtX2RlY29kZWRJbWFnZTsKICAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9waXhlbERh
dGE7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IG1fZm9ybWFsaXplZFJHQkE4
RGF0YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8dWludDhfdD4gbV9mb3JtYWxpemVkUkdCQThEYXRh
OwogI2VuZGlmCiAgICAgICAgIEltYWdlKiBtX2ltYWdlOwogICAgICAgICBJbWFnZUh0bWxEb21T
b3VyY2UgbV9pbWFnZUh0bWxEb21Tb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAppbmRl
eCBmMjE2MGU5MGE3MGU4MjllNzI4OWY2OTJmZjY0ZDU5YzY4NTMwYjhmLi41ZmFmZjM5OTgxZDk2
ODUwOWZiZjZlOTkzMDNlODY4MWVhOTcyNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxRdWFydHpDb3JlL0NBQmFzZS5oPgogI2luY2x1
ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvd2luL0dESU9iamVjdC5o
PgogCiAjaWZkZWYgREVCVUdfQUxMCkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIHZvaWQgZ2V0
RGlydHlSZWN0cyhIV05EIHdpbmRvdywgVmVjdG9yPENHUmVjdD4mIG91dFJlY3RzKQogICAgIH0K
IAogICAgIERXT1JEIGRhdGFTaXplID0gOjpHZXRSZWdpb25EYXRhKHJlZ2lvbi5nZXQoKSwgMCwg
MCk7Ci0gICAgYXV0byByZWdpb25EYXRhQnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTx1bnNpZ25l
ZCBjaGFyW10+KGRhdGFTaXplKTsKKyAgICBhdXRvIHJlZ2lvbkRhdGFCdWZmZXIgPSBtYWtlVW5p
cXVlQXJyYXk8dW5zaWduZWQgY2hhcj4oZGF0YVNpemUpOwogICAgIFJHTkRBVEEqIHJlZ2lvbkRh
dGEgPSByZWludGVycHJldF9jYXN0PFJHTkRBVEEqPihyZWdpb25EYXRhQnVmZmVyLmdldCgpKTsK
ICAgICBpZiAoITo6R2V0UmVnaW9uRGF0YShyZWdpb24uZ2V0KCksIGRhdGFTaXplLCByZWdpb25E
YXRhKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCmluZGV4IDI0ZDRlYjUwMjgx
NTIyYWYxMWIyMWMxNzc3NmE4NTBhMzAzNWYwMDkuLjA0ZDY4MmY5NDdmNWU0MWI2ODM2NDMyNTlm
MzUwNGRmMWQ5ZmVhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb1V0aWxpdGllcy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CkBAIC0zNDAsNyArMzQxLDcgQEAgdm9pZCBmbGlwSW1hZ2VTdXJmYWNlVmVydGljYWxseShjYWly
b19zdXJmYWNlX3QqIHN1cmZhY2UpCiAgICAgaW50IGhhbGZIZWlnaHQgPSBzaXplLmhlaWdodCgp
IC8gMjsKIAogICAgIHVpbnQ4X3QqIHNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9kYXRhKHN1cmZhY2UpKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
dWludDhfdFtdPiB0bXAgPSBzdGQ6Om1ha2VfdW5pcXVlPHVpbnQ4X3RbXT4oc3RyaWRlKTsKKyAg
ICBhdXRvIHRtcCA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihzdHJpZGUpOwogCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBoYWxmSGVpZ2h0OyArK2kpIHsKICAgICAgICAgdWludDhfdCogdG9w
ID0gc291cmNlICsgKGkgKiBzdHJpZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCA4ZWI2
ZjRlM2I2YWFhN2RjYzFiMTc5NGJjYzE5ZmNkNzRiMDZiZDRmLi45ZGFmZjc4NWRiMDczNmI3YmM3
MjhkY2MzNWJhNzVmNmJlYWZiMWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtNDc4LDcg
KzQ3OCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yOjpleHRyYWN0
SW1hZ2UoYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sCiAgICAgLy8gYnV0IGl0IHdvdWxkIHBy
ZW11bHRpcGx5IHRoZSBhbHBoYSBjaGFubmVsIGFzIGEgc2lkZSBlZmZlY3QuCiAgICAgLy8gUHJl
ZmVyIHRvIG1hbm51YWxseSBDb252ZXJ0IDE2Yml0IHBlci1jb21wb25lbnQgZm9ybWF0cyB0byBS
R0JBOCBmb3JtYXRzIGluc3RlYWQuCiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gMTYpIHsK
LSAgICAgICAgbV9mb3JtYWxpemVkUkdCQThEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTx1aW50OF90
W10+KG1faW1hZ2VXaWR0aCAqIG1faW1hZ2VIZWlnaHQgKiA0KTsKKyAgICAgICAgbV9mb3JtYWxp
emVkUkdCQThEYXRhID0gbWFrZVVuaXF1ZUFycmF5PHVpbnQ4X3Q+KChDaGVja2VkPHNpemVfdD4o
bV9pbWFnZVdpZHRoKSAqIG1faW1hZ2VIZWlnaHQgKiA0VSkudW5zYWZlR2V0KCkpOwogICAgICAg
ICBjb25zdCB1aW50MTZfdCogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZf
dCo+KG1faW1hZ2VQaXhlbERhdGEpOwogICAgICAgICB1aW50OF90KiBkZXN0aW5hdGlvbiA9IG1f
Zm9ybWFsaXplZFJHQkE4RGF0YS5nZXQoKTsKICAgICAgICAgY29uc3QgcHRyZGlmZl90IHNyY1N0
cmlkZUluRWxlbWVudHMgPSBieXRlc1BlclJvdyAvIHNpemVvZih1aW50MTZfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggYWQy
MmI0N2IxYWQyYmIxMGUyZjFjYmU4OWVmZDU0MjFmYmI1MjY0Ni4uODY5ODEzNjQ1MTNiOGU2ZjBk
N2IyZGRhNWJiOGQxZjg3MmU3ZjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTE3MCw3ICsxNzEsNyBAQCB2b2lkIFRleHR1cmU6OnVwZGF0ZVN1YlJlY3Qodm9pZCog
cGl4ZWxzLCBjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KQogICAgIGludCB0ZW1wQnVmZlNpemUg
PSAvLyBUZW1wb3JhcnkgYnVmZmVyIHNpemUgaXMgdGhlIHNtYWxsZXIgb2YgdGhlIG1heCB0ZXh0
dXJlIHNpemUgb3IgdGhlIHVwZGF0ZVJlY3RTYW5pdGl6ZWQKICAgICAgICAgc3RkOjptaW4obV90
aWxlcy5tYXhUZXh0dXJlU2l6ZSgpLndpZHRoKCksIG1fdGlsZXMuYm9yZGVyVGV4ZWxzKCkgKyB1
cGRhdGVSZWN0U2FuaXRpemVkLndpZHRoKCkpICoKICAgICAgICAgc3RkOjptaW4obV90aWxlcy5t
YXhUZXh0dXJlU2l6ZSgpLmhlaWdodCgpLCBtX3RpbGVzLmJvcmRlclRleGVscygpICsgdXBkYXRl
UmVjdFNhbml0aXplZC5oZWlnaHQoKSk7Ci0gICAgYXV0byB0ZW1wQnVmZiA9IHN0ZDo6bWFrZV91
bmlxdWU8dWludDMyX3RbXT4odGVtcEJ1ZmZTaXplKTsKKyAgICBhdXRvIHRlbXBCdWZmID0gbWFr
ZVVuaXF1ZUFycmF5PHVpbnQzMl90Pih0ZW1wQnVmZlNpemUpOwogCiAgICAgZm9yIChpbnQgdGls
ZSA9IDA7IHRpbGUgPCBtX3RpbGVzLm51bVRpbGVzWCgpICogbV90aWxlcy5udW1UaWxlc1koKTsg
dGlsZSsrKSB7CiAgICAgICAgIGludCB4SW5kZXggPSB0aWxlICUgbV90aWxlcy5udW1UaWxlc1go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4
IGRmMGEwYjg1NWUzZDQwMGIwNTQ5N2MzODZhOWRiYjhlNmRiNzIzZTEuLjU0NzI3NGZmYTY4YTUy
ZTQ1ZTBkNzJkMjhiMmExMzljNmY1YjBiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogI2luY2x1ZGUgPHd0Zi9I
ZXhOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTcGVjaWZpYy5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTE2OCw3ICsxNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybjsKICAgICBpbnQgdG90YWxCeXRlcyA9IHRvdGFsQnl0ZXNDaGVja2VkLnVuc2FmZUdldCgp
OwogCi0gICAgYXV0byBwaXhlbHMgPSBzdGQ6Om1ha2VfdW5pcXVlPHVuc2lnbmVkIGNoYXJbXT4o
dG90YWxCeXRlcyk7CisgICAgYXV0byBwaXhlbHMgPSBtYWtlVW5pcXVlQXJyYXk8dW5zaWduZWQg
Y2hhcj4odG90YWxCeXRlcyk7CiAgICAgaWYgKCFwaXhlbHMpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjY4LDExICs2NjksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKIAogICAgIGlmIChsZW5ndGgpIHsKICAgICAgICAg
R0xzaXplaSBzaXplID0gMDsKLSAgICAgICAgYXV0byBpbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxH
TGNoYXJbXT4obGVuZ3RoKTsKLSAgICAgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBs
ZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICAgICAgVmVjdG9yPEdMY2hhcj4gaW5mbyhs
ZW5ndGgpOworICAgICAgICA6OmdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNp
emUsIGluZm8uZGF0YSgpKTsKIAogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0g
PSB7IHNoYWRlciwgMCB9OwotICAgICAgICBlbnRyeS5sb2cgPSBnZXRVbm1hbmdsZWRJbmZvTG9n
KHNoYWRlcnMsIDEsIFN0cmluZyhpbmZvLmdldCgpKSk7CisgICAgICAgIGVudHJ5LmxvZyA9IGdl
dFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywgMSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7
CiAgICAgfQogCiAgICAgaWYgKGNvbXBpbGVTdGF0dXMgIT0gR0xfVFJVRSkgewpAQCAtODUxLDE4
ICs4NTIsMTggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliSW1wbChQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGkKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBHTGludCBtYXhBdHRyaWJ1dGVTaXplID0gMDsKICAgICA6OmdsR2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0
ZVNpemUpOwotICAgIGF1dG8gbmFtZSA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heEF0
dHJpYnV0ZVNpemUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbi4KKyAgICBWZWN0b3I8R0xjaGFyPiBuYW1lKG1heEF0dHJpYnV0ZVNp
emUpOyAvLyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJt
aW5hdGlvbi4KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAw
OwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0s
IGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1l
LmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRy
aWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lLmRhdGEoKSk7CiAgICAg
aWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgU3RyaW5n
IG9yaWdpbmFsTmFtZSA9IG9yaWdpbmFsU3ltYm9sTmFtZShwcm9ncmFtLCBTSEFERVJfU1lNQk9M
X1RZUEVfQVRUUklCVVRFLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCkpOworICAgIFN0
cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUocHJvZ3JhbSwgU0hBREVSX1NZ
TUJPTF9UWVBFX0FUVFJJQlVURSwgU3RyaW5nKG5hbWUuZGF0YSgpLCBuYW1lTGVuZ3RoKSk7CiAg
ICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIFN0cmluZyB1bmlmb3JtTmFtZShuYW1lLmdldCgpLCBu
YW1lTGVuZ3RoKTsKKyAgICBTdHJpbmcgdW5pZm9ybU5hbWUobmFtZS5kYXRhKCksIG5hbWVMZW5n
dGgpOwogICAgIExPRyhXZWJHTCwgIlByb2dyYW0gJWQgaXMgbWFwcGluZyBhY3RpdmUgYXR0cmli
dXRlICVkIGZyb20gJyVzJyB0byAnJXMnIiwgcHJvZ3JhbSwgaW5kZXgsIHVuaWZvcm1OYW1lLnV0
ZjgoKS5kYXRhKCksIG9yaWdpbmFsTmFtZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCkBAIC04
OTgsMTggKzg5OSwxOCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVVbmlmb3Jt
SW1wbChQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50CiAgICAgR0xpbnQgbWF4VW5p
Zm9ybVNpemUgPSAwOwogICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKIAotICAgIGF1dG8gbmFtZSA9IHN0
ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KG1heFVuaWZvcm1TaXplKTsgLy8gR0xfQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uLgorICAgIFZlY3RvcjxH
TGNoYXI+IG5hbWUobWF4VW5pZm9ybVNpemUpOyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVO
R1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0g
MDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdl
dEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0
aCwgJnNpemUsICZ0eXBlLCBuYW1lLmdldCgpKTsKKyAgICA6OmdsR2V0QWN0aXZlVW5pZm9ybShw
cm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUs
IG5hbWUuZGF0YSgpKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBTdHJpbmcgb3JpZ2luYWxOYW1lID0gb3JpZ2luYWxTeW1ib2xOYW1lKHBy
b2dyYW0sIFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNLCBTdHJpbmcobmFtZS5nZXQoKSwgbmFt
ZUxlbmd0aCkpOworICAgIFN0cmluZyBvcmlnaW5hbE5hbWUgPSBvcmlnaW5hbFN5bWJvbE5hbWUo
cHJvZ3JhbSwgU0hBREVSX1NZTUJPTF9UWVBFX1VOSUZPUk0sIFN0cmluZyhuYW1lLmRhdGEoKSwg
bmFtZUxlbmd0aCkpOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICBTdHJpbmcgdW5pZm9ybU5h
bWUobmFtZS5nZXQoKSwgbmFtZUxlbmd0aCk7CisgICAgU3RyaW5nIHVuaWZvcm1OYW1lKG5hbWUu
ZGF0YSgpLCBuYW1lTGVuZ3RoKTsKICAgICBMT0coV2ViR0wsICJQcm9ncmFtICVkIGlzIG1hcHBp
bmcgYWN0aXZlIHVuaWZvcm0gJWQgZnJvbSAnJXMnIHRvICclcyciLCBwcm9ncmFtLCBpbmRleCwg
dW5pZm9ybU5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luYWxOYW1lLnV0ZjgoKS5kYXRhKCkpOwog
I2VuZGlmCiAgICAgCkBAIC0xNjk5LDE0ICsxNzAwLDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7IAogCiAgICAgR0xzaXplaSBzaXplID0gMDsKLSAgICBhdXRvIGlu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsZW5ndGgpOwotICAgIDo6Z2xHZXRQcm9n
cmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0
b3I8R0xjaGFyPiBpbmZvKGxlbmd0aCk7CisgICAgOjpnbEdldFByb2dyYW1JbmZvTG9nKHByb2dy
YW0sIGxlbmd0aCwgJnNpemUsIGluZm8uZGF0YSgpKTsKIAogICAgIEdDM0RzaXplaSBjb3VudDsK
ICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl07CiAgICAgZ2V0QXR0YWNoZWRTaGFkZXJz
KHByb2dyYW0sIDIsICZjb3VudCwgc2hhZGVycyk7CiAKLSAgICByZXR1cm4gZ2V0VW5tYW5nbGVk
SW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZ2V0KCkpKTsKKyAgICByZXR1cm4g
Z2V0VW5tYW5nbGVkSW5mb0xvZyhzaGFkZXJzLCBjb3VudCwgU3RyaW5nKGluZm8uZGF0YSgpLCBz
aXplKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpA
QCAtMTc3MCwxMSArMTc3MSwxMSBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
ckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsgCiAKICAgICBHTHNpemVpIHNpemUgPSAwOwotICAgIGF1dG8gaW5mbyA9IHN0ZDo6bWFrZV91
bmlxdWU8R0xjaGFyW10+KGxlbmd0aCk7Ci0gICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVy
LCBsZW5ndGgsICZzaXplLCBpbmZvLmdldCgpKTsKKyAgICBWZWN0b3I8R0xjaGFyPiBpbmZvKGxl
bmd0aCk7CisgICAgOjpnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBp
bmZvLmRhdGEoKSk7CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcnNbMl0gPSB7IHNoYWRl
ciwgMCB9OwotICAgIHJldHVybiBnZXRVbm1hbmdsZWRJbmZvTG9nKHNoYWRlcnMsIDEsIFN0cmlu
ZyhpbmZvLmdldCgpKSk7CisgICAgcmV0dXJuIGdldFVubWFuZ2xlZEluZm9Mb2coc2hhZGVycywg
MSwgU3RyaW5nKGluZm8uZGF0YSgpLCBzaXplKSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVyU291cmNlKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJT
aGFkZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbS5jcHAKaW5kZXggYWJlZGY1MzU1M2RkMzU2ZDEw
ZDkwY2JjZmI2OTI5ZWE3OTcxYWVkOC4uMmU2YzUyYzYzNDg5NjY0OWFmNWM2YTQ0NDdiOThmMTBh
M2QyNDI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0uY3BwCkBA
IC00NTAsMTIgKzQ1MCwxMiBAQCBzdGF0aWMgQ1N0cmluZyBnZXRTaGFkZXJMb2coR0x1aW50IHNo
YWRlcikKICAgICBpZiAoIWxvZ0xlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1
dG8gaW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8R0xjaGFyW10+KGxvZ0xlbmd0aCk7CisgICAgVmVj
dG9yPEdMY2hhcj4gaW5mbyhsb2dMZW5ndGgpOwogICAgIEdMc2l6ZWkgaW5mb0xlbmd0aCA9IDA7
Ci0gICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwg
aW5mby5nZXQoKSk7CisgICAgZ2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbG9nTGVuZ3RoLCAm
aW5mb0xlbmd0aCwgaW5mby5kYXRhKCkpOwogCiAgICAgc2l6ZV90IHN0cmluZ0xlbmd0aCA9IHN0
ZDo6bWF4KGluZm9MZW5ndGgsIDApOwotICAgIHJldHVybiB7IGluZm8uZ2V0KCksIHN0cmluZ0xl
bmd0aCB9OworICAgIHJldHVybiB7IGluZm8uZGF0YSgpLCBzdHJpbmdMZW5ndGggfTsKIH0KIAog
c3RhdGljIENTdHJpbmcgZ2V0UHJvZ3JhbUxvZyhHTHVpbnQgcHJvZ3JhbSkKQEAgLTQ2NSwxMiAr
NDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIGdldFByb2dyYW1Mb2coR0x1aW50IHByb2dyYW0pCiAg
ICAgaWYgKCFsb2dMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIGluZm8g
PSBzdGQ6Om1ha2VfdW5pcXVlPEdMY2hhcltdPihsb2dMZW5ndGgpOworICAgIFZlY3RvcjxHTGNo
YXI+IGluZm8obG9nTGVuZ3RoKTsKICAgICBHTHNpemVpIGluZm9MZW5ndGggPSAwOwotICAgIGds
R2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSwgbG9nTGVuZ3RoLCAmaW5mb0xlbmd0aCwgaW5mby5n
ZXQoKSk7CisgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsb2dMZW5ndGgsICZpbmZv
TGVuZ3RoLCBpbmZvLmRhdGEoKSk7CiAKICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoID0gc3RkOjpt
YXgoaW5mb0xlbmd0aCwgMCk7Ci0gICAgcmV0dXJuIHsgaW5mby5nZXQoKSwgc3RyaW5nTGVuZ3Ro
IH07CisgICAgcmV0dXJuIHsgaW5mby5kYXRhKCksIHN0cmluZ0xlbmd0aCB9OwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VCdWZmZXJEYXRhRGlyZWN0MkQuY3BwCmluZGV4IDNlZGFkMTgyMWVjNDZkY2I0
MGZlNTA2MmNhMjg5NGZiNDU4ZmQ3ZmUuLmYwZTI1ODA5MjA1Mzg1NGNkNTE1OTZjN2UwNzE3NTll
ZjdjYmY1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9JbWFnZUJ1ZmZlckRhdGFEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQnVmZmVyRGF0YURpcmVjdDJELmNwcApAQCAtMzgsNiArMzgs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CiAjaW5j
bHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTM0LDcgKzEzNSw3
IEBAIHZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwdXREYXRhKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5
JiBzb3VyY2UsIEFscGhhUHJlbXVsdGlwbGljCiAgICAgdW5zaWduZWQgc3JjQnl0ZXNQZXJSb3cg
PSA0ICogc291cmNlU2l6ZS53aWR0aCgpOwogICAgIGNvbnN0IHVpbnQ4X3QqIHNyY1Jvd3MgPSBz
b3VyY2UuZGF0YSgpICsgKG9yaWdpbnkgKiBzcmNCeXRlc1BlclJvdyArIG9yaWdpbnggKiA0KS51
bnNhZmVHZXQoKTsKIAotICAgIHVpbnQ4X3QqIHJvdyA9IG5ldyB1aW50OF90W3NyY0J5dGVzUGVy
Um93XTsKKyAgICBhdXRvIHJvdyA9IG1ha2VVbmlxdWVBcnJheTx1aW50OF90PihzcmNCeXRlc1Bl
clJvdyk7CiAKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodC51bnNhZmVHZXQoKTsgKyt5
KSB7CiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgudW5zYWZlR2V0KCk7IHgrKykg
ewpAQCAtMTQ2LDE3ICsxNDcsMTUgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnB1dERhdGEoY29u
c3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgQWxwaGFQcmVtdWx0aXBsaWMKICAgICAgICAg
ICAgICAgICByb3dbYmFzZXggKyAyXSA9IChzcmNSb3dzW2Jhc2V4ICsgMl0gKiBhbHBoYSArIDI1
NCkgLyAyNTU7CiAgICAgICAgICAgICAgICAgcm93W2Jhc2V4ICsgM10gPSBhbHBoYTsKICAgICAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Qq
Pihyb3cgKyBiYXNleClbMF0gPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oc3JjUm93cyAr
IGJhc2V4KVswXTsKKyAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4o
cm93LmdldCgpICsgYmFzZXgpWzBdID0gcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KHNyY1Jv
d3MgKyBiYXNleClbMF07CiAgICAgICAgIH0KIAogICAgICAgICBEMkQxX1JFQ1RfVSBkc3RSZWN0
ID0gRDJEMTo6UmVjdFUoZGVzdFBvaW50LngoKSwgZGVzdFBvaW50LnkoKSArIHksIGRlc3RQb2lu
dC54KCkgKyBzaXplLndpZHRoKCksIGRlc3RQb2ludC55KCkgKyB5ICsgMSk7Ci0gICAgICAgIGhy
ID0gYml0bWFwLT5Db3B5RnJvbU1lbW9yeSgmZHN0UmVjdCwgcm93LCBzcmNCeXRlc1BlclJvdyk7
CisgICAgICAgIGhyID0gYml0bWFwLT5Db3B5RnJvbU1lbW9yeSgmZHN0UmVjdCwgcm93LmdldCgp
LCBzcmNCeXRlc1BlclJvdyk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQoaHIpKTsKIAogICAg
ICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KLQotICAgIGRlbGV0ZVtdIHJv
dzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNw
cAppbmRleCBkNWM5MTI0ODc2MDU3NTI3MGUwNzJmNTYyZWRjZWQ5MmMxMmI5NWZhLi5hOWYzNzM2
NzdlM2Q1MTE2NmU5YzI2NjI4YmY2OWZlNGE0MzA1MmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSA8
cG5nLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVBcnJheS5oPgogCiAjaWYgZGVmaW5lZChQTkdfTElCUE5HX1ZFUl9NQUpPUikgJiYgZGVmaW5l
ZChQTkdfTElCUE5HX1ZFUl9NSU5PUikgJiYgKFBOR19MSUJQTkdfVkVSX01BSk9SID4gMSB8fCAo
UE5HX0xJQlBOR19WRVJfTUFKT1IgPT0gMSAmJiBQTkdfTElCUE5HX1ZFUl9NSU5PUiA+PSA0KSkK
ICNkZWZpbmUgSk1QQlVGKHBuZ19wdHIpIHBuZ19qbXBidWYocG5nX3B0cikKQEAgLTEyMCw3ICsx
MjEsNiBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAgICAgICwgbV9jdXJyZW50QnVmZmVy
U2l6ZSgwKQogICAgICAgICAsIG1fZGVjb2RpbmdTaXplT25seShmYWxzZSkKICAgICAgICAgLCBt
X2hhc0FscGhhKGZhbHNlKQotICAgICAgICAsIG1faW50ZXJsYWNlQnVmZmVyKDApCiAgICAgewog
ICAgICAgICBtX3BuZyA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RS
SU5HLCAwLCBkZWNvZGluZ0ZhaWxlZCwgZGVjb2RpbmdXYXJuaW5nKTsKICAgICAgICAgbV9pbmZv
ID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVjdChtX3BuZyk7CkBAIC0xNDMsOCArMTQzLDcgQEAgY2xh
c3MgUE5HSW1hZ2VSZWFkZXIgewogICAgICAgICBpZiAobV9wbmcgJiYgbV9pbmZvKQogICAgICAg
ICAgICAgLy8gVGhpcyB3aWxsIHplcm8gdGhlIHBvaW50ZXJzLgogICAgICAgICAgICAgcG5nX2Rl
c3Ryb3lfcmVhZF9zdHJ1Y3QoJm1fcG5nLCAmbV9pbmZvLCAwKTsKLSAgICAgICAgZGVsZXRlW10g
bV9pbnRlcmxhY2VCdWZmZXI7Ci0gICAgICAgIG1faW50ZXJsYWNlQnVmZmVyID0gMDsKKyAgICAg
ICAgbV9pbnRlcmxhY2VCdWZmZXIucmVzZXQoKTsKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsK
ICAgICB9CiAKQEAgLTE4OCw4ICsxODcsOCBAQCBjbGFzcyBQTkdJbWFnZVJlYWRlciB7CiAgICAg
dm9pZCBzZXRIYXNBbHBoYShib29sIGhhc0FscGhhKSB7IG1faGFzQWxwaGEgPSBoYXNBbHBoYTsg
fQogICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7IHJldHVybiBtX2hhc0FscGhhOyB9CiAKLSAg
ICBwbmdfYnl0ZXAgaW50ZXJsYWNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcmxhY2VC
dWZmZXI7IH0KLSAgICB2b2lkIGNyZWF0ZUludGVybGFjZUJ1ZmZlcihpbnQgc2l6ZSkgeyBtX2lu
dGVybGFjZUJ1ZmZlciA9IG5ldyBwbmdfYnl0ZVtzaXplXTsgfQorICAgIHBuZ19ieXRlcCBpbnRl
cmxhY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2ludGVybGFjZUJ1ZmZlci5nZXQoKTsgfQor
ICAgIHZvaWQgY3JlYXRlSW50ZXJsYWNlQnVmZmVyKGludCBzaXplKSB7IG1faW50ZXJsYWNlQnVm
ZmVyID0gbWFrZVVuaXF1ZUFycmF5PHBuZ19ieXRlPihzaXplKTsgfQogCiBwcml2YXRlOgogICAg
IHBuZ19zdHJ1Y3RwIG1fcG5nOwpAQCAtMTk4LDcgKzE5Nyw3IEBAIGNsYXNzIFBOR0ltYWdlUmVh
ZGVyIHsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRCdWZmZXJTaXplOwogICAgIGJvb2wgbV9kZWNv
ZGluZ1NpemVPbmx5OwogICAgIGJvb2wgbV9oYXNBbHBoYTsKLSAgICBwbmdfYnl0ZXAgbV9pbnRl
cmxhY2VCdWZmZXI7CisgICAgVW5pcXVlQXJyYXk8cG5nX2J5dGU+IG1faW50ZXJsYWNlQnVmZmVy
OwogfTsKIAogUE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggZjVjMGVhZmQxODg1
MTcxY2E4ZjU0ZjJlNTk4OGJjYWE1NTM5ZTUxMS4uOTI2NzdiOTg5YjZmMDc0ZDU2MDlmOWQ1ZTBj
ZTQ2NTEyOTkwNDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNv
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAKICNpZiBVU0UoV0VCUCkKIApA
QCAtMTg1LDcgKzE4Niw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlRnJhbWUoc2l6
ZV90IGZyYW1lSW5kZXgsIFdlYlBEZW11eGVyKiBkZW11eGVyKQogICAgIGRlY29kZXJCdWZmZXIu
dS5SR0JBLnN0cmlkZSA9IHdlYnBGcmFtZS53aWR0aCAqIHNpemVvZih1aW50MzJfdCk7CiAgICAg
ZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZSA9IGRlY29kZXJCdWZmZXIudS5SR0JBLnN0cmlkZSAq
IHdlYnBGcmFtZS5oZWlnaHQ7CiAgICAgZGVjb2RlckJ1ZmZlci5pc19leHRlcm5hbF9tZW1vcnkg
PSAxOwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1bnNpZ25lZCBjaGFyW10+IHAobmV3IHVpbnQ4X3Rb
ZGVjb2RlckJ1ZmZlci51LlJHQkEuc2l6ZV0oKSk7CisgICAgYXV0byBwID0gbWFrZVVuaXF1ZUFy
cmF5PHVpbnQ4X3Q+KGRlY29kZXJCdWZmZXIudS5SR0JBLnNpemUpOwogICAgIGRlY29kZXJCdWZm
ZXIudS5SR0JBLnJnYmEgPSBwLmdldCgpOwogICAgIGlmICghZGVjb2RlckJ1ZmZlci51LlJHQkEu
cmdiYSkgewogICAgICAgICBzZXRGYWlsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCmlu
ZGV4IDM0MmJlNTY5YjQ3MzJmMmM5NmQ1ZDBjYzVhZWNmMTA3Y2NhMzJiYjIuLjVjNGNhMjkxNWZj
MTg0ZGZlYWU1MzJlZWNhZDY5ZDU0MWNiZjMwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwu
aApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8
d3RmL1N0cmVhbUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvVW5pcXVlQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Niw3ICs3
Nyw3IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFt
SGFuZGxlIHsKICAgICB2b2lkIGRpZE9wZW5Tb2NrZXQoKTsKIAogICAgIHN0cnVjdCBTb2NrZXRE
YXRhIHsKLSAgICAgICAgU29ja2V0RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiYmIHNvdXJj
ZSwgc2l6ZV90IGxlbmd0aCkKKyAgICAgICAgU29ja2V0RGF0YShVbmlxdWVBcnJheTxjaGFyPiYm
IHNvdXJjZSwgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewogICAgICAgICAgICAgZGF0YSA9IFdU
Rk1vdmUoc291cmNlKTsKICAgICAgICAgICAgIHNpemUgPSBsZW5ndGg7CkBAIC04OSw3ICs5MCw3
IEBAIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZUltcGwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFu
ZGxlIHsKICAgICAgICAgICAgIG90aGVyLnNpemUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gZGF0YTsKKyAgICAgICAgVW5pcXVlQXJyYXk8Y2hhcj4g
ZGF0YTsKICAgICAgICAgc2l6ZV90IHNpemUgeyAwIH07CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNmZjYmY4Mzc4Y2EzNzVjZjkyMWFkZjlhYTY0
YWNlNTVhZDJjNmRjMS4uNWE0NWRkOGRiNTJkYThiZjFlZjViYWVmNDRiMTE1ZGU3NjU3MjAwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC00NCw5ICs0NCw5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+
IGNyZWF0ZUNvcHkoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK3N0YXRpYyBVbmlxdWVB
cnJheTxjaGFyPiBjcmVhdGVDb3B5KGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gY29weShuZXcgY2hhcltsZW5ndGhdKTsKKyAgICBh
dXRvIGNvcHkgPSBtYWtlVW5pcXVlQXJyYXk8Y2hhcj4obGVuZ3RoKTsKICAgICBtZW1jcHkoY29w
eS5nZXQoKSwgZGF0YSwgbGVuZ3RoKTsKIAogICAgIHJldHVybiBjb3B5OwpAQCAtOTgsNyArOTgs
NyBAQCBib29sIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnJlYWREYXRhKENVUkwqIGN1cmxIYW5k
bGUpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICBjb25zdCBzaXplX3QgYnVm
ZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gZGF0YShuZXcgY2hh
cltidWZmZXJTaXplXSk7CisgICAgYXV0byBkYXRhID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KGJ1
ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlYWQgPSAwOwogCiAgICAgQ1VSTGNvZGUgcmV0
ID0gY3VybF9lYXN5X3JlY3YoY3VybEhhbmRsZSwgZGF0YS5nZXQoKSwgYnVmZmVyU2l6ZSwgJmJ5
dGVzUmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBlMGE4ZjlkNDJhMzU5YjM5
NDIzNGI5Njk1MTMyNzQ1YmYwMDNiOGRkLi44YTMyZWIxMzZmMTMyNGU5MjAyOWFjYmVmMGFiNjhm
MjY0ZmU4YjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTM4LDYgKzM4LDcgQEAK
IAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvU3RyZWFtQnVmZmVy
Lmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFNv
Y2tldFN0cmVhbUhhbmRsZUltcGwgZmluYWwgOiBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlIHsK
ICAgICBHUmVmUHRyPEdQb2xsYWJsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJlYW07CiAgICAg
R1JlZlB0cjxHU291cmNlPiBtX3dyaXRlUmVhZHlTb3VyY2U7CiAgICAgR1JlZlB0cjxHQ2FuY2Vs
bGFibGU+IG1fY2FuY2VsbGFibGU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4gbV9yZWFk
QnVmZmVyOworICAgIFVuaXF1ZUFycmF5PGNoYXI+IG1fcmVhZEJ1ZmZlcjsKIAogICAgIFN0cmVh
bUJ1ZmZlcjxjaGFyLCAxMDI0ICogMTAyND4gbV9idWZmZXI7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heEJ1ZmZlclNpemUgPSAxMDAgKiAxMDI0ICogMTAyNDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbFNvdXAuY3BwCmluZGV4IDQ0YzEzZGI5MWMxNzZlMjJiNjQ2MDdlM2ZhZmNh
MjUxZDg5NzVlNGQuLjE3ODgwNjYzMjlhMzQ2Yjc2YjYxNzlkMmIyMjRiZDMwNjk1NzQ1YTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJl
YW1IYW5kbGVJbXBsU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZUltcGxTb3VwLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y29ubmVjdGVkKEdSZWZQdHI8R0lPU3RyZWFt
PiYmIHN0cmVhbSkKICAgICBtX3N0cmVhbSA9IFdURk1vdmUoc3RyZWFtKTsKICAgICBtX291dHB1
dFN0cmVhbSA9IEdfUE9MTEFCTEVfT1VUUFVUX1NUUkVBTShnX2lvX3N0cmVhbV9nZXRfb3V0cHV0
X3N0cmVhbShtX3N0cmVhbS5nZXQoKSkpOwogICAgIG1faW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVh
bV9nZXRfaW5wdXRfc3RyZWFtKG1fc3RyZWFtLmdldCgpKTsKLSAgICBtX3JlYWRCdWZmZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPGNoYXJbXT4oUkVBRF9CVUZGRVJfU0laRSk7CisgICAgbV9yZWFkQnVm
ZmVyID0gbWFrZVVuaXF1ZUFycmF5PGNoYXI+KFJFQURfQlVGRkVSX1NJWkUpOwogCiAgICAgUmVm
UHRyPFNvY2tldFN0cmVhbUhhbmRsZUltcGw+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZ19p
bnB1dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBtX3JlYWRCdWZmZXIu
Z2V0KCksIFJFQURfQlVGRkVSX1NJWkUsIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6QXN5bmNJT05l
dHdvcmssIG1fY2FuY2VsbGFibGUuZ2V0KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9nZ2luZ1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9nZ2luZ1dpbi5jcHAKaW5kZXggYTllZTRlZDUyZWU5NGQxMzhlZmQ5ZjNiNjE1YjdkYjJlYTUx
MzgzYS4uMzVkNzY5OGQ5ZGRiZmU1ZDY4MjJkMGFkMjA1MTc2NTgyNmFiZDUyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2dnaW5nV2luLmNwcApAQCAtNDIsMTIgKzQyLDEyIEBA
IFN0cmluZyBsb2dMZXZlbFN0cmluZygpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCi0gICAgYXV0byBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPGNo
YXJbXT4obGVuZ3RoKTsKKyAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGxlbmd0aCk7CiAKLSAgICBp
ZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdFbnZpcm9ubWVudFZhcmlhYmxlLCBi
dWZmZXIuZ2V0KCksIGxlbmd0aCkpCisgICAgaWYgKCFHZXRFbnZpcm9ubWVudFZhcmlhYmxlQShs
b2dnaW5nRW52aXJvbm1lbnRWYXJpYWJsZSwgYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5nZXQo
KSk7CisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4v
U3lzdGVtUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93aW4vU3lz
dGVtUHJveHlXaW4uY3BwCmluZGV4IDk1MzYyZmExNmYzNjA1YjY3ZDBiYjMxMjA3MzM4YTBmNTBl
ZjQ4NTMuLmQxNzMyZGRiNGI1MTIxYjgzYjA5OWRhOWY5ZTY4NDk5YmFjNWYwYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2luL1N5c3RlbVByb3h5V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dpbi9TeXN0ZW1Qcm94eVdpbi5jcHAK
QEAgLTMwLDEwICszMCw4IEBACiAKIGJvb2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1I
dHRwUHJveHkoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBvcnQpCiB7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRSZWdCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRD
SEFSW10+KGJ1ZmZlckxlbik7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRDSEFSW10+IHRIb3N0ID0g
c3RkOjptYWtlX3VuaXF1ZTxUQ0hBUltdPihidWZmZXJMZW4pOwotICAgIGlmICghdFJlZ0J1ZmZl
ciB8fCAhdEhvc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBWZWN0b3I8VENIQVI+IHRS
ZWdCdWZmZXIoYnVmZmVyTGVuKTsKKyAgICBWZWN0b3I8VENIQVI+IHRIb3N0KGJ1ZmZlckxlbik7
CiAgICAgRFdPUkQgdHlwZTsKICAgICBEV09SRCBzaXplOwogICAgIEhLRVkga2V5OwpAQCAtNTEs
MTYgKzQ5LDE2IEBAIGJvb2wgV2luZG93c1N5c3RlbVByb3h5OjpnZXRTeXN0ZW1IdHRwUHJveHko
Y2hhciogYnVmZmVyLCBpbnQgYnVmZmVyTGVuLCBpbnQqIHBvCiAgICAgICAgIEwiUHJveHlTZXJ2
ZXIiLAogICAgICAgICBudWxscHRyLAogICAgICAgICAmdHlwZSwKLSAgICAgICAgKExQQllURSl0
UmVnQnVmZmVyLmdldCgpLAorICAgICAgICAoTFBCWVRFKXRSZWdCdWZmZXIuZGF0YSgpLAogICAg
ICAgICAmc2l6ZSk7CiAKICAgICBpZiAocmV0ICE9IEVSUk9SX1NVQ0NFU1MpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmICghcGFyc2VQcm94eVN0cmluZyh0UmVnQnVmZmVyLmdldCgp
LCB0SG9zdC5nZXQoKSwgYnVmZmVyTGVuLCBwb3J0KSkKKyAgICBpZiAoIXBhcnNlUHJveHlTdHJp
bmcodFJlZ0J1ZmZlci5kYXRhKCksIHRIb3N0LmRhdGEoKSwgYnVmZmVyTGVuLCBwb3J0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgd2NzdG9tYnMoYnVmZmVyLCB0SG9zdC5nZXQoKSwg
YnVmZmVyTGVuKTsKKyAgICB3Y3N0b21icyhidWZmZXIsIHRIb3N0LmRhdGEoKSwgYnVmZmVyTGVu
KTsKICAgICBidWZmZXJbYnVmZmVyTGVuLTFdID0gJ1wwJzsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKaW5kZXggMjAzYzU2YWRiNjI2OTllMzA2ZDkzODRjYzg2MzdkNDYxYzg3NDY0NS4uM2M0NjM5
NGUyZTNkMzQ3NTJiYmM2NmQxYTU1MjUyYWJiYzM3MDg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTE0MywxMSArMTQz
LDEwIEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UoKQogCiAgICAgc2l6ZV90IGF0
dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50ID0gMDsKICAgICBzaXplX3QgYXR0YWNobWVudENv
dW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEF0dGFjaG1lbnRJbmZvW10+IGF0dGFjaG1lbnRJbmZvOworICAgIFZlY3RvcjxBdHRhY2htZW50
SW5mbz4gYXR0YWNobWVudEluZm8oYXR0YWNobWVudENvdW50KTsKIAogICAgIGlmIChhdHRhY2ht
ZW50Q291bnQpIHsKLSAgICAgICAgYXR0YWNobWVudEluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0
dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRDb3VudCk7Ci0gICAgICAgIG1lbWNweShhdHRhY2ht
ZW50SW5mby5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRh
Y2htZW50Q291bnQpOworICAgICAgICBtZW1jcHkoYXR0YWNobWVudEluZm8uZGF0YSgpLCBtZXNz
YWdlRGF0YSwgc2l6ZW9mKEF0dGFjaG1lbnRJbmZvKSAqIGF0dGFjaG1lbnRDb3VudCk7CiAgICAg
ICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihBdHRhY2htZW50SW5mbykgKiBhdHRhY2htZW50Q291
bnQ7CiAKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsr
aSkgewpAQCAtNDE3LDcgKzQxNiw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6c2VuZE91dHB1dE1lc3Nh
Z2UoVW5peE1lc3NhZ2UmIG91dHB1dE1lc3NhZ2UpCiAgICAgaW92WzBdLmlvdl9iYXNlID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oJm1lc3NhZ2VJbmZvKTsKICAgICBpb3ZbMF0uaW92X2xlbiA9
IHNpemVvZihtZXNzYWdlSW5mbyk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXR0YWNobWVudElu
Zm9bXT4gYXR0YWNobWVudEluZm87CisgICAgVmVjdG9yPEF0dGFjaG1lbnRJbmZvPiBhdHRhY2ht
ZW50SW5mbzsKICAgICBNYWxsb2NQdHI8Y2hhcj4gYXR0YWNobWVudEZEQnVmZmVyOwogCiAgICAg
YXV0byYgYXR0YWNobWVudHMgPSBvdXRwdXRNZXNzYWdlLmF0dGFjaG1lbnRzKCk7CkBAIC00NDQs
NyArNDQzLDcgQEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2Fn
ZSYgb3V0cHV0TWVzc2FnZSkKICAgICAgICAgICAgIGZkUHRyID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQqPihDTVNHX0RBVEEoY21zZykpOwogICAgICAgICB9CiAKLSAgICAgICAgYXR0YWNobWVudElu
Zm8gPSBzdGQ6Om1ha2VfdW5pcXVlPEF0dGFjaG1lbnRJbmZvW10+KGF0dGFjaG1lbnRzLnNpemUo
KSk7CisgICAgICAgIGF0dGFjaG1lbnRJbmZvLnJlc2l6ZShhdHRhY2htZW50cy5zaXplKCkpOwog
ICAgICAgICBpbnQgZmRJbmRleCA9IDA7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YXR0YWNobWVudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGF0dGFjaG1lbnRJbmZvW2ld
LnNldFR5cGUoYXR0YWNobWVudHNbaV0udHlwZSgpKTsKQEAgLTQ2Niw3ICs0NjUsNyBAQCBib29s
IENvbm5lY3Rpb246OnNlbmRPdXRwdXRNZXNzYWdlKFVuaXhNZXNzYWdlJiBvdXRwdXRNZXNzYWdl
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92
X2Jhc2UgPSBhdHRhY2htZW50SW5mby5nZXQoKTsKKyAgICAgICAgaW92W2lvdkxlbmd0aF0uaW92
X2Jhc2UgPSBhdHRhY2htZW50SW5mby5kYXRhKCk7CiAgICAgICAgIGlvdltpb3ZMZW5ndGhdLmlv
dl9sZW4gPSBzaXplb2YoQXR0YWNobWVudEluZm8pICogYXR0YWNobWVudHMuc2l6ZSgpOwogICAg
ICAgICArK2lvdkxlbmd0aDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3dpbi9Mb2dnaW5nV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dp
bmdXaW4uY3BwCmluZGV4IDZkZTFiYWI4NTkwNzdmODE3MGM4YmQyYmZhNTIxOTVmYWE3MWI3MmQu
LmQwNjM4ZDMxM2E2ZTdjOTJlYjgyNDE0ODI0ODkzZGI2NjU3NmJkODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwCkBAIC00MiwxMiArNDIsMTIgQEAgU3RyaW5n
IGxvZ0xldmVsU3RyaW5nKCkKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8Y2hhcltdPihs
ZW5ndGgpOworICAgIFZlY3RvcjxjaGFyPiBidWZmZXIobGVuZ3RoKTsKIAotICAgIGlmICghR2V0
RW52aXJvbm1lbnRWYXJpYWJsZUEobG9nZ2luZ0Vudmlyb25tZW50VmFyaWFibGUsIGJ1ZmZlci5n
ZXQoKSwgbGVuZ3RoKSkKKyAgICBpZiAoIUdldEVudmlyb25tZW50VmFyaWFibGVBKGxvZ2dpbmdF
bnZpcm9ubWVudFZhcmlhYmxlLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmdldCgpKTsKKyAg
ICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAppbmRleCBlNTI3ZjgxNTI1
N2MwODcwOWNiNGZhMTViOWIwNzk1OTIxYzAxM2Y5Li4xZjc2ODA4NTY0ZWQ0ZGI2ZTVjMGNlMWVi
NjMwMjExNzFlOTBlZDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94
RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTg2LDggKzg3LDcgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbiA6IHB1Ymxp
YyBSZWZDb3VudGVkPFNhbmRib3hFeHRlbnNpb24+IHsKICAgICAgICAKICAgICBwcml2YXRlOgog
I2lmIEVOQUJMRShTQU5EQk9YX0VYVEVOU0lPTlMpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxI
YW5kbGVbXT4gbV9kYXRhOwotICAgICAgICBzaXplX3QgbV9zaXplIHsgMCB9OworICAgICAgICBW
ZWN0b3I8SGFuZGxlPiBtX2RhdGE7CiAjZWxzZQogICAgICAgICBIYW5kbGUgbV9lbXB0eUhhbmRs
ZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQppbmRleCA5ZDhiOWViMWI3ZjUwYWQyZGE2ZTE1ZTAzMjg0MThiYzNiMGFiMzNkLi5i
OGU3NDNkMjM2MGNmZWVmYzE3YmNhMjRkNTk3MTFjZGQ1OGE1YjdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQpAQCAtMTYzLDM0ICsxNjMs
MzMgQEAgdm9pZCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6YWxsb2NhdGUoc2l6ZV90
IHNpemUpCiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIW1f
ZGF0YSk7CisgICAgQVNTRVJUKG1fZGF0YS5pc0VtcHR5KCkpOwogCi0gICAgbV9kYXRhID0gc3Rk
OjptYWtlX3VuaXF1ZTxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVbXT4oc2l6ZSk7Ci0gICAgbV9z
aXplID0gc2l6ZTsKKyAgICBtX2RhdGEucmVzaXplKHNpemUpOwogfQogCiBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRvcltdKHNp
emVfdCBpKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBtX3Np
emUpOyAKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBt
X2RhdGEuc2l6ZSgpKTsKICAgICByZXR1cm4gbV9kYXRhW2ldOwogfQogCiBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5OjpvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdAogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGkgPCBtX3NpemUpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaSA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaV07CiB9CiAKIHNp
emVfdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6c2l6ZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fc2l6ZTsKKyAgICByZXR1cm4gbV9kYXRhLnNpemUoKTsKIH0KIAogdm9pZCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgIGVuY29kZXIg
PDwgbV9kYXRhW2ldOworICAgIGZvciAoYXV0byYgaGFuZGxlIDogbV9kYXRhKQorICAgICAgICBl
bmNvZGVyIDw8IGhhbmRsZTsKIH0KIAogYm9vbCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkmIGhhbmRsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJz
aGFsbGluZ0hlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWFyc2hhbGxpbmdI
ZWxwZXJzLmNwcAppbmRleCBmYjhiNzM1Zjg3M2ExNTNhNTkxNzNmNzI0OTU4MDI0ZjU4ZDY1MmQz
Li42YWYzMTUxMzE2NTE4YTJjZjU2Mjg4ODFiNDg1YzIyMzMwY2M4MDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NYXJzaGFsbGluZ0hlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01hcnNoYWxsaW5nSGVscGVycy5jcHAKQEAgLTIxMCwxOCArMjEw
LDE2IEBAIENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb1N0cmluZ0Fy
cmF5KFNBRkVBUlJBWSogaW5BcnJheSkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAgICAgICAg
aHIgPSA6OlNhZmVBcnJheUdldFVCb3VuZChpbkFycmF5LCAxLCAmdUJvdW5kKTsKICAgICBsb25n
IGxlbiA9IChTVUNDRUVERUQoaHIpKSA/ICh1Qm91bmQtbEJvdW5kKzEpIDogMDsKLSAgICBDRlN0
cmluZ1JlZiogaXRlbXMgPSAwOworICAgIFZlY3RvcjxDRlN0cmluZ1JlZj4gaXRlbXM7CiAgICAg
aWYgKGxlbiA+IDApIHsKLSAgICAgICAgaXRlbXMgPSBuZXcgQ0ZTdHJpbmdSZWZbbGVuXTsKKyAg
ICAgICAgaXRlbXMucmVzaXplKGxlbik7CiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0gdUJvdW5k
OyBsQm91bmQrKykgewogICAgICAgICAgICAgQlN0cmluZyBzdHI7CiAgICAgICAgICAgICBociA9
IDo6U2FmZUFycmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmc3RyKTsKICAgICAgICAg
ICAgIGl0ZW1zW2xCb3VuZF0gPSBCU1RSVG9DRlN0cmluZ1JlZihzdHIpOwogICAgICAgICB9CiAg
ICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9p
ZCoqKWl0ZW1zLCBsZW4sICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwotICAgIGlmIChpdGVtcykK
LSAgICAgICAgZGVsZXRlW10gaXRlbXM7CisgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5
Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMuZGF0YSgpLCBsZW4sICZrQ0ZUeXBlQXJyYXlD
YWxsQmFja3MpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTIzMiwxOCArMjMwLDE2IEBA
IENGQXJyYXlSZWYgTWFyc2hhbGxpbmdIZWxwZXJzOjpzYWZlQXJyYXlUb0ludEFycmF5KFNBRkVB
UlJBWSogaW5BcnJheSkKICAgICBpZiAoU1VDQ0VFREVEKGhyKSkKICAgICAgICAgaHIgPSA6OlNh
ZmVBcnJheUdldFVCb3VuZChpbkFycmF5LCAxLCAmdUJvdW5kKTsKICAgICBsb25nIGxlbiA9IChT
VUNDRUVERUQoaHIpKSA/ICh1Qm91bmQtbEJvdW5kKzEpIDogMDsKLSAgICBDRk51bWJlclJlZiog
aXRlbXMgPSAwOworICAgIFZlY3RvcjxDRk51bWJlclJlZj4gaXRlbXM7CiAgICAgaWYgKGxlbiA+
IDApIHsKLSAgICAgICAgaXRlbXMgPSBuZXcgQ0ZOdW1iZXJSZWZbbGVuXTsKKyAgICAgICAgaXRl
bXMucmVzaXplKGxlbik7CiAgICAgICAgIGZvciAoOyBsQm91bmQgPD0gdUJvdW5kOyBsQm91bmQr
KykgewogICAgICAgICAgICAgaW50IG51bSA9IDA7CiAgICAgICAgICAgICBociA9IDo6U2FmZUFy
cmF5R2V0RWxlbWVudChpbkFycmF5LCAmbEJvdW5kLCAmbnVtKTsKICAgICAgICAgICAgIGl0ZW1z
W2xCb3VuZF0gPSBTVUNDRUVERUQoaHIpID8gaW50VG9DRk51bWJlclJlZihudW0pIDoga0NGTnVt
YmVyTmFOOwogICAgICAgICB9CiAgICAgfQotICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJh
eUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKSBpdGVtcywgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKTsKLSAgICBpZiAoaXRlbXMpCi0gICAgICAgIGRlbGV0ZVtdIGl0ZW1zOworICAgIENGQXJy
YXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgwLCAoY29uc3Qgdm9pZCoqKWl0ZW1zLmRhdGEo
KSwgbGVuLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2th
Z2VXaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdl
V2luLmNwcAppbmRleCBiYWU3Mjc2Y2JhNmIyNDAzMDgyZTBkOWM0YTI0OWMwMWE4NWQxNTY1Li4x
NTJlYjUzNDYxYzNjM2JmMTVjMzRjZjUwNDFmMmNlZTZiODI2NzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2VXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZVdpbi5jcHAKQEAgLTE3
MCwxOSArMTcwLDE5IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCkKICAgICBpZiAo
dmVyc2lvbkluZm9TaXplID09IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
dmVyc2lvbkluZm9EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxjaGFyW10+KHZlcnNpb25JbmZvU2l6
ZSk7CisgICAgVmVjdG9yPGNoYXI+IHZlcnNpb25JbmZvRGF0YSh2ZXJzaW9uSW5mb1NpemUpOwog
Ci0gICAgaWYgKCFHZXRGaWxlVmVyc2lvbkluZm9XKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hh
cihtX3BhdGgpLmRhdGEoKSwgMCwgdmVyc2lvbkluZm9TaXplLCB2ZXJzaW9uSW5mb0RhdGEuZ2V0
KCkpKQorICAgIGlmICghR2V0RmlsZVZlcnNpb25JbmZvVyhzdHJpbmdUb051bGxUZXJtaW5hdGVk
V0NoYXIobV9wYXRoKS5kYXRhKCksIDAsIHZlcnNpb25JbmZvU2l6ZSwgdmVyc2lvbkluZm9EYXRh
LmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fbmFtZSA9IGdldFZlcnNp
b25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIlByb2R1Y3ROYW1lIik7Ci0gICAgbV9kZXNj
cmlwdGlvbiA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVEZXNj
cmlwdGlvbiIpOworICAgIG1fbmFtZSA9IGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5k
YXRhKCksICJQcm9kdWN0TmFtZSIpOworICAgIG1fZGVzY3JpcHRpb24gPSBnZXRWZXJzaW9uSW5m
byh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZURlc2NyaXB0aW9uIik7CiAgICAgaWYgKG1f
bmFtZS5pc051bGwoKSB8fCBtX2Rlc2NyaXB0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBWU19GSVhFREZJTEVJTkZPKiBpbmZvOwogICAgIFVJTlQgaW5mb1NpemU7
Ci0gICAgaWYgKCFWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEuZ2V0KCksIEwiXFwiLCAo
TFBWT0lEKikgJmluZm8sICZpbmZvU2l6ZSkgfHwgaW5mb1NpemUgPCBzaXplb2YoVlNfRklYRURG
SUxFSU5GTykpCisgICAgaWYgKCFWZXJRdWVyeVZhbHVlVyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgp
LCBMIlxcIiwgKExQVk9JRCopICZpbmZvLCAmaW5mb1NpemUpIHx8IGluZm9TaXplIDwgc2l6ZW9m
KFZTX0ZJWEVERklMRUlORk8pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9tb2R1bGVW
ZXJzaW9uLmxlYXN0U2lnID0gaW5mby0+ZHdGaWxlVmVyc2lvbkxTOwogICAgIG1fbW9kdWxlVmVy
c2lvbi5tb3N0U2lnID0gaW5mby0+ZHdGaWxlVmVyc2lvbk1TOwpAQCAtMTkxLDExICsxOTEsMTEg
QEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKLSAgICBnZXRWZXJzaW9uSW5mbyh2ZXJzaW9u
SW5mb0RhdGEuZ2V0KCksICJNSU1FVHlwZSIpLnNwbGl0KCd8JywgdHlwZXMpOworICAgIGdldFZl
cnNpb25JbmZvKHZlcnNpb25JbmZvRGF0YS5kYXRhKCksICJNSU1FVHlwZSIpLnNwbGl0KCd8Jywg
dHlwZXMpOwogICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbkxpc3RzOwotICAgIGdldFZlcnNp
b25JbmZvKHZlcnNpb25JbmZvRGF0YS5nZXQoKSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBl
eHRlbnNpb25MaXN0cyk7CisgICAgZ2V0VmVyc2lvbkluZm8odmVyc2lvbkluZm9EYXRhLmRhdGEo
KSwgIkZpbGVFeHRlbnRzIikuc3BsaXQoJ3wnLCBleHRlbnNpb25MaXN0cyk7CiAgICAgVmVjdG9y
PFN0cmluZz4gZGVzY3JpcHRpb25zOwotICAgIGdldFZlcnNpb25JbmZvKHZlcnNpb25JbmZvRGF0
YS5nZXQoKSwgIkZpbGVPcGVuTmFtZSIpLnNwbGl0KCd8JywgZGVzY3JpcHRpb25zKTsKKyAgICBn
ZXRWZXJzaW9uSW5mbyh2ZXJzaW9uSW5mb0RhdGEuZGF0YSgpLCAiRmlsZU9wZW5OYW1lIikuc3Bs
aXQoJ3wnLCBkZXNjcmlwdGlvbnMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHR5
cGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFN0cmluZyB0eXBlID0gdHlwZXNbaV0uY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCBjYjA0N2M1NGJkMzU5YzFiYmJjZDU2NjE1N2EyN2RiN2VjOTgwM2Y2Li4z
N2NjMDIwMDEzZTQ4NmRkZGYxNjA1ZTU1ODJiOWNjYWFlYzQ2NDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01MzQsOSArNTM0LDkgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGlj
dGlvbmFyeVJlZiBkaWN0KQogICAgIENGU3RyaW5nUmVmIGRpZFJlbW92ZURlZmF1bHRzS2V5ID0g
Q0ZTVFIoV2ViS2l0RGlkTWlncmF0ZURlZmF1bHRTZXR0aW5nc0Zyb21TYWZhcmkzQmV0YVByZWZl
cmVuY2VLZXkpOwogICAgIGJvb2wgb21pdERlZmF1bHRzID0gIWJvb2xlYW5WYWx1ZUZvclByZWZl
cmVuY2VzVmFsdWUoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdCwgZGlkUmVtb3ZlRGVmYXVsdHNL
ZXkpKTsKIAotICAgIGF1dG8ga2V5cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNv
dW50KTsKLSAgICBhdXRvIHZhbHVlcyA9IHN0ZDo6bWFrZV91bmlxdWU8Q0ZUeXBlUmVmW10+KGNv
dW50KTsKLSAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGRpY3QsIGtleXMuZ2V0KCks
IHZhbHVlcy5nZXQoKSk7CisgICAgVmVjdG9yPENGVHlwZVJlZj4ga2V5cyhjb3VudCk7CisgICAg
VmVjdG9yPENGVHlwZVJlZj4gdmFsdWVzKGNvdW50KTsKKyAgICBDRkRpY3Rpb25hcnlHZXRLZXlz
QW5kVmFsdWVzKGRpY3QsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKIAogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpZiAoIWtleXNbaV0gfHwgIXZh
bHVlc1tpXSB8fCBDRkdldFR5cGVJRChrZXlzW2ldKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBjNzk5MDM5OGZjZjM1MzEyYWU3NjM0
YjQ1OTk2Y2Y0MDM5MTNiN2RkLi4yZDk1N2VhODgzZmFjMDAxYjE1NzJlNGZiMzc4ZTczYWE1NzMw
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtMTc4NCw4ICsxNzg0LDgg
QEAgdm9pZCBXZWJWaWV3Ojpvbk1lbnVDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFy
YW0pCiAgICAgbWVudUl0ZW1JbmZvLmZNYXNrID0gTUlJTV9TVFJJTkc7CiAgICAgOjpHZXRNZW51
SXRlbUluZm8oaE1lbnUsIGluZGV4LCB0cnVlLCAmbWVudUl0ZW1JbmZvKTsKIAotICAgIGF1dG8g
YnVmZmVyID0gc3RkOjptYWtlX3VuaXF1ZTxXQ0hBUltdPihtZW51SXRlbUluZm8uY2NoICsgMSk7
Ci0gICAgbWVudUl0ZW1JbmZvLmR3VHlwZURhdGEgPSBidWZmZXIuZ2V0KCk7CisgICAgVmVjdG9y
PFdDSEFSPiBidWZmZXIobWVudUl0ZW1JbmZvLmNjaCArIDEpOworICAgIG1lbnVJdGVtSW5mby5k
d1R5cGVEYXRhID0gYnVmZmVyLmRhdGEoKTsKICAgICBtZW51SXRlbUluZm8uY2NoKys7CiAgICAg
bWVudUl0ZW1JbmZvLmZNYXNrIHw9IE1JSU1fSUQ7CiAKQEAgLTE3OTQsNyArMTc5NCw3IEBAIHZv
aWQgV2ViVmlldzo6b25NZW51Q29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQog
ICAgIDo6RGVzdHJveU1lbnUobV9jdXJyZW50Q29udGV4dE1lbnUpOwogICAgIG1fY3VycmVudENv
bnRleHRNZW51ID0gbnVsbHB0cjsKIAotICAgIFN0cmluZyB0aXRsZShidWZmZXIuZ2V0KCksIG1l
bnVJdGVtSW5mby5jY2gpOworICAgIFN0cmluZyB0aXRsZShidWZmZXIuZGF0YSgpLCBtZW51SXRl
bUluZm8uY2NoKTsKICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxD
b250ZXh0TWVudUFjdGlvbj4obWVudUl0ZW1JbmZvLndJRCk7CiAKICAgICBpZiAoYWN0aW9uID49
IENvbnRleHRNZW51SXRlbUJhc2VBcHBsaWNhdGlvblRhZykgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDE3MTRkYWY2ZTRkOTFjZjE3YjI1MjZj
OGY4MWRiODdiYjY5ZGNiMWQuLmE5YmQ4NzE0YTQ2YzhkZTM0OWNhNjg4NGRmNTI3YzM3NjMxZTc3
NTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxOC0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBGaXggc3RkOjptYWtlX3VuaXF1ZSAvIG5ld1tdIHVzaW5nIHN5
c3RlbSBtYWxsb2MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4Mjk3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVBcnJheS5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vd2luL0xvZ2dpbmdXaW4uY3BwLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Tm9uVHJpdmlhbERlc3RydWN0b3I6Ok5vblRyaXZpYWxEZXN0cnVjdG9yKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6Ok5vblRyaXZpYWxEZXN0cnVjdG9yOjp+Tm9uVHJpdmlhbERlc3Ry
dWN0b3IpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Tm9uVHJpdmlhbERlc3RydWN0b3I6OnNl
dExvZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0wMy0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnRpbmcgYSBsb2Fk
IHRvIGEgZG93bmxvYWQgZG9lcyBub3Qgd29yayB3aXRoIGFzeW5jIHBvbGljeSBkZWxlZ2F0ZXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGRmNDljMjE0NDQ1ZWEzYjcyMGUyMmMw
ODk4ZTBiNmQ1NjUxNTZlYzAuLmViNzhlOWE4YzdmYjc2NjgwZjhmOWFmNDllNjA3YTc0NTQwYTMw
ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxLDYgKzE1MSw3IEBAIHNl
dChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGhy
ZWFkTWVzc2FnZXMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RocmVh
ZGluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVGltZS5jcHAKKyAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5pcXVlQXJyYXkuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvVmFyaWFudC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvVmVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NTQzM2Q4
ZDhjOTNiZjAwM2NhMjRiMjUxNzgxNjNlMTE1OGNjMDA5Li5mNGU3ZjVmOWFkZDMxY2QxMzdiNDVj
YTE4MTNhMDI1NzllOTk0NzlkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzE4LDYgKzcx
OCw3IEBACiAJCUQzNEUwODc2MUU0RTQyRTEwMDVGRjE0QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQkU1
RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSAqLzsgfTsKIAkJ
RTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hl
RGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUUxOTRFMUJE
MTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3Bv
bnNlLmh0bWwgKi87IH07CisJCUUzMjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJh
eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4
QkMwRjIwNDFDNzYzMDAzODcxMzYgLyogVW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzczRDc5
MTFGMkNGMzUyMDBDNkZBQUYgLyogU2lnbmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFs
cy5jcHAgKi87IH07CiAJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4QTBEMzQx
RkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi87IH07CiAJCUUzREVBODExMUYwQTU4
OTAwMENCQzJFOCAvKiBUaHJlYWRHcm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3Jv
dXAuY3BwICovOyB9OwpAQCAtMTg0NSw2ICsxODQ2LDcgQEAKIAkJRTE5REI5NzgxQjMyMTM3QzAw
REIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1YWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTmF2aWdhdG9yTGFuZ3VhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFscy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOThCQzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBV
bmlxdWVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlx
dWVBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzREVBODEwMUYwQTU4
ODAwMENCQzJFOCAvKiBUaHJlYWRHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaHJlYWRHcm91cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUU0MDAxOTMwMUFDRTlCNUMwMDFCMEEyQSAvKiBCbG9vbUZpbHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCbG9vbUZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0OTAyOTY3MTRFMkUzQTQwMDJCRUREMSAvKiBUeXBpbmdTdHlsZUNy
YXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVHlwaW5nU3R5
bGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3NzcsNiArMjc3OSw3
IEBACiAJCQkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8sCiAJ
CQkJNTMxMUJENUQxRUE5NDkwRDAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCAqLywKIAkJ
CQkwRjJDMjBCNzFEQ0Q1NDQ4MDA1NDJEOUUgLyogVGltZS5jcHAgKi8sCisJCQkJRTM5OEJDMEYy
MDQxQzc2MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5LmNwcCAqLywKIAkJCQk1QzVFNjMzRDFEMEI2
Nzk0MDA4NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLywKIAkJCQk3Q0QwRDVBQTFENTUzNERFMDAw
Q0M5RTEgLyogVmFyaWFudC5jcHAgKi8sCiAJCQkJQkM1NUY1RjgxNEFENzhFRTAwNDg0QkUxIC8q
IFZlY3Rvci5jcHAgKi8sCkBAIC0zMzQxLDYgKzMzNDQsNyBAQAogCQkJCUUzOEEwRDM1MUZENTBD
QzMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUUx
RUE5NDkwRTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkMyMEI4MURDRDU0NTAwMDU0MkQ5RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUzMjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzRTAzQjFEMEE2MDI3MDBGRUJDRjMgLyogVXRpbGl0aWVzQ29jb2EubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRkM3MTFENTUzNUE4MDAxREZCQ0QgLyogVmFyaWFudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY0QzFEMEE1OTBDMDBGRUJDRjMgLyogVmVjdG9yLmNw
cCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVW5pcXVlQXJyYXkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVl
QXJyYXkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjYmZiNzJkNDA0Y2Q5NWNmNWZjNjc5ZDgyMmQ5N2YxMzdj
ZGFjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
bmlxdWVBcnJheS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHVuc2ln
bmVkIG51bWJlck9mQ29uc3RydWN0aW9ucyB7IDAgfTsKK2NsYXNzIE5vblRyaXZpYWxEZXN0cnVj
dG9yIHsKK3B1YmxpYzoKKyAgICBOb25Ucml2aWFsRGVzdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICBudW1iZXJPZkNvbnN0cnVjdGlvbnMrKzsKKyAgICB9CisKKyAgICB+Tm9uVHJpdmlhbERlc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgKCptX2xvZykrKzsKKyAgICB9CisKKyAgICB2b2lkIHNl
dExvZyh1bnNpZ25lZCogbG9nKQorICAgIHsKKyAgICAgICAgbV9sb2cgPSBsb2c7CisgICAgfQor
Citwcml2YXRlOgorICAgIHVuc2lnbmVkKiBtX2xvZyB7IG51bGxwdHIgfTsKK307CisKK1RFU1Qo
V1RGX1VuaXF1ZUFycmF5LCBOb25Ucml2aWFsRGVzdHJ1Y3RvcikKK3sKKyAgICB1bnNpZ25lZCBz
aXplID0gNDI7CisgICAgdW5zaWduZWQgbG9nID0gMDsKKyAgICB7CisgICAgICAgIEVYUEVDVF9F
UShsb2csIDBVKTsKKyAgICAgICAgYXV0byBhcnJheSA9IG1ha2VVbmlxdWVBcnJheTxOb25Ucml2
aWFsRGVzdHJ1Y3Rvcj4oc2l6ZSk7CisgICAgICAgIEVYUEVDVF9FUShsb2csIDBVKTsKKyAgICAg
ICAgRVhQRUNUX0VRKG51bWJlck9mQ29uc3RydWN0aW9ucywgc2l6ZSk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBhcnJheVtpXS5zZXRM
b2coJmxvZyk7CisgICAgfQorICAgIEVYUEVDVF9FUShsb2csIHNpemUpOworfQorCitURVNUKFdU
Rl9VbmlxdWVBcnJheSwgVHJpdmlhbERlc3RydWN0b3IpCit7CisgICAgdW5zaWduZWQgc2l6ZSA9
IDQyOworICAgIHsKKyAgICAgICAgYXV0byBhcnJheSA9IG1ha2VVbmlxdWVBcnJheTx1bnNpZ25l
ZD4oc2l6ZSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShhcnJheVtpXSwgMFUpOworICAgICAgICAgICAgYXJyYXlb
aV0gPSA0MjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0VRKGFycmF5W2ldLCA0MlUpOworICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="353663"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
    <flag name="commit-queue"
          id="353711"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>