<?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>193523</bug_id>
          
          <creation_ts>2019-01-16 18:32:23 -0800</creation_ts>
          <short_desc>Gigacages should start allocations from a slide</short_desc>
          <delta_ts>2019-01-18 16:09:30 -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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495361</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-16 18:32:23 -0800</bug_when>
    <thetext>Gigacages should start allocations from a slide</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495362</commentid>
    <comment_count>1</comment_count>
      <attachid>359341</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-16 18:38:06 -0800</bug_when>
    <thetext>Created attachment 359341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495363</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-16 18:40:55 -0800</bug_when>
    <thetext>rdar://problem/44958707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495375</commentid>
    <comment_count>3</comment_count>
      <attachid>359341</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-01-16 19:13:35 -0800</bug_when>
    <thetext>Comment on attachment 359341
Patch

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

r- because red bots, also a suggested improvement

&gt; Source/bmalloc/bmalloc/Heap.cpp:68
&gt; +            ptrdiff_t offset = ((random * vmPageSize()) % (gigacageSize() - Gigacage::minimumCageSizeAfterSlide));

This seems wrong. You&apos;re losing low bits of entropy by multiplying.

The best way to do this is probably to compute a random offset, allowing for minimumCageSizeAfterSlide, and then round down to page alignment at the very end. That way, you don&apos;t need an ASSERT about page alignment either. You can trade an assert for code that enforces the condition you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495376</commentid>
    <comment_count>4</comment_count>
      <attachid>359341</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-16 19:15:00 -0800</bug_when>
    <thetext>Comment on attachment 359341
Patch

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

&gt; Source/WTF/wtf/Gigacage.h:37
&gt; +const size_t primitiveGigacageMask = gigacageSizeToMask(primitiveGigacageSize);
&gt; +const size_t jsValueGigacageMask = gigacageSizeToMask(jsValueGigacageSize);
&gt; +const size_t gigacageBasePtrsSize = 8 * 1024;

`constexpr size_t` would be nice. And `8 * Sizes::KB` would be more readable.

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:45
&gt; +const size_t gigacageRunway = 32llu * 1024 * 1024 * 1024;

Ditto for `constexpr size_t`. And I think `32 * Sizes::GB` would be more readable.

&gt; Source/bmalloc/bmalloc/Gigacage.h:43
&gt; +const size_t primitiveGigacageSize = 0x80000000;
&gt; +const size_t jsValueGigacageSize = 0x40000000;

It seems that primitiveGigacageSize is 2GB, and jsValueGigacageSize is 1GB. So, if minimumCageSizeAfterSlide is 2GB, it goes to the some funny state. Is my understanding correct?
And I think we can use `2 * bmalloc::Sizes::GB` nad `1 * bmalloc::Sizes::GB` here.

&gt; Source/bmalloc/bmalloc/Gigacage.h:45
&gt; +const size_t minimumCageSizeAfterSlide = 2 * Sizes::GB;

Ditto for `constexpr size_t`.

&gt; Source/bmalloc/bmalloc/Gigacage.h:49
&gt; +const size_t primitiveGigacageSize = 0x800000000;
&gt; +const size_t jsValueGigacageSize = 0x400000000;

This is causing build failure in 32bit arch since size_t is 32bit while the value is larger than 32bit, while gigacage is not used in 32bit anyway.

&gt; Source/bmalloc/bmalloc/Gigacage.h:51
&gt; +const size_t minimumCageSizeAfterSlide = 4 * bmalloc::Sizes::GB;

Ditto for `constexpr size_t`.

&gt; Source/bmalloc/bmalloc/Gigacage.h:68
&gt; +const size_t primitiveGigacageMask = gigacageSizeToMask(primitiveGigacageSize);
&gt; +const size_t jsValueGigacageMask = gigacageSizeToMask(jsValueGigacageSize);

Ditto for `constexpr size_t`.

&gt; Source/bmalloc/bmalloc/Sizes.h:48
&gt;      static const size_t kB = 1024;
&gt;      static const size_t MB = kB * kB;
&gt; +    static const size_t GB = kB * kB * kB;
&gt;  
&gt;      static const size_t alignment = 8;
&gt;      static const size_t alignmentMask = alignment - 1ul;

`static constexpr` would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495406</commentid>
    <comment_count>5</comment_count>
      <attachid>359341</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-16 23:33:04 -0800</bug_when>
    <thetext>Comment on attachment 359341
Patch

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

&gt;&gt; Source/WTF/wtf/Gigacage.h:37
&gt;&gt; +const size_t gigacageBasePtrsSize = 8 * 1024;
&gt; 
&gt; `constexpr size_t` would be nice. And `8 * Sizes::KB` would be more readable.

Is there an advantage of constexpr over const? I can make the change though.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:45
&gt;&gt; +const size_t gigacageRunway = 32llu * 1024 * 1024 * 1024;
&gt; 
&gt; Ditto for `constexpr size_t`. And I think `32 * Sizes::GB` would be more readable.

Sure.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.h:43
&gt;&gt; +const size_t jsValueGigacageSize = 0x40000000;
&gt; 
&gt; It seems that primitiveGigacageSize is 2GB, and jsValueGigacageSize is 1GB. So, if minimumCageSizeAfterSlide is 2GB, it goes to the some funny state. Is my understanding correct?
&gt; And I think we can use `2 * bmalloc::Sizes::GB` nad `1 * bmalloc::Sizes::GB` here.

Good catch! it appears that I messed up the math. I thought it was 4GB and 2GB... Whoops!

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.h:49
&gt;&gt; +const size_t jsValueGigacageSize = 0x400000000;
&gt; 
&gt; This is causing build failure in 32bit arch since size_t is 32bit while the value is larger than 32bit, while gigacage is not used in 32bit anyway.

Yeah, I&apos;ll fix that.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:68
&gt;&gt; +            ptrdiff_t offset = ((random * vmPageSize()) % (gigacageSize() - Gigacage::minimumCageSizeAfterSlide));
&gt; 
&gt; This seems wrong. You&apos;re losing low bits of entropy by multiplying.
&gt; 
&gt; The best way to do this is probably to compute a random offset, allowing for minimumCageSizeAfterSlide, and then round down to page alignment at the very end. That way, you don&apos;t need an ASSERT about page alignment either. You can trade an assert for code that enforces the condition you want.

Yeah, I was thinking that it would be the same as rounding down. But I think you are right since gigacageSize() - Gigacage::minimumCageSizeAfterSlide may not be a power of 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495410</commentid>
    <comment_count>6</comment_count>
      <attachid>359341</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-16 23:42:35 -0800</bug_when>
    <thetext>Comment on attachment 359341
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/Gigacage.h:37
&gt;&gt;&gt; +const size_t gigacageBasePtrsSize = 8 * 1024;
&gt;&gt; 
&gt;&gt; `constexpr size_t` would be nice. And `8 * Sizes::KB` would be more readable.
&gt; 
&gt; Is there an advantage of constexpr over const? I can make the change though.

In C++14, they are basically the same.
But in C++17, constexpr+static member variable will become `inline` variable. It means that, finally, we can ensure that constant variables are compiled as compile time constant, instead of the reference to the constant variable.
This prevents us from &quot;undefined reference to the variable XXX&quot; error (and sometimes, we used `+variable` hack like https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/b3/B3Common.cpp#L71).

While `inline` will be required for these namespace variables in C++17, I like using `constexpr` for all constant variables basically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495570</commentid>
    <comment_count>7</comment_count>
      <attachid>359396</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-17 11:43:35 -0800</bug_when>
    <thetext>Created attachment 359396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495571</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-17 11:46:45 -0800</bug_when>
    <thetext>Attachment 359396 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Gigacage.h:215:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Gigacage.h:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495618</commentid>
    <comment_count>9</comment_count>
      <attachid>359409</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-17 13:14:33 -0800</bug_when>
    <thetext>Created attachment 359409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495624</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-17 13:17:24 -0800</bug_when>
    <thetext>Attachment 359409 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Gigacage.h:215:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Gigacage.h:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495642</commentid>
    <comment_count>11</comment_count>
      <attachid>359410</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-17 13:45:30 -0800</bug_when>
    <thetext>Created attachment 359410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495645</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-17 13:49:45 -0800</bug_when>
    <thetext>Attachment 359410 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Gigacage.h:215:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Gigacage.h:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495685</commentid>
    <comment_count>13</comment_count>
      <attachid>359425</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-17 16:47:13 -0800</bug_when>
    <thetext>Created attachment 359425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495686</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-17 16:50:14 -0800</bug_when>
    <thetext>Attachment 359425 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Gigacage.h:215:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Gigacage.h:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495694</commentid>
    <comment_count>15</comment_count>
      <attachid>359430</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-17 17:10:28 -0800</bug_when>
    <thetext>Created attachment 359430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495695</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-17 17:11:58 -0800</bug_when>
    <thetext>Attachment 359430 did not pass style-queue:


ERROR: Source/bmalloc/bmalloc/Gigacage.h:215:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/bmalloc/bmalloc/Gigacage.h:219:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495696</commentid>
    <comment_count>17</comment_count>
      <attachid>359430</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 17:14:22 -0800</bug_when>
    <thetext>Comment on attachment 359430
Patch

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

&gt; Source/bmalloc/bmalloc/Sizes.h:126
&gt;  }

nit: can you add a // namespace Sizes here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495716</commentid>
    <comment_count>18</comment_count>
      <attachid>359430</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-17 18:09:45 -0800</bug_when>
    <thetext>Comment on attachment 359430
Patch

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

r=me with suggestions and fixes.

&gt; Source/bmalloc/ChangeLog:8
&gt; +        This patch makes is so that Gigacage Heaps slide the start of the

typo: /makes is so/makes it so/.

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:47
&gt; +constexpr uint64_t gigacageRunway = 32llu * 1024 * 1024 * 1024;

Why not just use a size_t gigacageRunway to begin with?

&gt; Source/bmalloc/bmalloc/Gigacage.cpp:112
&gt; +        return static_cast&lt;size_t&gt;(gigacageRunway);

You can remove this cast since we can define gigacageRunway as a size_t to begin with.

&gt; Source/bmalloc/bmalloc/Heap.cpp:67
&gt; +            RELEASE_BASSERT(gigacageSize() &gt; Gigacage::minimumCageSizeAfterSlide);

Can you just make this a static_assert in Source/bmalloc/bmalloc/Gigacage.h instead?

    static_assert(primitiveGigacageSize &gt; minimumCageSizeAfterSlide);
    static_assert(jsValueGigacageSize &gt; minimumCageSizeAfterSlide);

That way, we can catch this configuration error at compile time instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495823</commentid>
    <comment_count>19</comment_count>
      <attachid>359430</attachid>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2019-01-18 06:56:37 -0800</bug_when>
    <thetext>Comment on attachment 359430
Patch

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

We see a lot of crashes on arm/linux (where Gigacage is disabled) with this patch. Doing the changes I suggest below seem to fix them all.

&gt; Source/bmalloc/bmalloc/Gigacage.h:218
&gt; +BINLINE bool isCaged(Kind, const void*) { return false; }

We have a few cases of:
  RELEASE_ASSERT(isCaged(kind, p));
in wtf/Gigacage.cpp as well as similar code in wtf/JSValueMalloc.cpp. I believe these should be modified to something like:
  RELEASE_ASSERT(!wasEnabled() || isCaged(kind, p));

What do you think?

&gt; Source/bmalloc/bmalloc/Gigacage.h:219
&gt; +template&lt;typename T&gt; BINLINE T* caged(Kind, T* ptr) { BCRASH(); return ptr; }

This BCRASH() triggers a lot of crashes on arm/linux, and removing it seems to have no ill effect, so I feel like it should be removed, unless there is a strong reason to keep it. The alternative to removing it would be to modify all the code that calls caged() to have an alternative case if Gigacage is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495897</commentid>
    <comment_count>20</comment_count>
      <attachid>359501</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-18 10:06:49 -0800</bug_when>
    <thetext>Created attachment 359501
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495898</commentid>
    <comment_count>21</comment_count>
      <attachid>359430</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-18 10:08:09 -0800</bug_when>
    <thetext>Comment on attachment 359430
Patch

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

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:47
&gt;&gt; +constexpr uint64_t gigacageRunway = 32llu * 1024 * 1024 * 1024;
&gt; 
&gt; Why not just use a size_t gigacageRunway to begin with?

I changed it I think because this originally needed to compile on 32-bit. Since it doesn&apos;t anymore I can change it back.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.cpp:112
&gt;&gt; +        return static_cast&lt;size_t&gt;(gigacageRunway);
&gt; 
&gt; You can remove this cast since we can define gigacageRunway as a size_t to begin with.

Done.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.h:218
&gt;&gt; +BINLINE bool isCaged(Kind, const void*) { return false; }
&gt; 
&gt; We have a few cases of:
&gt;   RELEASE_ASSERT(isCaged(kind, p));
&gt; in wtf/Gigacage.cpp as well as similar code in wtf/JSValueMalloc.cpp. I believe these should be modified to something like:
&gt;   RELEASE_ASSERT(!wasEnabled() || isCaged(kind, p));
&gt; 
&gt; What do you think?

I&apos;ll just have this always return true if caging is disabled.

&gt;&gt; Source/bmalloc/bmalloc/Gigacage.h:219
&gt;&gt; +template&lt;typename T&gt; BINLINE T* caged(Kind, T* ptr) { BCRASH(); return ptr; }
&gt; 
&gt; This BCRASH() triggers a lot of crashes on arm/linux, and removing it seems to have no ill effect, so I feel like it should be removed, unless there is a strong reason to keep it. The alternative to removing it would be to modify all the code that calls caged() to have an alternative case if Gigacage is disabled.

Fair enough, I&apos;ll remove the assert.

&gt;&gt; Source/bmalloc/bmalloc/Heap.cpp:67
&gt;&gt; +            RELEASE_BASSERT(gigacageSize() &gt; Gigacage::minimumCageSizeAfterSlide);
&gt; 
&gt; Can you just make this a static_assert in Source/bmalloc/bmalloc/Gigacage.h instead?
&gt; 
&gt;     static_assert(primitiveGigacageSize &gt; minimumCageSizeAfterSlide);
&gt;     static_assert(jsValueGigacageSize &gt; minimumCageSizeAfterSlide);
&gt; 
&gt; That way, we can catch this configuration error at compile time instead.

Sure.

&gt;&gt; Source/bmalloc/bmalloc/Sizes.h:126
&gt;&gt;  }
&gt; 
&gt; nit: can you add a // namespace Sizes here?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495929</commentid>
    <comment_count>22</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-01-18 10:58:18 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #21)
&gt; &gt;&gt; Source/bmalloc/bmalloc/Gigacage.h:218
&gt; &gt;&gt; +BINLINE bool isCaged(Kind, const void*) { return false; }
&gt; &gt; 
&gt; &gt; We have a few cases of:
&gt; &gt;   RELEASE_ASSERT(isCaged(kind, p));
&gt; &gt; in wtf/Gigacage.cpp as well as similar code in wtf/JSValueMalloc.cpp. I believe these should be modified to something like:
&gt; &gt;   RELEASE_ASSERT(!wasEnabled() || isCaged(kind, p));
&gt; &gt; 
&gt; &gt; What do you think?
&gt; 
&gt; I&apos;ll just have this always return true if caging is disabled.

I was going to disagree with this because I think that it&apos;s misleading for isCaged() to return true all the time.  I was thinking that explicitly adding the !wasEnabled() check in the RELEASE_ASSERTs would be clearer about what is happening.

However, I see that the GIGACAGE_ENABLED version of caged() effectively always returns the ptr if !wasEnabled(), and isCaged() always returns true if caged(kind, ptr) == ptr.  Hence, if !GIGACAGE_ENABLED, this reduces to isCaged() always returning true.

I withdraw my objection.  Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495955</commentid>
    <comment_count>23</comment_count>
      <attachid>359501</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 11:39:03 -0800</bug_when>
    <thetext>Comment on attachment 359501
Patch for landing

Clearing flags on attachment: 359501

Committed r240160: &lt;https://trac.webkit.org/changeset/240160&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495956</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-18 11:39:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496005</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 13:23:02 -0800</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #23)
&gt; Comment on attachment 359501 [details]
&gt; Patch for landing
&gt; 
&gt; Clearing flags on attachment: 359501
&gt; 
&gt; Committed r240160: &lt;https://trac.webkit.org/changeset/240160&gt;

This appears to have broken the internal tvOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496008</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 13:31:35 -0800</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #25)
&gt; (In reply to WebKit Commit Bot from comment #23)
&gt; &gt; Comment on attachment 359501 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 359501
&gt; &gt; 
&gt; &gt; Committed r240160: &lt;https://trac.webkit.org/changeset/240160&gt;
&gt; 
&gt; This appears to have broken the internal tvOS build.

I have a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496009</commentid>
    <comment_count>27</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2019-01-18 13:32:42 -0800</bug_when>
    <thetext>Reverted r240160 for reason:

This broke multiple internal builds.

Committed r240171: &lt;https://trac.webkit.org/changeset/240171&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496013</commentid>
    <comment_count>28</comment_count>
      <attachid>359532</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 13:36:47 -0800</bug_when>
    <thetext>Created attachment 359532
Patch to fix the builds when re-landing

This should have fixed the builds had r240160 not been rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496040</commentid>
    <comment_count>29</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-01-18 14:48:35 -0800</bug_when>
    <thetext>Committed r240175: &lt;https://trac.webkit.org/changeset/240175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496085</commentid>
    <comment_count>30</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-18 16:09:30 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #29)
&gt; Committed r240175: &lt;https://trac.webkit.org/changeset/240175&gt;

Follow-up fix when GIGACAGE_ENABLED is 0:

Committed r240186: &lt;https://trac.webkit.org/changeset/240186&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359341</attachid>
            <date>2019-01-16 18:38:06 -0800</date>
            <delta_ts>2019-01-17 11:43:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190116183801.patch</filename>
            <type>text/plain</type>
            <size>18353</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi5kMjc1NjEzYjE4NDk5ZjM4
YzQyZDdhZjFmYjlmMWUyYjU0OTY2NWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjE2MjM2YWFkNGFmOGM4YmRiMzljNDhkZTY4ZDVjNmFkZDJm
YWM1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZjMzYzEzMDdlMDFmM2FiYmZjMGRi
NDlhYjlhMmVlNTU1YmE4Y2M3MyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAx
LTE2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNp
emVUb01hc2spOgorICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6
Om1hc2spOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpI
ZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9jL1NpemVzLmg6CisKIDIwMTktMDEtMTYgIEtl
aXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYyBz
aG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1
ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2EuLmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMw
NDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0
LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRh
OjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1
KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0MCwgSW5k
ZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdl
QmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVF
X0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0MSkKKyAgICBs
b2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1
ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciAr
IEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0
IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQz
OCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEg
dDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFMVUVfR0lHQUNBR0VfTUFTSywgSlNPYmpl
Y3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCisgICAgbG9hZENhZ2VkKF9n
X2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhw
ciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3Qw
XSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVt
YmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDhBcnJheVR5cGUgLSBG
aXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFy
cmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRi
cyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIs
MTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4
QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OENsYW1wZWRB
cnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCiAub3BHZXRC
eVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRBcnJheVR5
cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0
cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2Fj
YWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIEdp
Z2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rv
clt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1MjcsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlUeXBlLgot
ICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpw
cmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJh
c2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2Fn
ZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBd
LCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJdLCB0MAogICAgIGZpbmlzaEludEdldEJ5
VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZBcnJheToKICAgICAjIFdlIGhhdmUgVWlu
dDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNh
Z2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFT
SywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdl
ZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNv
bnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmll
dzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGggW3QzLCB0MSwgMl0sIHQwCiAgICAg
ZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0xNTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZpcnN0VHlw
ZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKIAogICAgICMgV2UgaGF2ZSBJbnQz
MkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdl
OjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ss
IEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQo
X2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25z
dGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAogICAgIGZp
bmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MzJBcnJheToKICAgICAj
IFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQ
dHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVf
R0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQor
ICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpw
cmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0Fy
cmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgIyBUaGlzIGlzIHRoZSBo
YXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNpZ25lZCB2YWx1ZXMuCiAgICAgbG9hZGkg
W3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlWYWxTbG93ICMgVGhpcyBj
YXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50IGluIExMSW50LgpAQCAtMTU2Myw3ICsx
NTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWVxIHQyLCBGbG9hdDMyQXJy
YXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93CiAKICAgICAjIFdl
IGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRy
cyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJ
R0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAg
ICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJp
bWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRkIFt0MywgdDEsIDhd
LCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKICAgICBmaW5pc2hE
b3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1
dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0MywgLm9wUHV0QnlWYWxTbG93
KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJ
R0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVy
KQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNl
UHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBK
U09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFnVHlwZU51bWJlcikKICAgICAgICAgbW92
ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAgICAgICAgIGJ0aW56IHQyLCBDb3B5T25X
cml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlkNmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4
M2Q3MS4uZjc5YTg0NDM1NWMyZmVlZjlmMzRjMzU3NWEyYjBiYjRjNmQ4ZTIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2Fj
YWdlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWYgZGVmaW5lZChVU0VfU1lTVEVNX01BTExP
QykgJiYgVVNFX1NZU1RFTV9NQUxMT0MKIAotYWxpZ25hcyh2b2lkKikgY2hhciBnX2dpZ2FjYWdl
QmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdOworYWxpZ25hcyh2b2lkKikgY2hhciBn
X2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwogCiBuYW1lc3BhY2UgR2ln
YWNhZ2UgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oIGIvU291cmNl
L1dURi93dGYvR2lnYWNhZ2UuaAppbmRleCAxYjA0ODMxM2EzNjI4MjFiMWY4ODdmYTViN2UzZDNl
MDAyOTM4YjY5Li4yNTY3NTExNDAzNWI5M2JiNmE3YzVlNDYxODM5NWNjOTAwYjgxNDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKQEAgLTI5LDE2ICsyOSwxNSBAQAogCiAjaWYgZGVmaW5lZChVU0VfU1lTVEVNX01B
TExPQykgJiYgVVNFX1NZU1RFTV9NQUxMT0MKICNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCi0j
ZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLIDAKLSNkZWZpbmUgSlNWQUxVRV9HSUdBQ0FH
RV9NQVNLIDAKLSNkZWZpbmUgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUgODE5MgotCi1leHRlcm4g
IkMiIHsKLWFsaWduYXModm9pZCopIGV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY2hhciBnX2dp
Z2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdOwotfQogCiBuYW1lc3BhY2Ug
R2lnYWNhZ2UgewogCitjb25zdCBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNh
Z2VTaXplVG9NYXNrKHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSk7Citjb25zdCBzaXplX3QganNWYWx1
ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsK
K2NvbnN0IHNpemVfdCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSA9IDggKiAxMDI0OworCitleHRlcm4g
IkMiIGFsaWduYXModm9pZCopIGV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY2hhciBnX2dpZ2Fj
YWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOworCiBzdHJ1Y3QgQmFzZVB0cnMgewog
ICAgIHVpbnRwdHJfdCByZXNlcnZlZEZvckZsYWdzOwogICAgIHZvaWQqIHByaW1pdGl2ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKaW5kZXggYTg4NjIzZDY5ZWUzNzBlZTlkZGVlMzQ1
NzE1OTEyOGYwM2YwY2IzYS4uYjU5NTI2MzcyODAwOGU3NTRiMzFiYjk5MjJjN2NkZjRmNzFiOWRk
OSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKQEAgLTM1LDIzICszNSwyMyBAQAog
I2luY2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDxtdXRleD4KIAorbmFtZXNwYWNlIEdpZ2FjYWdl
IHsKKwogLy8gVGhpcyBpcyBleGFjdGx5IDMyR0IgYmVjYXVzZSBpbnNpZGUgSlNDLCBpbmRleGVk
IGFjY2Vzc2VzIGZvciBhcnJheXMsIHR5cGVkIGFycmF5cywgZXRjLAogLy8gdXNlIHVuc2lnbmVk
IDMyLWJpdCBpbnRzIGFzIGluZGljZXMuIFRoZSBpdGVtcyB0aG9zZSBpbmRpY2VzIGFjY2VzcyBh
cmUgOCBieXRlcyBvciBsZXNzCiAvLyBpbiBzaXplLiAyXjMyICogOCA9IDMyR0IuIFRoaXMgbWVh
bnMgaWYgYW4gYWNjZXNzIG9uIGEgY2FnZWQgdHlwZSBoYXBwZW5zIHRvIGdvIG91dCBvZgogLy8g
Ym91bmRzLCB0aGUgYWNjZXNzIGlzIGd1YXJhbnRlZWQgdG8gbGFuZCBzb21ld2hlcmUgZWxzZSBp
biB0aGUgY2FnZSBvciBpbnNpZGUgdGhlIHJ1bndheS4KIC8vIElmIHRoaXMgd2VyZSBsZXNzIHRo
YW4gMzJHQiwgdGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUgb2YgdGhlIGNh
Z2UuCi0jZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMzJsbHUgKiAxMDI0ICogMTAyNCAqIDEwMjQp
Citjb25zdCBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAy
NDsKIAogLy8gTm90ZTogZ19naWdhY2FnZUJhc2VQdHJzWzBdIGlzIHJlc2VydmVkIGZvciBzdG9y
aW5nIHRoZSB3YXNFbmFibGVkIGZsYWcuCiAvLyBUaGUgZmlyc3QgZ2lnYWNhZ2VCYXNlUHRyIHdp
bGwgc3RhcnQgYXQgZ19naWdhY2FnZUJhc2VQdHJzW3NpemVvZih2b2lkKildLgogLy8gVGhpcyBp
cyBkb25lIHNvIHRoYXQgdGhlIHdhc0VuYWJsZWQgZmxhZyB3aWxsIGFsc28gYmUgcHJvdGVjdGVk
IGFsb25nIHdpdGggdGhlCiAvLyBnaWdhY2FnZUJhc2VQdHJzLgotYWxpZ25hcyhHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJT
X1NJWkVdOworYWxpZ25hcyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgY2hhciBnX2dpZ2FjYWdlQmFz
ZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwogCiB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsK
IAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKLQogbmFtZXNwYWNlIHsKIAogYm9vbCBzX2lzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKQEAgLTYxLDEyICs2MSwxMiBAQCB2b2lkIHBy
b3RlY3RHaWdhY2FnZUJhc2VQdHJzKCkKICAgICB1aW50cHRyX3QgYmFzZVB0cnMgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZ19naWdhY2FnZUJhc2VQdHJzKTsKICAgICAvLyBXZSBtaWdo
dCBvbmx5IGdldCBwYWdlIHNpemUgYWxpZ25tZW50LCBidXQgdGhhdCdzIGFsc28gdGhlIG1pbmlt
dW0gd2UgbmVlZC4KICAgICBSRUxFQVNFX0JBU1NFUlQoIShiYXNlUHRycyAmICh2bVBhZ2VTaXpl
KCkgLSAxKSkpOwotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkUsIFBST1RfUkVBRCk7CisgICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJz
LCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSwgUFJPVF9SRUFEKTsKIH0KIAogdm9pZCB1bnByb3RlY3RH
aWdhY2FnZUJhc2VQdHJzKCkKIHsKLSAgICBtcHJvdGVjdChnX2dpZ2FjYWdlQmFzZVB0cnMsIEdJ
R0FDQUdFX0JBU0VfUFRSU19TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAgICBtcHJv
dGVjdChnX2dpZ2FjYWdlQmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKTsKIH0KIAogY2xhc3MgVW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3Bl
IHsKQEAgLTEwOCw3ICsxMDgsNyBAQCBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiAgICAg
Y2FzZSBLaW5kOjpSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6CiAgICAgICAgIFJFTEVB
U0VfQkFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgS2luZDo6UHJpbWl0aXZlOgotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihHSUdBQ0FHRV9SVU5XQVkpOworICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihnaWdhY2FnZVJ1bndheSk7CiAgICAgY2FzZSBL
aW5kOjpKU1ZhbHVlOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKaW5kZXggZWFiODBmZDJkM2UyNDIyOGNiOWZm
Y2RkODM0NzlkMWViZGNiMWQzOC4uMGFlNmMwNWRjNGY3ZDllYzk3YzQ5OGJlYjViNGZmMGNiNjI1
NmQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaApAQCAtMzAsMTYgKzMwLDI1IEBACiAj
aW5jbHVkZSAiQkV4cG9ydC5oIgogI2luY2x1ZGUgIkJJbmxpbmUuaCIKICNpbmNsdWRlICJCUGxh
dGZvcm0uaCIKKyNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVk
ZSA8aW50dHlwZXMuaD4KIAorCisKK25hbWVzcGFjZSBHaWdhY2FnZSB7CisKICNpZiBCQ1BVKEFS
TTY0KQotI2RlZmluZSBQUklNSVRJVkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwbGx1Ci0jZGVm
aW5lIEpTVkFMVUVfR0lHQUNBR0VfU0laRSAweDQwMDAwMDAwbGx1Citjb25zdCBzaXplX3QgcHJp
bWl0aXZlR2lnYWNhZ2VTaXplID0gMHg4MDAwMDAwMDsKK2NvbnN0IHNpemVfdCBqc1ZhbHVlR2ln
YWNhZ2VTaXplID0gMHg0MDAwMDAwMDsKK2NvbnN0IHNpemVfdCBnaWdhY2FnZUJhc2VQdHJzU2l6
ZSA9IDE2ICogU2l6ZXM6OmtCOworY29uc3Qgc2l6ZV90IG1pbmltdW1DYWdlU2l6ZUFmdGVyU2xp
ZGUgPSAyICogU2l6ZXM6OkdCOwogI2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlM
IDEKICNlbHNlCi0jZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9TSVpFIDB4ODAwMDAwMDAwbGx1
Ci0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfU0laRSAweDQwMDAwMDAwMGxsdQorY29uc3Qgc2l6
ZV90IHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSA9IDB4ODAwMDAwMDAwOworY29uc3Qgc2l6ZV90IGpz
VmFsdWVHaWdhY2FnZVNpemUgPSAweDQwMDAwMDAwMDsKK2NvbnN0IHNpemVfdCBnaWdhY2FnZUJh
c2VQdHJzU2l6ZSA9IDQgKiBibWFsbG9jOjpTaXplczo6a0I7Citjb25zdCBzaXplX3QgbWluaW11
bUNhZ2VTaXplQWZ0ZXJTbGlkZSA9IDQgKiBibWFsbG9jOjpTaXplczo6R0I7CiAjZGVmaW5lIEdJ
R0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMAogI2VuZGlmCiAKQEAgLTUwLDMwICs1OSwyMiBA
QAogI2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIDEKICNlbmRpZgogCi1zdGF0
aWNfYXNzZXJ0KGJtYWxsb2M6OmlzUG93ZXJPZlR3byhQUklNSVRJVkVfR0lHQUNBR0VfU0laRSks
ICIiKTsKLXN0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdvKEpTVkFMVUVfR0lHQUNB
R0VfU0laRSksICIiKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdvKHByaW1p
dGl2ZUdpZ2FjYWdlU2l6ZSksICIiKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9m
VHdvKGpzVmFsdWVHaWdhY2FnZVNpemUpLCAiIik7CiAKLSNkZWZpbmUgR0lHQUNBR0VfU0laRV9U
T19NQVNLKHNpemUpICgoc2l6ZSkgLSAxKQorY29uc3RleHByIHNpemVfdCBnaWdhY2FnZVNpemVU
b01hc2soc2l6ZV90IHNpemUpIHsgcmV0dXJuIHNpemUgLSAxOyB9CiAKLSNkZWZpbmUgUFJJTUlU
SVZFX0dJR0FDQUdFX01BU0sgR0lHQUNBR0VfU0laRV9UT19NQVNLKFBSSU1JVElWRV9HSUdBQ0FH
RV9TSVpFKQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX01BU0sgR0lHQUNBR0VfU0laRV9UT19N
QVNLKEpTVkFMVUVfR0lHQUNBR0VfU0laRSkKK2NvbnN0IHNpemVfdCBwcmltaXRpdmVHaWdhY2Fn
ZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0
IHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKGpzVmFsdWVH
aWdhY2FnZVNpemUpOwogCiAjaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBcCi0g
ICAgKEJDUFUoWDg2XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19JTFAzMl9fKSAm
JiAoIUJQTEFURk9STShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkKKyhCQ1BVKFg4
Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykgJiYgKCFCUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCiAjZGVmaW5lIEdJR0FDQUdFX0VO
QUJMRUQgMQogI2Vsc2UKICNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCiAjZW5kaWYKIAotI2lm
IEJDUFUoQVJNNjQpCi0jZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFIDE2Mzg0Ci0jZWxz
ZQotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA0MDk2Ci0jZW5kaWYKLQotZXh0ZXJu
ICJDIiBhbGlnbmFzKEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFKSBCRVhQT1JUIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXTsKLQotbmFtZXNwYWNlIEdpZ2Fj
YWdlIHsKK2V4dGVybiAiQyIgYWxpZ25hcyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgQkVYUE9SVCBj
aGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIEJJTkxJTkUg
Ym9vbCB3YXNFbmFibGVkKCkgeyByZXR1cm4gZ19naWdhY2FnZUJhc2VQdHJzWzBdOyB9CiBCSU5M
SU5FIHZvaWQgc2V0V2FzRW5hYmxlZCgpIHsgZ19naWdhY2FnZUJhc2VQdHJzWzBdID0gdHJ1ZTsg
fQpAQCAtMTU4LDkgKzE1OSw5IEBAIEJJTkxJTkUgc2l6ZV90IHNpemUoS2luZCBraW5kKQogICAg
IGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgogICAgICAgICBSRUxFQVNFX0JB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUpOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihwcmltaXRpdmVHaWdhY2FnZVNpemUpOwogICAgIGNh
c2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oSlNWQUxVRV9H
SUdBQ0FHRV9TSVpFKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oanNWYWx1
ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgfQogICAgIEJDUkFTSCgpOwogICAgIHJldHVybiAwOwpAQCAt
MTczLDcgKzE3NCw3IEBAIEJJTkxJTkUgc2l6ZV90IGFsaWdubWVudChLaW5kIGtpbmQpCiAKIEJJ
TkxJTkUgc2l6ZV90IG1hc2soS2luZCBraW5kKQogewotICAgIHJldHVybiBHSUdBQ0FHRV9TSVpF
X1RPX01BU0soc2l6ZShraW5kKSk7CisgICAgcmV0dXJuIGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXpl
KGtpbmQpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCmluZGV4IDUzYjNlMzY5MTkzZjFmNTQ5OWEzYWNlYTQ3YmM1NzE3OTJiMzBhMGUuLjcwMTVh
ZjZiNWUxZWU5YTcwMTBmMDU3NjhkZjcxZWI0MzE4MjljY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5oIgogI2luY2x1
ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJDaHVuay5oIgorI2luY2x1ZGUgIkNyeXB0
b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiR2lnYWNhZ2Uu
aCIKICNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKQEAgLTYxLDcgKzYyLDEzIEBAIEhlYXA6OkhlYXAo
SGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAjaWYgR0lHQUNBR0VfRU5B
QkxFRAogICAgICAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CiAgICAgICAgICAgICBSRUxFQVNF
X0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOwotICAgICAgICAgICAgbV9sYXJnZUZyZWUuYWRk
KExhcmdlUmFuZ2UoZ2lnYWNhZ2VCYXNlUHRyKCksIGdpZ2FjYWdlU2l6ZSgpLCAwLCAwKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoZ2lnYWNhZ2VTaXplKCkgLyB2bVBhZ2VTaXplKCkg
PD0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpKTsKKyAgICAgICAgICAgIHVp
bnQ2NF90IHJhbmRvbTsKKyAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0
PHVuc2lnbmVkIGNoYXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOworICAgICAgICAgICAg
cHRyZGlmZl90IG9mZnNldCA9ICgocmFuZG9tICogdm1QYWdlU2l6ZSgpKSAlIChnaWdhY2FnZVNp
emUoKSAtIEdpZ2FjYWdlOjptaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlKSk7CisgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoIShvZmZzZXQgJSB2bVBhZ2VTaXplKCkpICYmICEob2Zmc2V0ICUg
dm1QYWdlU2l6ZVBoeXNpY2FsKCkpKTsKKyAgICAgICAgICAgIHZvaWQqIGJhc2UgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihnaWdhY2FnZUJhc2VQdHIoKSkgKyBvZmZzZXQ7Cisg
ICAgICAgICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShiYXNlLCBnaWdhY2FnZVNpemUo
KSAtIG9mZnNldCwgMCwgMCkpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1NpemVzLmgKaW5kZXggZjc1ZjdlOGZjYzdmNjdkYmQ1MDNjNzg5YzhmYzg1NDBiNTBjMTRjOS4u
NWE0ZmY4NGE3M2M1MzhiNzdkZDU5ZDMzMGZlNjc0N2U3MTgwN2JiYSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2l6ZXMuaApAQCAtNDIsNiArNDIsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiBuYW1lc3BhY2Ug
U2l6ZXMgewogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0IgPSAxMDI0OwogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgTUIgPSBrQiAqIGtCOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgR0IgPSBr
QiAqIGtCICoga0I7CiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudCA9IDg7CiAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359396</attachid>
            <date>2019-01-17 11:43:35 -0800</date>
            <delta_ts>2019-01-17 13:14:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190117114333.patch</filename>
            <type>text/plain</type>
            <size>28702</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi43ZGVjNWJmNjgxOTBlOGUw
YjkxNDVjNmVmNzVkMDRkOWY1Y2Q3NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjlmMjNiZWRjYTFmYjViZGVjZTE0Y2I1MWE5YTI4MWQ1N2Vj
ZjM3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZWRiZDdiNzZiMGI5MTExN2FhNDc2
ZmI0Nzg4NTZiNmU1YmE2YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAx
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91
bGRCZUVuYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgor
ICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2Fj
YWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0NhZ2VkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVh
cC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAg
ICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6
U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0
U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJt
YWxsb2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdl
U2l6ZSk6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2Eu
LmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xMzE1LDcgKzEzMTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5
SWRTbG93CiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2ln
YWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0
YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVO
dW1iZXIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFz
ZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBU
YWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBi
aWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlw
ZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W3QwXSwgdDMsIHQyKQogICAgIGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElW
RV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIp
CisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6
OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQx
XSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1Mjcs
MTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBX
ZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lH
QUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmlt
aXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJd
LCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZB
cnJheToKICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGggW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRp
IFt0MywgdDEsIDRdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0
QnlWYWxVaW50MzJBcnJheToKICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0Mywg
dDIpCiAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNp
Z25lZCB2YWx1ZXMuCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50
IGluIExMSW50LgpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxTbG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1
OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAg
bG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFs
dWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdl
Ojpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFn
VHlwZU51bWJlcikKICAgICAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAg
ICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdh
Y2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlk
NmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4
NmQ0ZDdiYmU5ODkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNp
ZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGln
bmFzKHZvaWQqKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07Ci0KIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBi
YXNlUHRyLCBzaXplX3Qgc2l6ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNl
CisjZWxzZSAvLyBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExP
QwogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKaW5kZXggMWIwNDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4u
NzQ4YTUxYTE4ZjRmNTgwNzkwZGE1ZGUxN2E0N2Q2MDI3MTdjM2FkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBA
IC0yOSwxNiArMjksMTUgQEAKIAogI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVT
RV9TWVNURU1fTUFMTE9DCiAjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMAotI2RlZmluZSBQUklN
SVRJVkVfR0lHQUNBR0VfTUFTSyAwCi0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfTUFTSyAwCi0j
ZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFIDgxOTIKLQotZXh0ZXJuICJDIiB7Ci1hbGln
bmFzKHZvaWQqKSBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIgZ19naWdhY2FnZUJhc2VQ
dHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXTsKLX0KIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsK
IAorY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVU
b01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdp
Z2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKK2Nv
bnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSA4ICogMTAyNDsKKworZXh0ZXJu
ICJDIiBhbGlnbmFzKHZvaWQqKSBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogc3RydWN0IEJhc2VQdHJzIHsK
ICAgICB1aW50cHRyX3QgcmVzZXJ2ZWRGb3JGbGFnczsKICAgICB2b2lkKiBwcmltaXRpdmU7CkBA
IC0xMjYsNyArMTI1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIHRyeUFsbG9jYXRlWmVy
b2VkVmlydHVhbFBhZ2VzKEtpbmQsIHNpemVfdCBzaXplKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGZyZWVWaXJ0dWFsUGFnZXMoS2luZCwgdm9pZCogYmFzZVB0ciwgc2l6ZV90IHNpemUpOwog
CiB9IC8vIG5hbWVzcGFjZSBHaWdhY2FnZQotI2Vsc2UKKyNlbHNlIC8vIGRlZmluZWQoVVNFX1NZ
U1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9DCiAjaW5jbHVkZSA8Ym1hbGxvYy9HaWdh
Y2FnZS5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdl
LmNwcAppbmRleCBhODg2MjNkNjllZTM3MGVlOWRkZWUzNDU3MTU5MTI4ZjAzZjBjYjNhLi5iNmFl
MTg2NzlhNTA5NjE1OGIwM2E3YjdiMmYwZjM2YWU3ZGQ4NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmNwcApAQCAtMzUsMjMgKzM1LDI1IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2lu
Y2x1ZGUgPG11dGV4PgogCisjaWYgR0lHQUNBR0VfRU5BQkxFRAorCituYW1lc3BhY2UgR2lnYWNh
Z2UgeworCiAvLyBUaGlzIGlzIGV4YWN0bHkgMzJHQiBiZWNhdXNlIGluc2lkZSBKU0MsIGluZGV4
ZWQgYWNjZXNzZXMgZm9yIGFycmF5cywgdHlwZWQgYXJyYXlzLCBldGMsCiAvLyB1c2UgdW5zaWdu
ZWQgMzItYml0IGludHMgYXMgaW5kaWNlcy4gVGhlIGl0ZW1zIHRob3NlIGluZGljZXMgYWNjZXNz
IGFyZSA4IGJ5dGVzIG9yIGxlc3MKIC8vIGluIHNpemUuIDJeMzIgKiA4ID0gMzJHQi4gVGhpcyBt
ZWFucyBpZiBhbiBhY2Nlc3Mgb24gYSBjYWdlZCB0eXBlIGhhcHBlbnMgdG8gZ28gb3V0IG9mCiAv
LyBib3VuZHMsIHRoZSBhY2Nlc3MgaXMgZ3VhcmFudGVlZCB0byBsYW5kIHNvbWV3aGVyZSBlbHNl
IGluIHRoZSBjYWdlIG9yIGluc2lkZSB0aGUgcnVud2F5LgogLy8gSWYgdGhpcyB3ZXJlIGxlc3Mg
dGhhbiAzMkdCLCB0aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUg
Y2FnZS4KLSNkZWZpbmUgR0lHQUNBR0VfUlVOV0FZICgzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAy
NCkKK2NvbnN0ZXhwciB1aW50NjRfdCBnaWdhY2FnZVJ1bndheSA9IDMybGx1ICogMTAyNCAqIDEw
MjQgKiAxMDI0OwogCiAvLyBOb3RlOiBnX2dpZ2FjYWdlQmFzZVB0cnNbMF0gaXMgcmVzZXJ2ZWQg
Zm9yIHN0b3JpbmcgdGhlIHdhc0VuYWJsZWQgZmxhZy4KIC8vIFRoZSBmaXJzdCBnaWdhY2FnZUJh
c2VQdHIgd2lsbCBzdGFydCBhdCBnX2dpZ2FjYWdlQmFzZVB0cnNbc2l6ZW9mKHZvaWQqKV0uCiAv
LyBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGUgd2FzRW5hYmxlZCBmbGFnIHdpbGwgYWxzbyBiZSBw
cm90ZWN0ZWQgYWxvbmcgd2l0aCB0aGUKIC8vIGdpZ2FjYWdlQmFzZVB0cnMuCi1hbGlnbmFzKEdJ
R0FDQUdFX0JBU0VfUFRSU19TSVpFKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRV07CithbGlnbmFzKGdpZ2FjYWdlQmFzZVB0cnNTaXplKSBjaGFyIGdfZ2ln
YWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwogCi1uYW1lc3BhY2UgR2lnYWNhZ2UgewotCiBuYW1lc3BhY2UgewogCiBib29sIHNf
aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOwpAQCAtNjEsMTIgKzYzLDEyIEBA
IHZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8v
IFdlIG1pZ2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0
aGUgbWluaW11bSB3ZSBuZWVkLgogICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZt
UGFnZVNpemUoKSAtIDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBHSUdB
Q0FHRV9CQVNFX1BUUlNfU0laRSwgUFJPVF9SRUFEKTsKKyAgICBtcHJvdGVjdChnX2dpZ2FjYWdl
QmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQpOwogfQogCiB2b2lkIHVu
cHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogewotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNl
UHRycywgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwor
ICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgZ2lnYWNhZ2VCYXNlUHRyc1NpemUsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnByb3RlY3RHaWdhY2FnZUJhc2VQ
dHJzU2NvcGUgewpAQCAtMTAxLDI2ICsxMDMsMjMgQEAgc3RydWN0IFByaW1pdGl2ZURpc2FibGVD
YWxsYmFja3MgewogICAgIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKIAotI2lmIEdJ
R0FDQUdFX0VOQUJMRUQKIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKICAgICBjYXNlIEtpbmQ6OlJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0
cjoKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBLaW5k
OjpQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FDQUdF
X1JVTldBWSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGdpZ2FjYWdlUnVu
d2F5KTsKICAgICBjYXNlIEtpbmQ6OkpTVmFsdWU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KDApOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsK
IH0KLSNlbmRpZgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpCiB7Ci0jaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25jZUZsYWcsCkBAIC0x
ODksNyArMTg4LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICBzZXRXYXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAg
ICB9KTsKLSNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiB9CiAKIHZvaWQgZGlzYWJsZVByaW1p
dGl2ZUdpZ2FjYWdlKCkKQEAgLTI2NSw4ICsyNjMsNiBAQCBib29sIGlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiBib29sIHNob3VsZEJlRW5hYmxlZCgpCiB7CiAgICAgc3Rh
dGljIGJvb2wgY2FjaGVkID0gZmFsc2U7Ci0KLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAg
ICBvbmNlRmxhZywKQEAgLTI4OCwxMiArMjg0LDExIEBAIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7Ci0j
ZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAotICAgIAogICAgIHJldHVybiBjYWNoZWQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCiAKKyNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCmluZGV4IGVhYjgwZmQyZDNlMjQyMjhjYjlmZmNk
ZDgzNDc5ZDFlYmRjYjFkMzguLmQwZjYyNjA3NWRmNmRkMjhjNzBiNjUwOTQwZTRiNDNjMjE5NWU1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKQEAgLTMwLDE2ICszMCw1MyBAQAogI2lu
Y2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJCSW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRm
b3JtLmgiCisjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUg
PGludHR5cGVzLmg+CiAKKyNpZiAoKEJPUyhEQVJXSU4pIHx8IEJPUyhMSU5VWCkpICYmIFwKKyhC
Q1BVKFg4Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykgJiYgKCFC
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCisjZGVmaW5lIEdJR0FD
QUdFX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCisjZW5kaWYK
KworCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCitlbnVtIEtpbmQgeworICAgIFJlc2VydmVkRm9y
RmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCit9
OworCitCSU5MSU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQoreworICAgIHN3aXRjaCAo
a2luZCkgeworICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgorICAgICAg
ICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFByaW1pdGl2ZToKKyAg
ICAgICAgcmV0dXJuICJQcmltaXRpdmUiOworICAgIGNhc2UgSlNWYWx1ZToKKyAgICAgICAgcmV0
dXJuICJKU1ZhbHVlIjsKKyAgICB9CisgICAgQkNSQVNIKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisKICNpZiBCQ1BVKEFSTTY0KQotI2RlZmluZSBQ
UklNSVRJVkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwbGx1Ci0jZGVmaW5lIEpTVkFMVUVfR0lH
QUNBR0VfU0laRSAweDQwMDAwMDAwbGx1Citjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2Fj
YWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFs
dWVHaWdhY2FnZVNpemUgPSAxICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNpemVf
dCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSA9IDE2ICogU2l6ZXM6OmtCOworY29uc3RleHByIHNpemVf
dCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gU2l6ZXM6OkdCIC8gMjsKICNkZWZpbmUgR0lH
QUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAxCiAjZWxzZQotI2RlZmluZSBQUklNSVRJVkVfR0lH
QUNBR0VfU0laRSAweDgwMDAwMDAwMGxsdQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX1NJWkUg
MHg0MDAwMDAwMDBsbHUKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0g
MzIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2Fn
ZVNpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNh
Z2VCYXNlUHRyc1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtCOworY29uc3RleHByIHNpemVf
dCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gNCAqIGJtYWxsb2M6OlNpemVzOjpHQjsKICNk
ZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAwCiAjZW5kaWYKIApAQCAtNTAsMzAg
Kzg3LDE1IEBACiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQogI2VuZGlm
CiAKLXN0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdvKFBSSU1JVElWRV9HSUdBQ0FH
RV9TSVpFKSwgIiIpOwotc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oSlNWQUxV
RV9HSUdBQ0FHRV9TSVpFKSwgIiIpOwotCi0jZGVmaW5lIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhz
aXplKSAoKHNpemUpIC0gMSkKLQotI2RlZmluZSBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSyBHSUdB
Q0FHRV9TSVpFX1RPX01BU0soUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUpCi0jZGVmaW5lIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSyBHSUdBQ0FHRV9TSVpFX1RPX01BU0soSlNWQUxVRV9HSUdBQ0FHRV9T
SVpFKQotCi0jaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBcCi0gICAgKEJDUFUo
WDg2XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19JTFAzMl9fKSAmJiAoIUJQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkKLSNkZWZpbmUgR0lHQUNBR0Vf
RU5BQkxFRCAxCi0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDAKLSNlbmRpZgorc3Rh
dGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28ocHJpbWl0aXZlR2lnYWNhZ2VTaXplKSwg
IiIpOworc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oanNWYWx1ZUdpZ2FjYWdl
U2l6ZSksICIiKTsKIAotI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRS
U19TSVpFIDE2Mzg0Ci0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA0MDk2
Ci0jZW5kaWYKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemVfdCBzaXpl
KSB7IHJldHVybiBzaXplIC0gMTsgfQogCi1leHRlcm4gIkMiIGFsaWduYXMoR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkUpIEJFWFBPUlQgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkVdOworY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSBn
aWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0ZXhwciBzaXpl
X3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNh
Z2VTaXplKTsKIAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2V4dGVybiAiQyIgYWxpZ25hcyhnaWdh
Y2FnZUJhc2VQdHJzU2l6ZSkgQkVYUE9SVCBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2Fn
ZUJhc2VQdHJzU2l6ZV07CiAKIEJJTkxJTkUgYm9vbCB3YXNFbmFibGVkKCkgeyByZXR1cm4gZ19n
aWdhY2FnZUJhc2VQdHJzWzBdOyB9CiBCSU5MSU5FIHZvaWQgc2V0V2FzRW5hYmxlZCgpIHsgZ19n
aWdhY2FnZUJhc2VQdHJzWzBdID0gdHJ1ZTsgfQpAQCAtODQsMTYgKzEwNiwxMCBAQCBzdHJ1Y3Qg
QmFzZVB0cnMgewogICAgIHZvaWQqIGpzVmFsdWU7CiB9OwogCi1lbnVtIEtpbmQgewotICAgIFJl
c2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCi0gICAgUHJpbWl0aXZlLAotICAgIEpT
VmFsdWUsCi19OwotCiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBwcmltaXRpdmUp
ID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKiksICIiKTsKIHN0YXRpY19hc3NlcnQo
b2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFsdWUpID09IEtpbmQ6OkpTVmFsdWUgKiBzaXplb2Yodm9p
ZCopLCAiIik7CiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtS2luZHMgPSAyOworY29u
c3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMjsKIAogQkVYUE9SVCB2b2lkIGVuc3VyZUdpZ2Fj
YWdlKCk7CiAKQEAgLTEwOSwyMCArMTI1LDYgQEAgQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOwogaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2Fn
ZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VEaXNhYmxlZCgpOyB9CiBpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJs
ZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0K
IAotQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtp
bmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAg
ICAgIHJldHVybiAiUHJpbWl0aXZlIjsKLSAgICBjYXNlIEpTVmFsdWU6Ci0gICAgICAgIHJldHVy
biAiSlNWYWx1ZSI7Ci0gICAgfQotICAgIEJDUkFTSCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEJhc2VQdHJzJiBiYXNlUHRycywgS2luZCBraW5k
KQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMTU4LDkgKzE2MCw5IEBAIEJJTkxJTkUgc2l6
ZV90IHNpemUoS2luZCBraW5kKQogICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNl
UHRyOgogICAgICAgICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIFBy
aW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oUFJJTUlUSVZFX0dJ
R0FDQUdFX1NJWkUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihwcmltaXRp
dmVHaWdhY2FnZVNpemUpOwogICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9TSVpFKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4oanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgfQogICAgIEJDUkFT
SCgpOwogICAgIHJldHVybiAwOwpAQCAtMTczLDcgKzE3NSw3IEBAIEJJTkxJTkUgc2l6ZV90IGFs
aWdubWVudChLaW5kIGtpbmQpCiAKIEJJTkxJTkUgc2l6ZV90IG1hc2soS2luZCBraW5kKQogewot
ICAgIHJldHVybiBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZShraW5kKSk7CisgICAgcmV0dXJu
IGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplKGtpbmQpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KQEAgLTIwMiw2ICsyMDQsMjcgQEAgQklOTElORSBib29sIGlzQ2FnZWQoS2luZCBraW5k
LCBjb25zdCB2b2lkKiBwdHIpCiAKIEJFWFBPUlQgYm9vbCBzaG91bGRCZUVuYWJsZWQoKTsKIAor
I2Vsc2UgLy8gR0lHQUNBR0VfRU5BQkxFRAorCitCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEtpbmQp
Cit7CisgICAgQkNSQVNIKCk7CisgICAgc3RhdGljIHZvaWQqIHVucmVhY2hhYmxlOworICAgIHJl
dHVybiB1bnJlYWNoYWJsZTsKK30KK0JJTkxJTkUgc2l6ZV90IHNpemUoS2luZCkgeyBCQ1JBU0go
KTsgcmV0dXJuIDA7IH0KK0JJTkxJTkUgdm9pZCBlbnN1cmVHaWdhY2FnZSgpIHsgfQorQklOTElO
RSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorQklOTElORSBib29sIGlzQ2Fn
ZWQoS2luZCwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyBCQ1JBU0goKTsgcmV0dXJuIHB0
cjsgfQorQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hv
dWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
KCkgeyB9CitCSU5MSU5FIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCop
KHZvaWQqKSwgdm9pZCopIHsgfQorQklOTElORSB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVD
YWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KKworI2VuZGlmIC8vIEdJR0FDQUdF
X0VOQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKIAogCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuY3BwCmluZGV4IDUzYjNlMzY5MTkzZjFmNTQ5OWEzYWNlYTQ3YmM1NzE3OTJiMzBhMGUuLjQ2
NWQwNDk2ZWEyY2E5NGNhNjgyMjNiZTQ4NWYyOWIxYjIwM2UxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5oIgogI2lu
Y2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJDaHVuay5oIgorI2luY2x1ZGUgIkNy
eXB0b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiR2lnYWNh
Z2UuaCIKICNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKQEAgLTYxLDcgKzYyLDEzIEBAIEhlYXA6Okhl
YXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAjaWYgR0lHQUNBR0Vf
RU5BQkxFRAogICAgICAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CiAgICAgICAgICAgICBSRUxF
QVNFX0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOwotICAgICAgICAgICAgbV9sYXJnZUZyZWUu
YWRkKExhcmdlUmFuZ2UoZ2lnYWNhZ2VCYXNlUHRyKCksIGdpZ2FjYWdlU2l6ZSgpLCAwLCAwKSk7
CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207CisgICAgICAgICAgICBjcnlwdG9SYW5kb20o
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnJhbmRvbSksIHNpemVvZihyYW5kb20p
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZVNpemUoKSA+IEdpZ2FjYWdl
OjptaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlKTsKKyAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQgPSByYW5kb20gJSAoZ2lnYWNhZ2VTaXplKCkgLSBHaWdhY2FnZTo6bWluaW11bUNhZ2VTaXpl
QWZ0ZXJTbGlkZSk7CisgICAgICAgICAgICBvZmZzZXQgPSByb3VuZERvd25Ub011bHRpcGxlT2Yo
dm1QYWdlU2l6ZSgpLCBvZmZzZXQpOworICAgICAgICAgICAgdm9pZCogYmFzZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSArIG9mZnNldDsKKyAg
ICAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKGJhc2UsIGdpZ2FjYWdlU2l6ZSgp
IC0gb2Zmc2V0LCAwLCAwKSk7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U2l6ZXMuaAppbmRleCBmNzVmN2U4ZmNjN2Y2N2RiZDUwM2M3ODljOGZjODU0MGI1MGMxNGM5Li4z
MzVmMDBmNGVmNjE2NWI1YjE3YTQ1MmM2ZTcxNDdhMWEzYTI4ZDUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
aXplcy5oCkBAIC00MCw4OCArNDAsODkgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogLy8gUmVwb3Np
dG9yeSBmb3IgbWFsbG9jIHNpemluZyBjb25zdGFudHMgYW5kIGNhbGN1bGF0aW9ucy4KIAogbmFt
ZXNwYWNlIFNpemVzIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCID0gMTAyNDsKLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IE1CID0ga0IgKiBrQjsKLQotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgYWxpZ25tZW50ID0gODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudE1hc2sg
PSBhbGlnbm1lbnQgLSAxdWw7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rU2l6ZSA9
IDEgKiBNQjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rTWFzayA9IH4oY2h1bmtTaXpl
IC0gMXVsKTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9IDI1NjsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsUGFnZVNpemUgPSA0ICoga0I7Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VMaW5lQ291bnQgPSBzbWFsbFBhZ2VTaXplIC8gc21h
bGxMaW5lU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc01heCA9
IDUxMjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTWF4ID0gMzIgKiBrQjsKLQotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVNYXggPSBzbWFsbE1heCAqIDI7Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwYWdlQ2xhc3NDb3VudCA9IHBhZ2VTaXplTWF4IC8gc21hbGxQYWdl
U2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVXYXN0ZUZhY3RvciA9IDg7
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9IDg7Ci0KLSAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gc21hbGxNYXggLyBwYWdlU2l6ZVdhc3Rl
RmFjdG9yOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VBbGlnbm1lbnRNYXNrID0gbGFy
Z2VBbGlnbm1lbnQgLSAxOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWFsbG9jYXRvckxv
Z0NhcGFjaXR5ID0gNTEyOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnVtcFJhbmdlQ2FjaGVD
YXBhY2l0eSA9IDM7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzY2F2ZW5nZXJCeXRl
c1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COwotICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OwotICAgIAotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWFza1NpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc01heCAvIGFsaWdubWVu
dDsKLQotICAgIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAg
ICB7Ci0gICAgICAgIC8vIFdlIG1hc2sgdG8gYWNjb21tb2RhdGUgemVyby4KLSAgICAgICAgcmV0
dXJuIG1hc2soKHNpemUgLSAxKSAvIGFsaWdubWVudCwgbWFza1NpemVDbGFzc0NvdW50IC0gMSk7
Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1Np
emVDbGFzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAobWFza1NpemVDbGFzcyArIDEpICogYWxp
Z25tZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nQWxpZ25tZW50TWlu
ID0gbWFza1NpemVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwotCi0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBsb2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIobWFza1Np
emVDbGFzc01heCkpICogbG9nV2FzdGVGYWN0b3I7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ1Np
emVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9nMihz
aXplIC0gMSkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gKHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkpOwotICAgICAgICByZXR1
cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8PCBi
YXNlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6ZV90IGxv
Z1NpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9nU2l6ZUNsYXNzIC8g
bG9nV2FzdGVGYWN0b3I7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xhc3MgJSBs
b2dXYXN0ZUZhY3RvcjsKLSAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2Up
ICsgKG9mZnNldCArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0NvdW50
ICsgbG9nU2l6ZUNsYXNzQ291bnQ7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IHNpemVDbGFzcyhzaXpl
X3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChzaXplIDw9IG1hc2tTaXplQ2xhc3NNYXgpCi0g
ICAgICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzcyhzaXplKTsKLSAgICAgICAgcmV0dXJuIG1h
c2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgc2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIGlm
IChzaXplQ2xhc3MgPCBtYXNrU2l6ZUNsYXNzQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gbWFz
a09iamVjdFNpemUoc2l6ZUNsYXNzKTsKLSAgICAgICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6
ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIHNp
emVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChw
YWdlQ2xhc3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7Ci0gICAgfQorc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qga0IgPSAxMDI0Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgTUIgPSBrQiAqIGtCOwor
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgR0IgPSBrQiAqIGtCICoga0I7CisKK3N0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IGFsaWdubWVudCA9IDg7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhbGln
bm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBj
aHVua1NpemUgPSAxICogTUI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBjaHVua01hc2sgPSB+
KGNodW5rU2l6ZSAtIDF1bCk7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsTGluZVNp
emUgPSAyNTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbFBhZ2VTaXplID0gNCAqIGtC
Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc21hbGxQYWdlTGluZUNvdW50ID0gc21hbGxQYWdl
U2l6ZSAvIHNtYWxsTGluZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXpl
Q2xhc3NNYXggPSA1MTI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbE1heCA9IDMyICog
a0I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplTWF4ID0gc21hbGxNYXggKiAy
Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZUNsYXNzQ291bnQgPSBwYWdlU2l6ZU1heCAv
IHNtYWxsUGFnZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplV2FzdGVG
YWN0b3IgPSA4Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nV2FzdGVGYWN0b3IgPSA4Owor
CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBsYXJnZUFsaWdubWVudCA9IHNtYWxsTWF4IC8gcGFn
ZVNpemVXYXN0ZUZhY3RvcjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxhcmdlQWxpZ25tZW50
TWFzayA9IGxhcmdlQWxpZ25tZW50IC0gMTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVh
bGxvY2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJ1bXBS
YW5nZUNhY2hlQ2FwYWNpdHkgPSAzOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzY2F2ZW5n
ZXJCeXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COworc3RhdGljIGNvbnN0ZXhw
ciBkb3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OworCitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzTWF4IC8gYWxpZ25t
ZW50OworCitjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7Cisg
ICAgLy8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgorICAgIHJldHVybiBtYXNrKChzaXpl
IC0gMSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3NDb3VudCAtIDEpOworfQorCitpbmxpbmUg
c2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNsYXNzKQoreworICAgIHJldHVy
biAobWFza1NpemVDbGFzcyArIDEpICogYWxpZ25tZW50OworfQorCitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6ZUNsYXNzTWF4IC8gbG9nV2FzdGVGYWN0
b3I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzc0NvdW50ID0gKGxvZzIo
c21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KSkgKiBsb2dXYXN0ZUZhY3RvcjsKKwor
aW5saW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZV90IGJh
c2UgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01heCk7CisgICAgc2l6ZV90
IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpKTsKKyAgICBy
ZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8
PCBiYXNlKTsKK30KKworaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXplKHNpemVfdCBsb2dTaXpl
Q2xhc3MpCit7CisgICAgc2l6ZV90IGJhc2UgPSBsb2dTaXplQ2xhc3MgLyBsb2dXYXN0ZUZhY3Rv
cjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbG9nU2l6ZUNsYXNzICUgbG9nV2FzdGVGYWN0b3I7Cisg
ICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpICsgKG9mZnNldCArIDEpICogKGxv
Z0FsaWdubWVudE1pbiA8PCBiYXNlKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6
ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXplQ2xhc3NDb3VudDsKKwor
aW5saW5lIHNpemVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHNpemUgPD0g
bWFza1NpemVDbGFzc01heCkKKyAgICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6ZSk7Cisg
ICAgcmV0dXJuIG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKK30KKwor
aW5saW5lIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xhc3MpCit7CisgICAgaWYgKHNp
emVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKKyAgICAgICAgcmV0dXJuIG1hc2tPYmplY3RT
aXplKHNpemVDbGFzcyk7CisgICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6ZUNsYXNzIC0gbWFz
a1NpemVDbGFzc0NvdW50KTsKK30KKworaW5saW5lIHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFn
ZUNsYXNzKQoreworICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBzbWFsbFBhZ2VTaXplOwor
fQogfQogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359409</attachid>
            <date>2019-01-17 13:14:33 -0800</date>
            <delta_ts>2019-01-17 13:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190117131431.patch</filename>
            <type>text/plain</type>
            <size>28756</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi43ZGVjNWJmNjgxOTBlOGUw
YjkxNDVjNmVmNzVkMDRkOWY1Y2Q3NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjlmMjNiZWRjYTFmYjViZGVjZTE0Y2I1MWE5YTI4MWQ1N2Vj
ZjM3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZWRiZDdiNzZiMGI5MTExN2FhNDc2
ZmI0Nzg4NTZiNmU1YmE2YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAx
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91
bGRCZUVuYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgor
ICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2Fj
YWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0NhZ2VkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVh
cC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAg
ICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6
U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0
U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJt
YWxsb2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdl
U2l6ZSk6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2Eu
LmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xMzE1LDcgKzEzMTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5
SWRTbG93CiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2ln
YWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0
YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVO
dW1iZXIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFz
ZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBU
YWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBi
aWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlw
ZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W3QwXSwgdDMsIHQyKQogICAgIGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElW
RV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIp
CisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6
OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQx
XSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1Mjcs
MTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBX
ZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lH
QUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmlt
aXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJd
LCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZB
cnJheToKICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGggW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRp
IFt0MywgdDEsIDRdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0
QnlWYWxVaW50MzJBcnJheToKICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0Mywg
dDIpCiAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNp
Z25lZCB2YWx1ZXMuCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50
IGluIExMSW50LgpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxTbG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1
OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAg
bG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFs
dWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdl
Ojpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFn
VHlwZU51bWJlcikKICAgICAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAg
ICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdh
Y2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlk
NmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4
NmQ0ZDdiYmU5ODkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNp
ZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGln
bmFzKHZvaWQqKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07Ci0KIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBi
YXNlUHRyLCBzaXplX3Qgc2l6ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNl
CisjZWxzZSAvLyBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExP
QwogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKaW5kZXggMWIwNDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4u
NzQ4YTUxYTE4ZjRmNTgwNzkwZGE1ZGUxN2E0N2Q2MDI3MTdjM2FkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBA
IC0yOSwxNiArMjksMTUgQEAKIAogI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVT
RV9TWVNURU1fTUFMTE9DCiAjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMAotI2RlZmluZSBQUklN
SVRJVkVfR0lHQUNBR0VfTUFTSyAwCi0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfTUFTSyAwCi0j
ZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFIDgxOTIKLQotZXh0ZXJuICJDIiB7Ci1hbGln
bmFzKHZvaWQqKSBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIgZ19naWdhY2FnZUJhc2VQ
dHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXTsKLX0KIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsK
IAorY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVU
b01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdp
Z2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKK2Nv
bnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSA4ICogMTAyNDsKKworZXh0ZXJu
ICJDIiBhbGlnbmFzKHZvaWQqKSBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogc3RydWN0IEJhc2VQdHJzIHsK
ICAgICB1aW50cHRyX3QgcmVzZXJ2ZWRGb3JGbGFnczsKICAgICB2b2lkKiBwcmltaXRpdmU7CkBA
IC0xMjYsNyArMTI1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQqIHRyeUFsbG9jYXRlWmVy
b2VkVmlydHVhbFBhZ2VzKEtpbmQsIHNpemVfdCBzaXplKTsKIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGZyZWVWaXJ0dWFsUGFnZXMoS2luZCwgdm9pZCogYmFzZVB0ciwgc2l6ZV90IHNpemUpOwog
CiB9IC8vIG5hbWVzcGFjZSBHaWdhY2FnZQotI2Vsc2UKKyNlbHNlIC8vIGRlZmluZWQoVVNFX1NZ
U1RFTV9NQUxMT0MpICYmIFVTRV9TWVNURU1fTUFMTE9DCiAjaW5jbHVkZSA8Ym1hbGxvYy9HaWdh
Y2FnZS5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdl
LmNwcAppbmRleCBhODg2MjNkNjllZTM3MGVlOWRkZWUzNDU3MTU5MTI4ZjAzZjBjYjNhLi5iNmFl
MTg2NzlhNTA5NjE1OGIwM2E3YjdiMmYwZjM2YWU3ZGQ4NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmNwcApAQCAtMzUsMjMgKzM1LDI1IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2lu
Y2x1ZGUgPG11dGV4PgogCisjaWYgR0lHQUNBR0VfRU5BQkxFRAorCituYW1lc3BhY2UgR2lnYWNh
Z2UgeworCiAvLyBUaGlzIGlzIGV4YWN0bHkgMzJHQiBiZWNhdXNlIGluc2lkZSBKU0MsIGluZGV4
ZWQgYWNjZXNzZXMgZm9yIGFycmF5cywgdHlwZWQgYXJyYXlzLCBldGMsCiAvLyB1c2UgdW5zaWdu
ZWQgMzItYml0IGludHMgYXMgaW5kaWNlcy4gVGhlIGl0ZW1zIHRob3NlIGluZGljZXMgYWNjZXNz
IGFyZSA4IGJ5dGVzIG9yIGxlc3MKIC8vIGluIHNpemUuIDJeMzIgKiA4ID0gMzJHQi4gVGhpcyBt
ZWFucyBpZiBhbiBhY2Nlc3Mgb24gYSBjYWdlZCB0eXBlIGhhcHBlbnMgdG8gZ28gb3V0IG9mCiAv
LyBib3VuZHMsIHRoZSBhY2Nlc3MgaXMgZ3VhcmFudGVlZCB0byBsYW5kIHNvbWV3aGVyZSBlbHNl
IGluIHRoZSBjYWdlIG9yIGluc2lkZSB0aGUgcnVud2F5LgogLy8gSWYgdGhpcyB3ZXJlIGxlc3Mg
dGhhbiAzMkdCLCB0aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUg
Y2FnZS4KLSNkZWZpbmUgR0lHQUNBR0VfUlVOV0FZICgzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAy
NCkKK2NvbnN0ZXhwciB1aW50NjRfdCBnaWdhY2FnZVJ1bndheSA9IDMybGx1ICogMTAyNCAqIDEw
MjQgKiAxMDI0OwogCiAvLyBOb3RlOiBnX2dpZ2FjYWdlQmFzZVB0cnNbMF0gaXMgcmVzZXJ2ZWQg
Zm9yIHN0b3JpbmcgdGhlIHdhc0VuYWJsZWQgZmxhZy4KIC8vIFRoZSBmaXJzdCBnaWdhY2FnZUJh
c2VQdHIgd2lsbCBzdGFydCBhdCBnX2dpZ2FjYWdlQmFzZVB0cnNbc2l6ZW9mKHZvaWQqKV0uCiAv
LyBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGUgd2FzRW5hYmxlZCBmbGFnIHdpbGwgYWxzbyBiZSBw
cm90ZWN0ZWQgYWxvbmcgd2l0aCB0aGUKIC8vIGdpZ2FjYWdlQmFzZVB0cnMuCi1hbGlnbmFzKEdJ
R0FDQUdFX0JBU0VfUFRSU19TSVpFKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRV07CithbGlnbmFzKGdpZ2FjYWdlQmFzZVB0cnNTaXplKSBjaGFyIGdfZ2ln
YWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwogCi1uYW1lc3BhY2UgR2lnYWNhZ2UgewotCiBuYW1lc3BhY2UgewogCiBib29sIHNf
aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOwpAQCAtNjEsMTIgKzYzLDEyIEBA
IHZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8v
IFdlIG1pZ2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0
aGUgbWluaW11bSB3ZSBuZWVkLgogICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZt
UGFnZVNpemUoKSAtIDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBHSUdB
Q0FHRV9CQVNFX1BUUlNfU0laRSwgUFJPVF9SRUFEKTsKKyAgICBtcHJvdGVjdChnX2dpZ2FjYWdl
QmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQpOwogfQogCiB2b2lkIHVu
cHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogewotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNl
UHRycywgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwor
ICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgZ2lnYWNhZ2VCYXNlUHRyc1NpemUsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnByb3RlY3RHaWdhY2FnZUJhc2VQ
dHJzU2NvcGUgewpAQCAtMTAxLDI2ICsxMDMsMjMgQEAgc3RydWN0IFByaW1pdGl2ZURpc2FibGVD
YWxsYmFja3MgewogICAgIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKIAotI2lmIEdJ
R0FDQUdFX0VOQUJMRUQKIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKICAgICBjYXNlIEtpbmQ6OlJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0
cjoKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBLaW5k
OjpQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FDQUdF
X1JVTldBWSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGdpZ2FjYWdlUnVu
d2F5KTsKICAgICBjYXNlIEtpbmQ6OkpTVmFsdWU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KDApOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsK
IH0KLSNlbmRpZgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpCiB7Ci0jaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25jZUZsYWcsCkBAIC0x
ODksNyArMTg4LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICBzZXRXYXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAg
ICB9KTsKLSNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiB9CiAKIHZvaWQgZGlzYWJsZVByaW1p
dGl2ZUdpZ2FjYWdlKCkKQEAgLTI2NSw4ICsyNjMsNiBAQCBib29sIGlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiBib29sIHNob3VsZEJlRW5hYmxlZCgpCiB7CiAgICAgc3Rh
dGljIGJvb2wgY2FjaGVkID0gZmFsc2U7Ci0KLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAg
ICBvbmNlRmxhZywKQEAgLTI4OCwxMiArMjg0LDExIEBAIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7Ci0j
ZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAotICAgIAogICAgIHJldHVybiBjYWNoZWQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCiAKKyNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCmluZGV4IGVhYjgwZmQyZDNlMjQyMjhjYjlmZmNk
ZDgzNDc5ZDFlYmRjYjFkMzguLmQwZjYyNjA3NWRmNmRkMjhjNzBiNjUwOTQwZTRiNDNjMjE5NWU1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKQEAgLTMwLDE2ICszMCw1MyBAQAogI2lu
Y2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJCSW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRm
b3JtLmgiCisjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUg
PGludHR5cGVzLmg+CiAKKyNpZiAoKEJPUyhEQVJXSU4pIHx8IEJPUyhMSU5VWCkpICYmIFwKKyhC
Q1BVKFg4Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykgJiYgKCFC
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCisjZGVmaW5lIEdJR0FD
QUdFX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCisjZW5kaWYK
KworCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCitlbnVtIEtpbmQgeworICAgIFJlc2VydmVkRm9y
RmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCit9
OworCitCSU5MSU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQoreworICAgIHN3aXRjaCAo
a2luZCkgeworICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgorICAgICAg
ICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFByaW1pdGl2ZToKKyAg
ICAgICAgcmV0dXJuICJQcmltaXRpdmUiOworICAgIGNhc2UgSlNWYWx1ZToKKyAgICAgICAgcmV0
dXJuICJKU1ZhbHVlIjsKKyAgICB9CisgICAgQkNSQVNIKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisKICNpZiBCQ1BVKEFSTTY0KQotI2RlZmluZSBQ
UklNSVRJVkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwbGx1Ci0jZGVmaW5lIEpTVkFMVUVfR0lH
QUNBR0VfU0laRSAweDQwMDAwMDAwbGx1Citjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2Fj
YWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFs
dWVHaWdhY2FnZVNpemUgPSAxICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNpemVf
dCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSA9IDE2ICogU2l6ZXM6OmtCOworY29uc3RleHByIHNpemVf
dCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gU2l6ZXM6OkdCIC8gMjsKICNkZWZpbmUgR0lH
QUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAxCiAjZWxzZQotI2RlZmluZSBQUklNSVRJVkVfR0lH
QUNBR0VfU0laRSAweDgwMDAwMDAwMGxsdQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX1NJWkUg
MHg0MDAwMDAwMDBsbHUKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0g
MzIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2Fn
ZVNpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNh
Z2VCYXNlUHRyc1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtCOworY29uc3RleHByIHNpemVf
dCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gNCAqIGJtYWxsb2M6OlNpemVzOjpHQjsKICNk
ZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAwCiAjZW5kaWYKIApAQCAtNTAsMzAg
Kzg3LDE1IEBACiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQogI2VuZGlm
CiAKLXN0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdvKFBSSU1JVElWRV9HSUdBQ0FH
RV9TSVpFKSwgIiIpOwotc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oSlNWQUxV
RV9HSUdBQ0FHRV9TSVpFKSwgIiIpOwotCi0jZGVmaW5lIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhz
aXplKSAoKHNpemUpIC0gMSkKLQotI2RlZmluZSBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSyBHSUdB
Q0FHRV9TSVpFX1RPX01BU0soUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUpCi0jZGVmaW5lIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSyBHSUdBQ0FHRV9TSVpFX1RPX01BU0soSlNWQUxVRV9HSUdBQ0FHRV9T
SVpFKQotCi0jaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBcCi0gICAgKEJDUFUo
WDg2XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19JTFAzMl9fKSAmJiAoIUJQTEFU
Rk9STShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkKLSNkZWZpbmUgR0lHQUNBR0Vf
RU5BQkxFRCAxCi0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDAKLSNlbmRpZgorc3Rh
dGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28ocHJpbWl0aXZlR2lnYWNhZ2VTaXplKSwg
IiIpOworc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oanNWYWx1ZUdpZ2FjYWdl
U2l6ZSksICIiKTsKIAotI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRS
U19TSVpFIDE2Mzg0Ci0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA0MDk2
Ci0jZW5kaWYKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemVfdCBzaXpl
KSB7IHJldHVybiBzaXplIC0gMTsgfQogCi1leHRlcm4gIkMiIGFsaWduYXMoR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkUpIEJFWFBPUlQgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFT
RV9QVFJTX1NJWkVdOworY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSBn
aWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0ZXhwciBzaXpl
X3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNh
Z2VTaXplKTsKIAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2V4dGVybiAiQyIgYWxpZ25hcyhnaWdh
Y2FnZUJhc2VQdHJzU2l6ZSkgQkVYUE9SVCBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2Fn
ZUJhc2VQdHJzU2l6ZV07CiAKIEJJTkxJTkUgYm9vbCB3YXNFbmFibGVkKCkgeyByZXR1cm4gZ19n
aWdhY2FnZUJhc2VQdHJzWzBdOyB9CiBCSU5MSU5FIHZvaWQgc2V0V2FzRW5hYmxlZCgpIHsgZ19n
aWdhY2FnZUJhc2VQdHJzWzBdID0gdHJ1ZTsgfQpAQCAtODQsMTYgKzEwNiwxMCBAQCBzdHJ1Y3Qg
QmFzZVB0cnMgewogICAgIHZvaWQqIGpzVmFsdWU7CiB9OwogCi1lbnVtIEtpbmQgewotICAgIFJl
c2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCi0gICAgUHJpbWl0aXZlLAotICAgIEpT
VmFsdWUsCi19OwotCiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBwcmltaXRpdmUp
ID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKiksICIiKTsKIHN0YXRpY19hc3NlcnQo
b2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFsdWUpID09IEtpbmQ6OkpTVmFsdWUgKiBzaXplb2Yodm9p
ZCopLCAiIik7CiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtS2luZHMgPSAyOworY29u
c3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMjsKIAogQkVYUE9SVCB2b2lkIGVuc3VyZUdpZ2Fj
YWdlKCk7CiAKQEAgLTEwOSwyMCArMTI1LDYgQEAgQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOwogaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2Fn
ZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNh
Z2VEaXNhYmxlZCgpOyB9CiBpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJs
ZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0K
IAotQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtp
bmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAg
ICAgIHJldHVybiAiUHJpbWl0aXZlIjsKLSAgICBjYXNlIEpTVmFsdWU6Ci0gICAgICAgIHJldHVy
biAiSlNWYWx1ZSI7Ci0gICAgfQotICAgIEJDUkFTSCgpOwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEJhc2VQdHJzJiBiYXNlUHRycywgS2luZCBraW5k
KQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMTU4LDkgKzE2MCw5IEBAIEJJTkxJTkUgc2l6
ZV90IHNpemUoS2luZCBraW5kKQogICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNl
UHRyOgogICAgICAgICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIFBy
aW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oUFJJTUlUSVZFX0dJ
R0FDQUdFX1NJWkUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihwcmltaXRp
dmVHaWdhY2FnZVNpemUpOwogICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9TSVpFKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4oanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgfQogICAgIEJDUkFT
SCgpOwogICAgIHJldHVybiAwOwpAQCAtMTczLDcgKzE3NSw3IEBAIEJJTkxJTkUgc2l6ZV90IGFs
aWdubWVudChLaW5kIGtpbmQpCiAKIEJJTkxJTkUgc2l6ZV90IG1hc2soS2luZCBraW5kKQogewot
ICAgIHJldHVybiBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZShraW5kKSk7CisgICAgcmV0dXJu
IGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplKGtpbmQpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuYz4KQEAgLTIwMiw2ICsyMDQsMjcgQEAgQklOTElORSBib29sIGlzQ2FnZWQoS2luZCBraW5k
LCBjb25zdCB2b2lkKiBwdHIpCiAKIEJFWFBPUlQgYm9vbCBzaG91bGRCZUVuYWJsZWQoKTsKIAor
I2Vsc2UgLy8gR0lHQUNBR0VfRU5BQkxFRAorCitCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEtpbmQp
Cit7CisgICAgQkNSQVNIKCk7CisgICAgc3RhdGljIHZvaWQqIHVucmVhY2hhYmxlOworICAgIHJl
dHVybiB1bnJlYWNoYWJsZTsKK30KK0JJTkxJTkUgc2l6ZV90IHNpemUoS2luZCkgeyBCQ1JBU0go
KTsgcmV0dXJuIDA7IH0KK0JJTkxJTkUgdm9pZCBlbnN1cmVHaWdhY2FnZSgpIHsgfQorQklOTElO
RSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorQklOTElORSBib29sIGlzQ2Fn
ZWQoS2luZCwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyBCQ1JBU0goKTsgcmV0dXJuIHB0
cjsgfQorQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZUlmU2hv
dWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
KCkgeyB9CitCSU5MSU5FIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCop
KHZvaWQqKSwgdm9pZCopIHsgfQorQklOTElORSB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVD
YWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KKworI2VuZGlmIC8vIEdJR0FDQUdF
X0VOQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKIAogCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXAuY3BwCmluZGV4IDUzYjNlMzY5MTkzZjFmNTQ5OWEzYWNlYTQ3YmM1NzE3OTJiMzBhMGUuLjI4
OGRiNDFlYzVlNGRhNTQ3ZTZjODljY2QwYjU2ZTc0ODhlN2YwODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5oIgogI2lu
Y2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJDaHVuay5oIgorI2luY2x1ZGUgIkNy
eXB0b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiR2lnYWNh
Z2UuaCIKICNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKQEAgLTYxLDcgKzYyLDEzIEBAIEhlYXA6Okhl
YXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAjaWYgR0lHQUNBR0Vf
RU5BQkxFRAogICAgICAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CiAgICAgICAgICAgICBSRUxF
QVNFX0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOwotICAgICAgICAgICAgbV9sYXJnZUZyZWUu
YWRkKExhcmdlUmFuZ2UoZ2lnYWNhZ2VCYXNlUHRyKCksIGdpZ2FjYWdlU2l6ZSgpLCAwLCAwKSk7
CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207CisgICAgICAgICAgICBjcnlwdG9SYW5kb20o
cmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnJhbmRvbSksIHNpemVvZihyYW5kb20p
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZVNpemUoKSA+IEdpZ2FjYWdl
OjptaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlKTsKKyAgICAgICAgICAgIHB0cmRpZmZfdCBvZmZz
ZXQgPSByYW5kb20gJSAoZ2lnYWNhZ2VTaXplKCkgLSBHaWdhY2FnZTo6bWluaW11bUNhZ2VTaXpl
QWZ0ZXJTbGlkZSk7CisgICAgICAgICAgICBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PHB0cmRp
ZmZfdD4ocm91bmREb3duVG9NdWx0aXBsZU9mKHZtUGFnZVNpemUoKSwgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4ob2Zmc2V0KSkpOworICAgICAgICAgICAgdm9pZCogYmFzZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSArIG9mZnNldDsKKyAgICAg
ICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKGJhc2UsIGdpZ2FjYWdlU2l6ZSgpIC0g
b2Zmc2V0LCAwLCAwKSk7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6
ZXMuaAppbmRleCBmNzVmN2U4ZmNjN2Y2N2RiZDUwM2M3ODljOGZjODU0MGI1MGMxNGM5Li4zMzVm
MDBmNGVmNjE2NWI1YjE3YTQ1MmM2ZTcxNDdhMWEzYTI4ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1NpemVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXpl
cy5oCkBAIC00MCw4OCArNDAsODkgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogLy8gUmVwb3NpdG9y
eSBmb3IgbWFsbG9jIHNpemluZyBjb25zdGFudHMgYW5kIGNhbGN1bGF0aW9ucy4KIAogbmFtZXNw
YWNlIFNpemVzIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCID0gMTAyNDsKLSAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IE1CID0ga0IgKiBrQjsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YWxpZ25tZW50ID0gODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudE1hc2sgPSBh
bGlnbm1lbnQgLSAxdWw7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rU2l6ZSA9IDEg
KiBNQjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rTWFzayA9IH4oY2h1bmtTaXplIC0g
MXVsKTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9IDI1NjsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsUGFnZVNpemUgPSA0ICoga0I7Ci0gICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VMaW5lQ291bnQgPSBzbWFsbFBhZ2VTaXplIC8gc21hbGxM
aW5lU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc01heCA9IDUx
MjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTWF4ID0gMzIgKiBrQjsKLQotICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVNYXggPSBzbWFsbE1heCAqIDI7Ci0gICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBwYWdlQ2xhc3NDb3VudCA9IHBhZ2VTaXplTWF4IC8gc21hbGxQYWdlU2l6
ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVXYXN0ZUZhY3RvciA9IDg7Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9IDg7Ci0KLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gc21hbGxNYXggLyBwYWdlU2l6ZVdhc3RlRmFj
dG9yOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VBbGlnbm1lbnRNYXNrID0gbGFyZ2VB
bGlnbm1lbnQgLSAxOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWFsbG9jYXRvckxvZ0Nh
cGFjaXR5ID0gNTEyOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnVtcFJhbmdlQ2FjaGVDYXBh
Y2l0eSA9IDM7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzY2F2ZW5nZXJCeXRlc1Bl
ck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COwotICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
bWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OwotICAgIAotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbWFza1NpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc01heCAvIGFsaWdubWVudDsK
LQotICAgIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7
Ci0gICAgICAgIC8vIFdlIG1hc2sgdG8gYWNjb21tb2RhdGUgemVyby4KLSAgICAgICAgcmV0dXJu
IG1hc2soKHNpemUgLSAxKSAvIGFsaWdubWVudCwgbWFza1NpemVDbGFzc0NvdW50IC0gMSk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1NpemVD
bGFzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAobWFza1NpemVDbGFzcyArIDEpICogYWxpZ25t
ZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nQWxpZ25tZW50TWluID0g
bWFza1NpemVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwotCi0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBsb2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIobWFza1NpemVD
bGFzc01heCkpICogbG9nV2FzdGVGYWN0b3I7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ1NpemVD
bGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9nMihzaXpl
IC0gMSkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
KHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkpOwotICAgICAgICByZXR1cm4g
YmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNl
KTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6ZV90IGxvZ1Np
emVDbGFzcykKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9nU2l6ZUNsYXNzIC8gbG9n
V2FzdGVGYWN0b3I7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xhc3MgJSBsb2dX
YXN0ZUZhY3RvcjsKLSAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpICsg
KG9mZnNldCArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0NvdW50ICsg
bG9nU2l6ZUNsYXNzQ291bnQ7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IHNpemVDbGFzcyhzaXplX3Qg
c2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChzaXplIDw9IG1hc2tTaXplQ2xhc3NNYXgpCi0gICAg
ICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzcyhzaXplKTsKLSAgICAgICAgcmV0dXJuIG1hc2tT
aXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUg
c2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIGlmIChz
aXplQ2xhc3MgPCBtYXNrU2l6ZUNsYXNzQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gbWFza09i
amVjdFNpemUoc2l6ZUNsYXNzKTsKLSAgICAgICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6ZUNs
YXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIHNpemVf
dCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChwYWdl
Q2xhc3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7Ci0gICAgfQorc3RhdGljIGNvbnN0ZXhwciBzaXpl
X3Qga0IgPSAxMDI0Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgTUIgPSBrQiAqIGtCOworc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgR0IgPSBrQiAqIGtCICoga0I7CisKK3N0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGFsaWdubWVudCA9IDg7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhbGlnbm1l
bnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBjaHVu
a1NpemUgPSAxICogTUI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBjaHVua01hc2sgPSB+KGNo
dW5rU2l6ZSAtIDF1bCk7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsTGluZVNpemUg
PSAyNTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbFBhZ2VTaXplID0gNCAqIGtCOwor
c3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc21hbGxQYWdlTGluZUNvdW50ID0gc21hbGxQYWdlU2l6
ZSAvIHNtYWxsTGluZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXplQ2xh
c3NNYXggPSA1MTI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbE1heCA9IDMyICoga0I7
CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplTWF4ID0gc21hbGxNYXggKiAyOwor
c3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZUNsYXNzQ291bnQgPSBwYWdlU2l6ZU1heCAvIHNt
YWxsUGFnZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplV2FzdGVGYWN0
b3IgPSA4Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nV2FzdGVGYWN0b3IgPSA4OworCitz
dGF0aWMgY29uc3RleHByIHNpemVfdCBsYXJnZUFsaWdubWVudCA9IHNtYWxsTWF4IC8gcGFnZVNp
emVXYXN0ZUZhY3RvcjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxhcmdlQWxpZ25tZW50TWFz
ayA9IGxhcmdlQWxpZ25tZW50IC0gMTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgZGVhbGxv
Y2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJ1bXBSYW5n
ZUNhY2hlQ2FwYWNpdHkgPSAzOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzY2F2ZW5nZXJC
eXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COworc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OworCitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtYXNrU2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzTWF4IC8gYWxpZ25tZW50
OworCitjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAg
Ly8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgorICAgIHJldHVybiBtYXNrKChzaXplIC0g
MSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3NDb3VudCAtIDEpOworfQorCitpbmxpbmUgc2l6
ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNsYXNzKQoreworICAgIHJldHVybiAo
bWFza1NpemVDbGFzcyArIDEpICogYWxpZ25tZW50OworfQorCitzdGF0aWMgY29uc3RleHByIHNp
emVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6ZUNsYXNzTWF4IC8gbG9nV2FzdGVGYWN0b3I7
CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzc0NvdW50ID0gKGxvZzIoc21h
bGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KSkgKiBsb2dXYXN0ZUZhY3RvcjsKKworaW5s
aW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZV90IGJhc2Ug
PSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01heCk7CisgICAgc2l6ZV90IG9m
ZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpKTsKKyAgICByZXR1
cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8PCBi
YXNlKTsKK30KKworaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXplKHNpemVfdCBsb2dTaXplQ2xh
c3MpCit7CisgICAgc2l6ZV90IGJhc2UgPSBsb2dTaXplQ2xhc3MgLyBsb2dXYXN0ZUZhY3RvcjsK
KyAgICBzaXplX3Qgb2Zmc2V0ID0gbG9nU2l6ZUNsYXNzICUgbG9nV2FzdGVGYWN0b3I7CisgICAg
cmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpICsgKG9mZnNldCArIDEpICogKGxvZ0Fs
aWdubWVudE1pbiA8PCBiYXNlKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc2l6ZUNs
YXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXplQ2xhc3NDb3VudDsKKworaW5s
aW5lIHNpemVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHNpemUgPD0gbWFz
a1NpemVDbGFzc01heCkKKyAgICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6ZSk7CisgICAg
cmV0dXJuIG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKK30KKworaW5s
aW5lIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xhc3MpCit7CisgICAgaWYgKHNpemVD
bGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKKyAgICAgICAgcmV0dXJuIG1hc2tPYmplY3RTaXpl
KHNpemVDbGFzcyk7CisgICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6ZUNsYXNzIC0gbWFza1Np
emVDbGFzc0NvdW50KTsKK30KKworaW5saW5lIHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNs
YXNzKQoreworICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBzbWFsbFBhZ2VTaXplOworfQog
fQogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359410</attachid>
            <date>2019-01-17 13:45:30 -0800</date>
            <delta_ts>2019-01-17 14:12:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190117134529.patch</filename>
            <type>text/plain</type>
            <size>28363</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi43ZGVjNWJmNjgxOTBlOGUw
YjkxNDVjNmVmNzVkMDRkOWY1Y2Q3NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjlmMjNiZWRjYTFmYjViZGVjZTE0Y2I1MWE5YTI4MWQ1N2Vj
ZjM3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZWRiZDdiNzZiMGI5MTExN2FhNDc2
ZmI0Nzg4NTZiNmU1YmE2YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAx
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91
bGRCZUVuYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgor
ICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2Fj
YWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0NhZ2VkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVh
cC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAg
ICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6
U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0
U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJt
YWxsb2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdl
U2l6ZSk6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2Eu
LmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xMzE1LDcgKzEzMTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5
SWRTbG93CiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2ln
YWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0
YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVO
dW1iZXIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFz
ZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBU
YWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBi
aWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlw
ZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W3QwXSwgdDMsIHQyKQogICAgIGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElW
RV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIp
CisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6
OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQx
XSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1Mjcs
MTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBX
ZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lH
QUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmlt
aXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJd
LCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZB
cnJheToKICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGggW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRp
IFt0MywgdDEsIDRdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0
QnlWYWxVaW50MzJBcnJheToKICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0Mywg
dDIpCiAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNp
Z25lZCB2YWx1ZXMuCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50
IGluIExMSW50LgpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxTbG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1
OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAg
bG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFs
dWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdl
Ojpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFn
VHlwZU51bWJlcikKICAgICAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAg
ICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdh
Y2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlk
NmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4
NmQ0ZDdiYmU5ODkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNp
ZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGln
bmFzKHZvaWQqKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07Ci0KIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBi
YXNlUHRyLCBzaXplX3Qgc2l6ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNl
CisjZWxzZSAvLyBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExP
QwogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKaW5kZXggMWIwNDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4u
NTAyMjdhMjgxYzUyYTQ5YWYyMWUwNzZiY2JmYzk5MWFkODNhOTVmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBA
IC0yOSwxNiArMjksMTUgQEAKIAogI2lmIGRlZmluZWQoVVNFX1NZU1RFTV9NQUxMT0MpICYmIFVT
RV9TWVNURU1fTUFMTE9DCiAjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMAotI2RlZmluZSBQUklN
SVRJVkVfR0lHQUNBR0VfTUFTSyAwCi0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfTUFTSyAwCi0j
ZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFIDgxOTIKLQotZXh0ZXJuICJDIiB7Ci1hbGln
bmFzKHZvaWQqKSBleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNoYXIgZ19naWdhY2FnZUJhc2VQ
dHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXTsKLX0KIAogbmFtZXNwYWNlIEdpZ2FjYWdlIHsK
IAorY29uc3Qgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlTWFzayA9IDA7Citjb25zdCBzaXplX3Qg
anNWYWx1ZUdpZ2FjYWdlTWFzayA9IDA7Citjb25zdCBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1Np
emUgPSA4ICoga0I7CisKK2V4dGVybiAiQyIgYWxpZ25hcyh2b2lkKikgZXh0ZXJuIFdURl9FWFBP
UlRfUFJJVkFURSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07
CisKIHN0cnVjdCBCYXNlUHRycyB7CiAgICAgdWludHB0cl90IHJlc2VydmVkRm9yRmxhZ3M7CiAg
ICAgdm9pZCogcHJpbWl0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9H
aWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAppbmRleCBh
ODg2MjNkNjllZTM3MGVlOWRkZWUzNDU3MTU5MTI4ZjAzZjBjYjNhLi5iNmFlMTg2NzlhNTA5NjE1
OGIwM2E3YjdiMmYwZjM2YWU3ZGQ4NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNw
cApAQCAtMzUsMjMgKzM1LDI1IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPG11dGV4
PgogCisjaWYgR0lHQUNBR0VfRU5BQkxFRAorCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCiAvLyBU
aGlzIGlzIGV4YWN0bHkgMzJHQiBiZWNhdXNlIGluc2lkZSBKU0MsIGluZGV4ZWQgYWNjZXNzZXMg
Zm9yIGFycmF5cywgdHlwZWQgYXJyYXlzLCBldGMsCiAvLyB1c2UgdW5zaWduZWQgMzItYml0IGlu
dHMgYXMgaW5kaWNlcy4gVGhlIGl0ZW1zIHRob3NlIGluZGljZXMgYWNjZXNzIGFyZSA4IGJ5dGVz
IG9yIGxlc3MKIC8vIGluIHNpemUuIDJeMzIgKiA4ID0gMzJHQi4gVGhpcyBtZWFucyBpZiBhbiBh
Y2Nlc3Mgb24gYSBjYWdlZCB0eXBlIGhhcHBlbnMgdG8gZ28gb3V0IG9mCiAvLyBib3VuZHMsIHRo
ZSBhY2Nlc3MgaXMgZ3VhcmFudGVlZCB0byBsYW5kIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjYWdl
IG9yIGluc2lkZSB0aGUgcnVud2F5LgogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0
aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KLSNkZWZp
bmUgR0lHQUNBR0VfUlVOV0FZICgzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKK2NvbnN0ZXhw
ciB1aW50NjRfdCBnaWdhY2FnZVJ1bndheSA9IDMybGx1ICogMTAyNCAqIDEwMjQgKiAxMDI0Owog
CiAvLyBOb3RlOiBnX2dpZ2FjYWdlQmFzZVB0cnNbMF0gaXMgcmVzZXJ2ZWQgZm9yIHN0b3Jpbmcg
dGhlIHdhc0VuYWJsZWQgZmxhZy4KIC8vIFRoZSBmaXJzdCBnaWdhY2FnZUJhc2VQdHIgd2lsbCBz
dGFydCBhdCBnX2dpZ2FjYWdlQmFzZVB0cnNbc2l6ZW9mKHZvaWQqKV0uCiAvLyBUaGlzIGlzIGRv
bmUgc28gdGhhdCB0aGUgd2FzRW5hYmxlZCBmbGFnIHdpbGwgYWxzbyBiZSBwcm90ZWN0ZWQgYWxv
bmcgd2l0aCB0aGUKIC8vIGdpZ2FjYWdlQmFzZVB0cnMuCi1hbGlnbmFzKEdJR0FDQUdFX0JBU0Vf
UFRSU19TSVpFKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07CithbGlnbmFzKGdpZ2FjYWdlQmFzZVB0cnNTaXplKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRy
c1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIHVzaW5nIG5hbWVzcGFjZSBibWFsbG9jOwogCi1u
YW1lc3BhY2UgR2lnYWNhZ2UgewotCiBuYW1lc3BhY2UgewogCiBib29sIHNfaXNEaXNhYmxpbmdQ
cmltaXRpdmVHaWdhY2FnZURpc2FibGVkOwpAQCAtNjEsMTIgKzYzLDEyIEBAIHZvaWQgcHJvdGVj
dEdpZ2FjYWdlQmFzZVB0cnMoKQogICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8vIFdlIG1pZ2h0IG9u
bHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0aGUgbWluaW11bSB3
ZSBuZWVkLgogICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZtUGFnZVNpemUoKSAt
IDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBHSUdBQ0FHRV9CQVNFX1BU
UlNfU0laRSwgUFJPVF9SRUFEKTsKKyAgICBtcHJvdGVjdChnX2dpZ2FjYWdlQmFzZVB0cnMsIGdp
Z2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQpOwogfQogCiB2b2lkIHVucHJvdGVjdEdpZ2Fj
YWdlQmFzZVB0cnMoKQogewotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgR0lHQUNB
R0VfQkFTRV9QVFJTX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOworICAgIG1wcm90ZWN0
KGdfZ2lnYWNhZ2VCYXNlUHRycywgZ2lnYWNhZ2VCYXNlUHRyc1NpemUsIFBST1RfUkVBRCB8IFBS
T1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUgewpA
QCAtMTAxLDI2ICsxMDMsMjMgQEAgc3RydWN0IFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3Mgewog
ICAgIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKIAotI2lmIEdJR0FDQUdFX0VOQUJM
RUQKIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsK
ICAgICBjYXNlIEtpbmQ6OlJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKICAgICAgICAg
UkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBLaW5kOjpQcmltaXRpdmU6
Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FDQUdFX1JVTldBWSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGdpZ2FjYWdlUnVud2F5KTsKICAgICBj
YXNlIEtpbmQ6OkpTVmFsdWU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KDAp
OwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsKIH0KLSNlbmRpZgog
CiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiB7Ci0j
aWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsK
ICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25jZUZsYWcsCkBAIC0xODksNyArMTg4LDYg
QEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICBzZXRXYXNFbmFibGVkKCk7CiAg
ICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAgICB9KTsKLSNlbmRp
ZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiB9CiAKIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdl
KCkKQEAgLTI2NSw4ICsyNjMsNiBAQCBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VE
aXNhYmxlZCgpCiBib29sIHNob3VsZEJlRW5hYmxlZCgpCiB7CiAgICAgc3RhdGljIGJvb2wgY2Fj
aGVkID0gZmFsc2U7Ci0KLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAgICBvbmNlRmxhZywK
QEAgLTI4OCwxMiArMjg0LDExIEBAIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkKICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7Ci0jZW5kaWYgLy8gR0lH
QUNBR0VfRU5BQkxFRAotICAgIAogICAgIHJldHVybiBjYWNoZWQ7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEdpZ2FjYWdlCiAKKyNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5oCmluZGV4IGVhYjgwZmQyZDNlMjQyMjhjYjlmZmNkZDgzNDc5ZDFlYmRj
YjFkMzguLmIyODdjMGMzYzU1YzZlYzJkNmI3ZTM0MjEwZDRhN2MxZThjMzk1MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmgKQEAgLTMwLDE2ICszMCw1MyBAQAogI2luY2x1ZGUgIkJFeHBv
cnQuaCIKICNpbmNsdWRlICJCSW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRmb3JtLmgiCisjaW5j
bHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGludHR5cGVzLmg+
CiAKKyNpZiAoKEJPUyhEQVJXSU4pIHx8IEJPUyhMSU5VWCkpICYmIFwKKyhCQ1BVKFg4Nl82NCkg
fHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykgJiYgKCFCUExBVEZPUk0oSU9T
X0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCisjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQg
MQorI2Vsc2UKKyNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCisjZW5kaWYKKworCituYW1lc3Bh
Y2UgR2lnYWNhZ2UgeworCitlbnVtIEtpbmQgeworICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RB
QmFzZVB0ciA9IDAsCisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCit9OworCitCSU5MSU5F
IGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAg
IGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgorICAgICAgICBSRUxFQVNFX0JB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFByaW1pdGl2ZToKKyAgICAgICAgcmV0dXJu
ICJQcmltaXRpdmUiOworICAgIGNhc2UgSlNWYWx1ZToKKyAgICAgICAgcmV0dXJuICJKU1ZhbHVl
IjsKKyAgICB9CisgICAgQkNSQVNIKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKyNpZiBH
SUdBQ0FHRV9FTkFCTEVECisKICNpZiBCQ1BVKEFSTTY0KQotI2RlZmluZSBQUklNSVRJVkVfR0lH
QUNBR0VfU0laRSAweDgwMDAwMDAwbGx1Ci0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfU0laRSAw
eDQwMDAwMDAwbGx1Citjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSA9IDIg
KiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZVNp
emUgPSAxICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNpemVfdCBnaWdhY2FnZUJh
c2VQdHJzU2l6ZSA9IDE2ICogYm1hbGxvYzo6U2l6ZXM6OmtCOworY29uc3RleHByIHNpemVfdCBt
aW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gYm1hbGxvYzo6U2l6ZXM6OkdCIC8gMjsKICNkZWZp
bmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAxCiAjZWxzZQotI2RlZmluZSBQUklNSVRJ
VkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwMGxsdQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdF
X1NJWkUgMHg0MDAwMDAwMDBsbHUKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VT
aXplID0gMzIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVH
aWdhY2FnZVNpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhwciBzaXplX3Qg
Z2lnYWNhZ2VCYXNlUHRyc1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtCOworY29uc3RleHBy
IHNpemVfdCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gNCAqIGJtYWxsb2M6OlNpemVzOjpH
QjsKICNkZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAwCiAjZW5kaWYKIApAQCAt
NTAsMzAgKzg3LDE1IEBACiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQog
I2VuZGlmCiAKLXN0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdvKFBSSU1JVElWRV9H
SUdBQ0FHRV9TSVpFKSwgIiIpOwotc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28o
SlNWQUxVRV9HSUdBQ0FHRV9TSVpFKSwgIiIpOwotCi0jZGVmaW5lIEdJR0FDQUdFX1NJWkVfVE9f
TUFTSyhzaXplKSAoKHNpemUpIC0gMSkKLQotI2RlZmluZSBQUklNSVRJVkVfR0lHQUNBR0VfTUFT
SyBHSUdBQ0FHRV9TSVpFX1RPX01BU0soUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUpCi0jZGVmaW5l
IEpTVkFMVUVfR0lHQUNBR0VfTUFTSyBHSUdBQ0FHRV9TSVpFX1RPX01BU0soSlNWQUxVRV9HSUdB
Q0FHRV9TSVpFKQotCi0jaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAmJiBcCi0gICAg
KEJDUFUoWDg2XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19JTFAzMl9fKSAmJiAo
IUJQTEFURk9STShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkKLSNkZWZpbmUgR0lH
QUNBR0VfRU5BQkxFRCAxCi0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDAKLSNlbmRp
Zgorc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28ocHJpbWl0aXZlR2lnYWNhZ2VT
aXplKSwgIiIpOworc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oanNWYWx1ZUdp
Z2FjYWdlU2l6ZSksICIiKTsKIAotI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5lIEdJR0FDQUdFX0JB
U0VfUFRSU19TSVpFIDE2Mzg0Ci0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RSA0MDk2Ci0jZW5kaWYKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXplVG9NYXNrKHNpemVf
dCBzaXplKSB7IHJldHVybiBzaXplIC0gMTsgfQogCi1leHRlcm4gIkMiIGFsaWduYXMoR0lHQUNB
R0VfQkFTRV9QVFJTX1NJWkUpIEJFWFBPUlQgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNB
R0VfQkFTRV9QVFJTX1NJWkVdOworY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1h
c2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKK2NvbnN0ZXhw
ciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVl
R2lnYWNhZ2VTaXplKTsKIAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2V4dGVybiAiQyIgYWxpZ25h
cyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgQkVYUE9SVCBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tn
aWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIEJJTkxJTkUgYm9vbCB3YXNFbmFibGVkKCkgeyByZXR1
cm4gZ19naWdhY2FnZUJhc2VQdHJzWzBdOyB9CiBCSU5MSU5FIHZvaWQgc2V0V2FzRW5hYmxlZCgp
IHsgZ19naWdhY2FnZUJhc2VQdHJzWzBdID0gdHJ1ZTsgfQpAQCAtODQsMTYgKzEwNiwxMCBAQCBz
dHJ1Y3QgQmFzZVB0cnMgewogICAgIHZvaWQqIGpzVmFsdWU7CiB9OwogCi1lbnVtIEtpbmQgewot
ICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCi0gICAgUHJpbWl0aXZlLAot
ICAgIEpTVmFsdWUsCi19OwotCiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBwcmlt
aXRpdmUpID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKiksICIiKTsKIHN0YXRpY19h
c3NlcnQob2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFsdWUpID09IEtpbmQ6OkpTVmFsdWUgKiBzaXpl
b2Yodm9pZCopLCAiIik7CiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtS2luZHMgPSAy
OworY29uc3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMjsKIAogQkVYUE9SVCB2b2lkIGVuc3Vy
ZUdpZ2FjYWdlKCk7CiAKQEAgLTEwOSwyMCArMTI1LDYgQEAgQkVYUE9SVCBib29sIGlzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOwogaW5saW5lIGJvb2wgaXNQcmltaXRpdmVH
aWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiBpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJl
RGlzYWJsZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVk
KCk7IH0KIAotQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKLXsKLSAgICBzd2l0
Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAg
ICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBQcmltaXRpdmU6
Ci0gICAgICAgIHJldHVybiAiUHJpbWl0aXZlIjsKLSAgICBjYXNlIEpTVmFsdWU6Ci0gICAgICAg
IHJldHVybiAiSlNWYWx1ZSI7Ci0gICAgfQotICAgIEJDUkFTSCgpOwotICAgIHJldHVybiBudWxs
cHRyOwotfQotCiBCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEJhc2VQdHJzJiBiYXNlUHRycywgS2lu
ZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMTU4LDkgKzE2MCw5IEBAIEJJTkxJ
TkUgc2l6ZV90IHNpemUoS2luZCBraW5kKQogICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5v
dEFCYXNlUHRyOgogICAgICAgICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBj
YXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oUFJJTUlU
SVZFX0dJR0FDQUdFX1NJWkUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihw
cmltaXRpdmVHaWdhY2FnZVNpemUpOwogICAgIGNhc2UgSlNWYWx1ZToKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9TSVpFKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgfQogICAg
IEJDUkFTSCgpOwogICAgIHJldHVybiAwOwpAQCAtMTczLDcgKzE3NSw3IEBAIEJJTkxJTkUgc2l6
ZV90IGFsaWdubWVudChLaW5kIGtpbmQpCiAKIEJJTkxJTkUgc2l6ZV90IG1hc2soS2luZCBraW5k
KQogewotICAgIHJldHVybiBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZShraW5kKSk7CisgICAg
cmV0dXJuIGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplKGtpbmQpKTsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KQEAgLTIwMiw2ICsyMDQsMjcgQEAgQklOTElORSBib29sIGlzQ2FnZWQoS2lu
ZCBraW5kLCBjb25zdCB2b2lkKiBwdHIpCiAKIEJFWFBPUlQgYm9vbCBzaG91bGRCZUVuYWJsZWQo
KTsKIAorI2Vsc2UgLy8gR0lHQUNBR0VfRU5BQkxFRAorCitCSU5MSU5FIHZvaWQqJiBiYXNlUHRy
KEtpbmQpCit7CisgICAgQkNSQVNIKCk7CisgICAgc3RhdGljIHZvaWQqIHVucmVhY2hhYmxlOwor
ICAgIHJldHVybiB1bnJlYWNoYWJsZTsKK30KK0JJTkxJTkUgc2l6ZV90IHNpemUoS2luZCkgeyBC
Q1JBU0goKTsgcmV0dXJuIDA7IH0KK0JJTkxJTkUgdm9pZCBlbnN1cmVHaWdhY2FnZSgpIHsgfQor
QklOTElORSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorQklOTElORSBib29s
IGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyBCQ1JBU0goKTsgcmV0
dXJuIHB0cjsgfQorQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZUlmU2hvdWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdp
Z2FjYWdlKCkgeyB9CitCSU5MSU5FIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZv
aWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQorQklOTElORSB2b2lkIHJlbW92ZVByaW1pdGl2ZURp
c2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KKworI2VuZGlmIC8vIEdJ
R0FDQUdFX0VOQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKIAogCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXAuY3BwCmluZGV4IDUzYjNlMzY5MTkzZjFmNTQ5OWEzYWNlYTQ3YmM1NzE3OTJiMzBh
MGUuLjI4OGRiNDFlYzVlNGRhNTQ3ZTZjODljY2QwYjU2ZTc0ODhlN2YwODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1bGtEZWNvbW1pdC5o
IgogI2luY2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJDaHVuay5oIgorI2luY2x1
ZGUgIkNyeXB0b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
R2lnYWNhZ2UuaCIKICNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKQEAgLTYxLDcgKzYyLDEzIEBAIEhl
YXA6OkhlYXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAjaWYgR0lH
QUNBR0VfRU5BQkxFRAogICAgICAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7CiAgICAgICAgICAg
ICBSRUxFQVNFX0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOwotICAgICAgICAgICAgbV9sYXJn
ZUZyZWUuYWRkKExhcmdlUmFuZ2UoZ2lnYWNhZ2VCYXNlUHRyKCksIGdpZ2FjYWdlU2l6ZSgpLCAw
LCAwKSk7CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207CisgICAgICAgICAgICBjcnlwdG9S
YW5kb20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnJhbmRvbSksIHNpemVvZihy
YW5kb20pKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZVNpemUoKSA+IEdp
Z2FjYWdlOjptaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlKTsKKyAgICAgICAgICAgIHB0cmRpZmZf
dCBvZmZzZXQgPSByYW5kb20gJSAoZ2lnYWNhZ2VTaXplKCkgLSBHaWdhY2FnZTo6bWluaW11bUNh
Z2VTaXplQWZ0ZXJTbGlkZSk7CisgICAgICAgICAgICBvZmZzZXQgPSByZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4ocm91bmREb3duVG9NdWx0aXBsZU9mKHZtUGFnZVNpemUoKSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSkpOworICAgICAgICAgICAgdm9pZCogYmFzZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigpKSArIG9mZnNldDsK
KyAgICAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKGJhc2UsIGdpZ2FjYWdlU2l6
ZSgpIC0gb2Zmc2V0LCAwLCAwKSk7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvU2l6ZXMuaAppbmRleCBmNzVmN2U4ZmNjN2Y2N2RiZDUwM2M3ODljOGZjODU0MGI1MGMxNGM5
Li4zMzVmMDBmNGVmNjE2NWI1YjE3YTQ1MmM2ZTcxNDdhMWEzYTI4ZDUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TaXplcy5oCkBAIC00MCw4OCArNDAsODkgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogLy8gUmVw
b3NpdG9yeSBmb3IgbWFsbG9jIHNpemluZyBjb25zdGFudHMgYW5kIGNhbGN1bGF0aW9ucy4KIAog
bmFtZXNwYWNlIFNpemVzIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCID0gMTAyNDsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1CID0ga0IgKiBrQjsKLQotICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgYWxpZ25tZW50ID0gODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudE1h
c2sgPSBhbGlnbm1lbnQgLSAxdWw7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rU2l6
ZSA9IDEgKiBNQjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rTWFzayA9IH4oY2h1bmtT
aXplIC0gMXVsKTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9IDI1
NjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsUGFnZVNpemUgPSA0ICoga0I7Ci0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VMaW5lQ291bnQgPSBzbWFsbFBhZ2VTaXplIC8g
c21hbGxMaW5lU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc01h
eCA9IDUxMjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTWF4ID0gMzIgKiBrQjsKLQot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVNYXggPSBzbWFsbE1heCAqIDI7Ci0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBwYWdlQ2xhc3NDb3VudCA9IHBhZ2VTaXplTWF4IC8gc21hbGxQ
YWdlU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVXYXN0ZUZhY3RvciA9
IDg7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9IDg7Ci0KLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gc21hbGxNYXggLyBwYWdlU2l6ZVdh
c3RlRmFjdG9yOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VBbGlnbm1lbnRNYXNrID0g
bGFyZ2VBbGlnbm1lbnQgLSAxOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBkZWFsbG9jYXRv
ckxvZ0NhcGFjaXR5ID0gNTEyOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYnVtcFJhbmdlQ2Fj
aGVDYXBhY2l0eSA9IDM7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzY2F2ZW5nZXJC
eXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COwotICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OwotICAgIAotICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbWFza1NpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc01heCAvIGFsaWdu
bWVudDsKLQotICAgIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkK
LSAgICB7Ci0gICAgICAgIC8vIFdlIG1hc2sgdG8gYWNjb21tb2RhdGUgemVyby4KLSAgICAgICAg
cmV0dXJuIG1hc2soKHNpemUgLSAxKSAvIGFsaWdubWVudCwgbWFza1NpemVDbGFzc0NvdW50IC0g
MSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFz
a1NpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAobWFza1NpemVDbGFzcyArIDEpICog
YWxpZ25tZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nQWxpZ25tZW50
TWluID0gbWFza1NpemVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwotCi0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBsb2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIobWFz
a1NpemVDbGFzc01heCkpICogbG9nV2FzdGVGYWN0b3I7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxv
Z1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9n
MihzaXplIC0gMSkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpOwotICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gKHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkpOwotICAgICAgICBy
ZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1pbiA8
PCBiYXNlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6ZV90
IGxvZ1NpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0gbG9nU2l6ZUNsYXNz
IC8gbG9nV2FzdGVGYWN0b3I7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xhc3Mg
JSBsb2dXYXN0ZUZhY3RvcjsKLSAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJh
c2UpICsgKG9mZnNldCArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0Nv
dW50ICsgbG9nU2l6ZUNsYXNzQ291bnQ7Ci0KLSAgICBpbmxpbmUgc2l6ZV90IHNpemVDbGFzcyhz
aXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChzaXplIDw9IG1hc2tTaXplQ2xhc3NNYXgp
Ci0gICAgICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzcyhzaXplKTsKLSAgICAgICAgcmV0dXJu
IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKLSAgICB9Ci0KLSAgICBp
bmxpbmUgc2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAg
IGlmIChzaXplQ2xhc3MgPCBtYXNrU2l6ZUNsYXNzQ291bnQpCi0gICAgICAgICAgICByZXR1cm4g
bWFza09iamVjdFNpemUoc2l6ZUNsYXNzKTsKLSAgICAgICAgcmV0dXJuIGxvZ09iamVjdFNpemUo
c2l6ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5l
IHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IChwYWdlQ2xhc3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7Ci0gICAgfQorc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3Qga0IgPSAxMDI0Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgTUIgPSBrQiAqIGtC
Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgR0IgPSBrQiAqIGtCICoga0I7CisKK3N0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IGFsaWdubWVudCA9IDg7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBh
bGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOworCitzdGF0aWMgY29uc3RleHByIHNpemVf
dCBjaHVua1NpemUgPSAxICogTUI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBjaHVua01hc2sg
PSB+KGNodW5rU2l6ZSAtIDF1bCk7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsTGlu
ZVNpemUgPSAyNTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbFBhZ2VTaXplID0gNCAq
IGtCOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc21hbGxQYWdlTGluZUNvdW50ID0gc21hbGxQ
YWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1hc2tT
aXplQ2xhc3NNYXggPSA1MTI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbE1heCA9IDMy
ICoga0I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplTWF4ID0gc21hbGxNYXgg
KiAyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZUNsYXNzQ291bnQgPSBwYWdlU2l6ZU1h
eCAvIHNtYWxsUGFnZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplV2Fz
dGVGYWN0b3IgPSA4Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nV2FzdGVGYWN0b3IgPSA4
OworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBsYXJnZUFsaWdubWVudCA9IHNtYWxsTWF4IC8g
cGFnZVNpemVXYXN0ZUZhY3RvcjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxhcmdlQWxpZ25t
ZW50TWFzayA9IGxhcmdlQWxpZ25tZW50IC0gMTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
ZGVhbGxvY2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGJ1
bXBSYW5nZUNhY2hlQ2FwYWNpdHkgPSAzOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzY2F2
ZW5nZXJCeXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COworc3RhdGljIGNvbnN0
ZXhwciBkb3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OworCitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzTWF4IC8gYWxp
Z25tZW50OworCitjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7
CisgICAgLy8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgorICAgIHJldHVybiBtYXNrKChz
aXplIC0gMSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3NDb3VudCAtIDEpOworfQorCitpbmxp
bmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNsYXNzKQoreworICAgIHJl
dHVybiAobWFza1NpemVDbGFzcyArIDEpICogYWxpZ25tZW50OworfQorCitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6ZUNsYXNzTWF4IC8gbG9nV2FzdGVG
YWN0b3I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFzc0NvdW50ID0gKGxv
ZzIoc21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KSkgKiBsb2dXYXN0ZUZhY3RvcjsK
KworaW5saW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgc2l6ZV90
IGJhc2UgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01heCk7CisgICAgc2l6
ZV90IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpKTsKKyAg
ICByZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0FsaWdubWVudE1p
biA8PCBiYXNlKTsKK30KKworaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXplKHNpemVfdCBsb2dT
aXplQ2xhc3MpCit7CisgICAgc2l6ZV90IGJhc2UgPSBsb2dTaXplQ2xhc3MgLyBsb2dXYXN0ZUZh
Y3RvcjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbG9nU2l6ZUNsYXNzICUgbG9nV2FzdGVGYWN0b3I7
CisgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpICsgKG9mZnNldCArIDEpICog
KGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKK30KKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
c2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXplQ2xhc3NDb3VudDsK
KworaW5saW5lIHNpemVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHNpemUg
PD0gbWFza1NpemVDbGFzc01heCkKKyAgICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6ZSk7
CisgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKK30K
KworaW5saW5lIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xhc3MpCit7CisgICAgaWYg
KHNpemVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKKyAgICAgICAgcmV0dXJuIG1hc2tPYmpl
Y3RTaXplKHNpemVDbGFzcyk7CisgICAgcmV0dXJuIGxvZ09iamVjdFNpemUoc2l6ZUNsYXNzIC0g
bWFza1NpemVDbGFzc0NvdW50KTsKK30KKworaW5saW5lIHNpemVfdCBwYWdlU2l6ZShzaXplX3Qg
cGFnZUNsYXNzKQoreworICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBzbWFsbFBhZ2VTaXpl
OworfQogfQogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359425</attachid>
            <date>2019-01-17 16:47:13 -0800</date>
            <delta_ts>2019-01-17 17:10:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190117164711.patch</filename>
            <type>text/plain</type>
            <size>28439</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi43ZGVjNWJmNjgxOTBlOGUw
YjkxNDVjNmVmNzVkMDRkOWY1Y2Q3NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjlmMjNiZWRjYTFmYjViZGVjZTE0Y2I1MWE5YTI4MWQ1N2Vj
ZjM3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZWRiZDdiNzZiMGI5MTExN2FhNDc2
ZmI0Nzg4NTZiNmU1YmE2YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAx
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91
bGRCZUVuYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgor
ICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2Fj
YWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0NhZ2VkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVh
cC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAg
ICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6
U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0
U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJt
YWxsb2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdl
U2l6ZSk6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2Eu
LmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xMzE1LDcgKzEzMTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5
SWRTbG93CiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2ln
YWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0
YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVO
dW1iZXIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFz
ZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBU
YWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBi
aWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlw
ZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W3QwXSwgdDMsIHQyKQogICAgIGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElW
RV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIp
CisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6
OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQx
XSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1Mjcs
MTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBX
ZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lH
QUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmlt
aXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJd
LCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZB
cnJheToKICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGggW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRp
IFt0MywgdDEsIDRdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0
QnlWYWxVaW50MzJBcnJheToKICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0Mywg
dDIpCiAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNp
Z25lZCB2YWx1ZXMuCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50
IGluIExMSW50LgpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxTbG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1
OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAg
bG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFs
dWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdl
Ojpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFn
VHlwZU51bWJlcikKICAgICAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAg
ICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdh
Y2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlk
NmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4
NmQ0ZDdiYmU5ODkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNp
ZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGln
bmFzKHZvaWQqKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07Ci0KIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBi
YXNlUHRyLCBzaXplX3Qgc2l6ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNl
CisjZWxzZSAvLyBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExP
QwogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKaW5kZXggMWIwNDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4u
YzliY2JjNDRmMmM5M2VjNmNiMzM4NTBlNmRmNDg4ODdlOTUwYmFmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBA
IC0yNiwxOSArMjYsMTkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBkZWZpbmVkKFVTRV9T
WVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogI2RlZmluZSBHSUdBQ0FHRV9FTkFC
TEVEIDAKLSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0sgMAotI2RlZmluZSBKU1ZBTFVF
X0dJR0FDQUdFX01BU0sgMAotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA4MTkyCi0K
LWV4dGVybiAiQyIgewotYWxpZ25hcyh2b2lkKikgZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBj
aGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRV07Ci19CiAKIG5h
bWVzcGFjZSBHaWdhY2FnZSB7CiAKK2NvbnN0IHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sg
PSAwOworY29uc3Qgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSAwOworY29uc3Qgc2l6ZV90
IGdpZ2FjYWdlQmFzZVB0cnNTaXplID0gOCAqIEtCOworCitleHRlcm4gIkMiIGFsaWduYXModm9p
ZCopIGV4dGVybiBXVEZfRVhQT1JUX1BSSVZBVEUgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2ln
YWNhZ2VCYXNlUHRyc1NpemVdOworCiBzdHJ1Y3QgQmFzZVB0cnMgewogICAgIHVpbnRwdHJfdCBy
ZXNlcnZlZEZvckZsYWdzOwogICAgIHZvaWQqIHByaW1pdGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9H
aWdhY2FnZS5jcHAKaW5kZXggYTg4NjIzZDY5ZWUzNzBlZTlkZGVlMzQ1NzE1OTEyOGYwM2YwY2Iz
YS4uYjZhZTE4Njc5YTUwOTYxNThiMDNhN2I3YjJmMGYzNmFlN2RkODZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9HaWdhY2FnZS5jcHAKQEAgLTM1LDIzICszNSwyNSBAQAogI2luY2x1ZGUgPGNzdGRp
bz4KICNpbmNsdWRlIDxtdXRleD4KIAorI2lmIEdJR0FDQUdFX0VOQUJMRUQKKworbmFtZXNwYWNl
IEdpZ2FjYWdlIHsKKwogLy8gVGhpcyBpcyBleGFjdGx5IDMyR0IgYmVjYXVzZSBpbnNpZGUgSlND
LCBpbmRleGVkIGFjY2Vzc2VzIGZvciBhcnJheXMsIHR5cGVkIGFycmF5cywgZXRjLAogLy8gdXNl
IHVuc2lnbmVkIDMyLWJpdCBpbnRzIGFzIGluZGljZXMuIFRoZSBpdGVtcyB0aG9zZSBpbmRpY2Vz
IGFjY2VzcyBhcmUgOCBieXRlcyBvciBsZXNzCiAvLyBpbiBzaXplLiAyXjMyICogOCA9IDMyR0Iu
IFRoaXMgbWVhbnMgaWYgYW4gYWNjZXNzIG9uIGEgY2FnZWQgdHlwZSBoYXBwZW5zIHRvIGdvIG91
dCBvZgogLy8gYm91bmRzLCB0aGUgYWNjZXNzIGlzIGd1YXJhbnRlZWQgdG8gbGFuZCBzb21ld2hl
cmUgZWxzZSBpbiB0aGUgY2FnZSBvciBpbnNpZGUgdGhlIHJ1bndheS4KIC8vIElmIHRoaXMgd2Vy
ZSBsZXNzIHRoYW4gMzJHQiwgdGhvc2UgT09CIGFjY2Vzc2VzIGNvdWxkIHJlYWNoIG91dHNpZGUg
b2YgdGhlIGNhZ2UuCi0jZGVmaW5lIEdJR0FDQUdFX1JVTldBWSAoMzJsbHUgKiAxMDI0ICogMTAy
NCAqIDEwMjQpCitjb25zdGV4cHIgdWludDY0X3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIDEw
MjQgKiAxMDI0ICogMTAyNDsKIAogLy8gTm90ZTogZ19naWdhY2FnZUJhc2VQdHJzWzBdIGlzIHJl
c2VydmVkIGZvciBzdG9yaW5nIHRoZSB3YXNFbmFibGVkIGZsYWcuCiAvLyBUaGUgZmlyc3QgZ2ln
YWNhZ2VCYXNlUHRyIHdpbGwgc3RhcnQgYXQgZ19naWdhY2FnZUJhc2VQdHJzW3NpemVvZih2b2lk
KildLgogLy8gVGhpcyBpcyBkb25lIHNvIHRoYXQgdGhlIHdhc0VuYWJsZWQgZmxhZyB3aWxsIGFs
c28gYmUgcHJvdGVjdGVkIGFsb25nIHdpdGggdGhlCiAvLyBnaWdhY2FnZUJhc2VQdHJzLgotYWxp
Z25hcyhHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lH
QUNBR0VfQkFTRV9QVFJTX1NJWkVdOworYWxpZ25hcyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgY2hh
ciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwogCiB1c2luZyBuYW1l
c3BhY2UgYm1hbGxvYzsKIAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKLQogbmFtZXNwYWNlIHsKIAog
Ym9vbCBzX2lzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZDsKQEAgLTYxLDEyICs2
MywxMiBAQCB2b2lkIHByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCkKICAgICB1aW50cHRyX3QgYmFz
ZVB0cnMgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ19naWdhY2FnZUJhc2VQdHJzKTsK
ICAgICAvLyBXZSBtaWdodCBvbmx5IGdldCBwYWdlIHNpemUgYWxpZ25tZW50LCBidXQgdGhhdCdz
IGFsc28gdGhlIG1pbmltdW0gd2UgbmVlZC4KICAgICBSRUxFQVNFX0JBU1NFUlQoIShiYXNlUHRy
cyAmICh2bVBhZ2VTaXplKCkgLSAxKSkpOwotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRy
cywgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUsIFBST1RfUkVBRCk7CisgICAgbXByb3RlY3QoZ19n
aWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSwgUFJPVF9SRUFEKTsKIH0KIAog
dm9pZCB1bnByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCkKIHsKLSAgICBtcHJvdGVjdChnX2dpZ2Fj
YWdlQmFzZVB0cnMsIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dS
SVRFKTsKKyAgICBtcHJvdGVjdChnX2dpZ2FjYWdlQmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNT
aXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKIH0KIAogY2xhc3MgVW5wcm90ZWN0R2lnYWNh
Z2VCYXNlUHRyc1Njb3BlIHsKQEAgLTEwMSwyNiArMTAzLDIzIEBAIHN0cnVjdCBQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2tzIHsKICAgICBWZWN0b3I8Q2FsbGJhY2s+IGNhbGxiYWNrczsKIH07CiAK
LSNpZiBHSUdBQ0FHRV9FTkFCTEVECiBzaXplX3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAg
ICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBLaW5kOjpSZXNlcnZlZEZvckZsYWdzQW5kTm90
QUJhc2VQdHI6CiAgICAgICAgIFJFTEVBU0VfQkFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNh
c2UgS2luZDo6UHJpbWl0aXZlOgotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihH
SUdBQ0FHRV9SVU5XQVkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihnaWdh
Y2FnZVJ1bndheSk7CiAgICAgY2FzZSBLaW5kOjpKU1ZhbHVlOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PigwKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oMCk7CiB9Ci0jZW5kaWYKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIHZvaWQgZW5z
dXJlR2lnYWNhZ2UoKQogewotI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2UoCiAgICAgICAgIG9uY2VGbGFn
LApAQCAtMTg5LDcgKzE4OCw2IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKQogICAgICAgICAgICAg
c2V0V2FzRW5hYmxlZCgpOwogICAgICAgICAgICAgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKTsK
ICAgICAgICAgfSk7Ci0jZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAogfQogCiB2b2lkIGRpc2Fi
bGVQcmltaXRpdmVHaWdhY2FnZSgpCkBAIC0yNjUsOCArMjYzLDYgQEAgYm9vbCBpc0Rpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKQogYm9vbCBzaG91bGRCZUVuYWJsZWQoKQogewog
ICAgIHN0YXRpYyBib29sIGNhY2hlZCA9IGZhbHNlOwotCi0jaWYgR0lHQUNBR0VfRU5BQkxFRAog
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgK
ICAgICAgICAgb25jZUZsYWcsCkBAIC0yODgsMTIgKzI4NCwxMSBAQCBib29sIHNob3VsZEJlRW5h
YmxlZCgpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhY2hlZCA9IHRydWU7CiAgICAgICAg
IH0pOwotI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKLSAgICAKICAgICByZXR1cm4gY2FjaGVk
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBHaWdhY2FnZQogCisjZW5kaWYgLy8gR0lHQUNBR0VfRU5B
QkxFRAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAppbmRleCBlYWI4MGZkMmQzZTI0MjI4
Y2I5ZmZjZGQ4MzQ3OWQxZWJkY2IxZDM4Li5iMjg3YzBjM2M1NWM2ZWMyZDZiN2UzNDIxMGQ0YTdj
MWU4YzM5NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCkBAIC0zMCwxNiArMzAsNTMg
QEAKICNpbmNsdWRlICJCRXhwb3J0LmgiCiAjaW5jbHVkZSAiQklubGluZS5oIgogI2luY2x1ZGUg
IkJQbGF0Zm9ybS5oIgorI2luY2x1ZGUgIlNpemVzLmgiCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNp
bmNsdWRlIDxpbnR0eXBlcy5oPgogCisjaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgpKSAm
JiBcCisoQkNQVShYODZfNjQpIHx8IChCQ1BVKEFSTTY0KSAmJiAhZGVmaW5lZChfX0lMUDMyX18p
ICYmICghQlBMQVRGT1JNKElPU19GQU1JTFkpIHx8IEJQTEFURk9STShJT1MpKSkpKQorI2RlZmlu
ZSBHSUdBQ0FHRV9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMAor
I2VuZGlmCisKKworbmFtZXNwYWNlIEdpZ2FjYWdlIHsKKworZW51bSBLaW5kIHsKKyAgICBSZXNl
cnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHIgPSAwLAorICAgIFByaW1pdGl2ZSwKKyAgICBKU1Zh
bHVlLAorfTsKKworQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKK3sKKyAgICBz
d2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoK
KyAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY2FzZSBQcmltaXRp
dmU6CisgICAgICAgIHJldHVybiAiUHJpbWl0aXZlIjsKKyAgICBjYXNlIEpTVmFsdWU6CisgICAg
ICAgIHJldHVybiAiSlNWYWx1ZSI7CisgICAgfQorICAgIEJDUkFTSCgpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCisjaWYgR0lHQUNBR0VfRU5BQkxFRAorCiAjaWYgQkNQVShBUk02NCkKLSNk
ZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUgMHg4MDAwMDAwMGxsdQotI2RlZmluZSBKU1ZB
TFVFX0dJR0FDQUdFX1NJWkUgMHg0MDAwMDAwMGxsdQorY29uc3RleHByIHNpemVfdCBwcmltaXRp
dmVHaWdhY2FnZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNpemVf
dCBqc1ZhbHVlR2lnYWNhZ2VTaXplID0gMSAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhw
ciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjprQjsK
K2NvbnN0ZXhwciBzaXplX3QgbWluaW11bUNhZ2VTaXplQWZ0ZXJTbGlkZSA9IGJtYWxsb2M6OlNp
emVzOjpHQiAvIDI7CiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQogI2Vs
c2UKLSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUgMHg4MDAwMDAwMDBsbHUKLSNkZWZp
bmUgSlNWQUxVRV9HSUdBQ0FHRV9TSVpFIDB4NDAwMDAwMDAwbGx1Citjb25zdGV4cHIgc2l6ZV90
IHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSA9IDMyICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3Rl
eHByIHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VTaXplID0gMTYgKiBibWFsbG9jOjpTaXplczo6R0I7
Citjb25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlQmFzZVB0cnNTaXplID0gNCAqIGJtYWxsb2M6OlNp
emVzOjprQjsKK2NvbnN0ZXhwciBzaXplX3QgbWluaW11bUNhZ2VTaXplQWZ0ZXJTbGlkZSA9IDQg
KiBibWFsbG9jOjpTaXplczo6R0I7CiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZB
SUwgMAogI2VuZGlmCiAKQEAgLTUwLDMwICs4NywxNSBAQAogI2RlZmluZSBHSUdBQ0FHRV9BTExP
Q0FUSU9OX0NBTl9GQUlMIDEKICNlbmRpZgogCi1zdGF0aWNfYXNzZXJ0KGJtYWxsb2M6OmlzUG93
ZXJPZlR3byhQUklNSVRJVkVfR0lHQUNBR0VfU0laRSksICIiKTsKLXN0YXRpY19hc3NlcnQoYm1h
bGxvYzo6aXNQb3dlck9mVHdvKEpTVkFMVUVfR0lHQUNBR0VfU0laRSksICIiKTsKLQotI2RlZmlu
ZSBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZSkgKChzaXplKSAtIDEpCi0KLSNkZWZpbmUgUFJJ
TUlUSVZFX0dJR0FDQUdFX01BU0sgR0lHQUNBR0VfU0laRV9UT19NQVNLKFBSSU1JVElWRV9HSUdB
Q0FHRV9TSVpFKQotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX01BU0sgR0lHQUNBR0VfU0laRV9U
T19NQVNLKEpTVkFMVUVfR0lHQUNBR0VfU0laRSkKLQotI2lmICgoQk9TKERBUldJTikgfHwgQk9T
KExJTlVYKSkgJiYgXAotICAgIChCQ1BVKFg4Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZp
bmVkKF9fSUxQMzJfXykgJiYgKCFCUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElP
UykpKSkpCi0jZGVmaW5lIEdJR0FDQUdFX0VOQUJMRUQgMQotI2Vsc2UKLSNkZWZpbmUgR0lHQUNB
R0VfRU5BQkxFRCAwCi0jZW5kaWYKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdv
KHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSksICIiKTsKK3N0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQ
b3dlck9mVHdvKGpzVmFsdWVHaWdhY2FnZVNpemUpLCAiIik7CiAKLSNpZiBCQ1BVKEFSTTY0KQot
I2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSAxNjM4NAotI2Vsc2UKLSNkZWZpbmUgR0lH
QUNBR0VfQkFTRV9QVFJTX1NJWkUgNDA5NgotI2VuZGlmCitjb25zdGV4cHIgc2l6ZV90IGdpZ2Fj
YWdlU2l6ZVRvTWFzayhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gc2l6ZSAtIDE7IH0KIAotZXh0ZXJu
ICJDIiBhbGlnbmFzKEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFKSBCRVhQT1JUIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW0dJR0FDQUdFX0JBU0VfUFRSU19TSVpFXTsKK2NvbnN0ZXhwciBzaXplX3Qg
cHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXplVG9NYXNrKHByaW1pdGl2ZUdpZ2Fj
YWdlU2l6ZSk7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSBnaWdhY2Fn
ZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAKLW5hbWVzcGFjZSBHaWdhY2FnZSB7
CitleHRlcm4gIkMiIGFsaWduYXMoZ2lnYWNhZ2VCYXNlUHRyc1NpemUpIEJFWFBPUlQgY2hhciBn
X2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwogCiBCSU5MSU5FIGJvb2wg
d2FzRW5hYmxlZCgpIHsgcmV0dXJuIGdfZ2lnYWNhZ2VCYXNlUHRyc1swXTsgfQogQklOTElORSB2
b2lkIHNldFdhc0VuYWJsZWQoKSB7IGdfZ2lnYWNhZ2VCYXNlUHRyc1swXSA9IHRydWU7IH0KQEAg
LTg0LDE2ICsxMDYsMTAgQEAgc3RydWN0IEJhc2VQdHJzIHsKICAgICB2b2lkKiBqc1ZhbHVlOwog
fTsKIAotZW51bSBLaW5kIHsKLSAgICBSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHIgPSAw
LAotICAgIFByaW1pdGl2ZSwKLSAgICBKU1ZhbHVlLAotfTsKLQogc3RhdGljX2Fzc2VydChvZmZz
ZXRvZihCYXNlUHRycywgcHJpbWl0aXZlKSA9PSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBqc1ZhbHVlKSA9PSBL
aW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKSwgIiIpOwogCi1zdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG51bUtpbmRzID0gMjsKK2NvbnN0ZXhwciB1bnNpZ25lZCBudW1LaW5kcyA9IDI7CiAK
IEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdhY2FnZSgpOwogCkBAIC0xMDksMjAgKzEyNSw2IEBAIEJF
WFBPUlQgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsKIGlubGlu
ZSBib29sIGlzUHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQoKSB7IHJldHVybiBp
c0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsgfQogaW5saW5lIGJvb2wgY2Fu
UHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gIWlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiAKLUJJTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5k
IGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZXNlcnZlZEZvckZsYWdz
QW5kTm90QUJhc2VQdHI6Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIGNhc2UgUHJpbWl0aXZlOgotICAgICAgICByZXR1cm4gIlByaW1pdGl2ZSI7Ci0gICAgY2Fz
ZSBKU1ZhbHVlOgotICAgICAgICByZXR1cm4gIkpTVmFsdWUiOwotICAgIH0KLSAgICBCQ1JBU0go
KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogQklOTElORSB2b2lkKiYgYmFzZVB0cihCYXNl
UHRycyYgYmFzZVB0cnMsIEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTE1
OCw5ICsxNjAsOSBAQCBCSU5MSU5FIHNpemVfdCBzaXplKEtpbmQga2luZCkKICAgICBjYXNlIFJl
c2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdBQ0FHRV9TSVpFKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHNpemVfdD4ocHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKICAgICBjYXNlIEpTVmFs
dWU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVkFMVUVfR0lHQUNBR0Vf
U0laRSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGpzVmFsdWVHaWdhY2Fn
ZVNpemUpOwogICAgIH0KICAgICBCQ1JBU0goKTsKICAgICByZXR1cm4gMDsKQEAgLTE3Myw3ICsx
NzUsNyBAQCBCSU5MSU5FIHNpemVfdCBhbGlnbm1lbnQoS2luZCBraW5kKQogCiBCSU5MSU5FIHNp
emVfdCBtYXNrKEtpbmQga2luZCkKIHsKLSAgICByZXR1cm4gR0lHQUNBR0VfU0laRV9UT19NQVNL
KHNpemUoa2luZCkpOworICAgIHJldHVybiBnaWdhY2FnZVNpemVUb01hc2soc2l6ZShraW5kKSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CkBAIC0yMDIsNiArMjA0LDI3IEBAIEJJTkxJ
TkUgYm9vbCBpc0NhZ2VkKEtpbmQga2luZCwgY29uc3Qgdm9pZCogcHRyKQogCiBCRVhQT1JUIGJv
b2wgc2hvdWxkQmVFbmFibGVkKCk7CiAKKyNlbHNlIC8vIEdJR0FDQUdFX0VOQUJMRUQKKworQklO
TElORSB2b2lkKiYgYmFzZVB0cihLaW5kKQoreworICAgIEJDUkFTSCgpOworICAgIHN0YXRpYyB2
b2lkKiB1bnJlYWNoYWJsZTsKKyAgICByZXR1cm4gdW5yZWFjaGFibGU7Cit9CitCSU5MSU5FIHNp
emVfdCBzaXplKEtpbmQpIHsgQkNSQVNIKCk7IHJldHVybiAwOyB9CitCSU5MSU5FIHZvaWQgZW5z
dXJlR2lnYWNhZ2UoKSB7IH0KK0JJTkxJTkUgYm9vbCB3YXNFbmFibGVkKCkgeyByZXR1cm4gZmFs
c2U7IH0KK0JJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQsIGNvbnN0IHZvaWQqKSB7IHJldHVybiBm
YWxzZTsgfQordGVtcGxhdGU8dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZChLaW5kLCBUKiBw
dHIpIHsgQkNSQVNIKCk7IHJldHVybiBwdHI7IH0KK0JJTkxJTkUgdm9pZCBkaXNhYmxlRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VJZlNob3VsZEJlRW5hYmxlZCgpIHsgfQorQklOTElORSB2b2lk
IGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpIHsgfQorQklOTElORSB2b2lkIGFkZFByaW1pdGl2
ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KK0JJTkxJTkUgdm9p
ZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikg
eyB9CisKKyNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECisKIH0gLy8gbmFtZXNwYWNlIEdpZ2Fj
YWdlCiAKIAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAppbmRleCA1M2IzZTM2OTE5M2YxZjU0OTlh
M2FjZWE0N2JjNTcxNzkyYjMwYTBlLi4yODhkYjQxZWM1ZTRkYTU0N2U2Yzg5Y2NkMGI1NmU3NDg4
ZTdmMDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJCdWxrRGVjb21taXQuaCIKICNpbmNsdWRlICJCdW1wQWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiQ2h1bmsuaCIKKyNpbmNsdWRlICJDcnlwdG9SYW5kb20uaCIKICNpbmNsdWRlICJFbnZpcm9u
bWVudC5oIgogI2luY2x1ZGUgIkdpZ2FjYWdlLmgiCiAjaW5jbHVkZSAiRGVidWdIZWFwLmgiCkBA
IC02MSw3ICs2MiwxMyBAQCBIZWFwOjpIZWFwKEhlYXBLaW5kIGtpbmQsIHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQogI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICAgICAgaWYgKHVzaW5nR2lnYWNh
Z2UoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGdpZ2FjYWdlQmFzZVB0cigpKTsK
LSAgICAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKGdpZ2FjYWdlQmFzZVB0cigp
LCBnaWdhY2FnZVNpemUoKSwgMCwgMCkpOworICAgICAgICAgICAgdWludDY0X3QgcmFuZG9tOwor
ICAgICAgICAgICAgY3J5cHRvUmFuZG9tKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+
KCZyYW5kb20pLCBzaXplb2YocmFuZG9tKSk7CisgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQo
Z2lnYWNhZ2VTaXplKCkgPiBHaWdhY2FnZTo6bWluaW11bUNhZ2VTaXplQWZ0ZXJTbGlkZSk7Cisg
ICAgICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gcmFuZG9tICUgKGdpZ2FjYWdlU2l6ZSgpIC0g
R2lnYWNhZ2U6Om1pbmltdW1DYWdlU2l6ZUFmdGVyU2xpZGUpOworICAgICAgICAgICAgb2Zmc2V0
ID0gcmVpbnRlcnByZXRfY2FzdDxwdHJkaWZmX3Q+KHJvdW5kRG93blRvTXVsdGlwbGVPZih2bVBh
Z2VTaXplKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldCkpKTsKKyAgICAgICAgICAg
IHZvaWQqIGJhc2UgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihnaWdhY2FnZUJh
c2VQdHIoKSkgKyBvZmZzZXQ7CisgICAgICAgICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5n
ZShiYXNlLCBnaWdhY2FnZVNpemUoKSAtIG9mZnNldCwgMCwgMCkpOwogICAgICAgICB9CiAjZW5k
aWYKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKaW5kZXggZjc1ZjdlOGZjYzdmNjdkYmQ1MDNj
Nzg5YzhmYzg1NDBiNTBjMTRjOS4uMzM1ZjAwZjRlZjYxNjViNWIxN2E0NTJjNmU3MTQ3YTFhM2Ey
OGQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaApAQCAtNDAsODggKzQwLDg5IEBAIG5hbWVzcGFj
ZSBibWFsbG9jIHsKIC8vIFJlcG9zaXRvcnkgZm9yIG1hbGxvYyBzaXppbmcgY29uc3RhbnRzIGFu
ZCBjYWxjdWxhdGlvbnMuCiAKIG5hbWVzcGFjZSBTaXplcyB7Ci0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBrQiA9IDEwMjQ7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBNQiA9IGtCICoga0I7Ci0K
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFsaWdubWVudCA9IDg7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOwotCi0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBjaHVua1NpemUgPSAxICogTUI7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBj
aHVua01hc2sgPSB+KGNodW5rU2l6ZSAtIDF1bCk7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNtYWxsTGluZVNpemUgPSAyNTY7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VT
aXplID0gNCAqIGtCOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxQYWdlTGluZUNvdW50
ID0gc21hbGxQYWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1hc2tTaXplQ2xhc3NNYXggPSA1MTI7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFs
bE1heCA9IDMyICoga0I7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBhZ2VTaXplTWF4ID0g
c21hbGxNYXggKiAyOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZUNsYXNzQ291bnQgPSBw
YWdlU2l6ZU1heCAvIHNtYWxsUGFnZVNpemU7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHBh
Z2VTaXplV2FzdGVGYWN0b3IgPSA4OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nV2FzdGVG
YWN0b3IgPSA4OwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUFsaWdubWVudCA9IHNt
YWxsTWF4IC8gcGFnZVNpemVXYXN0ZUZhY3RvcjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxh
cmdlQWxpZ25tZW50TWFzayA9IGxhcmdlQWxpZ25tZW50IC0gMTsKLQotICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgZGVhbGxvY2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGJ1bXBSYW5nZUNhY2hlQ2FwYWNpdHkgPSAzOwotICAgIAotICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2NhdmVuZ2VyQnl0ZXNQZXJNZW1vcnlQcmVzc3VyZUNoZWNrID0gMTYgKiBNQjsK
LSAgICBzdGF0aWMgY29uc3QgZG91YmxlIG1lbW9yeVByZXNzdXJlVGhyZXNob2xkID0gMC43NTsK
LSAgICAKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1hc2tTaXplQ2xhc3NDb3VudCA9IG1hc2tT
aXplQ2xhc3NNYXggLyBhbGlnbm1lbnQ7Ci0KLSAgICBjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXpl
Q2xhc3Moc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICAvLyBXZSBtYXNrIHRvIGFjY29tbW9k
YXRlIHplcm8uCi0gICAgICAgIHJldHVybiBtYXNrKChzaXplIC0gMSkgLyBhbGlnbm1lbnQsIG1h
c2tTaXplQ2xhc3NDb3VudCAtIDEpOwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgbWFza09i
amVjdFNpemUoc2l6ZV90IG1hc2tTaXplQ2xhc3MpCi0gICAgewotICAgICAgICByZXR1cm4gKG1h
c2tTaXplQ2xhc3MgKyAxKSAqIGFsaWdubWVudDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGxvZ0FsaWdubWVudE1pbiA9IG1hc2tTaXplQ2xhc3NNYXggLyBsb2dXYXN0ZUZhY3Rv
cjsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbG9nU2l6ZUNsYXNzQ291bnQgPSAobG9nMihz
bWFsbE1heCkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpKSAqIGxvZ1dhc3RlRmFjdG9yOwotCi0g
ICAgaW5saW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCi0gICAgewotICAgICAg
ICBzaXplX3QgYmFzZSA9IGxvZzIoc2l6ZSAtIDEpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KTsK
LSAgICAgICAgc2l6ZV90IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8
IGJhc2UpKTsKLSAgICAgICAgcmV0dXJuIGJhc2UgKiBsb2dXYXN0ZUZhY3RvciArIG9mZnNldCAv
IChsb2dBbGlnbm1lbnRNaW4gPDwgYmFzZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBs
b2dPYmplY3RTaXplKHNpemVfdCBsb2dTaXplQ2xhc3MpCi0gICAgewotICAgICAgICBzaXplX3Qg
YmFzZSA9IGxvZ1NpemVDbGFzcyAvIGxvZ1dhc3RlRmFjdG9yOwotICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gbG9nU2l6ZUNsYXNzICUgbG9nV2FzdGVGYWN0b3I7Ci0gICAgICAgIHJldHVybiAobWFz
a1NpemVDbGFzc01heCA8PCBiYXNlKSArIChvZmZzZXQgKyAxKSAqIChsb2dBbGlnbm1lbnRNaW4g
PDwgYmFzZSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplQ2xhc3NDb3Vu
dCA9IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzc0NvdW50OwotCi0gICAgaW5saW5l
IHNpemVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBpZiAoc2l6ZSA8
PSBtYXNrU2l6ZUNsYXNzTWF4KQotICAgICAgICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3Moc2l6
ZSk7Ci0gICAgICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXplQ2xhc3Moc2l6
ZSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xh
c3MpCi0gICAgewotICAgICAgICBpZiAoc2l6ZUNsYXNzIDwgbWFza1NpemVDbGFzc0NvdW50KQot
ICAgICAgICAgICAgcmV0dXJuIG1hc2tPYmplY3RTaXplKHNpemVDbGFzcyk7Ci0gICAgICAgIHJl
dHVybiBsb2dPYmplY3RTaXplKHNpemVDbGFzcyAtIG1hc2tTaXplQ2xhc3NDb3VudCk7Ci0gICAg
fQotICAgIAotICAgIGlubGluZSBzaXplX3QgcGFnZVNpemUoc2l6ZV90IHBhZ2VDbGFzcykKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBzbWFsbFBhZ2VTaXplOwotICAg
IH0KK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtCID0gMTAyNDsKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IE1CID0ga0IgKiBrQjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IEdCID0ga0IgKiBr
QiAqIGtCOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBhbGlnbm1lbnQgPSA4Oworc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYWxpZ25tZW50TWFzayA9IGFsaWdubWVudCAtIDF1bDsKKworc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgY2h1bmtTaXplID0gMSAqIE1COworc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgY2h1bmtNYXNrID0gfihjaHVua1NpemUgLSAxdWwpOworCitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBzbWFsbExpbmVTaXplID0gMjU2Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
c21hbGxQYWdlU2l6ZSA9IDQgKiBrQjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsUGFn
ZUxpbmVDb3VudCA9IHNtYWxsUGFnZVNpemUgLyBzbWFsbExpbmVTaXplOworCitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzTWF4ID0gNTEyOworc3RhdGljIGNvbnN0ZXhwciBz
aXplX3Qgc21hbGxNYXggPSAzMiAqIGtCOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBwYWdl
U2l6ZU1heCA9IHNtYWxsTWF4ICogMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VDbGFz
c0NvdW50ID0gcGFnZVNpemVNYXggLyBzbWFsbFBhZ2VTaXplOworCitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBwYWdlU2l6ZVdhc3RlRmFjdG9yID0gODsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGxvZ1dhc3RlRmFjdG9yID0gODsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbGFyZ2VBbGln
bm1lbnQgPSBzbWFsbE1heCAvIHBhZ2VTaXplV2FzdGVGYWN0b3I7CitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBsYXJnZUFsaWdubWVudE1hc2sgPSBsYXJnZUFsaWdubWVudCAtIDE7CisKK3N0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGRlYWxsb2NhdG9yTG9nQ2FwYWNpdHkgPSA1MTI7CitzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBidW1wUmFuZ2VDYWNoZUNhcGFjaXR5ID0gMzsKKworc3RhdGljIGNv
bnN0ZXhwciBzaXplX3Qgc2NhdmVuZ2VyQnl0ZXNQZXJNZW1vcnlQcmVzc3VyZUNoZWNrID0gMTYg
KiBNQjsKK3N0YXRpYyBjb25zdGV4cHIgZG91YmxlIG1lbW9yeVByZXNzdXJlVGhyZXNob2xkID0g
MC43NTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzc0NvdW50ID0gbWFz
a1NpemVDbGFzc01heCAvIGFsaWdubWVudDsKKworY29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNs
YXNzKHNpemVfdCBzaXplKQoreworICAgIC8vIFdlIG1hc2sgdG8gYWNjb21tb2RhdGUgemVyby4K
KyAgICByZXR1cm4gbWFzaygoc2l6ZSAtIDEpIC8gYWxpZ25tZW50LCBtYXNrU2l6ZUNsYXNzQ291
bnQgLSAxKTsKK30KKworaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6ZShzaXplX3QgbWFza1Np
emVDbGFzcykKK3sKKyAgICByZXR1cm4gKG1hc2tTaXplQ2xhc3MgKyAxKSAqIGFsaWdubWVudDsK
K30KKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nQWxpZ25tZW50TWluID0gbWFza1NpemVD
bGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBsb2dT
aXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4KSAtIGxvZzIobWFza1NpemVDbGFzc01heCkp
ICogbG9nV2FzdGVGYWN0b3I7CisKK2lubGluZSBzaXplX3QgbG9nU2l6ZUNsYXNzKHNpemVfdCBz
aXplKQoreworICAgIHNpemVfdCBiYXNlID0gbG9nMihzaXplIC0gMSkgLSBsb2cyKG1hc2tTaXpl
Q2xhc3NNYXgpOworICAgIHNpemVfdCBvZmZzZXQgPSAoc2l6ZSAtIDEgLSAobWFza1NpemVDbGFz
c01heCA8PCBiYXNlKSk7CisgICAgcmV0dXJuIGJhc2UgKiBsb2dXYXN0ZUZhY3RvciArIG9mZnNl
dCAvIChsb2dBbGlnbm1lbnRNaW4gPDwgYmFzZSk7Cit9CisKK2lubGluZSBzaXplX3QgbG9nT2Jq
ZWN0U2l6ZShzaXplX3QgbG9nU2l6ZUNsYXNzKQoreworICAgIHNpemVfdCBiYXNlID0gbG9nU2l6
ZUNsYXNzIC8gbG9nV2FzdGVGYWN0b3I7CisgICAgc2l6ZV90IG9mZnNldCA9IGxvZ1NpemVDbGFz
cyAlIGxvZ1dhc3RlRmFjdG9yOworICAgIHJldHVybiAobWFza1NpemVDbGFzc01heCA8PCBiYXNl
KSArIChvZmZzZXQgKyAxKSAqIChsb2dBbGlnbm1lbnRNaW4gPDwgYmFzZSk7Cit9CisKK3N0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFzc0NvdW50ICsg
bG9nU2l6ZUNsYXNzQ291bnQ7CisKK2lubGluZSBzaXplX3Qgc2l6ZUNsYXNzKHNpemVfdCBzaXpl
KQoreworICAgIGlmIChzaXplIDw9IG1hc2tTaXplQ2xhc3NNYXgpCisgICAgICAgIHJldHVybiBt
YXNrU2l6ZUNsYXNzKHNpemUpOworICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dT
aXplQ2xhc3Moc2l6ZSk7Cit9CisKK2lubGluZSBzaXplX3Qgb2JqZWN0U2l6ZShzaXplX3Qgc2l6
ZUNsYXNzKQoreworICAgIGlmIChzaXplQ2xhc3MgPCBtYXNrU2l6ZUNsYXNzQ291bnQpCisgICAg
ICAgIHJldHVybiBtYXNrT2JqZWN0U2l6ZShzaXplQ2xhc3MpOworICAgIHJldHVybiBsb2dPYmpl
Y3RTaXplKHNpemVDbGFzcyAtIG1hc2tTaXplQ2xhc3NDb3VudCk7Cit9CisKK2lubGluZSBzaXpl
X3QgcGFnZVNpemUoc2l6ZV90IHBhZ2VDbGFzcykKK3sKKyAgICByZXR1cm4gKHBhZ2VDbGFzcyAr
IDEpICogc21hbGxQYWdlU2l6ZTsKK30KIH0KIAogdXNpbmcgbmFtZXNwYWNlIFNpemVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359430</attachid>
            <date>2019-01-17 17:10:28 -0800</date>
            <delta_ts>2019-01-18 10:06:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193523-20190117171026.patch</filename>
            <type>text/plain</type>
            <size>28432</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi43ZGVjNWJmNjgxOTBlOGUw
YjkxNDVjNmVmNzVkMDRkOWY1Y2Q3NjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3Jv
cyBhcmUgdGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUg
ZmllbGRzIGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIx
ZmQ3ODVlYmIyY2JjZGVjMTBjNzIuLjlmMjNiZWRjYTFmYjViZGVjZTE0Y2I1MWE5YTI4MWQ1N2Vj
ZjM3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtl
aXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBh
bGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0
YW50cyBzaW5jZSBtYWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0
Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxv
YyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEy
NTQzMmM5ZmYwZTM2Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uZWRiZDdiNzZiMGI5MTExN2FhNDc2
ZmI0Nzg4NTZiNmU1YmE2YmUyMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAx
LTE3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdp
Z2FjYWdlcyBzaG91bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGlz
IHNvIHRoYXQgR2lnYWNhZ2UgSGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBj
YWdlIGJ5IHNvbWUgcmFuZG9tIGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMg
YWx3YXlzCisgICAgICAgIGF0IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5
LCBvZiBWQSBzcGFjZSBhdmFpbGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAg
ICAgQWxzbywgdGhpcyBwYXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNp
bmNlIG1hY3JvcworICAgICAgICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9H
aWdhY2FnZS5jcHA6CisgICAgICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdl
QmFzZVB0cnMpOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAg
ICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91
bGRCZUVuYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgor
ICAgICAgICAoR2lnYWNhZ2U6OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAg
ICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2Fj
YWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdl
Ojppc0NhZ2VkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZURpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgor
ICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChH
aWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdl
OjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVh
cC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9j
L1NpemVzLmg6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAg
ICAgIChibWFsbG9jOjpTaXplczo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6
U2l6ZXM6OmxvZ1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0
U2l6ZSk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJt
YWxsb2M6OlNpemVzOjpvYmplY3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdl
U2l6ZSk6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCmluZGV4IDgxMDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2Eu
LmQxNDkxZjk2NjY2YWZjNTc3YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBA
IC0xMzE1LDcgKzEzMTUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BH
ZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJv
ZmlsZShPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUu
YXJyYXlQcm9maWxlLCB0MCwgdDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5
SWRTbG93CiAgICAgYnRpeiB0MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0g
ICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6Ompz
VmFsdWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRl
cmZseVt0M10sIHQwLCB0MSkKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2ln
YWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkg
LXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGlj
TGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0
YWdUeXBlTnVtYmVyLCB0MApAQCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCiAgICAgc3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFM
VUVfR0lHQUNBR0VfTUFTSywgSlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVO
dW1iZXIpCisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFz
ZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBU
YWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNr
LCB0MgpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlf
dmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBi
aWEgdDIsIEludDhBcnJheVR5cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVp
bnQ4QXJyYXlPclVpbnQ4Q2xhbXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlw
ZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlC
dWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNh
Z2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2ln
YWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9y
W3QwXSwgdDMsIHQyKQogICAgIGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRC
eVZhbCh0MCwgdDEpCiAKQEAgLTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWQKICAgICBiaWEgdDIsIFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwg
Lm9wR2V0QnlWYWxVaW50OENsYW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0
QnlWYWwodDAsIHQxKQogCiAub3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2Ug
aGF2ZSBVaW50OENsYW1wZWRBcnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFz
ZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElW
RV9HSUdBQ0FHRV9NQVNLLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIp
CisgICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6
OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpT
QXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQx
XSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1Mjcs
MTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBl
IC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBX
ZSBoYXZlIEludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lH
QUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAg
IGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmlt
aXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5
QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJd
LCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZB
cnJheToKICAgICAjIFdlIGhhdmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3Qw
XSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6
OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNh
Z2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9h
ZGggW3QzLCB0MSwgMl0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0x
NTQ1LDEzICsxNTQ1LDEzIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BH
ZXRCeVZhbCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJ
bnQzMkFycmF5VHlwZSAtIEZpcnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJy
YXkKIAogICAgICMgV2UgaGF2ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2ln
YWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIg
UFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0s
IHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpC
YXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRp
IFt0MywgdDEsIDRdLCB0MAogICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0
QnlWYWxVaW50MzJBcnJheToKICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6
Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJz
ICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJp
bWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0Mywg
dDIpCiAgICAgIyBUaGlzIGlzIHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNp
Z25lZCB2YWx1ZXMuCiAgICAgbG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwg
Lm9wR2V0QnlWYWxTbG93ICMgVGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50
IGluIExMSW50LgpAQCAtMTU2Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9n
ZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQK
ICAgICBiaWVxIHQyLCBGbG9hdDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9w
R2V0QnlWYWxTbG93CiAKICAgICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyAr
IEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1p
dGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQy
KQogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmaW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1
OTksNyArMTU5OSw3IEBAIG1hY3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldCht
X3Byb3BlcnR5LCB0MCkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQwLCB0MywgLm9wUHV0QnlWYWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAg
bG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFs
dWUsIGNvbnN0ZXhwciBKU1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZs
eVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdl
Ojpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFn
VHlwZU51bWJlcikKICAgICAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAg
ICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFu
ZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdh
Y2FnZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlk
NmExMzc5YzQ2ODcxYTc1YjQ2NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4
NmQ0ZDdiYmU5ODkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNp
ZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGln
bmFzKHZvaWQqKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RV07Ci0KIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBi
YXNlUHRyLCBzaXplX3Qgc2l6ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNl
CisjZWxzZSAvLyBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExP
QwogI2luY2x1ZGUgPGJtYWxsb2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dp
Z2FjYWdlLmgKaW5kZXggMWIwNDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4u
MmI4NmZlYTk1OTllNDYwNzI3MjJlNGE5OTZjYWEwNWEyMWNhNGIwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBA
IC0yNiwxOSArMjYsMTkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxs
b2MuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBkZWZpbmVkKFVTRV9T
WVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogI2RlZmluZSBHSUdBQ0FHRV9FTkFC
TEVEIDAKLSNkZWZpbmUgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0sgMAotI2RlZmluZSBKU1ZBTFVF
X0dJR0FDQUdFX01BU0sgMAotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA4MTkyCi0K
LWV4dGVybiAiQyIgewotYWxpZ25hcyh2b2lkKikgZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBj
aGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRV07Ci19CiAKIG5h
bWVzcGFjZSBHaWdhY2FnZSB7CiAKK2NvbnN0IHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sg
PSAwOworY29uc3Qgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSAwOworY29uc3Qgc2l6ZV90
IGdpZ2FjYWdlQmFzZVB0cnNTaXplID0gOCAqIEtCOworCitleHRlcm4gIkMiIGFsaWduYXModm9p
ZCopIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJh
c2VQdHJzU2l6ZV07CisKIHN0cnVjdCBCYXNlUHRycyB7CiAgICAgdWludHB0cl90IHJlc2VydmVk
Rm9yRmxhZ3M7CiAgICAgdm9pZCogcHJpbWl0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdl
LmNwcAppbmRleCBhODg2MjNkNjllZTM3MGVlOWRkZWUzNDU3MTU5MTI4ZjAzZjBjYjNhLi5iNmFl
MTg2NzlhNTA5NjE1OGIwM2E3YjdiMmYwZjM2YWU3ZGQ4NmRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0dpZ2FjYWdlLmNwcApAQCAtMzUsMjMgKzM1LDI1IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2lu
Y2x1ZGUgPG11dGV4PgogCisjaWYgR0lHQUNBR0VfRU5BQkxFRAorCituYW1lc3BhY2UgR2lnYWNh
Z2UgeworCiAvLyBUaGlzIGlzIGV4YWN0bHkgMzJHQiBiZWNhdXNlIGluc2lkZSBKU0MsIGluZGV4
ZWQgYWNjZXNzZXMgZm9yIGFycmF5cywgdHlwZWQgYXJyYXlzLCBldGMsCiAvLyB1c2UgdW5zaWdu
ZWQgMzItYml0IGludHMgYXMgaW5kaWNlcy4gVGhlIGl0ZW1zIHRob3NlIGluZGljZXMgYWNjZXNz
IGFyZSA4IGJ5dGVzIG9yIGxlc3MKIC8vIGluIHNpemUuIDJeMzIgKiA4ID0gMzJHQi4gVGhpcyBt
ZWFucyBpZiBhbiBhY2Nlc3Mgb24gYSBjYWdlZCB0eXBlIGhhcHBlbnMgdG8gZ28gb3V0IG9mCiAv
LyBib3VuZHMsIHRoZSBhY2Nlc3MgaXMgZ3VhcmFudGVlZCB0byBsYW5kIHNvbWV3aGVyZSBlbHNl
IGluIHRoZSBjYWdlIG9yIGluc2lkZSB0aGUgcnVud2F5LgogLy8gSWYgdGhpcyB3ZXJlIGxlc3Mg
dGhhbiAzMkdCLCB0aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUg
Y2FnZS4KLSNkZWZpbmUgR0lHQUNBR0VfUlVOV0FZICgzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAy
NCkKK2NvbnN0ZXhwciB1aW50NjRfdCBnaWdhY2FnZVJ1bndheSA9IDMybGx1ICogMTAyNCAqIDEw
MjQgKiAxMDI0OwogCiAvLyBOb3RlOiBnX2dpZ2FjYWdlQmFzZVB0cnNbMF0gaXMgcmVzZXJ2ZWQg
Zm9yIHN0b3JpbmcgdGhlIHdhc0VuYWJsZWQgZmxhZy4KIC8vIFRoZSBmaXJzdCBnaWdhY2FnZUJh
c2VQdHIgd2lsbCBzdGFydCBhdCBnX2dpZ2FjYWdlQmFzZVB0cnNbc2l6ZW9mKHZvaWQqKV0uCiAv
LyBUaGlzIGlzIGRvbmUgc28gdGhhdCB0aGUgd2FzRW5hYmxlZCBmbGFnIHdpbGwgYWxzbyBiZSBw
cm90ZWN0ZWQgYWxvbmcgd2l0aCB0aGUKIC8vIGdpZ2FjYWdlQmFzZVB0cnMuCi1hbGlnbmFzKEdJ
R0FDQUdFX0JBU0VfUFRSU19TSVpFKSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRV07CithbGlnbmFzKGdpZ2FjYWdlQmFzZVB0cnNTaXplKSBjaGFyIGdfZ2ln
YWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIHVzaW5nIG5hbWVzcGFjZSBi
bWFsbG9jOwogCi1uYW1lc3BhY2UgR2lnYWNhZ2UgewotCiBuYW1lc3BhY2UgewogCiBib29sIHNf
aXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkOwpAQCAtNjEsMTIgKzYzLDEyIEBA
IHZvaWQgcHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8v
IFdlIG1pZ2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0
aGUgbWluaW11bSB3ZSBuZWVkLgogICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZt
UGFnZVNpemUoKSAtIDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBHSUdB
Q0FHRV9CQVNFX1BUUlNfU0laRSwgUFJPVF9SRUFEKTsKKyAgICBtcHJvdGVjdChnX2dpZ2FjYWdl
QmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQpOwogfQogCiB2b2lkIHVu
cHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogewotICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNl
UHRycywgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwor
ICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgZ2lnYWNhZ2VCYXNlUHRyc1NpemUsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnByb3RlY3RHaWdhY2FnZUJhc2VQ
dHJzU2NvcGUgewpAQCAtMTAxLDI2ICsxMDMsMjMgQEAgc3RydWN0IFByaW1pdGl2ZURpc2FibGVD
YWxsYmFja3MgewogICAgIFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKIAotI2lmIEdJ
R0FDQUdFX0VOQUJMRUQKIHNpemVfdCBydW53YXlTaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0
Y2ggKGtpbmQpIHsKICAgICBjYXNlIEtpbmQ6OlJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0
cjoKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBLaW5k
OjpQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEdJR0FDQUdF
X1JVTldBWSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGdpZ2FjYWdlUnVu
d2F5KTsKICAgICBjYXNlIEtpbmQ6OkpTVmFsdWU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxzaXplX3Q+KDApOwogICAgIH0KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsK
IH0KLSNlbmRpZgogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpCiB7Ci0jaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZSgKICAgICAgICAgb25jZUZsYWcsCkBAIC0x
ODksNyArMTg4LDYgQEAgdm9pZCBlbnN1cmVHaWdhY2FnZSgpCiAgICAgICAgICAgICBzZXRXYXNF
bmFibGVkKCk7CiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAg
ICB9KTsKLSNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiB9CiAKIHZvaWQgZGlzYWJsZVByaW1p
dGl2ZUdpZ2FjYWdlKCkKQEAgLTI2NSw4ICsyNjMsNiBAQCBib29sIGlzRGlzYWJsaW5nUHJpbWl0
aXZlR2lnYWNhZ2VEaXNhYmxlZCgpCiBib29sIHNob3VsZEJlRW5hYmxlZCgpCiB7CiAgICAgc3Rh
dGljIGJvb2wgY2FjaGVkID0gZmFsc2U7Ci0KLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAg
ICBvbmNlRmxhZywKQEAgLTI4OCwxMiArMjg0LDExIEBAIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7Ci0j
ZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAotICAgIAogICAgIHJldHVybiBjYWNoZWQ7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCiAKKyNlbmRpZiAvLyBHSUdBQ0FHRV9FTkFCTEVECiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCmluZGV4IGVhYjgwZmQyZDNlMjQyMjhjYjlmZmNk
ZDgzNDc5ZDFlYmRjYjFkMzguLmIyODdjMGMzYzU1YzZlYzJkNmI3ZTM0MjEwZDRhN2MxZThjMzk1
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgKQEAgLTMwLDE2ICszMCw1MyBAQAogI2lu
Y2x1ZGUgIkJFeHBvcnQuaCIKICNpbmNsdWRlICJCSW5saW5lLmgiCiAjaW5jbHVkZSAiQlBsYXRm
b3JtLmgiCisjaW5jbHVkZSAiU2l6ZXMuaCIKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUg
PGludHR5cGVzLmg+CiAKKyNpZiAoKEJPUyhEQVJXSU4pIHx8IEJPUyhMSU5VWCkpICYmIFwKKyhC
Q1BVKFg4Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykgJiYgKCFC
UExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCisjZGVmaW5lIEdJR0FD
QUdFX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCisjZW5kaWYK
KworCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCitlbnVtIEtpbmQgeworICAgIFJlc2VydmVkRm9y
RmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCisgICAgUHJpbWl0aXZlLAorICAgIEpTVmFsdWUsCit9
OworCitCSU5MSU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQoreworICAgIHN3aXRjaCAo
a2luZCkgeworICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgorICAgICAg
ICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIFByaW1pdGl2ZToKKyAg
ICAgICAgcmV0dXJuICJQcmltaXRpdmUiOworICAgIGNhc2UgSlNWYWx1ZToKKyAgICAgICAgcmV0
dXJuICJKU1ZhbHVlIjsKKyAgICB9CisgICAgQkNSQVNIKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKKyNpZiBHSUdBQ0FHRV9FTkFCTEVECisKICNpZiBCQ1BVKEFSTTY0KQotI2RlZmluZSBQ
UklNSVRJVkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwbGx1Ci0jZGVmaW5lIEpTVkFMVUVfR0lH
QUNBR0VfU0laRSAweDQwMDAwMDAwbGx1Citjb25zdGV4cHIgc2l6ZV90IHByaW1pdGl2ZUdpZ2Fj
YWdlU2l6ZSA9IDIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFs
dWVHaWdhY2FnZVNpemUgPSAxICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNpemVf
dCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSA9IDE2ICogYm1hbGxvYzo6U2l6ZXM6OmtCOworY29uc3Rl
eHByIHNpemVfdCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gYm1hbGxvYzo6U2l6ZXM6OkdC
IC8gMjsKICNkZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAxCiAjZWxzZQotI2Rl
ZmluZSBQUklNSVRJVkVfR0lHQUNBR0VfU0laRSAweDgwMDAwMDAwMGxsdQotI2RlZmluZSBKU1ZB
TFVFX0dJR0FDQUdFX1NJWkUgMHg0MDAwMDAwMDBsbHUKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0
aXZlR2lnYWNhZ2VTaXplID0gMzIgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6
ZV90IGpzVmFsdWVHaWdhY2FnZVNpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0
ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtC
OworY29uc3RleHByIHNpemVfdCBtaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlID0gNCAqIGJtYWxs
b2M6OlNpemVzOjpHQjsKICNkZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAwCiAj
ZW5kaWYKIApAQCAtNTAsMzAgKzg3LDE1IEBACiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05f
Q0FOX0ZBSUwgMQogI2VuZGlmCiAKLXN0YXRpY19hc3NlcnQoYm1hbGxvYzo6aXNQb3dlck9mVHdv
KFBSSU1JVElWRV9HSUdBQ0FHRV9TSVpFKSwgIiIpOwotc3RhdGljX2Fzc2VydChibWFsbG9jOjpp
c1Bvd2VyT2ZUd28oSlNWQUxVRV9HSUdBQ0FHRV9TSVpFKSwgIiIpOwotCi0jZGVmaW5lIEdJR0FD
QUdFX1NJWkVfVE9fTUFTSyhzaXplKSAoKHNpemUpIC0gMSkKLQotI2RlZmluZSBQUklNSVRJVkVf
R0lHQUNBR0VfTUFTSyBHSUdBQ0FHRV9TSVpFX1RPX01BU0soUFJJTUlUSVZFX0dJR0FDQUdFX1NJ
WkUpCi0jZGVmaW5lIEpTVkFMVUVfR0lHQUNBR0VfTUFTSyBHSUdBQ0FHRV9TSVpFX1RPX01BU0so
SlNWQUxVRV9HSUdBQ0FHRV9TSVpFKQotCi0jaWYgKChCT1MoREFSV0lOKSB8fCBCT1MoTElOVVgp
KSAmJiBcCi0gICAgKEJDUFUoWDg2XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19J
TFAzMl9fKSAmJiAoIUJQTEFURk9STShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkK
LSNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAxCi0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9FTkFC
TEVEIDAKLSNlbmRpZgorc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28ocHJpbWl0
aXZlR2lnYWNhZ2VTaXplKSwgIiIpOworc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZU
d28oanNWYWx1ZUdpZ2FjYWdlU2l6ZSksICIiKTsKIAotI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5l
IEdJR0FDQUdFX0JBU0VfUFRSU19TSVpFIDE2Mzg0Ci0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9C
QVNFX1BUUlNfU0laRSA0MDk2Ci0jZW5kaWYKK2NvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VTaXpl
VG9NYXNrKHNpemVfdCBzaXplKSB7IHJldHVybiBzaXplIC0gMTsgfQogCi1leHRlcm4gIkMiIGFs
aWduYXMoR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUpIEJFWFBPUlQgY2hhciBnX2dpZ2FjYWdlQmFz
ZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdOworY29uc3RleHByIHNpemVfdCBwcmltaXRp
dmVHaWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXpl
KTsKK2NvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRv
TWFzayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKIAotbmFtZXNwYWNlIEdpZ2FjYWdlIHsKK2V4dGVy
biAiQyIgYWxpZ25hcyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgQkVYUE9SVCBjaGFyIGdfZ2lnYWNh
Z2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CiAKIEJJTkxJTkUgYm9vbCB3YXNFbmFi
bGVkKCkgeyByZXR1cm4gZ19naWdhY2FnZUJhc2VQdHJzWzBdOyB9CiBCSU5MSU5FIHZvaWQgc2V0
V2FzRW5hYmxlZCgpIHsgZ19naWdhY2FnZUJhc2VQdHJzWzBdID0gdHJ1ZTsgfQpAQCAtODQsMTYg
KzEwNiwxMCBAQCBzdHJ1Y3QgQmFzZVB0cnMgewogICAgIHZvaWQqIGpzVmFsdWU7CiB9OwogCi1l
bnVtIEtpbmQgewotICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCi0gICAg
UHJpbWl0aXZlLAotICAgIEpTVmFsdWUsCi19OwotCiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJh
c2VQdHJzLCBwcmltaXRpdmUpID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKiksICIi
KTsKIHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFsdWUpID09IEtpbmQ6OkpT
VmFsdWUgKiBzaXplb2Yodm9pZCopLCAiIik7CiAKLXN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
bnVtS2luZHMgPSAyOworY29uc3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMjsKIAogQkVYUE9S
VCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCk7CiAKQEAgLTEwOSwyMCArMTI1LDYgQEAgQkVYUE9SVCBi
b29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOwogaW5saW5lIGJvb2wg
aXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJs
aW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiBpbmxpbmUgYm9vbCBjYW5QcmltaXRp
dmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKCk7IH0KIAotQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkK
LXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RB
QmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2Fz
ZSBQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiAiUHJpbWl0aXZlIjsKLSAgICBjYXNlIEpTVmFs
dWU6Ci0gICAgICAgIHJldHVybiAiSlNWYWx1ZSI7Ci0gICAgfQotICAgIEJDUkFTSCgpOwotICAg
IHJldHVybiBudWxscHRyOwotfQotCiBCSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEJhc2VQdHJzJiBi
YXNlUHRycywgS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewpAQCAtMTU4LDkgKzE2
MCw5IEBAIEJJTkxJTkUgc2l6ZV90IHNpemUoS2luZCBraW5kKQogICAgIGNhc2UgUmVzZXJ2ZWRG
b3JGbGFnc0FuZE5vdEFCYXNlUHRyOgogICAgICAgICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICBjYXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNp
emVfdD4oUFJJTUlUSVZFX0dJR0FDQUdFX1NJWkUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihwcmltaXRpdmVHaWdhY2FnZVNpemUpOwogICAgIGNhc2UgSlNWYWx1ZToKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oSlNWQUxVRV9HSUdBQ0FHRV9TSVpFKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7
CiAgICAgfQogICAgIEJDUkFTSCgpOwogICAgIHJldHVybiAwOwpAQCAtMTczLDcgKzE3NSw3IEBA
IEJJTkxJTkUgc2l6ZV90IGFsaWdubWVudChLaW5kIGtpbmQpCiAKIEJJTkxJTkUgc2l6ZV90IG1h
c2soS2luZCBraW5kKQogewotICAgIHJldHVybiBHSUdBQ0FHRV9TSVpFX1RPX01BU0soc2l6ZShr
aW5kKSk7CisgICAgcmV0dXJuIGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplKGtpbmQpKTsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KQEAgLTIwMiw2ICsyMDQsMjcgQEAgQklOTElORSBib29s
IGlzQ2FnZWQoS2luZCBraW5kLCBjb25zdCB2b2lkKiBwdHIpCiAKIEJFWFBPUlQgYm9vbCBzaG91
bGRCZUVuYWJsZWQoKTsKIAorI2Vsc2UgLy8gR0lHQUNBR0VfRU5BQkxFRAorCitCSU5MSU5FIHZv
aWQqJiBiYXNlUHRyKEtpbmQpCit7CisgICAgQkNSQVNIKCk7CisgICAgc3RhdGljIHZvaWQqIHVu
cmVhY2hhYmxlOworICAgIHJldHVybiB1bnJlYWNoYWJsZTsKK30KK0JJTkxJTkUgc2l6ZV90IHNp
emUoS2luZCkgeyBCQ1JBU0goKTsgcmV0dXJuIDA7IH0KK0JJTkxJTkUgdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpIHsgfQorQklOTElORSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQor
QklOTElORSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQsIFQqIHB0cikgeyBC
Q1JBU0goKTsgcmV0dXJuIHB0cjsgfQorQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmlt
aXRpdmVHaWdhY2FnZUlmU2hvdWxkQmVFbmFibGVkKCkgeyB9CitCSU5MSU5FIHZvaWQgZGlzYWJs
ZVByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9CitCSU5MSU5FIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJs
ZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCopIHsgfQorQklOTElORSB2b2lkIHJlbW92
ZVByaW1pdGl2ZURpc2FibGVDYWxsYmFjayh2b2lkICgqKSh2b2lkKiksIHZvaWQqKSB7IH0KKwor
I2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKKwogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKIAog
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCmluZGV4IDUzYjNlMzY5MTkzZjFmNTQ5OWEzYWNlYTQ3
YmM1NzE3OTJiMzBhMGUuLjI4OGRiNDFlYzVlNGRhNTQ3ZTZjODljY2QwYjU2ZTc0ODhlN2YwODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ1
bGtEZWNvbW1pdC5oIgogI2luY2x1ZGUgIkJ1bXBBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJDaHVu
ay5oIgorI2luY2x1ZGUgIkNyeXB0b1JhbmRvbS5oIgogI2luY2x1ZGUgIkVudmlyb25tZW50Lmgi
CiAjaW5jbHVkZSAiR2lnYWNhZ2UuaCIKICNpbmNsdWRlICJEZWJ1Z0hlYXAuaCIKQEAgLTYxLDcg
KzYyLDEzIEBAIEhlYXA6OkhlYXAoSGVhcEtpbmQga2luZCwgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpCiAjaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgICAgICBpZiAodXNpbmdHaWdhY2FnZSgpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0JBU1NFUlQoZ2lnYWNhZ2VCYXNlUHRyKCkpOwotICAgICAg
ICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoZ2lnYWNhZ2VCYXNlUHRyKCksIGdpZ2Fj
YWdlU2l6ZSgpLCAwLCAwKSk7CisgICAgICAgICAgICB1aW50NjRfdCByYW5kb207CisgICAgICAg
ICAgICBjcnlwdG9SYW5kb20ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oJnJhbmRv
bSksIHNpemVvZihyYW5kb20pKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2Fn
ZVNpemUoKSA+IEdpZ2FjYWdlOjptaW5pbXVtQ2FnZVNpemVBZnRlclNsaWRlKTsKKyAgICAgICAg
ICAgIHB0cmRpZmZfdCBvZmZzZXQgPSByYW5kb20gJSAoZ2lnYWNhZ2VTaXplKCkgLSBHaWdhY2Fn
ZTo6bWluaW11bUNhZ2VTaXplQWZ0ZXJTbGlkZSk7CisgICAgICAgICAgICBvZmZzZXQgPSByZWlu
dGVycHJldF9jYXN0PHB0cmRpZmZfdD4ocm91bmREb3duVG9NdWx0aXBsZU9mKHZtUGFnZVNpemUo
KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob2Zmc2V0KSkpOworICAgICAgICAgICAgdm9pZCog
YmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGdpZ2FjYWdlQmFzZVB0cigp
KSArIG9mZnNldDsKKyAgICAgICAgICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKGJhc2Us
IGdpZ2FjYWdlU2l6ZSgpIC0gb2Zmc2V0LCAwLCAwKSk7CiAgICAgICAgIH0KICNlbmRpZgogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAppbmRleCBmNzVmN2U4ZmNjN2Y2N2RiZDUwM2M3ODljOGZj
ODU0MGI1MGMxNGM5Li4zMzVmMDBmNGVmNjE2NWI1YjE3YTQ1MmM2ZTcxNDdhMWEzYTI4ZDUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TaXplcy5oCkBAIC00MCw4OCArNDAsODkgQEAgbmFtZXNwYWNlIGJtYWxs
b2MgewogLy8gUmVwb3NpdG9yeSBmb3IgbWFsbG9jIHNpemluZyBjb25zdGFudHMgYW5kIGNhbGN1
bGF0aW9ucy4KIAogbmFtZXNwYWNlIFNpemVzIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtC
ID0gMTAyNDsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1CID0ga0IgKiBrQjsKLQotICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYWxpZ25tZW50ID0gODsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IGFsaWdubWVudE1hc2sgPSBhbGlnbm1lbnQgLSAxdWw7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGNodW5rU2l6ZSA9IDEgKiBNQjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGNodW5rTWFz
ayA9IH4oY2h1bmtTaXplIC0gMXVsKTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxM
aW5lU2l6ZSA9IDI1NjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsUGFnZVNpemUgPSA0
ICoga0I7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbFBhZ2VMaW5lQ291bnQgPSBzbWFs
bFBhZ2VTaXplIC8gc21hbGxMaW5lU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFz
a1NpemVDbGFzc01heCA9IDUxMjsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNtYWxsTWF4ID0g
MzIgKiBrQjsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVNYXggPSBzbWFsbE1h
eCAqIDI7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWdlQ2xhc3NDb3VudCA9IHBhZ2VTaXpl
TWF4IC8gc21hbGxQYWdlU2l6ZTsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcGFnZVNpemVX
YXN0ZUZhY3RvciA9IDg7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9
IDg7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gc21hbGxNYXgg
LyBwYWdlU2l6ZVdhc3RlRmFjdG9yOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbGFyZ2VBbGln
bm1lbnRNYXNrID0gbGFyZ2VBbGlnbm1lbnQgLSAxOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBkZWFsbG9jYXRvckxvZ0NhcGFjaXR5ID0gNTEyOwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YnVtcFJhbmdlQ2FjaGVDYXBhY2l0eSA9IDM7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBzY2F2ZW5nZXJCeXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COwotICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1OwotICAgIAot
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWFza1NpemVDbGFzc0NvdW50ID0gbWFza1NpemVDbGFz
c01heCAvIGFsaWdubWVudDsKLQotICAgIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhz
aXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIC8vIFdlIG1hc2sgdG8gYWNjb21tb2RhdGUgemVy
by4KLSAgICAgICAgcmV0dXJuIG1hc2soKHNpemUgLSAxKSAvIGFsaWdubWVudCwgbWFza1NpemVD
bGFzc0NvdW50IC0gMSk7Ci0gICAgfQotCi0gICAgaW5saW5lIHNpemVfdCBtYXNrT2JqZWN0U2l6
ZShzaXplX3QgbWFza1NpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIHJldHVybiAobWFza1NpemVD
bGFzcyArIDEpICogYWxpZ25tZW50OwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bG9nQWxpZ25tZW50TWluID0gbWFza1NpemVDbGFzc01heCAvIGxvZ1dhc3RlRmFjdG9yOwotCi0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dTaXplQ2xhc3NDb3VudCA9IChsb2cyKHNtYWxsTWF4
KSAtIGxvZzIobWFza1NpemVDbGFzc01heCkpICogbG9nV2FzdGVGYWN0b3I7Ci0KLSAgICBpbmxp
bmUgc2l6ZV90IGxvZ1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIHNpemVf
dCBiYXNlID0gbG9nMihzaXplIC0gMSkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpOwotICAgICAg
ICBzaXplX3Qgb2Zmc2V0ID0gKHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkp
OwotICAgICAgICByZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxvZ0Fs
aWdubWVudE1pbiA8PCBiYXNlKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IGxvZ09iamVj
dFNpemUoc2l6ZV90IGxvZ1NpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIHNpemVfdCBiYXNlID0g
bG9nU2l6ZUNsYXNzIC8gbG9nV2FzdGVGYWN0b3I7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBs
b2dTaXplQ2xhc3MgJSBsb2dXYXN0ZUZhY3RvcjsKLSAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNs
YXNzTWF4IDw8IGJhc2UpICsgKG9mZnNldCArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNl
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVDbGFzc0NvdW50ID0gbWFz
a1NpemVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzQ291bnQ7Ci0KLSAgICBpbmxpbmUgc2l6ZV90
IHNpemVDbGFzcyhzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlmIChzaXplIDw9IG1hc2tT
aXplQ2xhc3NNYXgpCi0gICAgICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzcyhzaXplKTsKLSAg
ICAgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzcyhzaXplKTsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNpemVDbGFzcykKLSAg
ICB7Ci0gICAgICAgIGlmIChzaXplQ2xhc3MgPCBtYXNrU2l6ZUNsYXNzQ291bnQpCi0gICAgICAg
ICAgICByZXR1cm4gbWFza09iamVjdFNpemUoc2l6ZUNsYXNzKTsKLSAgICAgICAgcmV0dXJuIGxv
Z09iamVjdFNpemUoc2l6ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKLSAgICB9Ci0gICAg
Ci0gICAgaW5saW5lIHNpemVfdCBwYWdlU2l6ZShzaXplX3QgcGFnZUNsYXNzKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIChwYWdlQ2xhc3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7Ci0gICAgfQorc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3Qga0IgPSAxMDI0Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
TUIgPSBrQiAqIGtCOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgR0IgPSBrQiAqIGtCICoga0I7
CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFsaWdubWVudCA9IDg7CitzdGF0aWMgY29uc3Rl
eHByIHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMXVsOworCitzdGF0aWMgY29u
c3RleHByIHNpemVfdCBjaHVua1NpemUgPSAxICogTUI7CitzdGF0aWMgY29uc3RleHByIHNpemVf
dCBjaHVua01hc2sgPSB+KGNodW5rU2l6ZSAtIDF1bCk7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IHNtYWxsTGluZVNpemUgPSAyNTY7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbFBh
Z2VTaXplID0gNCAqIGtCOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc21hbGxQYWdlTGluZUNv
dW50ID0gc21hbGxQYWdlU2l6ZSAvIHNtYWxsTGluZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1hc2tTaXplQ2xhc3NNYXggPSA1MTI7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBz
bWFsbE1heCA9IDMyICoga0I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHBhZ2VTaXplTWF4
ID0gc21hbGxNYXggKiAyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZUNsYXNzQ291bnQg
PSBwYWdlU2l6ZU1heCAvIHNtYWxsUGFnZVNpemU7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IHBhZ2VTaXplV2FzdGVGYWN0b3IgPSA4Oworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nV2Fz
dGVGYWN0b3IgPSA4OworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBsYXJnZUFsaWdubWVudCA9
IHNtYWxsTWF4IC8gcGFnZVNpemVXYXN0ZUZhY3RvcjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGxhcmdlQWxpZ25tZW50TWFzayA9IGxhcmdlQWxpZ25tZW50IC0gMTsKKworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3QgZGVhbGxvY2F0b3JMb2dDYXBhY2l0eSA9IDUxMjsKK3N0YXRpYyBjb25zdGV4
cHIgc2l6ZV90IGJ1bXBSYW5nZUNhY2hlQ2FwYWNpdHkgPSAzOworCitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBzY2F2ZW5nZXJCeXRlc1Blck1lbW9yeVByZXNzdXJlQ2hlY2sgPSAxNiAqIE1COwor
c3RhdGljIGNvbnN0ZXhwciBkb3VibGUgbWVtb3J5UHJlc3N1cmVUaHJlc2hvbGQgPSAwLjc1Owor
CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNs
YXNzTWF4IC8gYWxpZ25tZW50OworCitjb25zdGV4cHIgc2l6ZV90IG1hc2tTaXplQ2xhc3Moc2l6
ZV90IHNpemUpCit7CisgICAgLy8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgorICAgIHJl
dHVybiBtYXNrKChzaXplIC0gMSkgLyBhbGlnbm1lbnQsIG1hc2tTaXplQ2xhc3NDb3VudCAtIDEp
OworfQorCitpbmxpbmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNsYXNz
KQoreworICAgIHJldHVybiAobWFza1NpemVDbGFzcyArIDEpICogYWxpZ25tZW50OworfQorCitz
dGF0aWMgY29uc3RleHByIHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBtYXNrU2l6ZUNsYXNzTWF4
IC8gbG9nV2FzdGVGYWN0b3I7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxvZ1NpemVDbGFz
c0NvdW50ID0gKGxvZzIoc21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KSkgKiBsb2dX
YXN0ZUZhY3RvcjsKKworaW5saW5lIHNpemVfdCBsb2dTaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7
CisgICAgc2l6ZV90IGJhc2UgPSBsb2cyKHNpemUgLSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01h
eCk7CisgICAgc2l6ZV90IG9mZnNldCA9IChzaXplIC0gMSAtIChtYXNrU2l6ZUNsYXNzTWF4IDw8
IGJhc2UpKTsKKyAgICByZXR1cm4gYmFzZSAqIGxvZ1dhc3RlRmFjdG9yICsgb2Zmc2V0IC8gKGxv
Z0FsaWdubWVudE1pbiA8PCBiYXNlKTsKK30KKworaW5saW5lIHNpemVfdCBsb2dPYmplY3RTaXpl
KHNpemVfdCBsb2dTaXplQ2xhc3MpCit7CisgICAgc2l6ZV90IGJhc2UgPSBsb2dTaXplQ2xhc3Mg
LyBsb2dXYXN0ZUZhY3RvcjsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbG9nU2l6ZUNsYXNzICUgbG9n
V2FzdGVGYWN0b3I7CisgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzTWF4IDw8IGJhc2UpICsgKG9m
ZnNldCArIDEpICogKGxvZ0FsaWdubWVudE1pbiA8PCBiYXNlKTsKK30KKworc3RhdGljIGNvbnN0
ZXhwciBzaXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzQ291bnQgKyBsb2dTaXpl
Q2xhc3NDb3VudDsKKworaW5saW5lIHNpemVfdCBzaXplQ2xhc3Moc2l6ZV90IHNpemUpCit7Cisg
ICAgaWYgKHNpemUgPD0gbWFza1NpemVDbGFzc01heCkKKyAgICAgICAgcmV0dXJuIG1hc2tTaXpl
Q2xhc3Moc2l6ZSk7CisgICAgcmV0dXJuIG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFz
cyhzaXplKTsKK30KKworaW5saW5lIHNpemVfdCBvYmplY3RTaXplKHNpemVfdCBzaXplQ2xhc3Mp
Cit7CisgICAgaWYgKHNpemVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKKyAgICAgICAgcmV0
dXJuIG1hc2tPYmplY3RTaXplKHNpemVDbGFzcyk7CisgICAgcmV0dXJuIGxvZ09iamVjdFNpemUo
c2l6ZUNsYXNzIC0gbWFza1NpemVDbGFzc0NvdW50KTsKK30KKworaW5saW5lIHNpemVfdCBwYWdl
U2l6ZShzaXplX3QgcGFnZUNsYXNzKQoreworICAgIHJldHVybiAocGFnZUNsYXNzICsgMSkgKiBz
bWFsbFBhZ2VTaXplOworfQogfQogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359501</attachid>
            <date>2019-01-18 10:06:49 -0800</date>
            <delta_ts>2019-01-18 11:39:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193523-20190118100648.patch</filename>
            <type>text/plain</type>
            <size>28491</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDdmYTQ5YWEwMmE4MWI1NjkzMjgzNWU5OWMzZDk1MGQ4NDk0MzJiLi5jNGMyOTMxNDdmMjY2OWE2
NDUyNDU3YWEyODNkZGY3Y2RmOGM3Mjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOS0wMS0xNyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBHaWdhY2FnZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20g
YSBzbGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzNTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgVGhpcyBw
YXRjaCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3JvcyBhcmUg
dGhlCisgICAgICAgIGRldmlsLgorCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKwogMjAxOS0wMS0xNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVmYWN0b3IgbmV3IGJ5dGVjb2RlIHN0cnVjdHMgc28gdGhhdCB0aGUgZmllbGRz
IGFyZSBwcmVmaXhlZCB3aXRoICJtXyIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDEyMWU2YmZlZWE5ZmI5ZDAxYmIxZmQ3ODVl
YmIyY2JjZGVjMTBjNzIuLmE3ODBlM2I2Y2Q3OTkwNWEyYmQwYTIxZWZlZGY2NDkzNzFmNDRhMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDEtMTcgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21p
bGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBhbGxvY2F0
aW9ucyBmcm9tIGEgc2xpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MzUyMworCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBzb21lIG1hY3JvcyBpbnRvIGNvbnN0YW50cyBzaW5jZSBt
YWNyb3MgYXJlIHRoZQorICAgICAgICBkZXZpbC4KKworICAgICAgICAqIHd0Zi9HaWdhY2FnZS5j
cHA6CisgICAgICAgICogd3RmL0dpZ2FjYWdlLmg6CisKIDIwMTktMDEtMTYgIEtlaXRoIE1pbGxl
ciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1hbGxvYyBzaG91bGQgdXNl
IEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggYjMwZDEyNTQzMmM5ZmYwZTM2
Y2MzODNkZDc4YWFkYjE2NzQyMGRiZS4uNTI1NmExZDcyYmU2ZDY3YjNhNDk0NWNjOTVlNjczMDlm
YjlkZWNiZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE5LTAxLTE3ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIEdpZ2FjYWdlcyBzaG91
bGQgc3RhcnQgYWxsb2NhdGlvbnMgZnJvbSBhIHNsaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM1MjMKKworICAgICAgICBSZXZpZXdlZCBieSBN
YXJrIExhbS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHNvIHRoYXQgR2lnYWNhZ2Ug
SGVhcHMgc2xpZGUgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICBjYWdlIGJ5IHNvbWUgcmFuZG9t
IGFtb3VudC4gV2Ugc3RpbGwgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYWx3YXlzCisgICAgICAgIGF0
IGxlYXN0IDQvMkdCLCBvbiBNYWNPUy9pT1MgcmVzcGVjdGl2ZWx5LCBvZiBWQSBzcGFjZSBhdmFp
bGFibGUKKyAgICAgICAgZm9yIGFsbG9jYXRpb24uCisKKyAgICAgICAgQWxzbywgdGhpcyBwYXRj
aCBjaGFuZ2VzIHNvbWUgbWFjcm9zIGludG8gY29uc3RhbnRzIHNpbmNlIG1hY3JvcworICAgICAg
ICBhcmUgdGhlIGRldmlsLgorCisgICAgICAgICogYm1hbGxvYy9HaWdhY2FnZS5jcHA6CisgICAg
ICAgIChHaWdhY2FnZTo6Ym1hbGxvYzo6cHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMpOgorICAgICAg
ICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnMpOgorICAgICAg
ICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnJ1bndheVNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6OmVu
c3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaG91bGRCZUVuYWJsZWQpOgorICAg
ICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpuYW1lKToKKyAg
ICAgICAgKEdpZ2FjYWdlOjpnaWdhY2FnZVNpemVUb01hc2spOgorICAgICAgICAoR2lnYWNhZ2U6
OnNpemUpOgorICAgICAgICAoR2lnYWNhZ2U6Om1hc2spOgorICAgICAgICAoR2lnYWNhZ2U6OmJh
c2VQdHIpOgorICAgICAgICAoR2lnYWNhZ2U6OmVuc3VyZUdpZ2FjYWdlKToKKyAgICAgICAgKEdp
Z2FjYWdlOjp3YXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjppc0NhZ2VkKToKKyAgICAg
ICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2FnZTo6ZGlzYWJsZURpc2FibGlu
Z1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6
OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2FnZTo6YWRkUHJpbWl0
aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdpZ2FjYWdlOjpyZW1vdmVQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKiBibWFsbG9jL1NpemVzLmg6CisgICAgICAg
IChibWFsbG9jOjpTaXplczo6bWFza1NpemVDbGFzcyk6CisgICAgICAgIChibWFsbG9jOjpTaXpl
czo6bWFza09iamVjdFNpemUpOgorICAgICAgICAoYm1hbGxvYzo6U2l6ZXM6OmxvZ1NpemVDbGFz
cyk6CisgICAgICAgIChibWFsbG9jOjpTaXplczo6bG9nT2JqZWN0U2l6ZSk6CisgICAgICAgIChi
bWFsbG9jOjpTaXplczo6c2l6ZUNsYXNzKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpvYmpl
Y3RTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OlNpemVzOjpwYWdlU2l6ZSk6CisKIDIwMTktMDEt
MTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm1h
bGxvYyBzaG91bGQgdXNlIEpTQyBWTSB0YWcgZm9yIGdpZ2FjYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDgx
MDU5MmM1ZmVlZDY3M2I5MmY1MzkwYmY5ZjhhODgwOGJlMDQ4N2EuLmQxNDkxZjk2NjY2YWZjNTc3
YTkzNzMwNDMxZmNhYTFhZTg3YWNkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0xMzE1LDcgKzEzMTUsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6
ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdAogICAgIGFycmF5UHJvZmlsZShPcEdldEJ5SWQ6Ok1l
dGFkYXRhOjptX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlLCB0MCwg
dDIsIHQ1KQogICAgIGJ0aXogdDAsIElzQXJyYXksIC5vcEdldEJ5SWRTbG93CiAgICAgYnRpeiB0
MCwgSW5kZXhpbmdTaGFwZU1hc2ssIC5vcEdldEJ5SWRTbG93Ci0gICAgbG9hZENhZ2VkKF9nX2dp
Z2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBK
U1ZBTFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0M10sIHQwLCB0MSkK
KyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6
anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBKU09iamVj
dDo6bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hl
YWRlciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAg
ICBiaWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwogICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MApA
QCAtMTQzOCw3ICsxNDM4LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDMsIHQxLCAub3BHZXRCeVZhbFNsb3cpCiAgICAg
c3hpMnEgdDEsIHQxCiAKLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2Fj
YWdlOjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEpTVkFMVUVfR0lHQUNBR0VfTUFTSywg
SlNPYmplY3Q6Om1fYnV0dGVyZmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCisgICAgbG9hZENh
Z2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNv
bnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgSlNPYmplY3Q6Om1fYnV0dGVy
Zmx5W3QwXSwgdDMsIHRhZ1R5cGVOdW1iZXIpCiAgICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdU
eXBlTnVtYmVyCiAKICAgICBhbmRpIEluZGV4aW5nU2hhcGVNYXNrLCB0MgpAQCAtMTUwNCw3ICsx
NTA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDhBcnJheVR5
cGUgLSBGaXJzdFR5cGVkQXJyYXlUeXBlLCAub3BHZXRCeVZhbFVpbnQ4QXJyYXlPclVpbnQ4Q2xh
bXBlZEFycmF5CiAKICAgICAjIFdlIGhhdmUgSW50OEFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQo
X2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25z
dGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rv
clt0MF0sIHQzLCB0MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2Fj
YWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdp
Z2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAg
IGxvYWRicyBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJbnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAg
LTE1MTIsMTMgKzE1MTIsMTMgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBP
cEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWEgdDIs
IFVpbnQ4QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxVaW50OENs
YW1wZWRBcnJheQogCiAgICAgIyBXZSBoYXZlIFVpbnQ4QXJyYXlUeXBlLgotICAgIGxvYWRDYWdl
ZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNv
bnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVj
dG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2ln
YWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZl
R2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAg
ICAgbG9hZGIgW3QzLCB0MV0sIHQwCiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCiAu
b3BHZXRCeVZhbFVpbnQ4Q2xhbXBlZEFycmF5OgogICAgICMgV2UgaGF2ZSBVaW50OENsYW1wZWRB
cnJheVR5cGUuCi0gICAgbG9hZENhZ2VkKF9nX2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6
QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLLCBK
U0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCisgICAgbG9hZENhZ2VkKF9n
X2dpZ2FjYWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3Rl
eHByIEdpZ2FjYWdlOjpwcmltaXRpdmVHaWdhY2FnZU1hc2ssIEpTQXJyYXlCdWZmZXJWaWV3Ojpt
X3ZlY3Rvclt0MF0sIHQzLCB0MikKICAgICBsb2FkYiBbdDMsIHQxXSwgdDAKICAgICBmaW5pc2hJ
bnRHZXRCeVZhbCh0MCwgdDEpCiAKQEAgLTE1MjcsMTMgKzE1MjcsMTMgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbWV0YWQKICAgICBiaWEgdDIsIEludDE2QXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5
VHlwZSwgLm9wR2V0QnlWYWxVaW50MTZBcnJheQogCiAgICAgIyBXZSBoYXZlIEludDE2QXJyYXlU
eXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJh
eUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdh
Y2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBH
aWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0
b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGhzIFt0MywgdDEsIDJdLCB0MAogICAgIGZpbmlzaElu
dEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MTZBcnJheToKICAgICAjIFdlIGhh
dmUgVWludDE2QXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsg
R2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklNSVRJVkVfR0lHQUNB
R0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQorICAgIGxv
YWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRp
dmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBKU0FycmF5QnVm
ZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgbG9hZGggW3QzLCB0MSwgMl0sIHQw
CiAgICAgZmluaXNoSW50R2V0QnlWYWwodDAsIHQxKQogCkBAIC0xNTQ1LDEzICsxNTQ1LDEzIEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X3ZhbCwgT3BHZXRCeVZhbCwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkCiAgICAgYmlhIHQyLCBJbnQzMkFycmF5VHlwZSAtIEZp
cnN0VHlwZWRBcnJheVR5cGUsIC5vcEdldEJ5VmFsVWludDMyQXJyYXkKIAogICAgICMgV2UgaGF2
ZSBJbnQzMkFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdp
Z2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlUSVZFX0dJR0FDQUdF
X01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0MikKKyAgICBsb2Fk
Q2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZl
LCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywgSlNBcnJheUJ1ZmZl
clZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRpIFt0MywgdDEsIDRdLCB0MAog
ICAgIGZpbmlzaEludEdldEJ5VmFsKHQwLCB0MSkKIAogLm9wR2V0QnlWYWxVaW50MzJBcnJheToK
ICAgICAjIFdlIGhhdmUgVWludDMyQXJyYXlUeXBlLgotICAgIGxvYWRDYWdlZChfZ19naWdhY2Fn
ZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBQUklN
SVRJVkVfR0lHQUNBR0VfTUFTSywgSlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMs
IHQyKQorICAgIGxvYWRDYWdlZChfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQ
dHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhwciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNr
LCBKU0FycmF5QnVmZmVyVmlldzo6bV92ZWN0b3JbdDBdLCB0MywgdDIpCiAgICAgIyBUaGlzIGlz
IHRoZSBoYXJkZXN0IHBhcnQgYmVjYXVzZSBvZiBsYXJnZSB1bnNpZ25lZCB2YWx1ZXMuCiAgICAg
bG9hZGkgW3QzLCB0MSwgNF0sIHQwCiAgICAgYmlsdCB0MCwgMCwgLm9wR2V0QnlWYWxTbG93ICMg
VGhpcyBjYXNlIGlzIHN0aWxsIGF3a3dhcmQgdG8gaW1wbGVtZW50IGluIExMSW50LgpAQCAtMTU2
Myw3ICsxNTYzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldEJ5
VmFsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWQKICAgICBiaWVxIHQyLCBGbG9h
dDMyQXJyYXlUeXBlIC0gRmlyc3RUeXBlZEFycmF5VHlwZSwgLm9wR2V0QnlWYWxTbG93CiAKICAg
ICAjIFdlIGhhdmUgRmxvYXQ2NEFycmF5VHlwZS4KLSAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VC
YXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRyczo6cHJpbWl0aXZlLCBjb25zdGV4cHIgUFJJTUlU
SVZFX0dJR0FDQUdFX01BU0ssIEpTQXJyYXlCdWZmZXJWaWV3OjptX3ZlY3Rvclt0MF0sIHQzLCB0
MikKKyAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNlUHRy
czo6cHJpbWl0aXZlLCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlTWFzaywg
SlNBcnJheUJ1ZmZlclZpZXc6Om1fdmVjdG9yW3QwXSwgdDMsIHQyKQogICAgIGxvYWRkIFt0Mywg
dDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKICAgICBm
aW5pc2hEb3VibGVHZXRCeVZhbChmdDAsIHQwLCB0MSkKQEAgLTE1OTksNyArMTU5OSw3IEBAIG1h
Y3JvIHB1dEJ5VmFsT3AobmFtZSwgb3ApCiAgICAgICAgIGdldChtX3Byb3BlcnR5LCB0MCkKICAg
ICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQwLCB0MywgLm9wUHV0QnlW
YWxTbG93KQogICAgICAgICBzeGkycSB0MywgdDMKLSAgICAgICAgbG9hZENhZ2VkKF9nX2dpZ2Fj
YWdlQmFzZVB0cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OmpzVmFsdWUsIGNvbnN0ZXhwciBKU1ZB
TFVFX0dJR0FDQUdFX01BU0ssIEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwLCB0YWdUeXBl
TnVtYmVyKQorICAgICAgICBsb2FkQ2FnZWQoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdl
OjpCYXNlUHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VN
YXNrLCBKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgdGFnVHlwZU51bWJlcikKICAgICAg
ICAgbW92ZSBUYWdUeXBlTnVtYmVyLCB0YWdUeXBlTnVtYmVyCiAgICAgICAgIGJ0aW56IHQyLCBD
b3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1h
c2ssIHQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9HaWdhY2FnZS5jcHAKaW5kZXggYWQ5M2ZhNDI4NTlkNmExMzc5YzQ2ODcxYTc1YjQ2
NDZhZjE4M2Q3MS4uZjdjMmE1ZGY3Y2RiY2NlNDFkNDAyYjcwYmE4NmQ0ZDdiYmU5ODkwNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0dpZ2FjYWdlLmNwcApAQCAtMzIsMTAgKzMyLDEwIEBACiAKICNpZiBkZWZpbmVkKFVTRV9TWVNU
RU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogCi1hbGlnbmFzKHZvaWQqKSBjaGFyIGdf
Z2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRV07Ci0KIG5hbWVzcGFjZSBH
aWdhY2FnZSB7CiAKK2FsaWduYXModm9pZCopIGNoYXIgZ19naWdhY2FnZUJhc2VQdHJzW2dpZ2Fj
YWdlQmFzZVB0cnNTaXplXTsKKwogdm9pZCogdHJ5TWFsbG9jKEtpbmQsIHNpemVfdCBzaXplKQog
ewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6ZSk7CkBAIC02MSw3ICs2MSw3
IEBAIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBiYXNlUHRyLCBzaXplX3Qgc2l6
ZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgR2lnYWNhZ2UKLSNlbHNlCisjZWxzZSAvLyBkZWZpbmVk
KFVTRV9TWVNURU1fTUFMTE9DKSAmJiBVU0VfU1lTVEVNX01BTExPQwogI2luY2x1ZGUgPGJtYWxs
b2MvYm1hbGxvYy5oPgogCiBuYW1lc3BhY2UgR2lnYWNhZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvR2lnYWNhZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmgKaW5kZXggMWIw
NDgzMTNhMzYyODIxYjFmODg3ZmE1YjdlM2QzZTAwMjkzOGI2OS4uMmI4NmZlYTk1OTllNDYwNzI3
MjJlNGE5OTZjYWEwNWEyMWNhNGIwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvR2lnYWNh
Z2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCkBAIC0yNiwxOSArMjYsMTkgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBkZWZpbmVkKFVTRV9TWVNURU1fTUFMTE9DKSAmJiBV
U0VfU1lTVEVNX01BTExPQwogI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDAKLSNkZWZpbmUgUFJJ
TUlUSVZFX0dJR0FDQUdFX01BU0sgMAotI2RlZmluZSBKU1ZBTFVFX0dJR0FDQUdFX01BU0sgMAot
I2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA4MTkyCi0KLWV4dGVybiAiQyIgewotYWxp
Z25hcyh2b2lkKikgZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyIGdfZ2lnYWNhZ2VCYXNl
UHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRV07Ci19CiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7
CiAKK2NvbnN0IHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSAwOworY29uc3Qgc2l6ZV90
IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSAwOworY29uc3Qgc2l6ZV90IGdpZ2FjYWdlQmFzZVB0cnNT
aXplID0gOCAqIEtCOworCitleHRlcm4gIkMiIGFsaWduYXModm9pZCopIFdURl9FWFBPUlRfUFJJ
VkFURSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07CisKIHN0
cnVjdCBCYXNlUHRycyB7CiAgICAgdWludHB0cl90IHJlc2VydmVkRm9yRmxhZ3M7CiAgICAgdm9p
ZCogcHJpbWl0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2Fn
ZS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAppbmRleCBhODg2MjNk
NjllZTM3MGVlOWRkZWUzNDU3MTU5MTI4ZjAzZjBjYjNhLi5iZDE4MDgyZTY3ZDE0MmViYzVjMGYw
YTk1NjZhODdhY2Y2MTBjYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcApAQCAt
MzUsMjMgKzM1LDI1IEBACiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPG11dGV4PgogCisj
aWYgR0lHQUNBR0VfRU5BQkxFRAorCituYW1lc3BhY2UgR2lnYWNhZ2UgeworCiAvLyBUaGlzIGlz
IGV4YWN0bHkgMzJHQiBiZWNhdXNlIGluc2lkZSBKU0MsIGluZGV4ZWQgYWNjZXNzZXMgZm9yIGFy
cmF5cywgdHlwZWQgYXJyYXlzLCBldGMsCiAvLyB1c2UgdW5zaWduZWQgMzItYml0IGludHMgYXMg
aW5kaWNlcy4gVGhlIGl0ZW1zIHRob3NlIGluZGljZXMgYWNjZXNzIGFyZSA4IGJ5dGVzIG9yIGxl
c3MKIC8vIGluIHNpemUuIDJeMzIgKiA4ID0gMzJHQi4gVGhpcyBtZWFucyBpZiBhbiBhY2Nlc3Mg
b24gYSBjYWdlZCB0eXBlIGhhcHBlbnMgdG8gZ28gb3V0IG9mCiAvLyBib3VuZHMsIHRoZSBhY2Nl
c3MgaXMgZ3VhcmFudGVlZCB0byBsYW5kIHNvbWV3aGVyZSBlbHNlIGluIHRoZSBjYWdlIG9yIGlu
c2lkZSB0aGUgcnVud2F5LgogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhhbiAzMkdCLCB0aG9zZSBP
T0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2FnZS4KLSNkZWZpbmUgR0lH
QUNBR0VfUlVOV0FZICgzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNCkKK2NvbnN0ZXhwciBzaXpl
X3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIDEwMjQgKiAxMDI0ICogMTAyNDsKIAogLy8gTm90
ZTogZ19naWdhY2FnZUJhc2VQdHJzWzBdIGlzIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoZSB3YXNF
bmFibGVkIGZsYWcuCiAvLyBUaGUgZmlyc3QgZ2lnYWNhZ2VCYXNlUHRyIHdpbGwgc3RhcnQgYXQg
Z19naWdhY2FnZUJhc2VQdHJzW3NpemVvZih2b2lkKildLgogLy8gVGhpcyBpcyBkb25lIHNvIHRo
YXQgdGhlIHdhc0VuYWJsZWQgZmxhZyB3aWxsIGFsc28gYmUgcHJvdGVjdGVkIGFsb25nIHdpdGgg
dGhlCiAvLyBnaWdhY2FnZUJhc2VQdHJzLgotYWxpZ25hcyhHSUdBQ0FHRV9CQVNFX1BUUlNfU0la
RSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkVdOworYWxp
Z25hcyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNh
Z2VCYXNlUHRyc1NpemVdOwogCiB1c2luZyBuYW1lc3BhY2UgYm1hbGxvYzsKIAotbmFtZXNwYWNl
IEdpZ2FjYWdlIHsKLQogbmFtZXNwYWNlIHsKIAogYm9vbCBzX2lzRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZ2VEaXNhYmxlZDsKQEAgLTYxLDEyICs2MywxMiBAQCB2b2lkIHByb3RlY3RHaWdhY2Fn
ZUJhc2VQdHJzKCkKICAgICB1aW50cHRyX3QgYmFzZVB0cnMgPSByZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oZ19naWdhY2FnZUJhc2VQdHJzKTsKICAgICAvLyBXZSBtaWdodCBvbmx5IGdldCBw
YWdlIHNpemUgYWxpZ25tZW50LCBidXQgdGhhdCdzIGFsc28gdGhlIG1pbmltdW0gd2UgbmVlZC4K
ICAgICBSRUxFQVNFX0JBU1NFUlQoIShiYXNlUHRycyAmICh2bVBhZ2VTaXplKCkgLSAxKSkpOwot
ICAgIG1wcm90ZWN0KGdfZ2lnYWNhZ2VCYXNlUHRycywgR0lHQUNBR0VfQkFTRV9QVFJTX1NJWkUs
IFBST1RfUkVBRCk7CisgICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJh
c2VQdHJzU2l6ZSwgUFJPVF9SRUFEKTsKIH0KIAogdm9pZCB1bnByb3RlY3RHaWdhY2FnZUJhc2VQ
dHJzKCkKIHsKLSAgICBtcHJvdGVjdChnX2dpZ2FjYWdlQmFzZVB0cnMsIEdJR0FDQUdFX0JBU0Vf
UFRSU19TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAgICBtcHJvdGVjdChnX2dpZ2Fj
YWdlQmFzZVB0cnMsIGdpZ2FjYWdlQmFzZVB0cnNTaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
KTsKIH0KIAogY2xhc3MgVW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRyc1Njb3BlIHsKQEAgLTEwMSwy
NiArMTAzLDIzIEBAIHN0cnVjdCBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzIHsKICAgICBWZWN0
b3I8Q2FsbGJhY2s+IGNhbGxiYWNrczsKIH07CiAKLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiBzaXpl
X3QgcnVud2F5U2l6ZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2Fz
ZSBLaW5kOjpSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6CiAgICAgICAgIFJFTEVBU0Vf
QkFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIGNhc2UgS2luZDo6UHJpbWl0aXZlOgotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihHSUdBQ0FHRV9SVU5XQVkpOworICAgICAgICBy
ZXR1cm4gZ2lnYWNhZ2VSdW53YXk7CiAgICAgY2FzZSBLaW5kOjpKU1ZhbHVlOgotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigwKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KDApOworICAgIHJldHVybiAwOwogfQotI2Vu
ZGlmCiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkK
IHsKLSNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKAogICAgICAgICBvbmNlRmxhZywKQEAgLTE4OSw3ICsx
ODgsNiBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIHNldFdhc0VuYWJsZWQo
KTsKICAgICAgICAgICAgIHByb3RlY3RHaWdhY2FnZUJhc2VQdHJzKCk7CiAgICAgICAgIH0pOwot
I2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIH0KIAogdm9pZCBkaXNhYmxlUHJpbWl0aXZlR2ln
YWNhZ2UoKQpAQCAtMjY1LDggKzI2Myw2IEBAIGJvb2wgaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdh
Y2FnZURpc2FibGVkKCkKIGJvb2wgc2hvdWxkQmVFbmFibGVkKCkKIHsKICAgICBzdGF0aWMgYm9v
bCBjYWNoZWQgPSBmYWxzZTsKLQotI2lmIEdJR0FDQUdFX0VOQUJMRUQKICAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2UoCiAgICAgICAgIG9uY2VG
bGFnLApAQCAtMjg4LDEyICsyODQsMTEgQEAgYm9vbCBzaG91bGRCZUVuYWJsZWQoKQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjYWNoZWQgPSB0cnVlOwogICAgICAgICB9KTsKLSNlbmRpZiAv
LyBHSUdBQ0FHRV9FTkFCTEVECi0gICAgCiAgICAgcmV0dXJuIGNhY2hlZDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgR2lnYWNhZ2UKIAorI2VuZGlmIC8vIEdJR0FDQUdFX0VOQUJMRUQKIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0dpZ2FjYWdlLmgKaW5kZXggZWFiODBmZDJkM2UyNDIyOGNiOWZmY2RkODM0Nzlk
MWViZGNiMWQzOC4uYTg2YmUzZTk1YzRhODliYmVmNDM3YjE4OGFkZDIzMWJkYzM0YTU2YiAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCisrKyBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaApAQCAtMzAsMTYgKzMwLDUzIEBACiAjaW5jbHVkZSAi
QkV4cG9ydC5oIgogI2luY2x1ZGUgIkJJbmxpbmUuaCIKICNpbmNsdWRlICJCUGxhdGZvcm0uaCIK
KyNpbmNsdWRlICJTaXplcy5oIgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8aW50dHlw
ZXMuaD4KIAorI2lmICgoQk9TKERBUldJTikgfHwgQk9TKExJTlVYKSkgJiYgXAorKEJDUFUoWDg2
XzY0KSB8fCAoQkNQVShBUk02NCkgJiYgIWRlZmluZWQoX19JTFAzMl9fKSAmJiAoIUJQTEFURk9S
TShJT1NfRkFNSUxZKSB8fCBCUExBVEZPUk0oSU9TKSkpKSkKKyNkZWZpbmUgR0lHQUNBR0VfRU5B
QkxFRCAxCisjZWxzZQorI2RlZmluZSBHSUdBQ0FHRV9FTkFCTEVEIDAKKyNlbmRpZgorCisKK25h
bWVzcGFjZSBHaWdhY2FnZSB7CisKK2VudW0gS2luZCB7CisgICAgUmVzZXJ2ZWRGb3JGbGFnc0Fu
ZE5vdEFCYXNlUHRyID0gMCwKKyAgICBQcmltaXRpdmUsCisgICAgSlNWYWx1ZSwKK307CisKK0JJ
TkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7
CisgICAgY2FzZSBSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6CisgICAgICAgIFJFTEVB
U0VfQkFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2UgUHJpbWl0aXZlOgorICAgICAgICBy
ZXR1cm4gIlByaW1pdGl2ZSI7CisgICAgY2FzZSBKU1ZhbHVlOgorICAgICAgICByZXR1cm4gIkpT
VmFsdWUiOworICAgIH0KKyAgICBCQ1JBU0goKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
I2lmIEdJR0FDQUdFX0VOQUJMRUQKKwogI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5lIFBSSU1JVElW
RV9HSUdBQ0FHRV9TSVpFIDB4ODAwMDAwMDBsbHUKLSNkZWZpbmUgSlNWQUxVRV9HSUdBQ0FHRV9T
SVpFIDB4NDAwMDAwMDBsbHUKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXpl
ID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2Fj
YWdlU2l6ZSA9IDEgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGdpZ2Fj
YWdlQmFzZVB0cnNTaXplID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7Citjb25zdGV4cHIgc2l6
ZV90IG1pbmltdW1DYWdlU2l6ZUFmdGVyU2xpZGUgPSBibWFsbG9jOjpTaXplczo6R0IgLyAyOwog
I2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIDEKICNlbHNlCi0jZGVmaW5lIFBS
SU1JVElWRV9HSUdBQ0FHRV9TSVpFIDB4ODAwMDAwMDAwbGx1Ci0jZGVmaW5lIEpTVkFMVUVfR0lH
QUNBR0VfU0laRSAweDQwMDAwMDAwMGxsdQorY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdh
Y2FnZVNpemUgPSAzMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKK2NvbnN0ZXhwciBzaXplX3QganNW
YWx1ZUdpZ2FjYWdlU2l6ZSA9IDE2ICogYm1hbGxvYzo6U2l6ZXM6OkdCOworY29uc3RleHByIHNp
emVfdCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSA9IDQgKiBibWFsbG9jOjpTaXplczo6a0I7Citjb25z
dGV4cHIgc2l6ZV90IG1pbmltdW1DYWdlU2l6ZUFmdGVyU2xpZGUgPSA0ICogYm1hbGxvYzo6U2l6
ZXM6OkdCOwogI2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIDAKICNlbmRpZgog
CkBAIC01MCwzMCArODcsMTggQEAKICNkZWZpbmUgR0lHQUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJ
TCAxCiAjZW5kaWYKIAotc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bvd2VyT2ZUd28oUFJJTUlU
SVZFX0dJR0FDQUdFX1NJWkUpLCAiIik7Ci1zdGF0aWNfYXNzZXJ0KGJtYWxsb2M6OmlzUG93ZXJP
ZlR3byhKU1ZBTFVFX0dJR0FDQUdFX1NJWkUpLCAiIik7CiAKLSNkZWZpbmUgR0lHQUNBR0VfU0la
RV9UT19NQVNLKHNpemUpICgoc2l6ZSkgLSAxKQorc3RhdGljX2Fzc2VydChibWFsbG9jOjppc1Bv
d2VyT2ZUd28ocHJpbWl0aXZlR2lnYWNhZ2VTaXplKSwgIiIpOworc3RhdGljX2Fzc2VydChibWFs
bG9jOjppc1Bvd2VyT2ZUd28oanNWYWx1ZUdpZ2FjYWdlU2l6ZSksICIiKTsKK3N0YXRpY19hc3Nl
cnQocHJpbWl0aXZlR2lnYWNhZ2VTaXplID4gbWluaW11bUNhZ2VTaXplQWZ0ZXJTbGlkZSwgIiIp
Oworc3RhdGljX2Fzc2VydChqc1ZhbHVlR2lnYWNhZ2VTaXplID4gbWluaW11bUNhZ2VTaXplQWZ0
ZXJTbGlkZSwgIiIpOwogCi0jZGVmaW5lIFBSSU1JVElWRV9HSUdBQ0FHRV9NQVNLIEdJR0FDQUdF
X1NJWkVfVE9fTUFTSyhQUklNSVRJVkVfR0lHQUNBR0VfU0laRSkKLSNkZWZpbmUgSlNWQUxVRV9H
SUdBQ0FHRV9NQVNLIEdJR0FDQUdFX1NJWkVfVE9fTUFTSyhKU1ZBTFVFX0dJR0FDQUdFX1NJWkUp
Citjb25zdGV4cHIgc2l6ZV90IGdpZ2FjYWdlU2l6ZVRvTWFzayhzaXplX3Qgc2l6ZSkgeyByZXR1
cm4gc2l6ZSAtIDE7IH0KIAotI2lmICgoQk9TKERBUldJTikgfHwgQk9TKExJTlVYKSkgJiYgXAot
ICAgIChCQ1BVKFg4Nl82NCkgfHwgKEJDUFUoQVJNNjQpICYmICFkZWZpbmVkKF9fSUxQMzJfXykg
JiYgKCFCUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgQlBMQVRGT1JNKElPUykpKSkpCi0jZGVmaW5l
IEdJR0FDQUdFX0VOQUJMRUQgMQotI2Vsc2UKLSNkZWZpbmUgR0lHQUNBR0VfRU5BQkxFRCAwCi0j
ZW5kaWYKLQotI2lmIEJDUFUoQVJNNjQpCi0jZGVmaW5lIEdJR0FDQUdFX0JBU0VfUFRSU19TSVpF
IDE2Mzg0Ci0jZWxzZQotI2RlZmluZSBHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSA0MDk2Ci0jZW5k
aWYKK2NvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gZ2lnYWNhZ2VTaXpl
VG9NYXNrKHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSk7Citjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVH
aWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2soanNWYWx1ZUdpZ2FjYWdlU2l6ZSk7CiAK
LWV4dGVybiAiQyIgYWxpZ25hcyhHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRSkgQkVYUE9SVCBjaGFy
IGdfZ2lnYWNhZ2VCYXNlUHRyc1tHSUdBQ0FHRV9CQVNFX1BUUlNfU0laRV07Ci0KLW5hbWVzcGFj
ZSBHaWdhY2FnZSB7CitleHRlcm4gIkMiIGFsaWduYXMoZ2lnYWNhZ2VCYXNlUHRyc1NpemUpIEJF
WFBPUlQgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwogCiBC
SU5MSU5FIGJvb2wgd2FzRW5hYmxlZCgpIHsgcmV0dXJuIGdfZ2lnYWNhZ2VCYXNlUHRyc1swXTsg
fQogQklOTElORSB2b2lkIHNldFdhc0VuYWJsZWQoKSB7IGdfZ2lnYWNhZ2VCYXNlUHRyc1swXSA9
IHRydWU7IH0KQEAgLTg0LDE2ICsxMDksMTAgQEAgc3RydWN0IEJhc2VQdHJzIHsKICAgICB2b2lk
KiBqc1ZhbHVlOwogfTsKIAotZW51bSBLaW5kIHsKLSAgICBSZXNlcnZlZEZvckZsYWdzQW5kTm90
QUJhc2VQdHIgPSAwLAotICAgIFByaW1pdGl2ZSwKLSAgICBKU1ZhbHVlLAotfTsKLQogc3RhdGlj
X2Fzc2VydChvZmZzZXRvZihCYXNlUHRycywgcHJpbWl0aXZlKSA9PSBLaW5kOjpQcmltaXRpdmUg
KiBzaXplb2Yodm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBq
c1ZhbHVlKSA9PSBLaW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKSwgIiIpOwogCi1zdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG51bUtpbmRzID0gMjsKK2NvbnN0ZXhwciB1bnNpZ25lZCBudW1L
aW5kcyA9IDI7CiAKIEJFWFBPUlQgdm9pZCBlbnN1cmVHaWdhY2FnZSgpOwogCkBAIC0xMDksMjAg
KzEyOCw2IEBAIEJFWFBPUlQgYm9vbCBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJs
ZWQoKTsKIGlubGluZSBib29sIGlzUHJpbWl0aXZlR2lnYWNhZ2VQZXJtYW5lbnRseUVuYWJsZWQo
KSB7IHJldHVybiBpc0Rpc2FibGluZ1ByaW1pdGl2ZUdpZ2FjYWdlRGlzYWJsZWQoKTsgfQogaW5s
aW5lIGJvb2wgY2FuUHJpbWl0aXZlR2lnYWNhZ2VCZURpc2FibGVkKCkgeyByZXR1cm4gIWlzRGlz
YWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiAKLUJJTkxJTkUgY29uc3QgY2hh
ciogbmFtZShLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBSZXNl
cnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6Ci0gICAgICAgIFJFTEVBU0VfQkFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGNhc2UgUHJpbWl0aXZlOgotICAgICAgICByZXR1cm4gIlByaW1pdGl2
ZSI7Ci0gICAgY2FzZSBKU1ZhbHVlOgotICAgICAgICByZXR1cm4gIkpTVmFsdWUiOwotICAgIH0K
LSAgICBCQ1JBU0goKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogQklOTElORSB2b2lkKiYg
YmFzZVB0cihCYXNlUHRycyYgYmFzZVB0cnMsIEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtp
bmQpIHsKQEAgLTE1OCw5ICsxNjMsOSBAQCBCSU5MSU5FIHNpemVfdCBzaXplKEtpbmQga2luZCkK
ICAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKICAgICAgICAgUkVMRUFT
RV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KFBSSU1JVElWRV9HSUdBQ0FHRV9TSVpFKTsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4ocHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKICAg
ICBjYXNlIEpTVmFsdWU6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KEpTVkFM
VUVfR0lHQUNBR0VfU0laRSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KGpz
VmFsdWVHaWdhY2FnZVNpemUpOwogICAgIH0KICAgICBCQ1JBU0goKTsKICAgICByZXR1cm4gMDsK
QEAgLTE3Myw3ICsxNzgsNyBAQCBCSU5MSU5FIHNpemVfdCBhbGlnbm1lbnQoS2luZCBraW5kKQog
CiBCSU5MSU5FIHNpemVfdCBtYXNrKEtpbmQga2luZCkKIHsKLSAgICByZXR1cm4gR0lHQUNBR0Vf
U0laRV9UT19NQVNLKHNpemUoa2luZCkpOworICAgIHJldHVybiBnaWdhY2FnZVNpemVUb01hc2so
c2l6ZShraW5kKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CkBAIC0yMDIsNiArMjA3
LDI3IEBAIEJJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQga2luZCwgY29uc3Qgdm9pZCogcHRyKQog
CiBCRVhQT1JUIGJvb2wgc2hvdWxkQmVFbmFibGVkKCk7CiAKKyNlbHNlIC8vIEdJR0FDQUdFX0VO
QUJMRUQKKworQklOTElORSB2b2lkKiYgYmFzZVB0cihLaW5kKQoreworICAgIEJDUkFTSCgpOwor
ICAgIHN0YXRpYyB2b2lkKiB1bnJlYWNoYWJsZTsKKyAgICByZXR1cm4gdW5yZWFjaGFibGU7Cit9
CitCSU5MSU5FIHNpemVfdCBzaXplKEtpbmQpIHsgQkNSQVNIKCk7IHJldHVybiAwOyB9CitCSU5M
SU5FIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKSB7IH0KK0JJTkxJTkUgYm9vbCB3YXNFbmFibGVkKCkg
eyByZXR1cm4gZmFsc2U7IH0KK0JJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQsIGNvbnN0IHZvaWQq
KSB7IHJldHVybiB0cnVlOyB9Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2Vk
KEtpbmQsIFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CitCSU5MSU5FIHZvaWQgZGlzYWJsZURpc2Fi
bGluZ1ByaW1pdGl2ZUdpZ2FjYWdlSWZTaG91bGRCZUVuYWJsZWQoKSB7IH0KK0JJTkxJTkUgdm9p
ZCBkaXNhYmxlUHJpbWl0aXZlR2lnYWNhZ2UoKSB7IH0KK0JJTkxJTkUgdm9pZCBhZGRQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKikodm9pZCopLCB2b2lkKikgeyB9CitCSU5MSU5FIHZv
aWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQgKCopKHZvaWQqKSwgdm9pZCop
IHsgfQorCisjZW5kaWYgLy8gR0lHQUNBR0VfRU5BQkxFRAorCiB9IC8vIG5hbWVzcGFjZSBHaWdh
Y2FnZQogCiAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKaW5kZXggNTNiM2UzNjkxOTNmMWY1NDk5
YTNhY2VhNDdiYzU3MTc5MmIzMGEwZS4uZTBlMzAwNDU5ZDJkZDg3ODgwOTE5MjhlODliZWYzNTYy
MWExM2IxYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQnVsa0RlY29tbWl0LmgiCiAjaW5jbHVkZSAiQnVtcEFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkNodW5rLmgiCisjaW5jbHVkZSAiQ3J5cHRvUmFuZG9tLmgiCiAjaW5jbHVkZSAiRW52aXJv
bm1lbnQuaCIKICNpbmNsdWRlICJHaWdhY2FnZS5oIgogI2luY2x1ZGUgIkRlYnVnSGVhcC5oIgpA
QCAtNjEsNyArNjIsMTIgQEAgSGVhcDo6SGVhcChIZWFwS2luZCBraW5kLCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JikKICNpZiBHSUdBQ0FHRV9FTkFCTEVECiAgICAgICAgIGlmICh1c2luZ0dpZ2Fj
YWdlKCkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChnaWdhY2FnZUJhc2VQdHIoKSk7
Ci0gICAgICAgICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShnaWdhY2FnZUJhc2VQdHIo
KSwgZ2lnYWNhZ2VTaXplKCksIDAsIDApKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IHJhbmRvbTsK
KyAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOworICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNl
dCA9IHJhbmRvbSAlIChnaWdhY2FnZVNpemUoKSAtIEdpZ2FjYWdlOjptaW5pbXVtQ2FnZVNpemVB
ZnRlclNsaWRlKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlm
Zl90Pihyb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSgpLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihvZmZzZXQpKSk7CisgICAgICAgICAgICB2b2lkKiBiYXNlID0gcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oZ2lnYWNhZ2VCYXNlUHRyKCkpICsgb2Zmc2V0OworICAgICAg
ICAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoYmFzZSwgZ2lnYWNhZ2VTaXplKCkgLSBv
ZmZzZXQsIDAsIDApKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXpl
cy5oCmluZGV4IGY3NWY3ZThmY2M3ZjY3ZGJkNTAzYzc4OWM4ZmM4NTQwYjUwYzE0YzkuLjFiOTJh
YjMyMTBiNTk3YTdjMmIxYWFjMDM0MGEzNWUxMjUwMDgyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU2l6ZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVz
LmgKQEAgLTQwLDg5ICs0MCw5MCBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAvLyBSZXBvc2l0b3J5
IGZvciBtYWxsb2Mgc2l6aW5nIGNvbnN0YW50cyBhbmQgY2FsY3VsYXRpb25zLgogCiBuYW1lc3Bh
Y2UgU2l6ZXMgewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0IgPSAxMDI0OwotICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgTUIgPSBrQiAqIGtCOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBh
bGlnbm1lbnQgPSA4OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYWxpZ25tZW50TWFzayA9IGFs
aWdubWVudCAtIDF1bDsKLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2h1bmtTaXplID0gMSAq
IE1COwotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgY2h1bmtNYXNrID0gfihjaHVua1NpemUgLSAx
dWwpOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzbWFsbExpbmVTaXplID0gMjU2OwotICAg
IHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxQYWdlU2l6ZSA9IDQgKiBrQjsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHNtYWxsUGFnZUxpbmVDb3VudCA9IHNtYWxsUGFnZVNpemUgLyBzbWFsbExp
bmVTaXplOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXNrU2l6ZUNsYXNzTWF4ID0gNTEy
OwotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxNYXggPSAzMiAqIGtCOwotCi0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBwYWdlU2l6ZU1heCA9IHNtYWxsTWF4ICogMjsKLSAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHBhZ2VDbGFzc0NvdW50ID0gcGFnZVNpemVNYXggLyBzbWFsbFBhZ2VTaXpl
OwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBwYWdlU2l6ZVdhc3RlRmFjdG9yID0gODsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxvZ1dhc3RlRmFjdG9yID0gODsKLQotICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgbGFyZ2VBbGlnbm1lbnQgPSBzbWFsbE1heCAvIHBhZ2VTaXplV2FzdGVGYWN0
b3I7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUFsaWdubWVudE1hc2sgPSBsYXJnZUFs
aWdubWVudCAtIDE7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGRlYWxsb2NhdG9yTG9nQ2Fw
YWNpdHkgPSA1MTI7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBidW1wUmFuZ2VDYWNoZUNhcGFj
aXR5ID0gMzsKLSAgICAKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNjYXZlbmdlckJ5dGVzUGVy
TWVtb3J5UHJlc3N1cmVDaGVjayA9IDE2ICogTUI7Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSBt
ZW1vcnlQcmVzc3VyZVRocmVzaG9sZCA9IDAuNzU7Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IHNp
emVfdCBtYXNrU2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzTWF4IC8gYWxpZ25tZW50Owot
Ci0gICAgY29uc3RleHByIHNpemVfdCBtYXNrU2l6ZUNsYXNzKHNpemVfdCBzaXplKQotICAgIHsK
LSAgICAgICAgLy8gV2UgbWFzayB0byBhY2NvbW1vZGF0ZSB6ZXJvLgotICAgICAgICByZXR1cm4g
bWFzaygoc2l6ZSAtIDEpIC8gYWxpZ25tZW50LCBtYXNrU2l6ZUNsYXNzQ291bnQgLSAxKTsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgc2l6ZV90IG1hc2tPYmplY3RTaXplKHNpemVfdCBtYXNrU2l6ZUNs
YXNzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChtYXNrU2l6ZUNsYXNzICsgMSkgKiBhbGlnbm1l
bnQ7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsb2dBbGlnbm1lbnRNaW4gPSBt
YXNrU2l6ZUNsYXNzTWF4IC8gbG9nV2FzdGVGYWN0b3I7Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGxvZ1NpemVDbGFzc0NvdW50ID0gKGxvZzIoc21hbGxNYXgpIC0gbG9nMihtYXNrU2l6ZUNs
YXNzTWF4KSkgKiBsb2dXYXN0ZUZhY3RvcjsKLQotICAgIGlubGluZSBzaXplX3QgbG9nU2l6ZUNs
YXNzKHNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgc2l6ZV90IGJhc2UgPSBsb2cyKHNpemUg
LSAxKSAtIGxvZzIobWFza1NpemVDbGFzc01heCk7Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSAo
c2l6ZSAtIDEgLSAobWFza1NpemVDbGFzc01heCA8PCBiYXNlKSk7Ci0gICAgICAgIHJldHVybiBi
YXNlICogbG9nV2FzdGVGYWN0b3IgKyBvZmZzZXQgLyAobG9nQWxpZ25tZW50TWluIDw8IGJhc2Up
OwotICAgIH0KLQotICAgIGlubGluZSBzaXplX3QgbG9nT2JqZWN0U2l6ZShzaXplX3QgbG9nU2l6
ZUNsYXNzKQotICAgIHsKLSAgICAgICAgc2l6ZV90IGJhc2UgPSBsb2dTaXplQ2xhc3MgLyBsb2dX
YXN0ZUZhY3RvcjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IGxvZ1NpemVDbGFzcyAlIGxvZ1dh
c3RlRmFjdG9yOwotICAgICAgICByZXR1cm4gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkgKyAo
b2Zmc2V0ICsgMSkgKiAobG9nQWxpZ25tZW50TWluIDw8IGJhc2UpOwotICAgIH0KLQotICAgIHN0
YXRpYyBjb25zdCBzaXplX3Qgc2l6ZUNsYXNzQ291bnQgPSBtYXNrU2l6ZUNsYXNzQ291bnQgKyBs
b2dTaXplQ2xhc3NDb3VudDsKLQotICAgIGlubGluZSBzaXplX3Qgc2l6ZUNsYXNzKHNpemVfdCBz
aXplKQotICAgIHsKLSAgICAgICAgaWYgKHNpemUgPD0gbWFza1NpemVDbGFzc01heCkKLSAgICAg
ICAgICAgIHJldHVybiBtYXNrU2l6ZUNsYXNzKHNpemUpOwotICAgICAgICByZXR1cm4gbWFza1Np
emVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzKHNpemUpOwotICAgIH0KLQotICAgIGlubGluZSBz
aXplX3Qgb2JqZWN0U2l6ZShzaXplX3Qgc2l6ZUNsYXNzKQotICAgIHsKLSAgICAgICAgaWYgKHNp
emVDbGFzcyA8IG1hc2tTaXplQ2xhc3NDb3VudCkKLSAgICAgICAgICAgIHJldHVybiBtYXNrT2Jq
ZWN0U2l6ZShzaXplQ2xhc3MpOwotICAgICAgICByZXR1cm4gbG9nT2JqZWN0U2l6ZShzaXplQ2xh
c3MgLSBtYXNrU2l6ZUNsYXNzQ291bnQpOwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgc2l6ZV90
IHBhZ2VTaXplKHNpemVfdCBwYWdlQ2xhc3MpCi0gICAgewotICAgICAgICByZXR1cm4gKHBhZ2VD
bGFzcyArIDEpICogc21hbGxQYWdlU2l6ZTsKLSAgICB9CitzdGF0aWMgY29uc3RleHByIHNpemVf
dCBrQiA9IDEwMjQ7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBNQiA9IGtCICoga0I7CitzdGF0
aWMgY29uc3RleHByIHNpemVfdCBHQiA9IGtCICoga0IgKiBrQjsKKworc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgYWxpZ25tZW50ID0gODsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFsaWdubWVu
dE1hc2sgPSBhbGlnbm1lbnQgLSAxdWw7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGNodW5r
U2l6ZSA9IDEgKiBNQjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGNodW5rTWFzayA9IH4oY2h1
bmtTaXplIC0gMXVsKTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qgc21hbGxMaW5lU2l6ZSA9
IDI1NjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsUGFnZVNpemUgPSA0ICoga0I7Citz
dGF0aWMgY29uc3RleHByIHNpemVfdCBzbWFsbFBhZ2VMaW5lQ291bnQgPSBzbWFsbFBhZ2VTaXpl
IC8gc21hbGxMaW5lU2l6ZTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFz
c01heCA9IDUxMjsKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNtYWxsTWF4ID0gMzIgKiBrQjsK
Kworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZVNpemVNYXggPSBzbWFsbE1heCAqIDI7Citz
dGF0aWMgY29uc3RleHByIHNpemVfdCBwYWdlQ2xhc3NDb3VudCA9IHBhZ2VTaXplTWF4IC8gc21h
bGxQYWdlU2l6ZTsKKworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcGFnZVNpemVXYXN0ZUZhY3Rv
ciA9IDg7CitzdGF0aWMgY29uc3RleHByIHNpemVfdCBsb2dXYXN0ZUZhY3RvciA9IDg7CisKK3N0
YXRpYyBjb25zdGV4cHIgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gc21hbGxNYXggLyBwYWdlU2l6
ZVdhc3RlRmFjdG9yOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbGFyZ2VBbGlnbm1lbnRNYXNr
ID0gbGFyZ2VBbGlnbm1lbnQgLSAxOworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBkZWFsbG9j
YXRvckxvZ0NhcGFjaXR5ID0gNTEyOworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgYnVtcFJhbmdl
Q2FjaGVDYXBhY2l0eSA9IDM7CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IHNjYXZlbmdlckJ5
dGVzUGVyTWVtb3J5UHJlc3N1cmVDaGVjayA9IDE2ICogTUI7CitzdGF0aWMgY29uc3RleHByIGRv
dWJsZSBtZW1vcnlQcmVzc3VyZVRocmVzaG9sZCA9IDAuNzU7CisKK3N0YXRpYyBjb25zdGV4cHIg
c2l6ZV90IG1hc2tTaXplQ2xhc3NDb3VudCA9IG1hc2tTaXplQ2xhc3NNYXggLyBhbGlnbm1lbnQ7
CisKK2NvbnN0ZXhwciBzaXplX3QgbWFza1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKK3sKKyAgICAv
LyBXZSBtYXNrIHRvIGFjY29tbW9kYXRlIHplcm8uCisgICAgcmV0dXJuIG1hc2soKHNpemUgLSAx
KSAvIGFsaWdubWVudCwgbWFza1NpemVDbGFzc0NvdW50IC0gMSk7Cit9CisKK2lubGluZSBzaXpl
X3QgbWFza09iamVjdFNpemUoc2l6ZV90IG1hc2tTaXplQ2xhc3MpCit7CisgICAgcmV0dXJuICht
YXNrU2l6ZUNsYXNzICsgMSkgKiBhbGlnbm1lbnQ7Cit9CisKK3N0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IGxvZ0FsaWdubWVudE1pbiA9IG1hc2tTaXplQ2xhc3NNYXggLyBsb2dXYXN0ZUZhY3RvcjsK
Kworc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbG9nU2l6ZUNsYXNzQ291bnQgPSAobG9nMihzbWFs
bE1heCkgLSBsb2cyKG1hc2tTaXplQ2xhc3NNYXgpKSAqIGxvZ1dhc3RlRmFjdG9yOworCitpbmxp
bmUgc2l6ZV90IGxvZ1NpemVDbGFzcyhzaXplX3Qgc2l6ZSkKK3sKKyAgICBzaXplX3QgYmFzZSA9
IGxvZzIoc2l6ZSAtIDEpIC0gbG9nMihtYXNrU2l6ZUNsYXNzTWF4KTsKKyAgICBzaXplX3Qgb2Zm
c2V0ID0gKHNpemUgLSAxIC0gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkpOworICAgIHJldHVy
biBiYXNlICogbG9nV2FzdGVGYWN0b3IgKyBvZmZzZXQgLyAobG9nQWxpZ25tZW50TWluIDw8IGJh
c2UpOworfQorCitpbmxpbmUgc2l6ZV90IGxvZ09iamVjdFNpemUoc2l6ZV90IGxvZ1NpemVDbGFz
cykKK3sKKyAgICBzaXplX3QgYmFzZSA9IGxvZ1NpemVDbGFzcyAvIGxvZ1dhc3RlRmFjdG9yOwor
ICAgIHNpemVfdCBvZmZzZXQgPSBsb2dTaXplQ2xhc3MgJSBsb2dXYXN0ZUZhY3RvcjsKKyAgICBy
ZXR1cm4gKG1hc2tTaXplQ2xhc3NNYXggPDwgYmFzZSkgKyAob2Zmc2V0ICsgMSkgKiAobG9nQWxp
Z25tZW50TWluIDw8IGJhc2UpOworfQorCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplQ2xh
c3NDb3VudCA9IG1hc2tTaXplQ2xhc3NDb3VudCArIGxvZ1NpemVDbGFzc0NvdW50OworCitpbmxp
bmUgc2l6ZV90IHNpemVDbGFzcyhzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA8PSBtYXNr
U2l6ZUNsYXNzTWF4KQorICAgICAgICByZXR1cm4gbWFza1NpemVDbGFzcyhzaXplKTsKKyAgICBy
ZXR1cm4gbWFza1NpemVDbGFzc0NvdW50ICsgbG9nU2l6ZUNsYXNzKHNpemUpOworfQorCitpbmxp
bmUgc2l6ZV90IG9iamVjdFNpemUoc2l6ZV90IHNpemVDbGFzcykKK3sKKyAgICBpZiAoc2l6ZUNs
YXNzIDwgbWFza1NpemVDbGFzc0NvdW50KQorICAgICAgICByZXR1cm4gbWFza09iamVjdFNpemUo
c2l6ZUNsYXNzKTsKKyAgICByZXR1cm4gbG9nT2JqZWN0U2l6ZShzaXplQ2xhc3MgLSBtYXNrU2l6
ZUNsYXNzQ291bnQpOworfQorCitpbmxpbmUgc2l6ZV90IHBhZ2VTaXplKHNpemVfdCBwYWdlQ2xh
c3MpCit7CisgICAgcmV0dXJuIChwYWdlQ2xhc3MgKyAxKSAqIHNtYWxsUGFnZVNpemU7CiB9Cit9
IC8vIG5hbWVzcGFjZSBTaXplcwogCiB1c2luZyBuYW1lc3BhY2UgU2l6ZXM7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359532</attachid>
            <date>2019-01-18 13:36:47 -0800</date>
            <delta_ts>2019-01-18 13:36:47 -0800</delta_ts>
            <desc>Patch to fix the builds when re-landing</desc>
            <filename>0001-Follow-up-Gigacages-should-start-allocations-from-a-.patch</filename>
            <type>text/plain</type>
            <size>2027</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">RnJvbSAxMzg4MDg2ZDNmNzA2ODRmNTQ4MmQ5ODYzNzY3Y2FjZWM4MzE5NDQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBLaWx6ZXIgPGRka2lsemVyQGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCAxOCBKYW4gMjAxOSAxMzozMzo1OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEZvbGxv
dy11cDogR2lnYWNhZ2VzIHNob3VsZCBzdGFydCBhbGxvY2F0aW9ucyBmcm9tIGEgc2xpZGUKIDxo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNTIzPiA8cmRhcjovL3By
b2JsZW0vNDQ5NTg3MDc+CgoqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgooSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjYWdlZCk6IFJldHVybiBgcHRyYCB3aGVuCkdJR0FDQUdFX0VOQUJM
RUQgaXMgMC4KLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgfCAxMCArKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgfCAgNCArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBkMzNlMTgyMjNkOC4uZGJjYzE1NjM3MzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTE4ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgRm9sbG93LXVwOiBHaWdhY2Fn
ZXMgc2hvdWxkIHN0YXJ0IGFsbG9jYXRpb25zIGZyb20gYSBzbGlkZQorICAgICAgICA8aHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzUyMz4KKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ0OTU4NzA3PgorCisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNhZ2VkKTogUmV0dXJuIGBw
dHJgIHdoZW4KKyAgICAgICAgR0lHQUNBR0VfRU5BQkxFRCBpcyAwLgorCiAyMDE5LTAxLTE4ICBN
YXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjI0MDE2MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCAyYTk0MWFmMzgzZC4uOTA4NmY4Mzg1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEzODUyLDYgKzEzODUy
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBMVmFsdWUgY2FnZWQoR2lnYWNhZ2U6OktpbmQga2lu
ZCwgTFZhbHVlIHB0cikKICAgICB7CisjaWYgR0lHQUNBR0VfRU5BQkxFRAogICAgICAgICBpZiAo
IUdpZ2FjYWdlOjppc0VuYWJsZWQoa2luZCkpCiAgICAgICAgICAgICByZXR1cm4gcHRyOwogICAg
ICAgICAKQEAgLTEzODgwLDYgKzEzODgxLDkgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gYW5kIHBv
c3NpYmx5IG90aGVyIHNtYXJ0IHRoaW5ncyBpZiB3ZSB3YW50IHRvIGJlIGFibGUgdG8gcmVtb3Zl
IHRoaXMgb3BhcXVlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc1NDkzCiAgICAgICAgIHJldHVybiBtX291dC5vcGFxdWUocmVzdWx0KTsKKyNl
bHNlCisgICAgICAgIHJldHVybiBwdHI7CisjZW5kaWYKICAgICB9CiAgICAgCiAgICAgdm9pZCBi
dWlsZFN3aXRjaChTd2l0Y2hEYXRhKiBkYXRhLCBMVHlwZSB0eXBlLCBMVmFsdWUgc3dpdGNoVmFs
dWUpCi0tIAoyLjE3LjIgKEFwcGxlIEdpdC0xMTMpCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>